linux/drivers/mfd
Chen-Yu Tsai 696f0b3f4a mfd: axp20x: Fix AXP806 access errors on cold boot
The AXP806 supports either master/standalone or slave mode.
Slave mode allows sharing the serial bus, even with multiple
AXP806 which all have the same hardware address.

This is done with extra "serial interface address extension",
or AXP806_BUS_ADDR_EXT, and "register address extension", or
AXP806_REG_ADDR_EXT, registers. The former is read-only, with
1 bit customizable at the factory, and 1 bit depending on the
state of an external pin. The latter is writable. Only when
the these device addressing bits (in the upper 4 bits of the
registers) match, will the device respond to operations on
its other registers.

The AXP806_REG_ADDR_EXT was previously configured by Allwinner's
bootloader. Work on U-boot SPL support now allows us to switch
to mainline U-boot, which doesn't do this for us. There might
be other bare minimum bootloaders out there which don't to this
either. It's best to handle this in the kernel.

This patch sets AXP806_REG_ADDR_EXT to 0x10, which is what we
know to be the proper value for a standard AXP806 in slave mode.
Afterwards it will reinitialize the regmap cache, to purge any
invalid stale values.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2017-02-13 09:29:42 +00: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: Move over to new I2C device .probe() call 2016-11-17 16:10:24 +01: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: Make it explicitly non-modular 2016-11-29 08:21:29 +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: Make it explicitly non-modular 2016-11-29 08:21:30 +00:00
ab8500-debugfs.c mfd: ab8500-debugfs: Make it explicitly non-modular 2016-11-29 08:21:30 +00:00
ab8500-gpadc.c mfd: ab8500-gpadc: Make it explicitly non-modular 2016-11-29 08:21:31 +00:00
ab8500-sysctrl.c mfd: ab8500: make sysctrl explicitly non-modular 2016-11-29 08:21:32 +00:00
abx500-core.c mfd: abx500-core: drop unused MODULE_ tags from non-modular code 2016-11-29 08:21:32 +00:00
ac100.c mfd: ac100: Add driver for X-Powers AC100 audio codec / RTC combo IC 2016-08-08 12:53:26 +01:00
act8945a.c mfd: act8945a: Add .of_compatible for act8945a-charger 2016-10-04 15:48:03 +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: altera-a10sr: Make it explicitly non-modular 2016-10-04 15:48:03 +01:00
arizona-core.c mfd: arizona: Disable IRQs during driver remove 2016-11-29 08:21:37 +00: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: Correctly clean up after IRQs 2017-02-13 09:29:40 +00:00
arizona-spi.c mfd: arizona: Support Cirrus Logic CS47L24 and WM1831 2015-12-04 08:46:39 +00:00
arizona.h mfd: arizona: Remove totally unused forward declaration 2017-02-13 09:29:40 +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: Do not sleep in atomic context 2016-10-04 15:48:04 +01:00
axp20x-i2c.c mfd: axp20x-i2c: Add i2c-ids to fix module auto-loading 2016-11-29 08:21:25 +00:00
axp20x-rsb.c mfd: axp20x: Add support for AXP806 PMIC 2016-09-13 14:10:04 +01:00
axp20x.c mfd: axp20x: Fix AXP806 access errors on cold boot 2017-02-13 09:29:42 +00:00
bcm590xx.c mfd: bcm590xx: Simplify a test 2016-11-29 08:21:33 +00: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: Remove unused variable 'request' 2016-10-04 15:48:05 +01:00
cros_ec.c mfd: cros_ec: Send suspend state notification to EC 2017-02-13 09:29:42 +00:00
cs47l24-tables.c mfd: arizona: Mark AIFx_TX_BCLK_RATE as readable for cs47l24 2016-11-21 13:00:18 +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: Ensure the FAULT_LOG is cleared during MFD driver probe 2016-10-04 15:48:02 +01: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: Update author information to remove incorrect e-mail addresses 2016-10-04 15:48:01 +01:00
da9063-i2c.c mfd: da9063: Update author information to remove incorrect e-mail addresses 2016-10-04 15:48:01 +01:00
da9063-irq.c mfd: da9063: Update author information to remove incorrect e-mail addresses 2016-10-04 15:48:01 +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: Tidyup header difinitions 2016-11-29 08:21:27 +00:00
db8500-prcmu.c mfd: db8500-prcmu: Remove unused *prcmu_set_ddr_opp() calls 2016-10-04 15:48:05 +01: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: dm355evm_msp: Refactoring for add_child() 2016-10-04 15:48:02 +01:00
exynos-lpass.c mfd: exynos-lpass: Mark PM functions as __maybe_unused 2016-10-04 15:48:04 +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: Fix module autoload when registered via OF 2016-11-29 08:21:24 +00:00
hi655x-pmic.c mfd: hi655x-pmic: Fix module autoload when registered via OF 2016-11-29 08:21:23 +00: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-i2cpld.c mfd: htc-i2cpld: Use gpiochip data pointer 2016-04-19 07:58:30 +01:00
htc-pasic3.c
intel_msic.c mfd: intel_msic: Make it explicitly non-modular 2016-10-04 15:48:03 +01:00
intel_quark_i2c_gpio.c - New Drivers 2016-05-20 11:10:24 -07:00
intel_soc_pmic_bxtwc.c - New Device Support 2016-12-19 08:16:26 -08: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 mfd: intel-lpss: Add default I2C device properties for Apollo Lake 2016-10-04 15:48:04 +01:00
intel-lpss-pci.c - New Device Support 2016-12-19 08:16:26 -08:00
intel-lpss.c mfd: intel-lpss: Do not put device in reset state on suspend 2016-11-16 09:50:25 +00: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: Kconfig: MFD_SUN4I_GPADC depends on !TOUCHSCREN_SUN4I_GPADC 2017-02-13 09:29:41 +00:00
kempld-core.c mfd: Add support for COMe-cSL6 and COMe-mAL10 to Kontron PLD driver 2016-06-29 10:16:36 +01:00
lm3533-core.c mfd: lm3533: Fix unused variable build warning 2015-10-30 17:19:52 +00:00
lm3533-ctrlbank.c
lp873x.c mfd: lp873x: Remove unused mutex lock from struct lp873x 2016-10-04 15:48:04 +01:00
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: Add support for Intel Apollo Lake SoC 2017-01-03 17:34:16 +00:00
lpc_sch.c
Makefile mfd: Add STM32 Timers driver 2017-01-23 12:03:57 +00: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: max8997-irq: 'inline' should be at the beginning of the declaration 2016-10-04 15:48:05 +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: max14577: Change Krzysztof Kozlowski's email to kernel.org 2016-10-04 15:48:02 +01:00
max77620.c treewide: Fix printk() message errors 2016-12-14 10:54:27 +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 mfd: core: Fix device reference leak in mfd_clone_cell 2016-11-29 08:21:34 +00: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: Return value is not 'const int' 2016-10-04 15:48:05 +01: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: palmas: Remove redundant check in palmas_power_off 2016-11-29 08:21:38 +00:00
pcf50633-adc.c
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c mfd: pcf50633: Remove unneded ret variable 2015-10-30 17:19:42 +00:00
qcom_rpm.c mfd: qcom_rpm: Handle message RAM clock 2016-10-04 15:48:02 +01:00
qcom-pm8xxx.c mfd: pm8xxx: add support to pm8821 2016-11-29 08:21:36 +00: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: RK818 uses DEV_OFF to power off supplies 2016-11-29 08:21:24 +00:00
rn5t618.c mfd: rn5t618: Add Ricoh RC5T619 PMIC support 2016-11-29 08:21:35 +00: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: Avoid setting ucr->current_sg.status 2016-10-04 15:48:02 +01: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 mistakes "Failet" and "gett" 2016-11-29 08:21:29 +00: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: Constify gpio_chip structures 2016-10-04 15:48:03 +01:00
smsc-ece1099.c mfd: smsc-ece1099: Make it explicitly non-modular 2016-10-04 15:48:04 +01:00
ssbi.c
sta2x11-mfd.c mfd: sta2x11: Use platform_register/unregister_drivers() 2016-01-11 06:23:38 +00:00
stm32-timers.c mfd: Add STM32 Timers driver 2017-01-23 12:03:57 +00:00
stmpe-i2c.c mfd: Add STMPE1600 support 2016-08-10 09:25:18 +01:00
stmpe-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
stmpe.c mfd: stmpe: Fix RESET regression on STMPE2401 2016-11-16 09:50:33 +00:00
stmpe.h mfd: Add STMPE1600 support 2016-08-10 09:25:18 +01:00
stw481x.c mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:35 +01:00
sun4i-gpadc.c mfd: sun4i-gpadc: Fix 'cast from pointer to integer of different size' warning 2016-11-29 08:21:26 +00:00
sun6i-prcm.c mfd: sun6i-prcm: Add codec analog controls sub-device for Allwinner A23 2017-02-13 09:29:40 +00:00
syscon.c mfd: syscon: Support native-endian regmaps 2016-11-29 08:21:25 +00:00
t7l66xb.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
tc3589x.c mfd: tc3589x: Improve function-level documentation 2016-11-29 08:21:19 +00:00
tc6387xb.c
tc6393xb.c mfd: tc6393xb: Use gpiochip data pointer 2016-04-19 07:58:44 +01:00
ti_am335x_tscadc.c mfd: ti_am335x_tscadc: store physical address 2016-11-05 17:30:51 +00: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: Support an interrupt pin as the system wakeup 2016-11-29 08:21:40 +00:00
tps65218.c mfd: tps65218: Use mfd_add_devices instead of of_platform_populate 2016-10-26 10:30:29 +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: Move regmap config into core driver 2016-11-29 08:21:21 +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: Register child device for twl6040-pdmclk 2016-10-04 15:48:05 +01:00
twl-core.c mfd: twl-core: Make it explicitly non-modular 2016-10-04 15:48:04 +01:00
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c mfd: ucb1x00: Remove NO_IRQ check 2016-10-04 15:48:03 +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
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: Remove spurious trailing spaces 2016-11-29 08:21:26 +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 mfd: wm8994-core: Don't use managed regulator bulk get API 2016-11-29 08:21:27 +00: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