On Wed, May 08, 2024 at 05:12:51PM +0100, Bryan O'Donoghue wrote: > On 06/05/2024 16:08, Johan Hovold wrote: > > Request and deassert any (optional) reset gpio during probe in case it > > has been left asserted by the boot firmware. > > > > Note the reset line is not asserted to avoid reverting to the default > > I2C address in case the firmware has configured an alternate address. > > @@ -169,6 +171,10 @@ static int pm8008_probe(struct i2c_client *client) > > > > i2c_set_clientdata(client, regmap); > > > > + reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); > > + if (IS_ERR(reset)) > > + return PTR_ERR(reset); > > + > > if (of_property_read_bool(dev->of_node, "interrupt-controller")) { > > rc = devm_regmap_add_irq_chip(dev, regmap, client->irq, > > IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data); > > So not resetting is fine and I understand you want to retain the address > given by the firmware, I think that's the right thing to do. > In addition to adding a small delay suggested by Andy - a few > microseconds pick a number, I think you should verify the chip is out of > reset as we would do with many other i2c devices. > In this case, suggest reading REVID_PERPH_TYPE @ 0x104 and > REVID_PERPH_SUBTYPE @ 0x105 > > REVID_PERPH_TYPE @ 0x104 == 0x51 (PMIC) > REVID_PERPH_SUBYTE @ 0x105 == 0x2C (PM8008) I'll consider it for v2. Johan