PROCESSOR-SDK-AM62P: PMIC tps65224 on am62p5 evm board: pmic tps65224 doesn't probe

Part Number: PROCESSOR-SDK-AM62P
Other Parts Discussed in Thread: TPS65224, TPS65224-Q1

Tool/software:

Good morning,

I have a Sitara board evm k3-am62p5.sk  , with kernel 6.1.83 ti.

I also have a custom board, but the issue is the same, so I describe te problem with TI EVM board.

I wish to add the features for the PMIC tps65224, so I have added all the patches related to the link: 

https://patchew.org/linux/0109018f2f24c15e-c50bfc29-5f1d-4368-a4b8-2c9f1d398abb-000000@ap-south-1.amazonses.com/0109018f2fdc0d44-9e032c9d-52ed-451e-bd22-bb51b8b474b0-000000@ap-south-1.amazonses.com/ , where there there is the support for adding the tps65224 pmic driver, including it into the tps6594 driver already existing.

In total there are 10 patches, the last one is the patch for the dts, the k3-am62ps-sk.dts.  I have applied all of them, one by one.

I have also added something into the .dts, for reading the watchdog register of the pmic, working on the mcu_i2c0_pins_default,  mcu-i2c0-pins-default (E11 MCU_I2C0_SCL  and D11 MCU_I2C0_SDA ).

Then, I am able to see and read and modify the registers of the pmic, including the specific ones at its pag. 5 related to the watchdog registers at another i2c (I see and read both i2c-0 and i2c-1).

But the driver doesn't probe, I just see:  " i2c 0-0048: deferred probe pending " and no other dmesg probing logs (even added by purpose).

Another thing: just modifying the dts alone (the last patch of the bunch), including further modification for the watchdog registers (as described above) and leaving all other files unmodified, the result is the same: I can read and write the correspondent registers of the pmic (including the watchdog registers too).

So the previous 9 patches (core, i2c, pinctrl, ..)  seem to have no influence

A further note: on my custom board, the behavior is the same: I can read and write all registers just modifying its proper dts, without doing nothing else; when I add all other patches, I can perfectly compile and insert them, (I just had to add GPIO_REGMAP into the driver/gpio/Kconfig), building the proper Image,  but in the end I cannot see any probe and I cannot see any behavior modification.

What I should add for having the tps65224 driver (included in tps6594) correctly probing?

Thanks and regards,

