Re: Linux driver for IRPS5401 - status reg not found

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux