On 3/30/20 4:33 AM, Michal Simek wrote: > Hi Robert and Guenter, > > Xilinx boards are using IRPS5401 chips and I have tried to use your driver. > I have checked that u-boot can detect that devices and read it. > > ZynqMP> i2c probe > Valid chip addresses: 0C 13 14 20 43 44 74 > ZynqMP> i2c md 13 0 10 > 0000: 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 ................ > ZynqMP> i2c md 14 0 10 > 0000: 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 ................ > ZynqMP> i2c md 43 0 10 > 0000: 00 98 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ > ZynqMP> i2c md 44 0 10 > 0000: 00 8a ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ > ZynqMP> > > Here is DT fragment which I use (it is under i2c mux) > > 185 irps5401_43: irps5401@43 { > 186 compatible = "infineon,irps5401"; > 187 reg = <0x43>; /* pmbus / i2c 0x13 */ Does that mean the mux is at 0x13 ? > 188 }; > 189 irps5401_4d: irps5401@44 { > 190 compatible = "infineon,irps5401"; > 191 reg = <0x44>; /* pmbus / i2c 0x14 */ Why _4d ? > 192 }; > > I see that driver is used but with error. > > [ 37.553740] irps5401 3-0043: PMBus status register not found > [ 37.559815] irps5401 3-0044: PMBus status register not found > > > That's why I want to check with you what could be the problem. > PMBus status registers are at 0x78 (byte) and 0x79 (word). The above error is reported if reading both returns an error or 0xff / 0xffff, which indicates that the chip is not accessible. I can say for sure that whatever is at 0x43/0x44, it is very likely not an irps5401. If it was, at least registers 0x2 and 0x6 should report different values, and 0x01 doesn't look much better (the lower 2 bits should never be set). > Also I would like to know if there is a way to disable it via any API. Not sure what you want to disable. The message ? The PMBus core needs to have access to the chip to initialize. If there is no status register, there is nothing it can do but to refuse to instantiate. It might make sense to use i2cdetect / i2cget in Linux to determine if the chips are accessible. I'd try reading the status registers (0x78 to 0x7e), value registers (0x88 to 0x8d, 0x96, 0x97), manufacturer id (0x99) and model (0x9a), and i2c device ID (0xad) and revision (0xae). > One of this regulator is connected to another device which doesn't have > access to it. It means before powering up this device there is a need to > enable this power regulator. The best via any dedicated API. > We can add regulator support to the PMBus core or to the irps5401 driver if necessary (patches welcome), assuming the regulator in question is handled by Linux. Hope this helps, Guenter