Message ID | 20250103225732.196636-3-s-ramamoorthy@ti.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add TI TPS65215 PMIC MFD Support | expand |
On 04/01/2025 00:57, Shree Ramamoorthy wrote: > The chipid macro/variable and regmap_read function call is not needed > because the TPS65219_REG_TI_DEV_ID register value is not a consistent value > across TPS65219 PMIC config versions. Reading from the DEV_ID register > without a consistent value to compare it to isn't useful. There isn't a > way to verify the match data ID is the same ID read from the DEV_ID device > register. 0xF0 isn't a DEV_ID value consistent across TPS65219 NVM > configurations. > > For TPS65215, there is a consistent value in bits 5-0 of the DEV_ID > register. However, there are other error checks in place within probe() > that apply to both PMICs rather than keeping this isolated check for one > PMIC. > > Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> In that case this could be squashed with 1? > --- > drivers/mfd/tps65219.c | 6 ------ > include/linux/mfd/tps65219.h | 2 -- > 2 files changed, 8 deletions(-) > > diff --git a/drivers/mfd/tps65219.c b/drivers/mfd/tps65219.c > index 816b271990a2..d3267bf7cd77 100644 > --- a/drivers/mfd/tps65219.c > +++ b/drivers/mfd/tps65219.c > @@ -382,12 +382,6 @@ static int tps65219_probe(struct i2c_client *client) > if (ret) > return ret; > > - ret = regmap_read(tps->regmap, TPS65219_REG_TI_DEV_ID, &tps->chip_id); > - if (ret) { > - dev_err(tps->dev, "Failed to read device ID: %d\n", ret); > - return ret; > - } > - > ret = devm_mfd_add_devices(tps->dev, PLATFORM_DEVID_AUTO, > pmic->cells, pmic->n_cells, > NULL, 0, regmap_irq_get_domain(tps->irq_data)); > diff --git a/include/linux/mfd/tps65219.h b/include/linux/mfd/tps65219.h > index 9892b6e4c85c..535115bfa4a4 100644 > --- a/include/linux/mfd/tps65219.h > +++ b/include/linux/mfd/tps65219.h > @@ -15,8 +15,6 @@ > #include <linux/regmap.h> > #include <linux/regulator/driver.h> > > -/* TPS chip id list */ > -#define TPS65219 0xF0 > /* Chip id list*/ > enum pmic_id { > TPS65215, Looking at TRM, TPS65215 device_id is 0x15 and TPS6521901 device_id is 0x00. shouldn't we use that here as well?
Hi, On 1/4/2025 12:16 PM, Roger Quadros wrote: > > On 04/01/2025 00:57, Shree Ramamoorthy wrote: >> The chipid macro/variable and regmap_read function call is not needed >> because the TPS65219_REG_TI_DEV_ID register value is not a consistent value >> across TPS65219 PMIC config versions. Reading from the DEV_ID register >> without a consistent value to compare it to isn't useful. There isn't a >> way to verify the match data ID is the same ID read from the DEV_ID device >> register. 0xF0 isn't a DEV_ID value consistent across TPS65219 NVM >> configurations. >> >> For TPS65215, there is a consistent value in bits 5-0 of the DEV_ID >> register. However, there are other error checks in place within probe() >> that apply to both PMICs rather than keeping this isolated check for one >> PMIC. >> >> Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> > In that case this could be squashed with 1? Since this change does not have to do with TPS65215 support directly and is a different type of change, I wanted to keep this patch separate. I can instead have this patch be first, then the MFD add TPS65215 support will follow this to avoid any confusion about regmap_read being modified then removed. >> --- >> drivers/mfd/tps65219.c | 6 ------ >> include/linux/mfd/tps65219.h | 2 -- >> 2 files changed, 8 deletions(-) >> >> diff --git a/drivers/mfd/tps65219.c b/drivers/mfd/tps65219.c >> index 816b271990a2..d3267bf7cd77 100644 >> --- a/drivers/mfd/tps65219.c >> +++ b/drivers/mfd/tps65219.c >> @@ -382,12 +382,6 @@ static int tps65219_probe(struct i2c_client *client) >> if (ret) >> return ret; >> >> - ret = regmap_read(tps->regmap, TPS65219_REG_TI_DEV_ID, &tps->chip_id); >> - if (ret) { >> - dev_err(tps->dev, "Failed to read device ID: %d\n", ret); >> - return ret; >> - } >> - >> ret = devm_mfd_add_devices(tps->dev, PLATFORM_DEVID_AUTO, >> pmic->cells, pmic->n_cells, >> NULL, 0, regmap_irq_get_domain(tps->irq_data)); >> diff --git a/include/linux/mfd/tps65219.h b/include/linux/mfd/tps65219.h >> index 9892b6e4c85c..535115bfa4a4 100644 >> --- a/include/linux/mfd/tps65219.h >> +++ b/include/linux/mfd/tps65219.h >> @@ -15,8 +15,6 @@ >> #include <linux/regmap.h> >> #include <linux/regulator/driver.h> >> >> -/* TPS chip id list */ >> -#define TPS65219 0xF0 >> /* Chip id list*/ >> enum pmic_id { >> TPS65215, > Looking at TRM, TPS65215 device_id is 0x15 and TPS6521901 device_id is 0x00. > > shouldn't we use that here as well? The device_id value set varies across TPS65219 hardware versions. Having the device_id as the chip_id differentiator will fail for TPS65219, even though the system engineers have now kept the TPS65215 device_id value consistent across all hardware versions.
diff --git a/drivers/mfd/tps65219.c b/drivers/mfd/tps65219.c index 816b271990a2..d3267bf7cd77 100644 --- a/drivers/mfd/tps65219.c +++ b/drivers/mfd/tps65219.c @@ -382,12 +382,6 @@ static int tps65219_probe(struct i2c_client *client) if (ret) return ret; - ret = regmap_read(tps->regmap, TPS65219_REG_TI_DEV_ID, &tps->chip_id); - if (ret) { - dev_err(tps->dev, "Failed to read device ID: %d\n", ret); - return ret; - } - ret = devm_mfd_add_devices(tps->dev, PLATFORM_DEVID_AUTO, pmic->cells, pmic->n_cells, NULL, 0, regmap_irq_get_domain(tps->irq_data)); diff --git a/include/linux/mfd/tps65219.h b/include/linux/mfd/tps65219.h index 9892b6e4c85c..535115bfa4a4 100644 --- a/include/linux/mfd/tps65219.h +++ b/include/linux/mfd/tps65219.h @@ -15,8 +15,6 @@ #include <linux/regmap.h> #include <linux/regulator/driver.h> -/* TPS chip id list */ -#define TPS65219 0xF0 /* Chip id list*/ enum pmic_id { TPS65215,
The chipid macro/variable and regmap_read function call is not needed because the TPS65219_REG_TI_DEV_ID register value is not a consistent value across TPS65219 PMIC config versions. Reading from the DEV_ID register without a consistent value to compare it to isn't useful. There isn't a way to verify the match data ID is the same ID read from the DEV_ID device register. 0xF0 isn't a DEV_ID value consistent across TPS65219 NVM configurations. For TPS65215, there is a consistent value in bits 5-0 of the DEV_ID register. However, there are other error checks in place within probe() that apply to both PMICs rather than keeping this isolated check for one PMIC. Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com> --- drivers/mfd/tps65219.c | 6 ------ include/linux/mfd/tps65219.h | 2 -- 2 files changed, 8 deletions(-)