4 Replies Latest reply on Jun 28, 2019 2:26 AM by deville

    Ultrazed-EV: Unable to locate the Infineon power chips. ( PMBUS )

    deville

      Hi Avnet,

       

      Currrently i'm tying to make a connection with all the I2C devices on the Ultrazed-EV board. I managed to reach the eeproms, the gpio extender and the i2C mux but i'm struggling to make this final I2C connection to the Infineon chips.

       

      I see all the chips via the Infineon software and the USB005 dongle which gives me a nice overview of the chips and their correlating  addresses ( image below )

       

      However I don't seem to manage to connect to them via the Zynqmp Linux root files system. The address 0x6a , which is the PLL chip behind the i2c mux, seems to been found by it's diver.  I think there should be 4 Infineon chips in this i2c region/channel (U18, U19 U21 end U22 )

       

       

      Can someone point out to me how I can make these infineon chips appear in the root file system?  Any help is very welcome..

       

      Thanks Deville

        • Re: Ultrazed-EV: Unable to locate the Infineon power chips. ( PMBUS )
          deville

          I found this solution rather quickly in the end.

           

          I must have used a device tree snippet from the zcu102 board or just made a plain mistake. Either way I used (the device tree ) compatible string  "nxp,pca9542" instead of the I2C chip used on the Ultrazed board.  "pca9543" 

          Both devices are using the same driver  ( drivers/i2c/muxes/i2c-mux-pca954x.c ) but the pca9542 chip is a mux, while pca9543 is in fact a switch. This mixup caused the driver to treat the device differently, trying to set a mux channel ( value 0x04 )

           

          Now I have my devices:

           

          Thanks Avnet !

            • Re: Ultrazed-EV: Unable to locate the Infineon power chips. ( PMBUS )
              deville

              Another Issue popped up after finding the previous solution. On the UltraZed-EV board there are some Infineon chips with PMBUS capabilities present like i mentioned at the start of this thread.

               

              These chips have no drivers present in my kernel ( 4.14 ) so I used the generic PMBUS driver. However there should be some PMBUS Sysfs entries present once booted but this seems not to be working.

               

              All I get is:

              [zynqmp@zynqmp ~ ]$ dmesg | grep pmbus
              [    1.475625] pmbus 1-004b: PMBus status register not found
              [    1.475921] pmbus 1-004c: PMBus status register not found
              [    1.476212] pmbus 1-0049: PMBus status register not found
              [    1.476503] pmbus 1-004a: PMBus status register not found
              [    1.490635] pmbus 2-0046: No attributes found
              [    1.504554] pmbus 2-0047: No attributes found
              [    1.520525] pmbus 2-0048: No attributes found
              

               

              Can you give me any advice on this issue Avnet?  Should I be doing my own readout from userspace? ( I can do readouts and manipulations via the I2C tools )

               

              Thanks in advance

                • Re: Ultrazed-EV: Unable to locate the Infineon power chips. ( PMBUS )
                  narrucmot

                  Hi deville,

                  Can you share your <petalinux project folder>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi file with me?  I suspect it is missing the correct descriptions of the I2C mux and Infineon PMICs.

                   

                  Thanks,

                  Tom

                    • Re: Ultrazed-EV: Unable to locate the Infineon power chips. ( PMBUS )
                      deville

                      Hi narrucmot

                       

                      Yes certainly, I must say I don't use Petalinux but it just should be same.

                       

                      Thanks for your help on this. 

                       

                       

                      &i2c1 {
                           status = "okay";
                           clock-frequency = <100000>;
                           i2c-eeprom1@50 {
                                #size-cells = <0>;
                                #address-cells = <1>;
                                compatible = "at,at24c08";
                                reg = <0x50>;
                           };
                      
                           /*later kernels onnn,pca9654 */
                           io_expander: gpio@20 {
                                compatible = "onsemi,pca9654";         
                                reg = <0x20>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&i2c1_pins>;
                                gpio-controller;
                                #gpio-cells = <2>;
                                /*interrupt-parent = <&gic>;*/
                                /*interrupts = <23 IRQ_TYPE_LEVEL_LOW>;*/
                           };
                      
                           i2c-switch@70 { /* U7 on UZ3EG SOM, U8 on UZ7EV SOM */
                                compatible = "nxp,pca9543";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                reg = <0x70>;
                                i2c@0 {
                                     #address-cells = <1>;
                                     #size-cells = <0>;
                                     reg = <0>;
                                     versaclock@6a {
                                          compatible = "idt,5p49v5935" ;
                                          reg = <0x6a> ;
                                     };
                                     mac-eeprom2@51 {
                                          #size-cells = <0>;
                                          #address-cells = <1>;
                                          compatible = "at,at24c08";
                                          reg = <0x51>;
                                     };
                                     ir38063_4b: ir38063@4b { /* IR38063 - U18   */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x4b>;
                                     };
                                     ir38063_4c: ir38063@4c { /* IR38063 - U19   */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x4c>;
                                     };
                      
                                     irps5401_49: irps54012@49 { /* IRPS5401 - U21   */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x49>;
                                     };
                                     irps5401_4a: irps54012@4a { /* IRPS5401 - U22   */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x4a>;
                                     };
                                };
                                i2c@1 { /* i2c mw 70 0 1 */
                                     #address-cells = <1>;
                                     #size-cells = <0>;
                                     reg = <1>;
                                     irps5401_46: irps54012@46 { /* IRPS5401 - U24   */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x46>;
                                     };
                                     irps5401_47: irps54012@47 { /* IRPS5401 - U25 */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x47>;
                                     };
                                     irps5401_48: irps54012@48 { /* IRPS5401 - U26 */
                                          #clock-cells = <0>;
                                          compatible = "generic,pmbus";
                                          reg = <0x48>;
                                     };
                                };
                           };
                      };