From a196aadaf7393b052e0b732ccc3d12010ec74938 Mon Sep 17 00:00:00 2001 From: Chenjian Date: Tue, 27 Dec 2022 09:46:35 +0800 Subject: [PATCH] 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 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 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3418233 Reviewed-by: Bibek Basu Reviewed-by: Shubhi Garg Tested-by: Kevin Fu GVS: buildbot_gerritrpt --- drivers/mfd/nvidia-vrs-pseq.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/nvidia-vrs-pseq.c b/drivers/mfd/nvidia-vrs-pseq.c index eb40c56d..3124623c 100644 --- a/drivers/mfd/nvidia-vrs-pseq.c +++ b/drivers/mfd/nvidia-vrs-pseq.c @@ -2,7 +2,7 @@ /* * Voltage Regulator Specification: Power Sequencer MFD Driver * - * Copyright (C) 2020-2023 NVIDIA CORPORATION. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ #include @@ -228,6 +228,14 @@ static int nvvrs_pseq_probe(struct i2c_client *client, 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; ret = devm_regmap_add_irq_chip(nvvrs_chip->dev, nvvrs_chip->rmap, client->irq, IRQF_ONESHOT | IRQF_SHARED, 0,