]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ARM: shmobile: R-Car Gen2: Add da9063/da9210 regulator quirk
authorGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 9 Mar 2015 19:50:40 +0000 (20:50 +0100)
committerSimon Horman <horms+renesas@verge.net.au>
Wed, 11 Mar 2015 00:52:12 +0000 (09:52 +0900)
commit663fbb52159cca6ffb049cb15b9f9d1cd7ad7d8a
treec354ff173f5616bd24faf68b441d1cc21d5c271f
parentc517d838eb7d07bbe9507871fab3931deccff539
ARM: shmobile: R-Car Gen2: Add da9063/da9210 regulator quirk

The r8a7790/lager and r8a7791/koelsch development boards have da9063 and
da9210 regulators.  Both regulators have their interrupt request lines
tied to the same interrupt pin (IRQ2) on the SoC.

After cold boot or da9063-induced restart, both the da9063 and da9210
seem to assert their interrupt request lines.  Hence as soon as one
driver requests this irq, it gets stuck in an interrupt storm, as it
only manages to deassert its own interrupt request line, and the other
driver hasn't installed an interrupt handler yet.

To handle this, install a quirk that masks the interrupts in both the
da9063 and da9210.  This quirk has to run after the i2c master driver
has been initialized, but before the i2c slave drivers are initialized.
As it depends on i2c, select I2C if one of the affected platforms is
enabled in the kernel config.

On koelsch, the following happens:

  - Cold boot or reboot using the da9063 restart handler:

IRQ2 is asserted, installing da9063/da9210 regulator quirk
...
i2c i2c-6: regulator_quirk_notify: 1, IRQC_MONITOR = 0x3fb
i2c 6-0058: regulator_quirk_notify: 1, IRQC_MONITOR = 0x3fb
i2c 6-0058: Detected da9063
i2c 6-0058: Masking da9063 interrupt sources
i2c 6-0068: regulator_quirk_notify: 1, IRQC_MONITOR = 0x3fb
i2c 6-0068: Detected da9210
i2c 6-0068: Masking da9210 interrupt sources
i2c 6-0068: IRQ2 is not asserted, removing quirk

  - Warm boot (reset button):

rcar_gen2_regulator_quirk: IRQ2 is not asserted, not installing quirk

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/Kconfig
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c [new file with mode: 0644]