mfd: return from probe for vrs chip rev < 0x40

VRS Power Sequencer has silicon issues for chip revision < 0x40.
Thus making probe failed and driver will exit if we read revision < 0x40.

Bug 3366934

Change-Id: I8ce7ddc1c6b76e6cced5349798a5d42878605441
Signed-off-by: Shubhi Garg <shgarg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2728938
(cherry picked from commit 67df4ac93fb2f8e6285407a8fdcea186479cbaa1)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2704054
(cherry picked from commit 2e3764ac0dddd3d7d96d29f6a9b49655c16027bc)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2748742
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
Shubhi Garg
2022-07-21 10:00:01 +00:00
committed by mobile promotions
parent 2db1b1e964
commit 87feab86a2

View File

@@ -171,6 +171,14 @@ static int nvvrs_pseq_vendor_info(struct nvvrs_pseq_chip *chip)
}
model_rev = (unsigned int)ret;
if (model_rev < 0x40) {
dev_info(chip->dev, "NVVRS Chip Rev: 0x%X which is < 0x40\n",
model_rev);
dev_info(chip->dev, "Silicon issues thus exiting...\n");
return -EINVAL;
}
dev_info(chip->dev, "NVVRS Model Rev: 0x%X\n", model_rev);
return 0;
@@ -208,6 +216,12 @@ static int nvvrs_pseq_probe(struct i2c_client *client,
return ret;
}
ret = nvvrs_pseq_vendor_info(nvvrs_chip);
if (ret < 0) {
dev_err(nvvrs_chip->dev, "Invalid vendor info: %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,
@@ -230,12 +244,6 @@ static int nvvrs_pseq_probe(struct i2c_client *client,
return ret;
}
ret = nvvrs_pseq_vendor_info(nvvrs_chip);
if (ret < 0) {
dev_err(nvvrs_chip->dev, "Failed to read vendor info: %d\n", ret);
return ret;
}
dev_info(nvvrs_chip->dev, "NVVRS PSEQ probe successful");
return 0;
}