mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
== Changes to existing drivers ==
- Checkpatch fixes throughout the subsystem
- Use Regmap to handle IRQs in max77686, extcon-max77693 and mc13xxx-core
- Use DMA in rtsx_pcr
- Restrict building on unsupported architectures on timberdale, cs5535
- SPI hardening in cros_ec_spi
- More robust error handing in asic3, cros_ec, ab8500-debugfs,
max77686 and pcf50633-core
- Reorder PM runtime and regulator handing during shutdown in arizona
- Enable wakeup in cros_ec_spi
- Unused variable/code clean-up in pm8921-core, cros_ec, htc-i2cpld,
tps65912-spi, wm5110-tables and ab8500-debugfs
- Add regulator handing into suspend() in sec-core
- Remove pointless wrapper functions in extcon-max77693 and i2c-cros-ec-tunnel
- Use cross-architecture friendly data sizes in stmpe-i2c, arizona,
max77686 and tps65910
- Device Tree documentation updates throughout
- Provide power management support in max77686
- Few OF clean-ups in max77686
- Use manged resources in tps6105x
== New drivers/supported devices ==
- Add support for s2mpu02 to sec-core
- Add support for Allwinner A32 to sun6i-prcm
- Add support for Maxim 77802 in max77686
- Add support for DA9063 AD in da9063
- Add new driver for Intel PMICs (generic) and specifically Crystal Cove
== (Re-)moved drivers ==
- Move out keyboard functionality cros_ec ==> input/keyboard/cros_ec_keyb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJT40p7AAoJEFGvii+H/HdhTo0P/1GuZyvCAJCeqt2oN1gcloIe
Hgf5rEo/PVPh3T9vHA7GCbWhgtdxfJI8FxrQYvU7Dw5cEMlmvl5p/ZHNPIProv97
uI59JO67roLpXZP+aYX8BzXcplYkaR/ah16o/ePtaOCwGrXDz+TtJiHEVVN/8bAG
PWsdcDNBC8byP7BZ/8zFdu6pX4800eRZ0KgeBH+u4k6UDor7M6LkQrxF1hJhU1Bv
z14Q2wKQufhbcyEtQWcYc6M8hignD1Ioyd4I8mnEJs0EUiABfGUEk/K/G4Z5Q7Sv
eRIEPZCd1CEBKD5JQcPXyE1QGdG9GiD15PLmctPA4VY1V+9c5/Hoq0TLoxlAQNWA
gUr7WSqJ+KT2Nch0WVr/MdP8l0jPYfboWbsd/apj4GK0/9quwJNkGUxx0mCdCXyg
9ylitwUrmlrd4CEKjybfEuTQB52Jvcdq24fnNYHHn1TGppZH6w7LVvdwSW7UcjF0
Y48hTImYYnVAlWl5lE5xVQTWD/3hseAcoWTsdSORSWJbkCfAhJUg/Gn5bH/Fkwhs
/aWYPvkF+m47PoudZ9Z8qB5OTO4uz/Q9uEBBf2/k4Yy95vl2IZdy9VqS5tYG67e7
LLdAZvG5hjEwDi3OwcwGSdZ/kRB5Hgq/YvpqjItle86CKj0ECdAqL/PfqLISgJq9
x3zSuWMRLcNoyhc2HnBj
=2cNI
-----END PGP SIGNATURE-----
Merge tag 'mfd-for-linus-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD update from Lee Jones:
"Changes to existing drivers:
- checkpatch fixes throughout the subsystem
- use Regmap to handle IRQs in max77686, extcon-max77693 and
mc13xxx-core
- use DMA in rtsx_pcr
- restrict building on unsupported architectures on timberdale,
cs5535
- SPI hardening in cros_ec_spi
- more robust error handing in asic3, cros_ec, ab8500-debugfs,
max77686 and pcf50633-core
- reorder PM runtime and regulator handing during shutdown in arizona
- enable wakeup in cros_ec_spi
- unused variable/code clean-up in pm8921-core, cros_ec, htc-i2cpld,
tps65912-spi, wm5110-tables and ab8500-debugfs
- add regulator handing into suspend() in sec-core
- remove pointless wrapper functions in extcon-max77693 and
i2c-cros-ec-tunnel
- use cross-architecture friendly data sizes in stmpe-i2c, arizona,
max77686 and tps65910
- devicetree documentation updates throughout
- provide power management support in max77686
- few OF clean-ups in max77686
- use manged resources in tps6105x
New drivers/supported devices:
- add support for s2mpu02 to sec-core
- add support for Allwinner A32 to sun6i-prcm
- add support for Maxim 77802 in max77686
- add support for DA9063 AD in da9063
- new driver for Intel PMICs (generic) and specifically Crystal Cove
(Re-)moved drivers ==
- move out keyboard functionality cros_ec ==> input/keyboard/cros_ec_keyb"
* tag 'mfd-for-linus-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (101 commits)
MAINTAINERS: Update MFD repo location
mfd: omap-usb-host: Fix improper mask use.
mfd: arizona: Only free the CTRLIF_ERR IRQ if we requested it
mfd: arizona: Add missing handling for ISRC3 under/overclocked
mfd: wm5110: Add new interrupt register definitions
mfd: arizona: Rename thermal shutdown interrupt
mfd: wm5110: Add in the output done interrupts
mfd: wm5110: Remove non-existant interrupts
mfd: tps65912-spi: Remove unused variable
mfd: htc-i2cpld: Remove unused code
mfd: da9063: Add support for AD silicon variant
mfd: arizona: Map MICVDD from extcon device to the Arizona core
mfd: arizona: Add MICVDD to mapped regulators for wm8997
mfd: max77686: Ensure device type IDs are architecture agnostic
mfd: max77686: Add Maxim 77802 PMIC support
mfd: tps6105x: Use managed resources when allocating memory
mfd: wm8997-tables: Suppress 'line over 80 chars' warnings
mfd: kempld-core: Correct a variety of checkpatch warnings
mfd: ipaq-micro: Fix coding style errors/warnings reported by checkpatch
mfd: si476x-cmd: Remedy checkpatch style complains
...
This commit is contained in:
commit
54c72d5987
94 changed files with 4309 additions and 1437 deletions
|
|
@ -29,6 +29,8 @@
|
|||
#define YEARS_FROM_DA9063(year) ((year) + 100)
|
||||
#define MONTHS_FROM_DA9063(month) ((month) - 1)
|
||||
|
||||
#define RTC_ALARM_DATA_LEN (DA9063_AD_REG_ALARM_Y - DA9063_AD_REG_ALARM_MI + 1)
|
||||
|
||||
#define RTC_DATA_LEN (DA9063_REG_COUNT_Y - DA9063_REG_COUNT_S + 1)
|
||||
#define RTC_SEC 0
|
||||
#define RTC_MIN 1
|
||||
|
|
@ -42,6 +44,10 @@ struct da9063_rtc {
|
|||
struct da9063 *hw;
|
||||
struct rtc_time alarm_time;
|
||||
bool rtc_sync;
|
||||
int alarm_year;
|
||||
int alarm_start;
|
||||
int alarm_len;
|
||||
int data_start;
|
||||
};
|
||||
|
||||
static void da9063_data_to_tm(u8 *data, struct rtc_time *tm)
|
||||
|
|
@ -83,7 +89,7 @@ static int da9063_rtc_stop_alarm(struct device *dev)
|
|||
{
|
||||
struct da9063_rtc *rtc = dev_get_drvdata(dev);
|
||||
|
||||
return regmap_update_bits(rtc->hw->regmap, DA9063_REG_ALARM_Y,
|
||||
return regmap_update_bits(rtc->hw->regmap, rtc->alarm_year,
|
||||
DA9063_ALARM_ON, 0);
|
||||
}
|
||||
|
||||
|
|
@ -91,7 +97,7 @@ static int da9063_rtc_start_alarm(struct device *dev)
|
|||
{
|
||||
struct da9063_rtc *rtc = dev_get_drvdata(dev);
|
||||
|
||||
return regmap_update_bits(rtc->hw->regmap, DA9063_REG_ALARM_Y,
|
||||
return regmap_update_bits(rtc->hw->regmap, rtc->alarm_year,
|
||||
DA9063_ALARM_ON, DA9063_ALARM_ON);
|
||||
}
|
||||
|
||||
|
|
@ -151,8 +157,9 @@ static int da9063_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
|
|||
int ret;
|
||||
unsigned int val;
|
||||
|
||||
ret = regmap_bulk_read(rtc->hw->regmap, DA9063_REG_ALARM_S,
|
||||
&data[RTC_SEC], RTC_DATA_LEN);
|
||||
data[RTC_SEC] = 0;
|
||||
ret = regmap_bulk_read(rtc->hw->regmap, rtc->alarm_start,
|
||||
&data[rtc->data_start], rtc->alarm_len);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
@ -186,14 +193,14 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = regmap_bulk_write(rtc->hw->regmap, DA9063_REG_ALARM_S,
|
||||
data, RTC_DATA_LEN);
|
||||
ret = regmap_bulk_write(rtc->hw->regmap, rtc->alarm_start,
|
||||
&data[rtc->data_start], rtc->alarm_len);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to write alarm: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
rtc->alarm_time = alrm->time;
|
||||
da9063_data_to_tm(data, &rtc->alarm_time);
|
||||
|
||||
if (alrm->enabled) {
|
||||
ret = da9063_rtc_start_alarm(dev);
|
||||
|
|
@ -218,7 +225,7 @@ static irqreturn_t da9063_alarm_event(int irq, void *data)
|
|||
{
|
||||
struct da9063_rtc *rtc = data;
|
||||
|
||||
regmap_update_bits(rtc->hw->regmap, DA9063_REG_ALARM_Y,
|
||||
regmap_update_bits(rtc->hw->regmap, rtc->alarm_year,
|
||||
DA9063_ALARM_ON, 0);
|
||||
|
||||
rtc->rtc_sync = true;
|
||||
|
|
@ -257,7 +264,23 @@ static int da9063_rtc_probe(struct platform_device *pdev)
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(da9063->regmap, DA9063_REG_ALARM_S,
|
||||
rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
|
||||
if (!rtc)
|
||||
return -ENOMEM;
|
||||
|
||||
if (da9063->variant_code == PMIC_DA9063_AD) {
|
||||
rtc->alarm_year = DA9063_AD_REG_ALARM_Y;
|
||||
rtc->alarm_start = DA9063_AD_REG_ALARM_MI;
|
||||
rtc->alarm_len = RTC_ALARM_DATA_LEN;
|
||||
rtc->data_start = RTC_MIN;
|
||||
} else {
|
||||
rtc->alarm_year = DA9063_BB_REG_ALARM_Y;
|
||||
rtc->alarm_start = DA9063_BB_REG_ALARM_S;
|
||||
rtc->alarm_len = RTC_DATA_LEN;
|
||||
rtc->data_start = RTC_SEC;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(da9063->regmap, rtc->alarm_start,
|
||||
DA9063_ALARM_STATUS_TICK | DA9063_ALARM_STATUS_ALARM,
|
||||
0);
|
||||
if (ret < 0) {
|
||||
|
|
@ -265,7 +288,7 @@ static int da9063_rtc_probe(struct platform_device *pdev)
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(da9063->regmap, DA9063_REG_ALARM_S,
|
||||
ret = regmap_update_bits(da9063->regmap, rtc->alarm_start,
|
||||
DA9063_ALARM_STATUS_ALARM,
|
||||
DA9063_ALARM_STATUS_ALARM);
|
||||
if (ret < 0) {
|
||||
|
|
@ -273,25 +296,22 @@ static int da9063_rtc_probe(struct platform_device *pdev)
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(da9063->regmap, DA9063_REG_ALARM_Y,
|
||||
ret = regmap_update_bits(da9063->regmap, rtc->alarm_year,
|
||||
DA9063_TICK_ON, 0);
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to disable TICKs\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = regmap_bulk_read(da9063->regmap, DA9063_REG_ALARM_S,
|
||||
data, RTC_DATA_LEN);
|
||||
data[RTC_SEC] = 0;
|
||||
ret = regmap_bulk_read(da9063->regmap, rtc->alarm_start,
|
||||
&data[rtc->data_start], rtc->alarm_len);
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to read initial alarm data: %d\n",
|
||||
ret);
|
||||
goto err;
|
||||
}
|
||||
|
||||
rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
|
||||
if (!rtc)
|
||||
return -ENOMEM;
|
||||
|
||||
platform_set_drvdata(pdev, rtc);
|
||||
|
||||
irq_alarm = platform_get_irq_byname(pdev, "ALARM");
|
||||
|
|
|
|||
|
|
@ -492,16 +492,11 @@ static int max77686_rtc_init_reg(struct max77686_rtc_info *info)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static struct regmap_config max77686_rtc_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
};
|
||||
|
||||
static int max77686_rtc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct max77686_dev *max77686 = dev_get_drvdata(pdev->dev.parent);
|
||||
struct max77686_rtc_info *info;
|
||||
int ret, virq;
|
||||
int ret;
|
||||
|
||||
dev_info(&pdev->dev, "%s\n", __func__);
|
||||
|
||||
|
|
@ -514,14 +509,7 @@ static int max77686_rtc_probe(struct platform_device *pdev)
|
|||
info->dev = &pdev->dev;
|
||||
info->max77686 = max77686;
|
||||
info->rtc = max77686->rtc;
|
||||
info->max77686->rtc_regmap = devm_regmap_init_i2c(info->max77686->rtc,
|
||||
&max77686_rtc_regmap_config);
|
||||
if (IS_ERR(info->max77686->rtc_regmap)) {
|
||||
ret = PTR_ERR(info->max77686->rtc_regmap);
|
||||
dev_err(info->max77686->dev, "Failed to allocate register map: %d\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, info);
|
||||
|
||||
ret = max77686_rtc_init_reg(info);
|
||||
|
|
@ -550,15 +538,16 @@ static int max77686_rtc_probe(struct platform_device *pdev)
|
|||
ret = -EINVAL;
|
||||
goto err_rtc;
|
||||
}
|
||||
virq = irq_create_mapping(max77686->irq_domain, MAX77686_RTCIRQ_RTCA1);
|
||||
if (!virq) {
|
||||
|
||||
info->virq = regmap_irq_get_virq(max77686->rtc_irq_data,
|
||||
MAX77686_RTCIRQ_RTCA1);
|
||||
if (!info->virq) {
|
||||
ret = -ENXIO;
|
||||
goto err_rtc;
|
||||
}
|
||||
info->virq = virq;
|
||||
|
||||
ret = devm_request_threaded_irq(&pdev->dev, virq, NULL,
|
||||
max77686_rtc_alarm_irq, 0, "rtc-alarm0", info);
|
||||
ret = devm_request_threaded_irq(&pdev->dev, info->virq, NULL,
|
||||
max77686_rtc_alarm_irq, 0, "rtc-alarm1", info);
|
||||
if (ret < 0)
|
||||
dev_err(&pdev->dev, "Failed to request alarm IRQ: %d: %d\n",
|
||||
info->virq, ret);
|
||||
|
|
|
|||
Loading…
Reference in a new issue