• Geert Uytterhoeven's avatar
    ARM: shmobile: R-Car Gen2: Add da9063/da9210 regulator quirk · 663fbb52
    Geert Uytterhoeven authored
    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: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: default avatarMark Brown <broonie@kernel.org>
    Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
    663fbb52
Makefile 2.61 KB