On 31. 03. 20 14:38, Michal Simek wrote: > On 30. 03. 20 21:48, Guenter Roeck wrote: >> On Mon, Mar 30, 2020 at 01:09:56PM -0600, Robert Hancock wrote: >>> On 2020-03-30 12:48 p.m., Guenter Roeck wrote: >>>> On 3/30/20 8:42 AM, Robert Hancock wrote: >>>>> On 2020-03-30 9:24 a.m., 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 ? >>>>> >>>>> These chips have two I2C addresses with two separate interfaces: the standard PMBus-compatible interface at an address between 0x40-0x4f, which the irps5401 driver supports, and another proprietary interface at an address between 0x10-0x1f. The specific addresses in those ranges is configured by the value of a resistor on one of the pins. >>>>> >>>> >>>> Ah, sorry, I didn't get that part earlier. Unfortunately, the datasheet >>>> doesn't seem to include a description of the proprietary interface >>>> registers/commands, or maybe I am missing it. >>>> >>>> The chip datasheet does talk a lot about various MTP registers. >>>> Part of that register set is Write_protect_section and >>>> Read_protect_section. Maybe the PMBus registers are all read >>>> protected ? >>> >>> There is a programming guide and register map on the Infineon site under >>> "Additional Technical Information" here: >>> >>> https://www.infineon.com/cms/en/product/power/dc-dc-converters/integrated-pol-voltage-regulators/irps5401m/ >>> >> Based on that my best guess would be that either the chips are not at the >> expected addresses, or that the registers are indeed read protected. > > I am able to detect that devices. > > root@zcu104-debian:/etc/apt# i2cdetect -y -r 3 > 0 1 2 3 4 5 6 7 8 9 a b c d e f > 00: -- -- -- -- -- -- -- -- -- -- -- -- -- > 10: -- -- -- 13 14 -- -- -- -- -- -- -- -- -- -- -- > 20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 40: -- -- -- 43 44 -- -- -- -- -- -- -- -- -- -- -- > 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > 70: -- -- -- -- UU -- -- -- > > Also disable/enable rail on 0x44 and see power good led on/off > > root@zcu104-debian:~# i2cset -y 3 0x44 0 3 > root@zcu104-debian:~# i2cset -y 3 0x44 1 0x80 b > root@zcu104-debian:~# i2cget -y 3 0x44 0x78 b > > I can't read the rest of regs but checking with hw guys what they have > done with these devices. Just to let you know issue is with i2c driver. Here is my output for the record. irps5401-i2c-3-43 Adapter: i2c-0-mux (chan_id 2) vin1: 11.56 V (min = +9.00 V, crit max = +14.00 V) vin2: 11.56 V (min = +9.00 V, crit max = +14.00 V) vin3: 11.56 V (min = +9.00 V, crit max = +14.00 V) vin4: N/A vin5: 2.52 V (min = +0.40 V, crit max = +4.00 V) ALARM (CRIT) vout1: 851.00 mV (crit min = +0.65 V, min = +0.68 V) (max = +1.02 V, crit max = +1.25 V) vout2: 1.80 V (crit min = +1.55 V, min = +1.56 V) (max = +2.16 V, crit max = +2.20 V) vout3: 1.20 V (crit min = +0.90 V, min = +0.96 V) (max = +1.43 V, crit max = +1.59 V) vout4: N/A vout5: 906.00 mV (crit min = +0.68 V, min = +0.79 V) (max = +1.02 V, crit max = +1.13 V) temp1: +43.0°C (high = +100.0°C, crit = +120.0°C) temp2: +43.0°C (high = +100.0°C, crit = +120.0°C) temp3: +43.0°C (high = +100.0°C, crit = +120.0°C) temp4: N/A temp5: +44.0°C (high = +100.0°C, crit = +120.0°C) pin1: 1.75 W pin2: 406.25 mW pin3: 468.75 mW pin4: N/A pin5: 15.62 mW pout1: 1.50 W pout2: 406.25 mW pout3: 468.75 mW pout4: N/A pout5: 15.62 mW iin1: 125.00 mA iin2: 31.00 mA iin3: 39.00 mA iin4: N/A iout1: 2.00 A (max = +21.00 A, crit max = +25.00 A) iout2: 234.00 mA (max = +2.50 A, crit max = +3.12 A) iout3: 390.00 mA (max = +8.50 A, crit max = +10.25 A) iout4: N/A iout5: 8.00 mA (max = +0.65 A, crit max = +0.72 A) irps5401-i2c-3-44 Adapter: i2c-0-mux (chan_id 2) vin1: 11.53 V (min = +9.00 V, crit max = +14.00 V) vin2: 11.56 V (min = +9.00 V, crit max = +14.00 V) vin3: 11.41 V (min = +9.00 V, crit max = +14.00 V) vin4: 11.56 V (min = +9.00 V, crit max = +14.00 V) vin5: 2.51 V (min = +0.40 V, crit max = +4.00 V) ALARM (CRIT) vout1: 3.30 V (crit min = +2.90 V, min = +2.91 V) (max = +3.69 V, crit max = +3.70 V) vout2: 1.13 V (crit min = +0.73 V, min = +0.90 V) (max = +1.35 V, crit max = +1.52 V) vout3: 5.00 V (crit min = +4.60 V, min = +4.70 V) (max = +5.20 V, crit max = +5.40 V) vout4: 152.00 mV (crit min = +1.40 V, min = +1.44 V) (max = +2.16 V, crit max = +2.20 V) vout5: 851.00 mV (crit min = +0.64 V, min = +0.75 V) (max = +0.97 V, crit max = +1.07 V) temp1: +40.0°C (high = +100.0°C, crit = +120.0°C) temp2: +40.0°C (high = +100.0°C, crit = +120.0°C) temp3: +40.0°C (high = +100.0°C, crit = +120.0°C) temp4: +40.0°C (high = +100.0°C, crit = +120.0°C) temp5: +40.0°C (high = +100.0°C, crit = +120.0°C) pin1: 2.50 W pin2: 31.25 mW pin3: 0.00 W pin4: 0.00 W pin5: 187.50 mW pout1: 2.25 W pout2: 31.25 mW pout3: 0.00 W pout4: 31.25 mW pout5: 62.50 mW iin1: 187.00 mA iin2: 0.00 A iin3: 0.00 A iin4: 0.00 A iout1: 750.00 mA (max = +12.00 A, crit max = +14.00 A) iout2: 46.00 mA (max = +1.81 A, crit max = +2.19 A) iout3: 0.00 A (max = +3.50 A, crit max = +4.00 A) iout4: 9.28 A (max = +3.81 A, crit max = +4.81 A) iout5: 73.00 mA (max = +0.65 A, crit max = +0.72 A) Thanks, Michal