Lorenzo

  • Hi,

    This thread was originally assigned to the wrong organization. It is just reassigned to the right organization and expert. Please, allow some time for the expert to reply. 

  • Hi Lorenzo,

    he k3-am62ps-sk.dts.  I have applied all of them, one by one.

    Can you share the dts nodes that the PMIC uses?

    I'll loop in the PMIC team to comment on the drivers.

    Best Regards,

    Anshu

  • Hi Anshu,

    I deal directly with our custom board, whose problem is similar.

    In our custom board, the PMIC_INT is connected to C23 EXTINTn, not to the B10 as in the EVM.

    Reading the AM62Px ds, pag. 19 I see that C23 can be configured as EXTINTn (Mux mode 0) or GPIO1_31 (mux mode 7);
    I also see taht the address is 0x000f41f4 (padconfig)

    So, in &main_pmx0 , I have added:

    "
      pmic_irq_pins_default: pmic-irq-default-pins {
           pinctrl-single,pins = <
               AM62PX_MCU_IOPAD(0x1f4, PIN_INPUT, 0) /* EXTINTn */
           >;
      };
    "

    Pls correct me if I have done some mistake.

    Then, in &wakeup_i2c0, I have:

    &wkup_i2c0 {
        status = "okay";

        pinctrl-names = "default";
        pinctrl-0 = <&wkup_i2c0_pins_default>;
        clock-frequency = <400000>;

        tps65224: pmic@48 {
            compatible = "ti,tps65224-q1";
            reg = <0x48>;

            pinctrl-0 = <&pmic_irq_pins_default>;
            pinctrl-names = "default";

            irq-gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;

            ti,primary-pmic;
            gpio-controller;
            #gpio-cells = <2>;

            -------

            /* Buck and LDO */

            -------

        };
    }

    In the end I have all the i2c detected and readable through i2cdetect/ i2ctools,
    I see 0x48, 0x49, 0x4a, 0x4b on i2c0 , 0x12 watchdog register on i2c1 , but the driver doesn't probe.

    tps6594-i2c probe starts, calls the tps6594_device_init in the tps6594-core, recognize chip_is tps65224,
    but then fails in the devm_regmap_add_irq_chip.

    I get indeed in dmesg:

    "
    pinctrl-single f4000.pinctrl: pmic-irq-default-pins index: 0x1f4 value: 0x50000
    pinctrl core: add 1 pinctrl maps
    pinctrl-single f4000.pinctrl: found group selector 13 for pmic-irq-default-pins
    pinctrl-single f4000.pinctrl: request pin 125 (PIN125) for 0-0048
    pinctrl-single f4000.pinctrl: enabling pmic-irq-default-pins function13

    --- tps6594 i2c and core start ---

    tps6594 0-0048: Failed to request IRQ 0 for tps6594-3-0x48: -22
    tps6594 0-0048: error -EINVAL: Failed to add regmap IRQ
    tps6594: probe of 0-0048 failed with error -22
    "

    If I change "irq-gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;"

    with:

    "
    interrupt-parent = <&main_gpio1>;
    interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
    "

    the situation is even worst:

    the tps6594-i2c probe doesn't start at all, and also I get a series of errors like this:

    "
    error: hwirq 0x33 is too large for :bus@f0000:bus@b00000:i2c@2b200000:pmic@48
    .....
    error: hwirq 0x56 is too large for :bus@f0000:bus@b00000:i2c@2b200000:pmic@48
    "

    from 33 to 56

    Modifying the "AM62PX_MCU_IOPAD(0x1f4, PIN_INPUT, 0) /* EXTINTn */"
    in AM62PX_MCU_IOPAD(0x1f4, PIN_INPUT, 7) /* GPIO1_31 */
    doesn't change the situation.

    So I don't know what to modify now; probably I have made some mistake, but I cannot now solve it.

    Waiting for a feedback,

    Thanks in advance and Best Regards,
    Lorenzo

  • Hi Lorenzo,

     

    I'm on the PMIC software team. Since you have a custom board, could you answer the following questions to narrow down the solution options:

     

  • Hi Shree,

    Thanks for your fast reply,

    Here down my answers:

    . U-boot patches applied: yes, but they don't modify the situation; the irq request during i2c probe is still an issue.

    . Bug fix patches that are in the kernel/master branch: yes, I have added and an verify that and the chp_id TPS65224 is recognized too.

    . Path of my dtb in the sdcard: it's a fit image, in boot-a I have tiboot3.bin, tispl.bin, u-boot.img.
    Anyway, the dts is found and parsed correctly, otherwise I shouldn't even not been able to detect, raed and modify the proper address 0x48, 0x49, 0x5a and 0x5b at i2c0, and watchdog registers 0x12 at i2c1. They can be seen and read/write through i2ctools (i2cdetect, i2cget....).
    Also, it is recognized that I wiash an irq on C23, mentioned in below pmic_irq_pins_default in the dts (but it fails unfortunately).

    u-boot config CONFIG_SPL_I2C : yes is set.

    . dts

    Here below I write a complete wkup_i2c0, the main_i2c0 (where I can see the watchdog register at address 0x12, and the main_i2c0_pins_default
    and the pmic_irq_pins_default , that they are referred to
    The commented lines, between " /* and */ ", are related to some attempts that I have done.

    If I use: "interrupt-parent = <&main_gpio1>; interrupts = <31 IRQ_TYPE_EDGE_FALLING>;"

    then in dmesg the following error happens repeatedly, from 0x3a to 0x56, with the following message:


    "
    WARNING: CPU: 3 PID: 64 at kernel/irq/irqdomain.c:599 irq_domain_associate_locked+0x164/0x1e0
    Modules linked in:
    CPU: 3 PID: 64 Comm: kworker/u8:2 Tainted: G W 6.1.83-ti-ga87f2cda0817 #1
    Workqueue: events_unbound deferred_probe_work_func
    pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : irq_domain_associate_locked+0x164/0x1e0
    lr : irq_domain_associate_locked+0x164/0x1e0
    sp : ffff8000098db9b0
    x29: ffff8000098db9b0 x28: ffff800008ceb150 x27: ffff00000300f400
    x26: ffff00000307c010 x25: 0000000000000000 x24: 0000000000000003
    x23: 00000000000001c9 x22: 00000000000001c9 x21: ffff000003016a60
    x20: 000000000000003a x19: ffff00000300f400 x18: ffffffffffffffff
    x17: 326232406332693a x16: 3030303030624073 x15: 75623a3030303066
    x14: 407375623a20726f x13: ffff800009271440 x12: 0000000000001389
    x11: 0000000000000683 x10: ffff8000092c9440 x9 : ffff800009271440
    x8 : 00000000ffffefff x7 : ffff8000092c9440 x6 : 0000000000000000
    x5 : 000000000000bff4 x4 : 0000000000000000 x3 : 0000000000000000
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000002aa0000
    Call trace:
    irq_domain_associate_locked+0x164/0x1e0
    irq_create_mapping_affinity+0xdc/0x130
    mfd_add_device+0x1f0/0x4cc
    devm_mfd_add_devices+0xb4/0x15c
    tps6594_device_init+0x27c/0x328
    tps6594_i2c_probe+0x120/0x13c
    i2c_device_probe+0x138/0x30c
    really_probe+0xbc/0x2dc
    __driver_probe_device+0x78/0x114
    driver_probe_device+0xd8/0x15c
    __device_attach_driver+0xb8/0x134
    bus_for_each_drv+0x7c/0xdc
    __device_attach+0xac/0x1d0
    device_initial_probe+0x14/0x20
    bus_probe_device+0x9c/0xa4
    deferred_probe_work_func+0x88/0xc0
    process_one_work+0x1d0/0x320
    worker_thread+0x2c8/0x444
    kthread+0x10c/0x110
    ret_from_fork+0x10/0x20
    ---[ end trace 0000000000000000 ]---

    hwirq 0x<NUMBER>, name :bus@f0000:bus@b00000:i2c@2b200000:pmic@48, irq max 0x2b

    Note: the NUMBER goes from ox33 to 0x56 , and the same log is repeated for every one.
    "

    Otherwise, using instead: "irq-gpios = <&main_gpio1 31 GPIO_ACTIVE_LOW>; "

    I get the following error:
    "
    pinctrl-single f4000.pinctrl: pmic-irq-default-pins index: 0x1f4 value: 0x50000
    pinctrl core: add 1 pinctrl maps
    pinctrl-single f4000.pinctrl: found group selector 13 for pmic-irq-default-pins
    pinctrl-single f4000.pinctrl: request pin 125 (PIN125) for 0-0048
    pinctrl-single f4000.pinctrl: enabling pmic-irq-default-pins function13

    --- tps6594 i2c and core start ---

    tps6594 0-0048: Failed to request IRQ 0 for tps6594-3-0x48: -22
    tps6594 0-0048: error -EINVAL: Failed to add regmap IRQ
    tps6594: probe of 0-0048 failed with error -22
    "

    Anyway, the relevant part of the dts is below:

    "
    &main_pmx0 {
      pinctrl-names = "default";
      pinctrl-0 = <&gpio_conf_pins_default>;

    ......

      main_i2c0_pins_default: main-i2c0-default-pins {
        pinctrl-single,pins = <
          AM62PX_IOPAD(0x01e0, PIN_INPUT, 0) /* (B25) I2C0_SCL */
         AM62PX_IOPAD(0x01e4, PIN_INPUT, 0) /* (A24) I2C0_SDA */
        >;
      };

        ......

        pmic_irq_pins_default: pmic-irq-default-pins {
          pinctrl-single,pins = <
          /* AM62PX_IOPAD(0x1f4, PIN_INPUT, 0) */ /* C23 INTRSTn */
          AM62PX_IOPAD(0x1f4, PIN_INPUT, 7) /* GPIO1_31 */
        >;
        bootph-all;
      };
    }  /* end main_pmx0 */


    &wkup_i2c0 {
      status = "okay";

      pinctrl-names = "default";
      pinctrl-0 = <&wkup_i2c0_pins_default>;
      clock-frequency = <400000>;

      tps65224: pmic@48 {
        compatible = "ti,tps65224-q1";
        reg = <0x48>;

        pinctrl-0 = <&pmic_irq_pins_default>;

        pinctrl-names = "default"
        pinctrl-names = "tps6594-pinctrl"

        system-power-controller;

        interrupt-parent = <&main_gpio1>;
        interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
        /*irq-gpios = <&main_gpio1 31 GPIO_ACTIVE_LOW>; */

        ti,primary-pmic;
        gpio-controller;
        #gpio-cells = <2>;

        buck12-supply = <&vcc_3v3_main>;
        buck3-supply = <&vcc_3v3_main>;
        buck4-supply = <&vcc_3v3_main>;

        ldo1-supply = <&vcc_3v3_main>;
        ldo2-supply = <&vcc_3v3_main>;
         ldo3-supply = <&vcc1v8_sys>;

        regulators {
          vcc_core: buck12 {
            regulator-name = "vcc_core_buck12";
            regulator-min-microvolt = <715000>;
            regulator-max-microvolt = <895000>;
            regulator-always-on;
          };

          vcc1v8_sys: buck3 {
            regulator-name = "vcc1v8_sys_buck3";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-always-on;
          };

          vcc1v1: buck4 {
            regulator-name = "vcc1v1_buck4";
            regulator-min-microvolt = <1100000>;
            regulator-max-microvolt = <1100000>;
            regulator-always-on;
          };

          vdda1v8: ldo1 {
            regulator-name = "vdda1v8_ldo1";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-always-on;
          };

          dvdd3v3: ldo2 {
            regulator-name = "dvdd3v3_ldo2";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-always-on;
          };

          vcc_0v85: ldo3 {
            regulator-name = "vcc_0v85_ldo3";
            regulator-min-microvolt = <850000>;
            regulator-max-microvolt = <850000>;
            regulator-always-on;
          };
        };
      };
    };  /* end whup_i2c0 */

    &main_i2c0 {
      status = "okay";
      pinctrl-names = "default";
      pinctrl-0 = <&main_i2c0_pins_default>;
      clock-frequency = <400000>;

        tps65224wd: watchdog@12 {
          compatible = "ti,tps65224_watchdog";
          reg = <0x12>;
       };

    };
    "

    Thanks in advance and regards,
    Lorenzo

  • Hi Shree,

    One more doubt. I read in technical article spruj83, pag 759, that source interrupt gpio1_gpio_31 has interrupt ID = 121.

    Neverheles, even with with 121, I cannot have success in solving my problem.

    It fails wiith "interrupts = <121 IRQ_TYPE_EDGE_FALLING>;" in the devicetree; it fails with "rq-gpios = <&main_gpio1 121 GPIO_ACTIVE_LOW>; " too;,

    it fails aòsp adding by example "gpio_request(121, "pmic_irq_gpio");" into the driver  (my idea was to do then: "tps->irq = gpio_to_irq(gpio_num);" ,  but failed soon in the gpio_request.

    Can you address me on the right way to follow?

    Regards

    Lorenzo

  • Hi Lorenzo,

    Thank you for your patience & providing further details. Glad we can confirm that the necessary patches are applied. I've encountered the same probe pending -22 error before, so that is why I am listing further ideas to try in order to get a successful boot-up/

     -  pinctrl-names = "tps6594-pinctrl": you have already listed the name as "default", this seems redundant. 

    - Make sure you have this node included within vddshv_sdio: regulator-3 

    {

    ...

     
    +	vcc_3v3_main: regulator-4 {
    +		compatible = "regulator-fixed";
    +		regulator-name = "vcc_3v3_main";
    +		regulator-min-microvolt = <3300000>;
    +		regulator-max-microvolt = <3300000>;
    +		vin-supply = <&vmain_pd>;
    +		regulator-always-on;
    +		regulator-boot-on;
    +	};
    +
     	leds {
     		compatible = "gpio-leds";
     		pinctrl-names = "default";

    -   pinctrl-0 = <&wkup_i2c0_pins_default>;: you have this defined in the pmic node, but your I2C SCL and SDA pins are defined within: 

    main_i2c0_pins_default: main-i2c0-default-pins {
        pinctrl-single,pins = <
          AM62PX_IOPAD(0x01e0, PIN_INPUT, 0) /* (B25) I2C0_SCL */
         AM62PX_IOPAD(0x01e4, PIN_INPUT, 0) /* (A24) I2C0_SDA */
        >;
      };

    - You're using pins for PMIC I2C that are being used already in the dts file:

    main_i2c0_pins_default: main-i2c0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B25) I2C0_SCL */
    			AM62PX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A24) I2C0_SDA */
    		>;
    	};

    - main_gpio1: If you're using this as the interrupt-parent, is the status of main_gpio1 set to "okay", or does it have a node defined in the first place? I have used mcu-gpio0 as the parent & overwrriten the status to be "okay" since I had B10 as the PMIC IRQ Pin. Referencing this patch.

    It seems like you're referencing pins that are allocated for the EVM and referencing undefined nodes.

    BR, Shree

  • Hi Shree,

    Thanks for your suggestions.

    I write here down again the relevant part of my dts, adding something for better clarification; then I will answer to your questions.

    / {
      ......
      vmain_3v3: regulator-0 {  
        compatible = "regulator-fixed";
        regulator-name = "vmain_3v3";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        regulator-always-on;
        regulator-boot-on;
        bootph-all;
      };

      vdd_mmc1: regulator-1 {
      .........
    };


    &main_gpio1 {
      status = "okay";
    };


    &main_pmx0 {
      pinctrl-names = "default";
      pinctrl-0 = <&gpio_conf_pins_default>;


      main_i2c0_pins_default: main-i2c0-default-pins {
        pinctrl-single,pins = <
        AM62PX_IOPAD(0x01e0, PIN_INPUT, 0) /* (B25) I2C0_SCL */
        AM62PX_IOPAD(0x01e4, PIN_INPUT, 0) /* (A24) I2C0_SDA */    
       >;
      };


      pmic_irq_pins_default: pmic-irq-default-pins {
        pinctrl-single,pins = <
          /* AM62PX_IOPAD(0x1f4, PIN_INPUT, 7) */ /* C23 GPIO1_31 */
          AM62PX_IOPAD(0x1f4, PIN_INPUT, 0) /* C23 INTRSTn */
        >;
        bootph-all;
      };
    };


    &mcu_pmx0 {
      pinctrl-names = "default";
      .....

      wkup_i2c0_pins_default: wkup-i2c0-default-pins {
        pinctrl-single,pins = <
          AM62PX_MCU_IOPAD(0x004c, PIN_INPUT, 0) /* (A13) WKUP_I2C0_SCL */
          AM62PX_MCU_IOPAD(0x0050, PIN_INPUT, 0) /* (C11) WKUP_I2C0_SDA */
        >;
      };
    };

    &main_i2c0 {
      status = "okay";
      pinctrl-names = "default";
      pinctrl-0 = <&main_i2c0_pins_default>;
      clock-frequency = <400000>;

      tps65224wd: watchdog@12 {
        compatible = "ti,tps65224_watchdog";
        reg = <0x12>;
      };
    };

    &wkup_i2c0 {

      pinctrl-names = "default";
      pinctrl-0 = <&wkup_i2c0_pins_default>;
      clock-frequency = <400000>;

      tps65224: pmic@48 {
        compatible = "ti,tps65224-q1";
        reg = <0x48>;

        interrupt-parent = <&main_gpio1>; */
        interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
        /* irq-gpios = <&main_gpio1 121 GPIO_ACTIVE_LOW>; */

        pinctrl-0 = <&pmic_irq_pins_default>;

        pinctrl-names = "default";

        ti,primary-pmic;
        #gpio-cells = <2>;

        buck12-supply = <&vmain_3v3>; /* vcc_3v3_main */
        buck3-supply = <&vmain_3v3>;
        buck4-supply = <&vmain_3v3>;

        ldo1-supply = <&vmain_3v3>;
        ldo2-supply = <&vmain_3v3>;
        ldo3-supply = <&vcc1v8_sys>;

        regulators {
          vcc_core: buck12 {
          regulator-name = "vcc_core_buck12";
          regulator-min-microvolt = <715000>;
          regulator-max-microvolt = <895000>;
          regulator-always-on;
        };

        vcc1v8_sys: buck3 {
          regulator-name = "vcc1v8_sys_buck3";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <1800000>;
          regulator-always-on;
        };

        vcc1v1: buck4 {
            regulator-name = "vcc1v1_buck4";
             regulator-min-microvolt = <1100000>;
            regulator-max-microvolt = <1100000>;
            regulator-always-on;
        };

        vdda1v8: ldo1 {
            regulator-name = "vdda1v8_ldo1";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-always-on;
        };

        dvdd3v3: ldo2 {
           regulator-name = "dvdd3v3_ldo2";
           regulator-min-microvolt = <3300000>;
           regulator-max-microvolt = <3300000>;
           regulator-always-on;
        };

        vcc_0v85: ldo3 {
          regulator-name = "vcc_0v85_ldo3";
          regulator-min-microvolt = <850000>;
          regulator-max-microvolt = <850000>;
          regulator-always-on;
        };
      };
    };

    About your questions:

    . I have vmain_3v3 , that should be equivalent (I suppose) of:  vcc_3v3_main: regulator-4 {

    (pls correct me if I am wrong)

    . I have "main-i2c0-default-pins"  , but I have "wkup_i2c0_pins_default " too (probably I didn't mention in previous dts, some wrong copy&paste.

    I have  wkup_i2c0_pins_default , referred in "pinctrl-0 = <&wkup_i2c0_pins_default>;" I have this defined in the pmic node.

    wkup_i2c0_pins_default is in mcu_pmx0 ; anyway I confirm that i2c registers of all pmic are well readable and vritable; using i2cdetect and all other i2ctoolls, I can see and manage all the regiosters of the all 5 pages of the pmic, including the watchdog regosters at page 5, at address 0x12.

    . pinctrl-names = "tps6594-pinctrl"; is redondant, yes, but is commented; I had just tried using it instead of default , but without success (anyway is commented).

    . main_gpio1 is marked as okay in my dts

    Other input: 

    . irq-gpios = <&main_gpio1 121 GPIO_ACTIVE_LOW>;

    and " interrupt-parent = <&main_gpio1>;  interrupts = <121 IRQ_TYPE_EDGE_FALLING>; " are used in alternative, one or the other, 

    the same for : AM62PX_IOPAD(0x1f4, PIN_INPUT, 0)  , in alternative to AM62PX_IOPAD(0x1f4, PIN_INPUT, 7).

    Anyway, no one is succesfull.

    Also, even adding  "gpio_request(121, "pmic_irq_gpio");" , directly in the in tps6594-i2c.c driver, is not succesful .

    I have tried with 121 because I read something into the manual, but maybe I badly understood; could you pls suggest me at least which should be the correct one?

    At the moment I think to have no other relevant input; if something come in my mind, I will surely update.

    Thanks again for your support and Regards,

    Lorenzo

  • Hi Shree,

    One clarification: I have tried "121" in the various previously mentioned irq-gpios or interrupt label in the dts, or in gpio_request(), because I have

    read somewhere that this number should corresponds to gpio1_31.

    (but I am not sure to have correctly understood; nevertheless, using "31", it failed in the same way).

    Best Regards,

    Lorenzo

  • Hi Shree,

    I update you that putting in the dts:

    .  "irq-gpios = <&main_gpio1 31 GPIO_ACTIVE_LOW>;" (inside the tps65224: pmic@48 node) 

    . "AM62PX_IOPAD(0x1f4, PIN_INPUT, 0) /* C23 INTRSTn */" (inside the pmic_irq_pins_default: pmic-irq-default-pins, embedded in its turn in main_pmx0),

    and adding (in my case) in the tps6594-i2c.c driver:

    "irq_gpio = devm_gpiod_get_optional(&client->dev, "irq", GPIOD_ASIS); tps->irq = gpiod_to_irq(irq_gpio);" instead of "tps->irq = client->irq;"

    then I can see that tps6594-core arrives till to the final probing without error messages ( I get the intrpt 393).

    And pinctrl driver too.

    Still to debug and see what happens, but at least I no longer see errors ( at least at a 1st glance...).

    Still need to better understand anyway what I should really put in  gpio1_31 (I just used GPIO_ACTIVE_LOW) and C23 0x1f4 (I used PIN_INPUT, 0, INTRSTn); at the moment I just see the final probe but I have still to clarify some things.

    I remain waiting for suggestions,

    Regards,

    Lorenzo

  • Hi Shree,

    I also update that after restarting everything, I can now probe even with : "interrupt-parent = <&main_gpio1>; interrupts = <31 IRQ_TYPE_EDGE_FALLING>;" in the devicetree ,  AM62PX_IOPAD(0x1f4, PIN_INPUT, 7) in the devicetree , and leaving "tps->irq = client->irq;" untouched (same intrpt nbr 393).

    tps6594-core/i2c and pinctrl probing without seeing errors.

    Thanks for your support. I am not yet sure about IRQ_TYPE_EDGE_FALLING and  AM62PX_IOPAD(0x1f4, PIN_INPUT, 7 or 0; (at least I am not yet sure about which is the better solution); your suggestions wold be appreciate.

    Regards,

    Lorenzo