linux/drivers/mfd
Linus Walleij 9835f1b70b mfd: qcom_rpm: Fix offset error for msm8660
The RPM in MSM8660/APQ8060 has different offsets to the selector
ACK and request context ACK registers. Make all these register
offsets part of the per-SoC data and assign the right values.

The bug was found by verifying backwards to the vendor tree in
the out-of-tree files <mach/rpm-[8660|8064|8960]>: all were using
offsets 3,11,15,23 and a select size of 4, except the MSM8660/APQ8060
which was using offsets 3,11,19,27 and a select size of 7.

All other platforms apart from msm8660 were affected by reading
excess registers, since 7 was hardcoded as the number of select
words, this patch makes also this part dynamic so we only write/read
as many select words as the platform actually use.

Symptoms of this bug when using msm8660: the first RPM transaction
would work, but the next would stall or raise an error since the
previous transaction was not properly ACKed as the ACK words were
read at the wrong offset.

Cc: stable@vger.kernel.org
Fixes: 58e214382b ("mfd: qcom-rpm: Driver for the Qualcomm RPM")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Björn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2016-06-29 10:14:39 +01:00
..
88pm80x.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
88pm800.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
88pm805.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
88pm860x-core.c mfd: 88pm860x-core: Fix commenting and declaration spacing 2016-01-14 08:43:51 +00:00
88pm860x-i2c.c
aat2870-core.c mfd: aat2870-core: Remove unnecessary 'out of memory' message 2016-01-14 08:43:52 +00:00
ab3100-core.c mfd: ab3100-core.c: Fix multiple warnings reported by Checkpatch 2016-01-14 08:43:53 +00:00
ab3100-otp.c mfd: ab2100-otp: Remove pointless 'out of memory' error message 2016-01-14 08:43:53 +00:00
ab8500-core.c mfd: ab8500-core: Fix many warnings reported by Checkpatch 2016-01-14 08:43:54 +00:00
ab8500-debugfs.c mfd: ab8500-debugfs: Trivial fix of spelling mistake on "between" 2016-05-09 16:26:15 +01:00
ab8500-gpadc.c mfd: ab8500-gpadc: Squash a whole bunch of Checkpatch warnings and one error 2016-01-14 08:43:56 +00:00
ab8500-sysctrl.c mfd: ab8500-sysctrl: Fix Constify, printk => pr_info and formatting issues 2016-01-14 08:43:56 +00:00
abx500-core.c
act8945a.c mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:40 +01:00
adp5520.c mfd: adp5520: Some trivial 'no space before tab' fixes 2016-01-14 08:43:57 +00:00
altera-a10sr.c mfd: altr_a10sr: Add Altera Arria10 DevKit System Resource Chip 2016-06-29 10:14:37 +01:00
arizona-core.c mfd: arizona: Update device ordering to allow clean driver removal 2016-05-09 08:20:37 +01:00
arizona-i2c.c mfd: arizona-i2c: Add blank line formatting after declaration 2016-01-14 08:43:58 +00:00
arizona-irq.c mfd: arizona: Fix lockdep recursion warning on set_irq_wake 2016-04-19 07:54:00 +01:00
arizona-spi.c mfd: arizona: Support Cirrus Logic CS47L24 and WM1831 2015-12-04 08:46:39 +00:00
arizona.h mfd: arizona: Support Cirrus Logic CS47L24 and WM1831 2015-12-04 08:46:39 +00:00
as3711.c mfd: as3711: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:50 +01:00
as3722.c mfd: as3722: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 08:24:46 +01:00
asic3.c mfd: asic3: Use gpiochip data pointer 2016-04-19 07:58:06 +01:00
atmel-flexcom.c mfd: atmel-flexcom: Add a driver for Atmel Flexible Serial Communication Unit 2015-10-30 17:19:49 +00:00
atmel-hlcdc.c mfd: atmel-hlcdc: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:58 +01:00
axp20x-i2c.c mfd: axp20x: Split the driver into core and i2c bits 2016-02-12 08:53:03 +00:00
axp20x-rsb.c mfd: axp20x: Add support for AXP809 PMIC 2016-04-19 07:54:08 +01:00
axp20x.c mfd: axp20x: Add axp20x-usb-power-supply for axp22x pmics 2016-06-29 10:14:37 +01:00
bcm590xx.c mfd: bcm590xx: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:05 +01:00
cros_ec_i2c.c mfd: cros_ec_i2c: Fix trivial 'tabs before spaces' whitespace issue. 2016-01-14 08:44:01 +00:00
cros_ec_spi.c mfd: cros_ec_spi: Repair comparison ordering issue 2016-01-14 08:44:01 +00:00
cros_ec.c mfd: cros_ec: Staticise some newly introduced structures 2015-06-22 12:23:02 +01:00
cs47l24-tables.c mfd: cs47l24: Fix defaults array based on testing 2016-03-16 08:50:22 +00:00
cs5535-mfd.c mfd: cs5535-mfd: Add missing line spacing and make local array static 2016-01-14 08:44:02 +00:00
da903x.c mfd: da903x: Fix white space and split string issues 2016-01-14 08:44:03 +00:00
da9052-core.c mfd: da9053: Addition of extra registers for GPIOs 8-13 2015-10-30 17:19:49 +00:00
da9052-i2c.c mfd: da9052-i2c: Fix tabbing/whitespace issue 2016-01-14 08:44:03 +00:00
da9052-irq.c mfd: da9052-irq: Fix trivial 'space before comma' error 2016-01-14 08:44:04 +00:00
da9052-spi.c - New Device Support 2015-11-06 10:23:50 -08:00
da9055-core.c mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
da9055-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
da9062-core.c mfd: da9062: Fix missing volatile registers in the core regmap_range volatile lists 2016-03-16 08:50:27 +00:00
da9063-core.c mfd: da9063: Add support for OnKey driver 2015-06-22 12:25:20 +01:00
da9063-i2c.c mfd: da9063: Fix missing volatile registers in the core regmap_range volatile lists 2016-03-16 08:50:31 +00:00
da9063-irq.c mfd: da9063: Remove unused struct da9063_irq_data and define EVENTS_BUF_LEN 2016-04-19 07:53:42 +01:00
da9150-core.c mfd: da9150: Use DEFINE_RES_IRQ_NAMED() help macro for IRQ resource 2015-10-13 11:28:36 +01:00
davinci_voicecodec.c mfd: davinci_voicecodec: Remove pointless 'out of memory' error message 2016-01-14 08:44:05 +00:00
db8500-prcmu.c - New Drivers 2016-03-18 10:15:11 -07:00
dbx500-prcmu-regs.h
dln2.c mfd: dln2: Use msecs_to_jiffies for time conversion 2015-03-26 14:20:18 +00:00
dm355evm_msp.c mfd: Use IS_ENABLED(CONFIG_FOO) instead of checking FOO || FOO_MODULE 2016-05-09 08:23:56 +01:00
ezx-pcap.c Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi/topic/owner', 'spi/topic/pxa' and 'spi/topic/pxa2xx' into spi-next 2015-11-04 11:02:12 +00:00
fsl-imx25-tsadc.c mfd: fsl-imx25-tsadc: Register touchscreen ADC driver 2016-02-11 15:40:41 +00:00
hi655x-pmic.c mfd: hi655x: Add MFD driver for hi655x 2016-05-18 08:25:26 +01:00
hi6421-pmic-core.c mfd: hi6421-pmic: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:15 +01:00
htc-egpio.c mfd: htc-egpio: Use gpiochip data pointer 2016-04-19 07:58:23 +01:00
htc-i2cpld.c mfd: htc-i2cpld: Use gpiochip data pointer 2016-04-19 07:58:30 +01:00
htc-pasic3.c
intel_msic.c
intel_quark_i2c_gpio.c - New Drivers 2016-05-20 11:10:24 -07:00
intel_soc_pmic_bxtwc.c mfd: intel_soc_pmic_bxtwc: 64 bit bug in bxtwc_val_store() 2015-10-30 17:19:47 +00:00
intel_soc_pmic_core.c mfd: intel_soc_pmic_core: Terminate panel control GPIO lookup table correctly 2016-05-09 13:27:40 +01:00
intel_soc_pmic_core.h mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
intel_soc_pmic_crc.c mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC 2015-07-21 09:22:08 +02:00
intel-lpss-acpi.c device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
intel-lpss-pci.c device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
intel-lpss.c - New Drivers 2016-05-20 11:10:24 -07:00
intel-lpss.h device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
ipaq-micro.c mfd: ipaq-micro: Use __maybe_unused to hide pm functions 2016-03-16 08:50:41 +00:00
janz-cmodio.c can: janz-ican3: add support for CAL/CANopen firmware 2015-05-06 08:03:20 +02:00
jz4740-adc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
Kconfig mfd: altr_a10sr: Add Altera Arria10 DevKit System Resource Chip 2016-06-29 10:14:37 +01:00
kempld-core.c mfd: kempld-core: Simplify function return logic 2015-10-30 17:19:43 +00:00
lm3533-core.c mfd: lm3533: Fix unused variable build warning 2015-10-30 17:19:52 +00:00
lm3533-ctrlbank.c
lp3943.c mfd: lp3943: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:23 +01:00
lp8788-irq.c mfd: lp8788-irq: Uninitialized variable in irq handler 2016-04-11 13:31:40 +01:00
lp8788.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
lpc_ich.c mfd: lpc_ich: Intel device IDs for PCH 2015-11-24 11:10:46 +00:00
lpc_sch.c mfd: lpc_sch: Enable WDT for Intel Quark X1000 2015-01-22 15:55:56 +00:00
Makefile mfd: altr_a10sr: Add Altera Arria10 DevKit System Resource Chip 2016-06-29 10:14:37 +01:00
max8907.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max8925-core.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
max8925-i2c.c mfd: max8925-i2c: Make it explicitly non-modular 2016-06-29 10:14:30 +01:00
max8997-irq.c mfd: max899x: Avoid redundant irq_data lookup 2015-08-11 15:09:08 +01:00
max8997.c mfd: max8997: Make it explicitly non-modular 2016-06-29 10:14:30 +01:00
max8998-irq.c mfd: max899x: Avoid redundant irq_data lookup 2015-08-11 15:09:08 +01:00
max8998.c mfd: max8998: Make it explicitly non-modular 2016-06-29 10:14:29 +01:00
max14577.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
max77620.c mfd: max77620: Mask/unmask interrupt before/after servicing it 2016-06-29 10:14:38 +01:00
max77686.c mfd: max77686: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:20 +01:00
max77693.c mfd: max77686/max77693: Fix misspelled Samsung address 2016-04-19 07:59:14 +01:00
max77843.c mfd: max77843: Make it explicitly non-modular 2016-06-29 10:14:28 +01:00
mc13xxx-core.c mfd: mc13xxx-core: Use of_property_read_bool() 2015-12-04 08:45:54 +00:00
mc13xxx-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
mc13xxx-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
mc13xxx.h
mcp-core.c
mcp-sa11x0.c
menelaus.c gpio: Include linux/gpio.h instead of asm/gpio.h 2016-02-16 00:20:03 +01:00
menf21bmc.c mfd: menf21bmc: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:30 +01:00
mfd-core.c - New Drivers 2016-05-20 11:10:24 -07:00
mt6397-core.c mfd: mt6397: IRQ domain should initialize before mfd_add_devices() 2016-05-09 08:20:22 +01:00
omap-usb-host.c mfd: omap-usb-host: Remove some unused functions 2015-01-22 16:03:53 +00:00
omap-usb-tll.c mfd: omap-usb-tll: Include omap-usb.h 2016-06-29 10:14:33 +01:00
omap-usb.h
palmas.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
pcf50633-adc.c
pcf50633-core.c mfd: pcf50633: Constify struct regmap_config 2015-01-22 15:56:21 +00:00
pcf50633-gpio.c
pcf50633-irq.c mfd: pcf50633: Remove unneded ret variable 2015-10-30 17:19:42 +00:00
pm8921-core.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
qcom_rpm.c mfd: qcom_rpm: Fix offset error for msm8660 2016-06-29 10:14:39 +01:00
qcom-spmi-pmic.c mfd: qcom-spmi-pmic: Don't access non-existing registers 2016-01-11 06:23:32 +00:00
rc5t583-irq.c mfd: rc5t583: Use devm_mfd_add_devices and devm_request_threaded_irq 2016-05-09 13:27:38 +01:00
rc5t583.c mfd: rc5t583: Use devm_mfd_add_devices and devm_request_threaded_irq 2016-05-09 13:27:38 +01:00
rdc321x-southbridge.c mfd: rdc321x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:52 +01:00
retu-mfd.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
rk808.c mfd: rk808: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:59 +01:00
rn5t618.c mfd: rn5t618: Register restart handler 2016-06-29 10:11:35 +01:00
rt5033.c mfd: rt5033: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:17 +01:00
rtl8411.c mfd: rtsx: Using pcr_dbg replace dev_dbg 2015-03-03 16:41:21 +00:00
rts5209.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5227.c mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rts5229.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5249.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rtsx_pcr.c mfd: avoid newly introduced compiler warning 2015-11-06 10:47:12 -08:00
rtsx_pcr.h mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rtsx_usb.c mfd: rtsx_usb: Prevent DMA from stack 2015-03-12 09:27:41 +00:00
sec-core.c mfd: sec: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:38 +01:00
sec-irq.c mfd: sec: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:38 +01:00
si476x-cmd.c
si476x-i2c.c mfd: si476x-i2c: Fix spelling mistake "comptible" -> "compatible" 2016-06-29 10:14:31 +01:00
si476x-prop.c
sky81452.c mfd: sky81452: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:28 +01:00
sm501.c mfd: sm501: Use gpiochip data pointer 2016-04-19 07:58:37 +01:00
smsc-ece1099.c mfd: smsc-ece1099: Remove unnecessarily remove callback 2016-05-09 08:24:01 +01:00
ssbi.c
sta2x11-mfd.c mfd: sta2x11: Use platform_register/unregister_drivers() 2016-01-11 06:23:38 +00:00
stmpe-i2c.c - New Device Support 2015-09-04 11:35:03 -07:00
stmpe-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
stmpe.c mfd: stmpe: Add the proper PWM resources 2016-03-16 08:50:37 +00:00
stmpe.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-30 16:59:59 -08:00
stw481x.c mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:35 +01:00
sun6i-prcm.c mfd: sun6i-prcm: Add support for the ir-clk 2015-01-22 15:55:49 +00:00
syscon.c mfd: syscon: Make syscon_regmap_config const 2016-03-16 08:50:18 +00:00
t7l66xb.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
tc3589x.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
tc6387xb.c mfd: tc6387xb: prepare/unprepare clocks 2014-11-25 16:18:58 +00:00
tc6393xb.c mfd: tc6393xb: Use gpiochip data pointer 2016-04-19 07:58:44 +01:00
ti_am335x_tscadc.c mfd: ti_am335x_tscadc: Rename regmap_tscadc to regmap 2016-06-29 10:14:39 +01:00
timberdale.c [media] include/media: move platform_data to linux/platform_data/media 2015-11-17 06:58:42 -02:00
timberdale.h
tmio_core.c
tps6105x.c mfd: tps6105x: Remove linux/regulator/driver.h include 2016-05-09 08:21:11 +01:00
tps6507x.c mfd: tps6507: Fix white space warnings reported by checkpatch 2016-06-29 10:14:35 +01:00
tps6586x.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
tps65010.c mfd: tps65010: Use gpiochip data pointer 2016-04-19 07:58:51 +01:00
tps65086.c mfd: tps65086: Add driver for the TPS65086 PMIC 2016-03-16 08:50:15 +00:00
tps65090.c mfd: tps65090: Set regmap config reg counts properly 2016-03-16 08:50:36 +00:00
tps65217.c mfd: tps65217: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:49 +01:00
tps65218.c mfd: Export OF module alias information in missing drivers 2015-08-11 15:09:10 +01:00
tps65910.c mfd: tps65910: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:39 +01:00
tps65911-comparator.c
tps65912-core.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps65912-i2c.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps65912-spi.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps80031.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
twl4030-audio.c
twl4030-irq.c remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
twl4030-power.c mfd: twl4030-power: Remove driver path in file comment 2016-05-09 08:24:41 +01:00
twl6030-irq.c mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-08-11 15:09:06 +01:00
twl6040.c mfd: twl6040: Disable and unprepare clk32k in twl6040_power() error path 2016-05-09 08:23:52 +01:00
twl-core.c twl4030_charger: use runtime_pm to keep usb phy active while charging. 2015-08-05 05:10:06 +02:00
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c mfd: ucb1x00: Use gpiochip data pointer 2016-04-19 07:59:00 +01:00
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c mfd: vexpress-sysreg: Switch to gpiochip_add_data() 2016-04-19 07:59:06 +01:00
viperboard.c mfd: Use mfd_add_hotplug_devices() helper 2014-11-25 16:18:42 +00:00
vx855.c
wl1273-core.c mfd: wl1273-core: Use devm_mfd_add_devices() for mfd_device registration 2016-05-09 13:27:39 +01:00
wm831x-auxadc.c mfd: wm831x-auxadc: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:25 +01:00
wm831x-core.c mfd: wm831x: Fix possible NULL pointer dereference 2015-10-26 14:49:04 +00:00
wm831x-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
wm831x-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
wm831x-otp.c mfd: wm831x: Fix broken wm831x_unique_id_show 2016-01-11 06:23:21 +00:00
wm831x-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
wm5102-tables.c mfd: wm5102: Fix defaults array based on testing 2016-03-16 08:50:21 +00:00
wm5110-tables.c mfd: wm5110: ARIZONA_CLOCK_CONTROL should be volatile 2016-05-09 15:41:35 +01:00
wm8350-core.c mfd: wm8350-core: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:26 +01:00
wm8350-gpio.c
wm8350-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
wm8350-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
wm8350-regmap.c
wm8400-core.c mfd: Use IS_ENABLED(CONFIG_FOO) instead of checking FOO || FOO_MODULE 2016-05-09 08:23:56 +01:00
wm8994-core.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8994-irq.c mfd: wm8994: Fix NULL pointer exception on missing pdata 2015-08-11 15:09:13 +01:00
wm8994-regmap.c mfd: wm8994-regmap: Constify reg_default tables 2015-08-11 15:08:47 +01:00
wm8994.h
wm8997-tables.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8998-tables.c mfd: wm8998: Fix defaults array based on testing 2016-03-16 08:50:22 +00:00