mfd: clear interrupt status in probe

VRS RTC may assert interrupt if battery mounted. Clear the status
registers before interrupt enabled to prevent bad logic.

Bug 3910065
Bug 3742306

Change-Id: I02dc6ce9352b1f1932cc539e6988375da4098014
Signed-off-by: Chenjian <jackchen@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2833620
(cherry picked from commit a50dd0a752641a30d84a5edfed426a12f2641acc)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2839704
(cherry picked from commit 1b7ac9b9dce9e87b6eab9f0116414fa636b00f87)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3414735
Reviewed-by: Shubhi Garg <shgarg@nvidia.com>
Tested-by: Shubhi Garg <shgarg@nvidia.com>
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Chenjian
2022-12-27 09:46:35 +08:00
committed by Jon Hunter
parent 4e64a23624
commit 7434e9a293

View File

@@ -228,6 +228,14 @@ static int nvvrs_pseq_probe(struct i2c_client *client,
return ret; return ret;
} }
/* When battery mounted, the chip may have IRQ asserted. */
/* Clear it before IRQ requested. */
ret = nvvrs_pseq_irq_clear(nvvrs_chip);
if (ret < 0) {
dev_err(nvvrs_chip->dev, "Failed to clear IRQ: %d\n", ret);
return ret;
}
nvvrs_pseq_irq_chip.irq_drv_data = nvvrs_chip; nvvrs_pseq_irq_chip.irq_drv_data = nvvrs_chip;
ret = devm_regmap_add_irq_chip(nvvrs_chip->dev, nvvrs_chip->rmap, client->irq, ret = devm_regmap_add_irq_chip(nvvrs_chip->dev, nvvrs_chip->rmap, client->irq,
IRQF_ONESHOT | IRQF_SHARED, 0, IRQF_ONESHOT | IRQF_SHARED, 0,