On 30. 03. 20 17:24, Guenter Roeck wrote: > 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 ? HW guys wrote that 0x13 is i2c address and 0x43 is pmbus address. > >> 188 }; >> 189 irps5401_4d: irps5401@44 { >> 190 compatible = "infineon,irps5401"; >> 191 reg = <0x44>; /* pmbus / i2c 0x14 */ > > Why _4d ? Sorry - I was checking board and 4d was address on early revision and didn't update it. > >> 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). There is nothing else on schematics. When I try 0x13/0x14 I am getting. irps5401 3-0013: Failed to identify chip capabilities irps5401 3-0014: Failed to identify chip capabilities >> 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. When driver is probed I would like to be able from user space enable/disable the specific output from PMIC. This one has 4 VOUTs. > 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). ok. Will try. > >> 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. ok. Thanks, Michal