SK-AM62B-P1: How to control LEDs via I2C (use of TPIC2810D)

Part Number: SK-AM62B-P1
Other Parts Discussed in Thread: TPIC2810, , SYSCONFIG

Tool/software:

Hello TI,

It is my first time to make your company's products, and I have many simple questions I would like to ask you:

1. I flipped through [参考译文] TMDX654IDKEVM:I2C LED 控制器 - 处理器(参考译文帖)(Read Only) - 处理器(参考译文帖) - E2ETm 设计支持 and found that if you want to control the LED through I2C, you need to do the following

(1) Open the config CONFIG_GPIO_TPIC2810

(2) k3-am654-base-board.dts configures the corresponding device tree

(3) Improve the driver code (ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/drivers/gpio/gpio-tpic2810.c)

However, the description in the forum is still a little difficult to understand, so there are the following problems:

1. If I implement it on SK-AM62B-P1, will I also use this macro CONFIG_GPIO_TPIC2810 to open the control compilation?

2. Is there a reference device tree for TPIC2810D control on the SK-AM62B-P1 device? Can you help point it out? I don't seem to see it

3. There is also the pinctrl control of GPIO encapsulated into an interface macro, how can I see which GPIO (GPIO number) is set specifically, there is only one value similar to address data in your macro (for example, 0x1e0)

AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16/E12) I2C0_SCL */

4. Since the LED is controlled through I2C, why do I control the different LED states when I TPIC2810D the data to the chip? Is there a document to describe it? I didn't find the corresponding information

Thanks

