Re: Linux driver for IRPS5401 - status reg not found

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

 



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




[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