Mingxing

  • Hello Mingxing,

    I am sending your thread to the TPIC2810 team to comment. Feel free to ping the thread if you do not get a response within a couple of business days.

    Regards,

    Nick

  • Hi Nick:

    In addition to TPIC2810 question, can you help me answer the address offset problem of setting the GPIO state macro in the device tree?

    Thanks

  • Hi Nick,

    I think your question is somehow irrelevant with the LED driver usage? So I will leave it to SK-AM62B-P1 team first.

    BR, Gracie

  • Hello Huang,

    Are you using the AM62x (you put the AM62x Starter Kit EVM in your title), or are you using the AM65x (you mentioned the AM65x IDK EVM in your original question).

    Regards,

    Nick

  • Hi Nick

       I'm using AM62x  and I'm looking at the schematic I2C using a TPIC2810D chip

    Thanks

  • Hi Nick,

    We will give you update later

  • Hi Mingxin,

    I don't know your exact question. Since it's a quite legacy device, I don't have any documentation other than datasheet. What's your end application? Why do you choose a LED driver with so large Rdson? Is it for automotive application?

    BR, Gracie

  • Hello,

    I will comment from the AM62x side. Please note that my processors team is NOT an expert in this particular part, but we can provide some general guidance.

    Is there a Linux devicetree node template? 

    Yes. It looks like TPIC2810 was included on the AM64x SK. You can reference that devicetree file as a template:

    arch/arm64/boot/dts/ti/k3-am642-sk.dts
        exp2: gpio@60 {
            compatible = "ti,tpic2810";
            reg = <0x60>;
            gpio-controller;
            #gpio-cells = <2>;
            gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
        }; 

    Any guidance on how to test LEDs? 

    Once the tpic module is loaded after configuring the kernel modules, the leds can be controlled from the terminal (i.e., userspace), through the sysfs interface. But we don't have any documentation as far as I am aware. You should see the LEDs come up under /sys/class/leds/<LED Name>/

    Can TI help you modify the driver code? 

    We cannot support kernel driver development questions, or modifications to our drivers.

    Regards,

    Nick

  • Hi Gracie:

    I don't know the final application, but my boss asked me to be able to control the LED lights freely, for example, if I light all the LEDs or only one LED light, how should I operate

    Thanks

  • Hi Nick:

    1.Aren't you controlling the LED light matrix through the IIC of the TPIC2810D chip? How did it become node control? Did you encapsulate it?

    2.My understanding is that the corresponding register data values can be transmitted to the chip through the IIC to control TPIC2810D the LED matrix

    3.Are these the nodes you are talking about? How do you use these nodes? Also, I don't see the code to create these nodes in the driver file gpio-tpic280.c

    Thanks

  • Hello Huang,

    I am not going to be able to offer any more guidance. My suspicion is that 3 LEDs labeled as "mmc" are NOT related to your 8 TPIC2810 LEDs. They are probably used by the MMC interface instead.

    If I were you, I would try adding TPIC2810 to your AM62x Linux devicetree file and make sure that the driver is enabled in the kernel configs.

    Then, rebuild the kernel, kernel modules, and Linux devicetree, and then copy all those updated files into your filesystem as documented in the AM62x Linux SDK docs: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_00_07_04/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html

    Then see if the LEDs show up.

    Regards,

    Nick

  • Hi Nick:

    You seem to have misunderstood what I meant

    1.I've tried configuring the device tree (TPIC2810D), but so far I've not been successful.

    2.I now summarize that there are two needs, the first is how to configure the TPIC2810D chip, and the second is how to control the TPIC2810D after I have successfully configured, so as to control the LED lights to work according to my ideas

    Thanks

  • Hello,

    Please take another look at the AM64x devicetree file example and try again. You are mixing up code that is supposed to go in the tpic2810 node, and code that is supposed to go in the I2C node.

    If you want someone to look at your devicetree settings, you should copy paste the I2C and TPIC device tree nodes into a code block in your response. Like this:
    Insert > Code

    Regards,

    Nick

  • +++ b/board-support/ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    @@ -8,6 +8,7 @@
     /dts-v1/;
    
     #include "k3-am62x-sk-common.dtsi"
    +#include <dt-bindings/leds/common.h>
    
     / {
            compatible = "ti,am625-sk", "ti,am625";
    @@ -28,7 +29,73 @@ memory@80000000 {
                    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
            };
    +       led-controller {
    +               compatible = "gpio-leds";
    +
    +               led-0 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <1>;
    +                       gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-1 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <2>;
    +                       gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-2 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <3>;
    +                       gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-3 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <4>;
    +                       gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-4 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <5>;
    +                       gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    
    +               led-5 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <6>;
    +                       gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-6 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <7>;
    +                       gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-7 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_HEARTBEAT;
    +                       function-enumerator = <8>;
    +                       linux,default-trigger = "heartbeat";
    +                       gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    +               };
    +       };
            vmain_pd: regulator-0 {
                    /* TPS65988 PD CONTROLLER OUTPUT */
                    compatible = "regulator-fixed";
    @@ -204,7 +271,12 @@ AM62X_IOPAD(0x128, PIN_INPUT, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
     };
    
     &main_i2c1 {
    -       exp1: gpio@22 {
    +               status = "okay";
    +       pinctrl-names = "default";
    +               pinctrl-0 = <&main_i2c1_pins_default>;
    +               clock-frequency = <400000>;
    +
    +               exp1: gpio@22 {
                    compatible = "ti,tca6424";
                    reg = <0x22>;
                    gpio-controller;
    @@ -230,6 +302,13 @@ exp1: gpio@22 {
                    pinctrl-names = "default";
                    pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
            };
    +       exp2: gpio@60 {
    +        compatible = "ti,tpic2810";
    +        reg = <0x60>;
    +        gpio-controller;
    +        #gpio-cells = <2>;
    +        gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    +       };
     };
    

    1.This is my device tree modification, but looking through the i2cdetect command, I can't find my iic address, and there are no LED-related nodes under the sys/class/leds path

    2.The leds-gpio.o and gpio-tpic2810.o files can be generated smoothly

    3.Please tell me how the device tree should be configured so that the TPIC2810D can work smoothly

    Thanks

  • Hi Nick:

    I seem to have added it successfully, and sys/class/leds seem to have generated nodes, but how do you control these nodes? I'm setting up some of these nodes, but I still can't light up the LEDs

    Thanks

  • Hi Nick:

    static struct platform_driver gpio_led_driver = {
    	.probe		= gpio_led_probe,
    	.shutdown	= gpio_led_shutdown,
    	.driver		= {
    		.name	= "leds-gpio",
    		.of_match_table = of_gpio_leds_match,
    	},
    };

    The driver doesn't seem to have a set interface, and we need to write the driver function to set the LED in user space

    Thanks

  • Hello,

    Follow the SYSFS guide for LEDs: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/ABI/testing/sysfs-class-led?h=ti-linux-6.6.y

    You should echo X > /sys/class/leds/<LED Name>/<Parameter> for userspace control.

    Best Regards,
    Anshu

  • Hi Anshu:

    I checked the documentation you said, and set the brightness and max_brightness according to the instructions in the document, but the LED light still doesn't light up, is there something wrong with my configuration?

    ++ b/board-support/ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    @@ -8,6 +8,7 @@
     /dts-v1/;
    
     #include "k3-am62x-sk-common.dtsi"
    +#include <dt-bindings/leds/common.h>
    
     / {
            compatible = "ti,am625-sk", "ti,am625";
    @@ -28,7 +29,77 @@ memory@80000000 {
                    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
            };
    +       led-controller {
    +               compatible = "gpio-leds";
    +
    +               led-0 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <1>;
    +                       gpios = <&tpic2810 0 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-1 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <2>;
    +                       gpios = <&tpic2810 1 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-2 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <3>;
    +                       gpios = <&tpic2810 2 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-3 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <4>;
    +                       gpios = <&tpic2810 3 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-4 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <5>;
    +               //      gpios = <&tpic2810 4 GPIO_ACTIVE_HIGH>;
    +               //      default-state = "off";
    +                       gpios = <&tpic2810 4 GPIO_ACTIVE_LOW>;
    +                       default-state = "on";
    +               };
    +
    +               led-5 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <6>;
    +               //      gpios = <&tpic2810 5 GPIO_ACTIVE_HIGH>;
    +                       gpios = <&tpic2810 5 GPIO_ACTIVE_LOW>;
    +                       default-state = "off";
    +               };
    +
    +               led-6 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <7>;
    +                       gpios = <&tpic2810 6 GPIO_ACTIVE_HIGH>;
    +                       //default-state = "off";
    +                       default-state = "on";
    +               };
    
    +               led-7 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_HEARTBEAT;
    +                       function-enumerator = <8>;
    +                       linux,default-trigger = "heartbeat";
    +                       gpios = <&tpic2810 7 GPIO_ACTIVE_HIGH>;
    +               };
    +       };
            vmain_pd: regulator-0 {
                    /* TPS65988 PD CONTROLLER OUTPUT */
                    compatible = "regulator-fixed";
    @@ -201,6 +272,27 @@ main_wlirq_pins_default: main-wlirq-pins-default {
                            AM62X_IOPAD(0x128, PIN_INPUT, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
                    >;
            };
    +       wkup_i2c0_pins_default: wkup-i2c0-pins-default {
    +               pinctrl-single,pins = <
    +                       AM62X_IOPAD(0x04c, PIN_INPUT_PULLUP, 0) /* (B9/E9) I2C0_SCL */
    +                       AM62X_IOPAD(0x050, PIN_INPUT_PULLUP, 0) /* (A9/A9) I2C0_SDA */
    +               >;
    +       };
    +};
    +
    +&main_i2c0 {
    +       status = "okay";
    +       pinctrl-names = "default";
    +       pinctrl-0 = <&wkup_i2c0_pins_default>;
    +       clock-frequency = <400000>;
    +
    +       tpic2810: gpio@60 {
    +               compatible = "ti,tpic2810";
    +               reg = <0x60>;
    +               gpio-controller;
    +               #gpio-cells = <2>;
    +               gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    +       };
     };
    
     &main_i2c1 {
    

    Thanks

  • Hello,

    Can you explain why the tpic node is under main_i2c1? Are you using custom hardware?

    For AM64x EVM, its connected to Main i2c1:

    But for SK-AM62B-P1, its connected to Wakeup I2C0:

    If you are using SK-AM62B-P1 rather than custom hardware, then you'll need to change it Wakeup Domain I2C0. Refer to SYSCONFIG to generate a sample device tree pinmuxing:

    https://dev.ti.com/sysconfig/#/config/?args=--device%20AM62x%20--package%20ALW


    Best Regards,

    Anshu

  • Hi Anshu

    The main_i2c0 I use, please see the code I sent you newly,

    How do you use sysconfig(https://dev.ti.com/sysconfig/#/config/?args=--device%20AM62x%20--package%20ALW)? I haven't used it before, and I don't seem to find the option for the SK-AM62B-P1 model inside

    Thanks

  • Why are you modifying pinmux settings?

    The I2C0 pinmux is already set for the AM62x SK board:

    arch/arm64/boot/dts/ti$ vi k3-am62x-sk-common.dtsi
    
    &main_i2c0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;

    Regards,

    Nick

  • Hi Nick:

    I tried the new modification, still the same phenomenon, the LED still does not light up after entering the command

    arch/arm64/boot/dts/ti$ vi k3-am62x-sk-common.dtsi
    
    / {
    
    
    ++	led-controller {
    ++		compatible = "gpio-leds";
    ++
    ++		led-0 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <1>;
    ++			gpios = <&tpic2810d 0 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-1 {
    ++			color = <LED_COLOR_ID_RED>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <2>;
    ++			gpios = <&tpic2810d 1 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-2 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <3>;
    ++			gpios = <&tpic2810d 2 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-3 {
    ++			color = <LED_COLOR_ID_AMBER>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <4>;
    ++			gpios = <&tpic2810d 3 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-4 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <5>;
    ++			gpios = <&tpic2810d 4 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-5 {
    ++			color = <LED_COLOR_ID_RED>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <6>;
    ++			gpios = <&tpic2810d 5 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-6 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <7>;
    ++			gpios = <&tpic2810d 6 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-7 {
    ++			color = <LED_COLOR_ID_AMBER>;
    ++			function = LED_FUNCTION_HEARTBEAT;
    ++			function-enumerator = <8>;
    ++			linux,default-trigger = "heartbeat";
    ++			gpios = <&tpic2810d 7 GPIO_ACTIVE_HIGH>;
    ++		};
    ++	};
    
    &main_pmx0 {
    	/* First pad number is ALW package and second is AMC package */
    	main_uart0_pins_default: main-uart0-pins-default {
    ++
    ++	wkup_i2c0_pins_default: wkup-i2c0-pins-default {
    ++		pinctrl-single,pins = <
    ++			AM62X_IOPAD(0x04c, PIN_INPUT_PULLUP, 0) /* (B9/E9) I2C0_SCL */
    ++			AM62X_IOPAD(0x050, PIN_INPUT_PULLUP, 0) /* (A9/A9) I2C0_SDA */
    ++		>;
    ++	};
    }	
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    ++	pinctrl-0 = <&main_i2c0_pins_default>,<&wkup_i2c0_pins_default>;
    	clock-frequency = <400000>;
    ++	tpic2810d: tpic2810@60 {
    ++		compatible = "ti,tpic2810";
    ++		reg = <0x60>;
    ++		gpio-controller;
    ++		#gpio-cells = <2>;
    ++		gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    ++	};
    	typec_pd0: tps6598x@3f {	
    	

  • Huang,

    Please refer back to my response 10 days ago:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1436492/sk-am62b-p1-how-to-control-leds-via-i2c-use-of-tpic2810d/5519223#5519223

    We already pointed you to an example of how to add TPIC2810 to an I2C interface.

    You keep making code changes that do not look anything like the example we pointed you to. We really cannot help you if you are going to ignore the TI examples.

    Regards,

    Nick

  • Hi Nick:

    I just made a code modification based on your suggestion ten days ago, and the address of the i2c and the node of the LED can be generated smoothly, but I found that it does not take effect when the LED light is set to light up through the LED node.

    Please help me

    Thanks

  • Hi Nick:

    By adding log, I found that when I set /sys/class/leds/green:indicator-1/brightness, the i2c_smbus_write_byte_data function in the tpic2810_set_mask_bits was called to transfer the data, and the function ran successfully.

    Why does the LED light not turn on after successful i2c communication?

    static void tpic2810_set_mask_bits(struct gpio_chip *chip, u8 mask, u8 bits)
    {
    	struct tpic2810 *gpio = gpiochip_get_data(chip);
    	u8 buffer;
    	int err;
    	printk("tpic2810_set_mask_bits++++++++++++++++++++++++++++\n");
    
    	mutex_lock(&gpio->lock);
    
    	buffer = gpio->buffer & ~mask;
    	buffer |= (mask & bits);
    
    	err = i2c_smbus_write_byte_data(gpio->client, TPIC2810_WS_COMMAND, buffer);
    	if (!err)
    		gpio->buffer = buffer;
    
    	mutex_unlock(&gpio->lock);
    }

    Thanks

  • Hi Mingxing,

    What is the I2C address of the tpic device?


    Can you share the output of 'cat /sys/kernel/debug/gpio'?

    Can you also share the output of 'cat /sys/kernel/debug/pinctrl/f4000.pinctrl-pinctrl-single/pinmux-pins'?

    Best,

    Anshu

  • Hi Anshu:

    1. i2c add:0x60

    There are too many log texts, I'll send you the file

     

    kernrl-debug-gpio.txt
    [root@TI_AM62X]#~: cat /sys/kernel/debug/gpio
    [   69.010408] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.016289] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.022208] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.028073] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.033963] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.039793] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.045623] tpic2810_get_direction++++++++++++++++++++++++++++
    [   69.051458] tpic2810_get_direction++++++++++++++++++++++++++++
    gpiochip3: GPIOs 336-359, parent: i2c/1-0022, 1-0022, can sleep:
     gpio-336 (GPIO_CPSW2_RST      )
     gpio-337 (GPIO_CPSW1_RST      )
     gpio-338 (PRU_DETECT          )
     gpio-339 (MMC1_SD_EN          |regulator-3         ) out lo
     gpio-340 (VPP_LDO_EN          )
     gpio-341 (EXP_PS_3V3_En       )
     gpio-342 (EXP_PS_5V0_En       )
     gpio-343 (EXP_HAT_DETECT      )
     gpio-344 (GPIO_AUD_RSTn       )
     gpio-345 (GPIO_eMMC_RSTn      )
     gpio-346 (UART1_FET_BUF_EN    )
     gpio-347 (WL_LT_EN            |regulator-6         ) out hi ACTIVE LOW
     gpio-348 (GPIO_HDMI_RSTn      )
     gpio-349 (CSI_GPIO1           )
     gpio-350 (CSI_GPIO2           )
     gpio-351 (PRU_3V3_EN          )
     gpio-352 (HDMI_INTn           )
     gpio-353 (PD_I2C_IRQ          )
     gpio-354 (MCASP1_FET_EN       )
     gpio-355 (MCASP1_BUF_BT_EN    )
     gpio-356 (MCASP1_FET_SEL      )
     gpio-357 (UART1_FET_SEL       )
     gpio-358 (TSINT#              )
     gpio-359 (IO_EXP_TEST_LED     )
    
    gpiochip2: GPIOs 360-411, parent: platform/601000.gpio, 601000.gpio:
     gpio-409 (                    |am62-sk:green:heartb) out lo
    
    gpiochip1: GPIOs 412-503, parent: platform/600000.gpio, 600000.gpio:
     gpio-443 (                    |tlv71033            ) out lo
     gpio-483 (                    |regulator-7         ) out lo
    
    gpiochip0: GPIOs 504-511, parent: i2c/1-0060, tpic2810, can sleep:
     gpio-504 (LED1                |green:indicator-1   ) out ?
     gpio-505 (LED2                |red:indicator-2     ) out ?
     gpio-506 (LED3                |green:indicator-3   ) out ?
     gpio-507 (LED4                |amber:indicator-4   ) out ?
     gpio-508 (LED5                |green:indicator-5   ) out ?
     gpio-509 (LED6                |red:indicator-6     ) out ?
     gpio-510 (LED7                |green:indicator-7   ) out ?
     gpio-511 (LED8                |amber:heartbeat-8   ) out ?
    

    pinmux-pins.txt
    [root@TI_AM62X]#/sys/kernel/debug/pinctrl/f4000.pinctrl-pinctrl-single: ls
    gpio-ranges       pinmux-functions  pinmux-select
    pingroups         pinmux-pins       pins
    [root@TI_AM62X]#/sys/kernel/debug/pinctrl/f4000.pinctrl-pinctrl-single: cat pinm
    ux-pins
    Pinmux settings per pin
    Format: pin (name): mux_owner gpio_owner hog?
    pin 0 (PIN0): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 1 (PIN1): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 2 (PIN2): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 3 (PIN3): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 4 (PIN4): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 5 (PIN5): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 6 (PIN6): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 7 (PIN7): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 8 (PIN8): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 9 (PIN9): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 10 (PIN10): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 11 (PIN11): fc40000.spi (GPIO UNCLAIMED) function ospi0-pins-default group ospi0-pins-default
    pin 12 (PIN12): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 13 (PIN13): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 14 (PIN14): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 15 (PIN15): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 16 (PIN16): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 17 (PIN17): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 18 (PIN18): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 19 (PIN19): 1-0060 (GPIO UNCLAIMED) function wkup-i2c0-pins-default group wkup-i2c0-pins-default
    pin 20 (PIN20): 1-0060 (GPIO UNCLAIMED) function wkup-i2c0-pins-default group wkup-i2c0-pins-default
    pin 21 (PIN21): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 22 (PIN22): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 23 (PIN23): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 24 (PIN24): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 25 (PIN25): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 26 (PIN26): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 27 (PIN27): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 28 (PIN28): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 29 (PIN29): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 30 (PIN30): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 31 (PIN31): regulator-4 (GPIO UNCLAIMED) function vdd-sd-dv-pins-default group vdd-sd-dv-pins-default
    pin 32 (PIN32): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 33 (PIN33): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 34 (PIN34): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 35 (PIN35): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 36 (PIN36): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 37 (PIN37): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 38 (PIN38): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 39 (PIN39): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 40 (PIN40): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 41 (PIN41): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 42 (PIN42): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 43 (PIN43): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 44 (PIN44): 20020000.i2c (GPIO UNCLAIMED) function main-i2c2-pins-default group main-i2c2-pins-default
    pin 45 (PIN45): 20020000.i2c (GPIO UNCLAIMED) function main-i2c2-pins-default group main-i2c2-pins-default
    pin 46 (PIN46): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 47 (PIN47): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 48 (PIN48): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 49 (PIN49): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 50 (PIN50): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 51 (PIN51): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 52 (PIN52): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 53 (PIN53): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 54 (PIN54): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 55 (PIN55): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 56 (PIN56): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 57 (PIN57): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 58 (PIN58): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 59 (PIN59): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 60 (PIN60): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 61 (PIN61): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 62 (PIN62): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 63 (PIN63): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 64 (PIN64): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 65 (PIN65): 30200000.dss (GPIO UNCLAIMED) function main-dss0-pins-default group main-dss0-pins-default
    pin 66 (PIN66): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 67 (PIN67): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 68 (PIN68): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 69 (PIN69): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 70 (PIN70): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 71 (PIN71): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 72 (PIN72): fa20000.mmc (GPIO UNCLAIMED) function main-mmc2-pins-default group main-mmc2-pins-default
    pin 73 (PIN73): regulator-7 (GPIO UNCLAIMED) function wlan-en-pins-default group wlan-en-pins-default
    pin 74 (PIN74): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 75 (PIN75): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 76 (PIN76): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 77 (PIN77): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 78 (PIN78): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 79 (PIN79): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 80 (PIN80): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 81 (PIN81): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 82 (PIN82): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 83 (PIN83): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 84 (PIN84): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 85 (PIN85): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 86 (PIN86): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii1-pins-default group main-rgmii1-pins-default
    pin 87 (PIN87): 8000f00.mdio (GPIO UNCLAIMED) function main-mdio1-pins-default group main-mdio1-pins-default
    pin 88 (PIN88): 8000f00.mdio (GPIO UNCLAIMED) function main-mdio1-pins-default group main-mdio1-pins-default
    pin 89 (PIN89): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 90 (PIN90): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 91 (PIN91): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 92 (PIN92): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 93 (PIN93): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 94 (PIN94): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 95 (PIN95): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 96 (PIN96): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 97 (PIN97): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 98 (PIN98): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 99 (PIN99): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 100 (PIN100): 8000000.ethernet (GPIO UNCLAIMED) function main-rgmii2-pins-default group main-rgmii2-pins-default
    pin 101 (PIN101): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 102 (PIN102): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 103 (PIN103): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 104 (PIN104): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 105 (PIN105): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 106 (PIN106): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 107 (PIN107): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 108 (PIN108): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 109 (PIN109): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 110 (PIN110): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 111 (PIN111): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 112 (PIN112): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 113 (PIN113): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 114 (PIN114): 2800000.serial (GPIO UNCLAIMED) function main-uart0-pins-default group main-uart0-pins-default
    pin 115 (PIN115): 2800000.serial (GPIO UNCLAIMED) function main-uart0-pins-default group main-uart0-pins-default
    pin 116 (PIN116): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 117 (PIN117): 1-0022 (GPIO UNCLAIMED) function main-gpio1-ioexp-intr-pins-default group main-gpio1-ioexp-intr-pins-default
    pin 118 (PIN118): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 119 (PIN119): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 120 (PIN120): 20000000.i2c (GPIO UNCLAIMED) function main-i2c0-pins-default group main-i2c0-pins-default
    pin 121 (PIN121): 20000000.i2c (GPIO UNCLAIMED) function main-i2c0-pins-default group main-i2c0-pins-default
    pin 122 (PIN122): 20010000.i2c (GPIO UNCLAIMED) function main-i2c1-pins-default group main-i2c1-pins-default
    pin 123 (PIN123): 20010000.i2c (GPIO UNCLAIMED) function main-i2c1-pins-default group main-i2c1-pins-default
    pin 124 (PIN124): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 125 (PIN125): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 126 (PIN126): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 127 (PIN127): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 128 (PIN128): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 129 (PIN129): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 130 (PIN130): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 131 (PIN131): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 132 (PIN132): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 133 (PIN133): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 134 (PIN134): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 135 (PIN135): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 136 (PIN136): fa10000.mmc (GPIO UNCLAIMED) function main-mmc0-pins-default group main-mmc0-pins-default
    pin 137 (PIN137): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 138 (PIN138): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 139 (PIN139): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 140 (PIN140): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 141 (PIN141): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 142 (PIN142): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 143 (PIN143): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 144 (PIN144): fa00000.mmc (GPIO UNCLAIMED) function main-mmc1-pins-default group main-mmc1-pins-default
    pin 145 (PIN145): leds (GPIO UNCLAIMED) function usr-led-pins-default group usr-led-pins-default
    pin 146 (PIN146): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 147 (PIN147): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 148 (PIN148): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 149 (PIN149): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 150 (PIN150): 31100000.usb (GPIO UNCLAIMED) function main-usb1-pins-default group main-usb1-pins-default
    pin 151 (PIN151): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 152 (PIN152): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 153 (PIN153): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 154 (PIN154): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 155 (PIN155): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 156 (PIN156): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 157 (PIN157): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 158 (PIN158): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 159 (PIN159): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 160 (PIN160): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 161 (PIN161): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 162 (PIN162): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 163 (PIN163): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 164 (PIN164): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 165 (PIN165): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 166 (PIN166): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 167 (PIN167): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 168 (PIN168): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 169 (PIN169): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 170 (PIN170): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    

    Thanks

  • Hi Anshu:

    Is there a problem with the data I provided?

    Thanks

  • Hi Mingxing,

    Apologies for the delay since I was returning from Holiday in US.

    Can you please try to replicate this E2E FAQ I made? https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1447811/faq-processor-sdk-am62x-how-to-enable-and-use-tpic2810-on-am62x-evms

    Please try this on your end. I was able to do this on AM62x EVMs on my end.

    Best Regards,

    Anshu

  • Hi Anshu:

    1.I modified it exactly according to your device tree, and the LED still won't brighten.

    2.And after your changes, uart keeps printing omap_i2c 2b200000.i2c: controller timed out

    3.I don't know how to get in and modify the kernel module you provided, but I modified the deconfig file(board-support\ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti\arch\arm64\configs)

    Thanks

  • Hi Mingxing,

    From the error message, it looks to be coming from this I2C driver: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/i2c/busses/i2c-omap.c?h=ti-linux-6.1.y#n753

    The instructions to configure the kernel are listed here: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#configuring-the-kernel

    The defconfig is just for getting the default configuration and any additional changes should be done through menuconfig once the ARCH and Cross Compilers are set.

    Are there any other devices on the WKUP_I2C bus? Is there an application running on the DM R5 (or another core) that might be accessing this I2C bus?

    Best Regards,

    Anshu

  • Hi Anshu:

    Here's my menuconfig. It seems to be a little different from yours,

    Regarding the config macro, or is it only added in debugconfig. menuconfig how to add it still don't understand,

    I added the print log at the end of the tpic2810_probe function, the print log prints normally, I guess the loading of the driver should be normal

    Thanks

  • Hi Aanshu:

    We didn't add anything to the WKUP_I2C except the LEDs, and all the code was unmodified.

    I've tried turning off any WKUP_I2C related device tree descriptions, but the problem persists

    Thanks

  • Hi Mingxing,

    I added the print log at the end of the tpic2810_probe function, the print log prints normally, I guess the loading of the driver should be normal

    If this is printing, then it should be working fine.

    I've tried turning off any WKUP_I2C related device tree descriptions, but the problem persists

    The only device tree files that matter are the ones that are used when compiled into k3-am625-sk.dtb.

    I'll ask another engineer to look at the I2C timeout log, so please allow 1-2 days for a response.

    Best Regards,

    Anshu

  • Hi Anshu:

         Thanks, I'll wait for your message.

    Thanks

  • Hello Mingxing,

    To confirm, are you using a SK-AM62B-P1? Or are you using a custom board?

    Regards,

    Nick

  • Hi Nick:

      Yes, I am using the development board of the SK-AM62B-P1.

    Thanks

  • Hello Mingxing,

    As demonstrated in the E2E FAQ, we've proven that the TPIC2810 works correctly on a TI EVM (SK-AM62B-P1 as well). At this point, there is not much more support we can provide.

    What we can recommend is trying from a fresh installation or branch with no additional changes. Maybe try a separate SDK installation so you can keep all the other changes you've made. Once you've confirmed the TPIC module is working, then you can added other changes back in.

    To keep it simple, add the TPIC module in the kernel config, make the changes to the device tree, compile and boot up the EVM. You can use an SD card boot mode and copy the new Linux Image and DTB file to the SD Card partition.

    The instructions for making a new SD Card Boot are in the Linux SDK Documentation: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Overview/Processor_SDK_Linux_create_SD_card.html

    The instructions to make changes to the Linux SDK are here in the E2E FAQ: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1447811/faq-processor-sdk-am62x-how-to-enable-and-use-tpic2810-on-am62x-evms

    All the instructions to complete the compilation steps are provide in the Linux SDK Documentation: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html

    Then copy the Linux Image and k3-am625-sk.dtb into the root partition of the SD Card. Make the TPIC works correctly and then slowly add the other changes back.

    Best Regards,

    Anshu

  • Also, don't forget that we include a git repo within the Linux SDK download. I suggest putting all your changes on a separate feature branch, so that you still have the main branch as a clean starting point. Like this:

    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
    * ti-linux-6.1.y-jailhouse
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch add_tpic_leds
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
      add_tpic_leds
    * ti-linux-6.1.y-jailhouse
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git checkout add_tpic_leds
    git branch
    M       arch/arm64/configs/defconfig
    Switched to branch 'add_tpic_leds'
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
    * add_tpic_leds
      ti-linux-6.1.y-jailhouse
    

    Regards,

    Nick

  • Hi Nick:

    So you don't know exactly how to deal with this problem, right?

    Do you have a chip manual or documentation for this chip? Generally, chips have chip manuals, can you send them to me?

    Thanks

  • Hi Mingxing,

    All the publicly available documentation will be on the product page of the TPIC2810: https://www.ti.com/product/TPIC2810

    Thanks,

    Anshu