This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM62X: Trying to communicate with the MAX30102 sensor and facing the issue of not being able to detect the device.

Part Number: PROCESSOR-SDK-AM62X


Tool/software:

Hiiiii ,

"I am trying to communicate externally with the MAX30102 sensor using the AM62x processor. However, I am unable to detect the MAX30102 device if  i connected to the am62x board so i tried with i2c0,i2c2 devices but it is not showing the value <0X57>.so how i should connect it ...please give me a solution to solve it

root@am62xx-evm:~# i2cdetect -y 1
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:
70:
root@am62xx-evm:~# i2cdetect -y 2
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:
70:
root@am62xx-evm:~# i2cdetect -y 0
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:
70:
root@am62xx-evm:~# ls /dev
autofs           mmcblk0boot0  ptyp3        tty19  tty54   ttypd
block            mmcblk0boot1  ptyp4        tty2   tty55   ttype
btrfs-control    mmcblk0rpmb   ptyp5        tty20  tty56   ttypf
bus              mmcblk1       ptyp6        tty21  tty57   ubi_ctrl
char             mmcblk1p1     ptyp7        tty22  tty58   udev_network_queue
console          mmcblk1p2     ptyp8        tty23  tty59   urandom
cpu_dma_latency  mqueue        ptyp9        tty24  tty6    vcs
crypto           mtd           ptypa        tty25  tty60   vcs1
cuse             mtd0          ptypb        tty26  tty61   vcs2
disk             mtd0ro        ptypc        tty27  tty62   vcs3
dma_heap         mtd1          ptypd        tty28  tty63   vcs4
dri              mtd1ro        ptype        tty29  tty7    vcs5
fd               mtd2          ptypf        tty3   tty8    vcs6
full             mtd2ro        random       tty30  tty9    vcs7
fuse             mtd3          remoteproc0  tty31  ttyS0   vcsa
gpiochip0        mtd3ro        remoteproc1  tty32  ttyS1   vcsa1
gpiochip1        mtd4          rfkill       tty33  ttyS10  vcsa2
gpiochip2        mtd4ro        rtc          tty34  ttyS11  vcsa3
hugepages        mtd5          rtc0         tty35  ttyS2   vcsa4
hwrng            mtd5ro        shm          tty36  ttyS3   vcsa5
i2c-0            mtd6          snapshot     tty37  ttyS4   vcsa6
i2c-1            mtd6ro        snd          tty38  ttyS5   vcsa7
i2c-2            mtdblock0     stderr       tty39  ttyS6   vcsu
i2c-3            mtdblock1     stdin        tty4   ttyS7   vcsu1
initctl          mtdblock2     stdout       tty40  ttyS8   vcsu2
kmsg             mtdblock3     tee0         tty41  ttyS9   vcsu3
log              mtdblock4     teepriv0     tty42  ttyp0   vcsu4
loop-control     mtdblock5     tty          tty43  ttyp1   vcsu5
loop0            mtdblock6     tty0         tty44  ttyp2   vcsu6
loop1            net           tty1         tty45  ttyp3   vcsu7
loop2            null          tty10        tty46  ttyp4   vfio
loop3            port          tty11        tty47  ttyp5   vga_arbiter
loop4            pps0          tty12        tty48  ttyp6   watchdog
loop5            ptmx          tty13        tty49  ttyp7   watchdog0
loop6            ptp0          tty14        tty5   ttyp8   watchdog1
loop7            pts           tty15        tty50  ttyp9   watchdog2
mapper           ptyp0         tty16        tty51  ttypa   watchdog3
mem              ptyp1         tty17        tty52  ttypb   watchdog4
mmcblk0          ptyp2         tty18        tty53  ttypc   zero
root@am62xx-evm:~# i2cdetect -y 3
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:
10:
20:
30: [   61.451030] wlcore: WARNING ELP wakeup timeout!
[   61.455631] wlcore: down
[   61.483047] omap_i2c 20010000.i2c: controller timed out
[   61.488476] ieee80211 phy0: Hardware restart was requested
-- [   62.539076] omap_i2c 20010000.i2c: controller timed out
-- [   63.595105] omap_i2c 20010000.i2c: controller timed out
-- [   64.651144] omap_i2c 20010000.i2c: controller timed out
-- [   64.931645] wlcore: PHY firmware version: Rev 8.2.0.0.245
[   65.025499] wlcore: firmware booted (Rev 8.9.0.0.86)
[   65.707165] omap_i2c 20010000.i2c: controller timed out
-- [   66.763186] omap_i2c 20010000.i2c: controller timed out
-- [   67.819206] omap_i2c 20010000.i2c: controller timed out
-- [   68.879228] omap_i2c 20010000.i2c: controller timed out
--
40:
50: [   69.931271] omap_i2c 20010000.i2c: controller timed out
-- [   70.987280] omap_i2c 20010000.i2c: controller timed out
-- [   72.043291] omap_i2c 20010000.i2c: controller timed out
-- [   73.099305] omap_i2c 20010000.i2c: controller timed out
-- [   74.159314] omap_i2c 20010000.i2c: controller timed out
-- [   75.211335] omap_i2c 20010000.i2c: controller timed out
-- [   76.267348] omap_i2c 20010000.i2c: controller timed out
-- [   77.323358] omap_i2c 20010000.i2c: controller timed out
-- [   78.379365] omap_i2c 20010000.i2c: controller timed out
-- [   79.435378] omap_i2c 20010000.i2c: controller timed out
-- [   80.491386] omap_i2c 20010000.i2c: controller timed out
-- [   81.547389] omap_i2c 20010000.i2c: controller timed out
-- [   82.603405] omap_i2c 20010000.i2c: controller timed out
-- [   83.659410] omap_i2c 20010000.i2c: controller timed out
-- [   84.715412] omap_i2c 20010000.i2c: controller timed out
-- [   85.771445] omap_i2c 20010000.i2c: controller timed out
--
60:
70:
root@am62xx-evm:~#

root@am62xx-evm:~# lsmod | grep i2c
snd_soc_tlv320aic3x_i2c    12288  1
snd_soc_tlv320aic3x    73728  1 snd_soc_tlv320aic3x_i2c
root@am62xx-evm:~#
root@am62xx-evm:~# dmesg | grep i2c
[    0.342680] platform 30200000.dss: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
[    0.363662] platform connector-hdmi: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
[    0.852657] i2c_dev: i2c /dev entries driver
[    1.070294] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.077345] platform connector-hdmi: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
[    1.087334] platform 30200000.dss: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
[    1.097097] i2c 1-003b: Fixed dependency cycle(s) with /connector-hdmi
[    1.103841] i2c 1-003b: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
[    1.111811] omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
[    1.118952] omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
[    1.445349] platform 31000000.usb: Fixed dependency cycle(s) with /bus@f0000/i2c@20000000/tps6598x@3f/connector
[    7.066772] i2c i2c-1: Added multiplexed i2c bus 3
[   61.483047] omap_i2c 20010000.i2c: controller timed out
[   62.539076] omap_i2c 20010000.i2c: controller timed out
[   63.595105] omap_i2c 20010000.i2c: controller timed out
[   64.651144] omap_i2c 20010000.i2c: controller timed out
[   65.707165] omap_i2c 20010000.i2c: controller timed out
[   66.763186] omap_i2c 20010000.i2c: controller timed out
[   67.819206] omap_i2c 20010000.i2c: controller timed out
[   68.879228] omap_i2c 20010000.i2c: controller timed out
[   69.931271] omap_i2c 20010000.i2c: controller timed out
[   70.987280] omap_i2c 20010000.i2c: controller timed out
[   72.043291] omap_i2c 20010000.i2c: controller timed out
[   73.099305] omap_i2c 20010000.i2c: controller timed out
[   74.159314] omap_i2c 20010000.i2c: controller timed out
[   75.211335] omap_i2c 20010000.i2c: controller timed out
[   76.267348] omap_i2c 20010000.i2c: controller timed out
[   77.323358] omap_i2c 20010000.i2c: controller timed out
[   78.379365] omap_i2c 20010000.i2c: controller timed out
[   79.435378] omap_i2c 20010000.i2c: controller timed out
[   80.491386] omap_i2c 20010000.i2c: controller timed out
[   81.547389] omap_i2c 20010000.i2c: controller timed out
[   82.603405] omap_i2c 20010000.i2c: controller timed out
[   83.659410] omap_i2c 20010000.i2c: controller timed out
[   84.715412] omap_i2c 20010000.i2c: controller timed out
[   85.771445] omap_i2c 20010000.i2c: controller timed out

  • Hello Vaishnavi,

    What version of Linux SDK are you using?

    I assume you are using a TI EVM? If so, which TI EVM are you using?

    Please attach the updates that you made to your Linux devicetree file to define the I2C peripheral.

    Regards,

    Nick

  • Hello, 

    "I am using the latest version of the SDK, ti-processor-sdk-linux-am62xx-evm-10.00.07.04. Even without editing the DTS file, I connected the MAX30102 sensor. However, the issue is that the sensor connects intermittently, and I have shared the images showing this. When I connect the part-id and perform read/write operations correctly using I2C-0, I also provide the correct register values in the application code, but the LED on the sensor is not glowing. What could be the reason behind this?"

    + main_i2c0_pins_default: main-i2c0-default-pins {
    +        pinctrl-single,pins = <
    +            AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16/E12) I2C0_SCL */
    +            AM62X_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16/D14) I2C0_SDA */
    +        >;
    +    };
    
    
    
    
    &main_i2c0 {
       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;
    
        eeprom@51 {
            /* AT24C512C-MAHM-T or M24512-DFMC6TG */
            compatible = "atmel,24c512";
            reg = <0x51>;
        };
    
        typec_pd0: tps6598x@3f {
            compatible = "ti,tps6598x";
            reg = <0x3f>;
    
            connector {
                compatible = "usb-c-connector";
              label = "USB-C";
                self-powered;
                data-role = "dual";
                power-role = "sink";
                port {
                   usb_con_hs: endpoint {
                        remote-endpoint = <&usb0_hs_ep>;
     
                    };
                };
            };
      };
     +    max30102: max30102@57 {
     +     compatible = "maxim,max30102";
     +      reg = <0x57>
    |+};
    +};
    
    
    
    
    
    
    
    // SPDX-License-Identifier: GPL-2.0-only OR MIT
    /*
     * Common dtsi for AM62x SK and derivatives
     *
     * Copyright (C) 2021-2024 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am625.dtsi"
    
    / {
        aliases {
            serial2 = &main_uart0;
            mmc0 = &sdhci0;
            mmc1 = &sdhci1;
            mmc2 = &sdhci2;
            spi0 = &ospi0;
            ethernet0 = &cpsw_port1;
            ethernet1 = &cpsw_port2;
            usb0 = &usb0;
            usb1 = &usb1;
        };
    
        chosen {
            stdout-path = "serial2:115200n8";
        };
    
        memory@80000000 {
            bootph-pre-ram;
            device_type = "memory";
            /* 2G RAM */
            reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
        };
    
        reserved-memory {
            #address-cells = <2>;
            #size-cells = <2>;
            ranges;
    
            ramoops@9ca00000 {
                compatible = "ramoops";
                reg = <0x00 0x9ca00000 0x00 0x00100000>;
                record-size = <0x8000>;
                console-size = <0x8000>;
                ftrace-size = <0x00>;
                pmsg-size = <0x8000>;
            };
    
            /* global cma region */
            linux,cma {
                compatible = "shared-dma-pool";
                reusable;
                size = <0x00 0x8000000>;
                linux,cma-default;
            };
    
            secure_tfa_ddr: tfa@9e780000 {
                reg = <0x00 0x9e780000 0x00 0x80000>;
                alignment = <0x1000>;
                no-map;
            };
    
            secure_ddr: optee@9e800000 {
                reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
                alignment = <0x1000>;
                no-map;
            };
    
            wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9db00000 {
                compatible = "shared-dma-pool";
                reg = <0x00 0x9db00000 0x00 0xc00000>;
                no-map;
            };
        };
    
        /*leds {
            compatible = "gpio-leds";
            pinctrl-names = "default";
            pinctrl-0 = <&usr_led_pins_default>;
    
            led-0 {
                label = "am62-sk:green:heartbeat_none";
                gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "none";
                function = LED_FUNCTION_HEARTBEAT;
                default-state = "off";
            };
        };*/
    
        tlv320_mclk: clk-0 {
            #clock-cells = <0>;
            compatible = "fixed-clock";
            clock-frequency = <12288000>;
        };
    
        codec_audio: sound {
            compatible = "simple-audio-card";
            simple-audio-card,name = "AM62x-SKEVM";
            simple-audio-card,widgets =
                "Headphone",    "Headphone Jack",
                "Line",        "Line In",
                "Microphone",    "Microphone Jack";
            simple-audio-card,routing =
                "Headphone Jack",    "HPLOUT",
                "Headphone Jack",    "HPROUT",
                "LINE1L",        "Line In",
                "LINE1R",        "Line In",
                "MIC3R",        "Microphone Jack",
                "Microphone Jack",    "Mic Bias";
            simple-audio-card,format = "dsp_b";
            simple-audio-card,bitclock-master = <&sound_master>;
            simple-audio-card,frame-master = <&sound_master>;
            simple-audio-card,bitclock-inversion;
    
            simple-audio-card,cpu {
                sound-dai = <&mcasp1>;
            };
    
            sound_master: simple-audio-card,codec {
                sound-dai = <&tlv320aic3106>;
                clocks = <&tlv320_mclk>;
            };
        };
    
        hdmi0: connector-hdmi {
            compatible = "hdmi-connector";
            label = "hdmi";
            type = "a";
            port {
                hdmi_connector_in: endpoint {
                    remote-endpoint = <&sii9022_out>;
                };
            };
        };
    };
    
    &phy_gmii_sel {
        bootph-all;
    };
    
    &main_pmx0 {
        /* First pad number is ALW package and second is AMC package */
        main_uart0_pins_default: main-uart0-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14/A13) UART0_RXD */
                AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */
            >;
        };
    
        main_uart1_pins_default: main-uart1-default-pins {
            bootph-pre-ram;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x194, PIN_INPUT, 2) /* (B19/B18) MCASP0_AXR3.UART1_CTSn */
                AM62X_IOPAD(0x198, PIN_OUTPUT, 2) /* (A19/B17) MCASP0_AXR2.UART1_RTSn */
                AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19/D15) MCASP0_AFSR.UART1_RXD */
                AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20/D16) MCASP0_ACLKR.UART1_TXD */
            >;
        };
    
        main_i2c0_pins_default: main-i2c0-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16/E12) I2C0_SCL */
                AM62X_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16/D14) I2C0_SDA */
            >;
        };
    
        main_i2c1_pins_default: main-i2c1-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17/A17) I2C1_SCL */
                AM62X_IOPAD(0x1ec, PIN_INPUT_PULLUP, 0) /* (A17/A16) I2C1_SDA */
            >;
        };
    
        main_i2c2_pins_default: main-i2c2-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x0b0, PIN_INPUT_PULLUP, 1) /* (K22/H18) GPMC0_CSn2.I2C2_SCL */
                AM62X_IOPAD(0x0b4, PIN_INPUT_PULLUP, 1) /* (K24/H19) GPMC0_CSn3.I2C2_SDA */
            >;
        };
    
        main_mmc0_pins_default: main-mmc0-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3/V3) MMC0_CMD */
                AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1/Y1) MMC0_CLK */
                AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2/V2) MMC0_DAT0 */
                AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1/V1) MMC0_DAT1 */
                AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3/W2) MMC0_DAT2 */
                AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4/W1) MMC0_DAT3 */
                AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2/Y2) MMC0_DAT4 */
                AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1/W3) MMC0_DAT5 */
                AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2/W4) MMC0_DAT6 */
                AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2/V4) MMC0_DAT7 */
            >;
        };
    
        main_mmc1_pins_default: main-mmc1-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21/C18) MMC1_CMD */
                AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22/A20) MMC1_CLK */
                AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22/A19) MMC1_DAT0 */
                AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21/B19) MMC1_DAT1 */
                AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21/B20) MMC1_DAT2 */
                AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22/C19) MMC1_DAT3 */
                AM62X_IOPAD(0x240, PIN_INPUT, 0) /* (D17/C15) MMC1_SDCD */
            >;
        };
    /*
        usr_led_pins_default: usr-led-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x244, PIN_OUTPUT, 7) /* (C17/B15) MMC1_SDWP.GPIO1_49 */
    //        >;
    //    };
         mygpio1_pins_default: mygpio1-pins-default {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x01d0, PIN_INPUT, 7) /* (A15) UART0_CTSn.GPIO1_22 */
                           AM62X_IOPAD(0x0088, PIN_INPUT, 7) /* (L24) GPMC0_OEn_REn.GPIO0_33 */
                         AM62X_IOPAD(0x01b4, PIN_INPUT, 7) /* (A13) SPI0_CS0.GPIO1_15 */
                AM62X_IOPAD(0x01bc, PIN_INPUT, 7) /* (A14) SPI0_CLK.GPIO1_17 */
                AM62X_IOPAD(0x01c0, PIN_INPUT, 7) /* (B13) SPI0_D0.GPIO1_18 */
                AM62X_IOPAD(0x01c4, PIN_INPUT, 7) /* (B14) SPI0_D1.GPIO1_19 */
                AM62X_IOPAD(0x0244, PIN_INPUT, 7) /* (c17) */
                AM62X_IOPAD(0x00ac, PIN_INPUT, 7) /* (l21) */
    
            >;
        };
    
    
        main_mdio1_pins_default: main-mdio1-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24/V17) MDIO0_MDC */
                AM62X_IOPAD(0x15c, PIN_INPUT, 0) /* (AB22/U16) MDIO0_MDIO */
            >;
        };
    
        main_rgmii1_pins_default: main-rgmii1-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x14c, PIN_INPUT, 0) /* (AB17/W15) RGMII1_RD0 */
                AM62X_IOPAD(0x150, PIN_INPUT, 0) /* (AC17/Y16) RGMII1_RD1 */
                AM62X_IOPAD(0x154, PIN_INPUT, 0) /* (AB16/AA17) RGMII1_RD2 */
                AM62X_IOPAD(0x158, PIN_INPUT, 0) /* (AA15/Y15) RGMII1_RD3 */
                AM62X_IOPAD(0x148, PIN_INPUT, 0) /* (AD17/AA16) RGMII1_RXC */
                AM62X_IOPAD(0x144, PIN_INPUT, 0) /* (AE17/W14) RGMII1_RX_CTL */
                AM62X_IOPAD(0x134, PIN_OUTPUT, 0) /* (AE20/U14) RGMII1_TD0 */
                AM62X_IOPAD(0x138, PIN_OUTPUT, 0) /* (AD20/AA19) RGMII1_TD1 */
                AM62X_IOPAD(0x13c, PIN_OUTPUT, 0) /* (AE18/Y17) RGMII1_TD2 */
                AM62X_IOPAD(0x140, PIN_OUTPUT, 0) /* (AD18/AA18) RGMII1_TD3 */
                AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19/W16) RGMII1_TXC */
                AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19/V15) RGMII1_TX_CTL */
            >;
        };
    
        main_usb1_pins_default: main-usb1-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (F18/E16) USB1_DRVVBUS */
            >;
        };
    
        main_mcasp1_pins_default: main-mcasp1-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x090, PIN_INPUT, 2) /* (M24/K17) GPMC0_BE0N_CLE.MCASP1_ACLKX */
                AM62X_IOPAD(0x098, PIN_INPUT, 2) /* (U23/P21) GPMC0_WAIT0.MCASP1_AFSX */
                AM62X_IOPAD(0x08c, PIN_OUTPUT, 2) /* (L25/J17) GPMC0_WEN.MCASP1_AXR0 */
                AM62X_IOPAD(0x084, PIN_INPUT, 2) /* (L23/K20) GPMC0_ADVN_ALE.MCASP1_AXR2 */
            >;
        };
    
        main_dss0_pins_default: main-dss0-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x100, PIN_OUTPUT, 0) /* (AC25) VOUT0_VSYNC */
                AM62X_IOPAD(0x0f8, PIN_OUTPUT, 0) /* (AB24) VOUT0_HSYNC */
                AM62X_IOPAD(0x104, PIN_OUTPUT, 0) /* (AC24) VOUT0_PCLK */
                AM62X_IOPAD(0x0fc, PIN_OUTPUT, 0) /* (Y20) VOUT0_DE */
                AM62X_IOPAD(0x0b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
                AM62X_IOPAD(0x0bc, PIN_OUTPUT, 0) /* (V24) VOUT0_DATA1 */
                AM62X_IOPAD(0x0c0, PIN_OUTPUT, 0) /* (W25) VOUT0_DATA2 */
                AM62X_IOPAD(0x0c4, PIN_OUTPUT, 0) /* (W24) VOUT0_DATA3 */
                AM62X_IOPAD(0x0c8, PIN_OUTPUT, 0) /* (Y25) VOUT0_DATA4 */
                AM62X_IOPAD(0x0cc, PIN_OUTPUT, 0) /* (Y24) VOUT0_DATA5 */
                AM62X_IOPAD(0x0d0, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA6 */
                AM62X_IOPAD(0x0d4, PIN_OUTPUT, 0) /* (AA25) VOUT0_DATA7 */
                AM62X_IOPAD(0x0d8, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA8 */
                AM62X_IOPAD(0x0dc, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA9 */
                AM62X_IOPAD(0x0e0, PIN_OUTPUT, 0) /* (V20) VOUT0_DATA10 */
                AM62X_IOPAD(0x0e4, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA11 */
                AM62X_IOPAD(0x0e8, PIN_OUTPUT, 0) /* (AB25) VOUT0_DATA12 */
                AM62X_IOPAD(0x0ec, PIN_OUTPUT, 0) /* (AA24) VOUT0_DATA13 */
                AM62X_IOPAD(0x0f0, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA14 */
                AM62X_IOPAD(0x0f4, PIN_OUTPUT, 0) /* (AA21) VOUT0_DATA15 */
                AM62X_IOPAD(0x05c, PIN_OUTPUT, 1) /* (R24) GPMC0_AD8.VOUT0_DATA16 */
                AM62X_IOPAD(0x060, PIN_OUTPUT, 1) /* (R25) GPMC0_AD9.VOUT0_DATA17 */
                AM62X_IOPAD(0x064, PIN_OUTPUT, 1) /* (T25) GPMC0_AD10.VOUT0_DATA18 */
                AM62X_IOPAD(0x068, PIN_OUTPUT, 1) /* (R21) GPMC0_AD11.VOUT0_DATA19 */
                AM62X_IOPAD(0x06c, PIN_OUTPUT, 1) /* (T22) GPMC0_AD12.VOUT0_DATA20 */
                AM62X_IOPAD(0x070, PIN_OUTPUT, 1) /* (T24) GPMC0_AD13.VOUT0_DATA21 */
                AM62X_IOPAD(0x074, PIN_OUTPUT, 1) /* (U25) GPMC0_AD14.VOUT0_DATA22 */
                AM62X_IOPAD(0x078, PIN_OUTPUT, 1) /* (U24) GPMC0_AD15.VOUT0_DATA23 */
            >;
        };
    };
    
    &main_gpio0 {
        pinctrl-names = "default";
        pinctrl-0 = <&mygpio1_pins_default>;
        status = "okay";
    };
    
    &mcu_pmx0 {
        wkup_uart0_pins_default: wkup-uart0-default-pins {
            bootph-pre-ram;
            pinctrl-single,pins = <
                AM62X_MCU_IOPAD(0x02c, PIN_INPUT, 0) /* (C6/A7) WKUP_UART0_CTSn */
                AM62X_MCU_IOPAD(0x030, PIN_OUTPUT, 0) /* (A4/B4) WKUP_UART0_RTSn */
                AM62X_MCU_IOPAD(0x024, PIN_INPUT, 0) /* (B4/B5) WKUP_UART0_RXD */
                AM62X_MCU_IOPAD(0x028, PIN_OUTPUT, 0) /* (C5/C6) WKUP_UART0_TXD */
            >;
        };
    };
    
    &wkup_uart0 {
        /* WKUP UART0 is used by DM firmware */
        bootph-pre-ram;
        status = "reserved";
        pinctrl-names = "default";
        pinctrl-0 = <&wkup_uart0_pins_default>;
    };
    
    &main_uart0 {
        bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    &main_uart1 {
        /* Main UART1 is used by TIFS firmware */
        bootph-pre-ram;
        status = "reserved";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart1_pins_default>;
    };
    
    &main_i2c0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;
    
        eeprom@51 {
            /* AT24C512C-MAHM-T or M24512-DFMC6TG */
            compatible = "atmel,24c512";
            reg = <0x51>;
        };
    
        typec_pd0: tps6598x@3f {
            compatible = "ti,tps6598x";
            reg = <0x3f>;
    
            connector {
                compatible = "usb-c-connector";
                label = "USB-C";
                self-powered;
                data-role = "dual";
                power-role = "sink";
                port {
                    usb_con_hs: endpoint {
                        remote-endpoint = <&usb0_hs_ep>;
                    };
                };
            };
        };
          max30102: max30102@57 {
            compatible = "maxim,max30102";
            reg = <0x57>
    };
    };
    
    &main_i2c1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c1_pins_default>;
        clock-frequency = <100000>;
    
        tlv320aic3106: audio-codec@1b {
            #sound-dai-cells = <0>;
            compatible = "ti,tlv320aic3106";
            reg = <0x1b>;
            ai3x-micbias-vg = <1>;    /* 2.0V */
    
            /* Regulators */
            AVDD-supply = <&vcc_3v3_sys>;
            IOVDD-supply = <&vcc_3v3_sys>;
            DRVDD-supply = <&vcc_3v3_sys>;
        };
    
        sii9022: bridge-hdmi@3b {
            compatible = "sil,sii9022";
            reg = <0x3b>;
            interrupt-parent = <&exp1>;
            interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
            #sound-dai-cells = <0>;
            sil,i2s-data-lanes = < 0 >;
    
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
    
                port@0 {
                    reg = <0>;
    
                    sii9022_in: endpoint {
                        remote-endpoint = <&dpi1_out>;
                    };
                };
    
                port@1 {
                    reg = <1>;
    
                    sii9022_out: endpoint {
                        remote-endpoint = <&hdmi_connector_in>;
                    };
                };
            };
        };
    };
    
    &main_i2c2 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c2_pins_default>;
        clock-frequency = <400000>;
    };
    
    &sdhci0 {
        bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc0_pins_default>;
        disable-wp;
    };
    
    &sdhci1 {
        /* SD/MMC */
        bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc1_pins_default>;
        disable-wp;
    };
    
    &cpsw3g {
        bootph-all;
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default>;
    };
    
    &cpsw_port1 {
        bootph-all;
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw3g_mdio {
        bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_mdio1_pins_default>;
    
        cpsw3g_phy0: ethernet-phy@0 {
            bootph-all;
            reg = <0>;
            ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
            ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
            ti,min-output-impedance;
        };
    };
    
    &mailbox0_cluster0 {
        mbox_m4_0: mbox-m4-0 {
            ti,mbox-rx = <0 0 0>;
            ti,mbox-tx = <1 0 0>;
        };
    };
    
    &usbss0 {
        bootph-all;
        status = "okay";
        ti,vbus-divider;
    };
    
    &usbss1 {
        status = "okay";
        ti,vbus-divider;
    };
    
    &usb0 {
        bootph-all;
        usb-role-switch;
    
        port {
            usb0_hs_ep: endpoint {
                remote-endpoint = <&usb_con_hs>;
               };
        };
    };
    
    &usb1 {
        dr_mode = "host";
        pinctrl-names = "default";
        pinctrl-0 = <&main_usb1_pins_default>;
    };
    
    &mcasp1 {
        status = "okay";
        #sound-dai-cells = <0>;
    
        pinctrl-names = "default";
        pinctrl-0 = <&main_mcasp1_pins_default>;
    
        op-mode = <0>;          /* MCASP_IIS_MODE */
        tdm-slots = <2>;
    
        serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
               1 0 2 0
               0 0 0 0
               0 0 0 0
               0 0 0 0
        >;
    };
    
    &dss {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_dss0_pins_default>;
    };
    
    &dss_ports {
        /* VP2: DPI Output */
        port@1 {
            reg = <1>;
    
            dpi1_out: endpoint {
                remote-endpoint = <&sii9022_in>;
            };
        };
    };
    
    /* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */
    &mcu_gpio0 {
        status = "reserved";
    };
    
    &mcu_gpio_intr {
        status = "reserved";
    };
                 

  • Hello Vaishnavi,

    As a tip, I usually use the -r argument when using i2cdetect. Here's an example of what I see:

    root@am62xx-evm:~# uname -a
    Linux am62xx-evm 6.6.32-g6de6e418c80e-dirty #1 SMP PREEMPT Thu Oct 24 17:56:25 CDT 2024 aarch64 GNU/Linux
    root@am62xx-evm:~# i2cdetect -l
    i2c-0   i2c             OMAP I2C adapter                        I2C adapter
    i2c-1   i2c             OMAP I2C adapter                        I2C adapter
    i2c-2   i2c             OMAP I2C adapter                        I2C adapter
    i2c-3   i2c             i2c-1-mux (chan_id 0)                   I2C adapter
    root@am62xx-evm:~# i2cdetect -y 0
    Warning: Can't use SMBus Quick Write command, will skip some addresses
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:
    10:
    20:
    30: -- -- -- -- -- -- -- --
    40:
    50: -- UU 52 -- -- -- -- -- -- -- -- -- -- -- -- --
    60:
    70:
    root@am62xx-evm:~# i2cdetect -y -r 0
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- UU
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- UU 52 -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    
    root@am62xx-evm:~# i2cdetect -y 1
    Warning: Can't use SMBus Quick Write command, will skip some addresses
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:
    10:
    20:
    30: -- -- -- -- -- -- -- --
    40:
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60:
    70:
    root@am62xx-evm:~# i2cdetect -y -r 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
    20: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
    40: 40 41 -- -- -- 45 -- 47 48 49 -- -- 4c 4d -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- 62 -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    
    root@am62xx-evm:~# i2cdetect -y 2
    Warning: Can't use SMBus Quick Write command, will skip some addresses
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:
    10:
    20:
    30: -- -- -- -- -- -- -- --
    40:
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60:
    70:
    root@am62xx-evm:~# i2cdetect -y -r 2
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- 71 -- -- -- -- -- --
    

    If you can see the I2C device sometimes, but not other times, I would start by double-checking your connections. For example, if you are using a breadboard, please double-check your wires, try re-connecting wires, and try replacing the wires and using different parts of the breadboard.

    Regards,

    Nick

  • "I am working on the AM62x processor and using the latest SDK version 10.0. I am trying to communicate with the MAX30100 sensor, but the issue is that I am not able to get 3.3V from the processor when connected to GND and VCC. I tried to manually enable it by setting the EXP_PS_3V3_EN GPIO to output, but I still did not receive 3.3V. To resolve this, I added the configuration in the DTS file, as shared earlier.

    // SPDX-License-Identifier: GPL-2.0
    /*
     * AM625 SK: https://www.ti.com/lit/zip/sprr448
     *
     * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include "k3-am62x-sk-common.dtsi"
    
    / {
        compatible = "ti,am625-sk", "ti,am625";
        model = "Texas Instruments AM625 SK";
    
        opp-table {
            /* Add 1.4GHz OPP for am625-sk board. Requires VDD_CORE to be at 0.85V */
            opp-1400000000 {
                opp-hz = /bits/ 64 <1400000000>;
                opp-supported-hw = <0x01 0x0004>;
                clock-latency-ns = <6000000>;
            };
        };
    
        memory@80000000 {
            device_type = "memory";
            /* 2G RAM */
            reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
        };
    
        vmain_pd: regulator-0 {
            /* TPS65988 PD CONTROLLER OUTPUT */
            compatible = "regulator-fixed";
            regulator-name = "vmain_pd";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        vdd_3v3: regulator-3 {
            /* TPS22918DBVR */
            compatible = "regulator-fixed";
            regulator-name = "vdd_mmc1";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            enable-active-high;
            vin-supply = <&vcc_3v3_sys>;
            gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
        };
    
    
        vcc_5v0: regulator-1 {
            /* Output of LM34936 */
            compatible = "regulator-fixed";
            regulator-name = "vcc_5v0";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            vin-supply = <&vmain_pd>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        //vcc_3v3_sys: regulator-2 {
        //    /* output of LM61460-Q1 */
        //    compatible = "regulator-fixed";
        //    regulator-name = "vcc_3v3_sys";
        //    regulator-min-microvolt = <3300000>;
        //    regulator-max-microvolt = <3300000>;
        //    vin-supply = <&vmain_pd>;
        //    regulator-always-on;
        //    regulator-boot-on;
        //};
    
    
          vcc_3v3_sys: regulator-2 {
          /* Configuration for EXP_PS_3V3_EN */
           compatible = "regulator-fixed";
           regulator-name = "vcc_3v3_sys";
           regulator-min-microvolt = <3300000>;
           regulator-max-microvolt = <3300000>;
           vin-supply = <&vmain_pd>; /* Source supply for this regulator */
           enable-active-high;      /* Active high logic for enable GPIO */
           gpio = <&exp1 5 GPIO_ACTIVE_HIGH>; /* GPIO expander controlling EXP_PS_3V3_EN */
           regulator-boot-on;       /* Enable regulator during boot */
           regulator-always-on;     /* Keeps regulator always enabled */
     };
    
        vdd_mmc1: regulator-3 {
            /* TPS22918DBVR */
            compatible = "regulator-fixed";
            regulator-name = "vdd_mmc1";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            enable-active-high;
            vin-supply = <&vcc_3v3_sys>;
            gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
        };
    
        vdd_sd_dv: regulator-4 {
            /* Output of TLV71033 */
            compatible = "regulator-gpio";
            regulator-name = "tlv71033";
            pinctrl-names = "default";
            pinctrl-0 = <&vdd_sd_dv_pins_default>;
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            vin-supply = <&vcc_5v0>;
            gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
            states = <1800000 0x0>,
                 <3300000 0x1>;
        };
    
        vcc_1v8: regulator-5 {
            /* output of TPS6282518DMQ */
            compatible = "regulator-fixed";
            regulator-name = "vcc_1v8";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            vin-supply = <&vcc_3v3_sys>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        wlan_lten: regulator-6 {
            compatible = "regulator-fixed";
            regulator-name = "wlan_lten";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            vin-supply = <&vcc_3v3_sys>;
            gpios = <&exp1 11 GPIO_ACTIVE_LOW>;
        };
    
        wlan_en: regulator-7 {
            compatible = "regulator-fixed";
            regulator-name = "wlan_en";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            vin-supply = <&wlan_lten>;
            enable-active-high;
            gpios = <&main_gpio0 71 GPIO_ACTIVE_HIGH>;
            pinctrl-names = "default";
            pinctrl-0 = <&wlan_en_pins_default>;
        };
    
        vdd_core: regulator-8 {
            /* output of TPS62826DMQ */
            compatible = "regulator-fixed";
            regulator-name = "vdd_core";
            regulator-min-microvolt = <850000>;
            regulator-max-microvolt = <850000>;
            vin-supply = <&vcc_3v3_sys>;
            regulator-always-on;
            regulator-boot-on;
        };
    };
    
    &main_pmx0 {
        main_rgmii2_pins_default: main-rgmii2-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */
                AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */
                AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */
                AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */
                AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */
                AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */
                AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */
                AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */
                AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */
                AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */
                AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */
                AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */
            >;
        };
    
    
        ospi0_pins_default: ospi0-default-pins {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
                AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
                AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
                AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
                AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
                AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
                AM62X_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */
                AM62X_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */
                AM62X_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */
                AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
                AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
            >;
        };
    
        vdd_sd_dv_pins_default: vdd-sd-dv-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */
            >;
        };
    
        main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (B15) UART0_RTSn.GPIO1_23 */
            >;
        };
    
        wlan_en_pins_default: wlan-en-pins-default {
            pinctrl-single,pins = <
                    AM62X_IOPAD(0x124, PIN_OUTPUT, 7) /* (A23) MMC2_SDCD.GPIO0_71 */
            >;
        };
    
        main_mmc2_pins_default: main-mmc2-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
                AM62X_IOPAD(0x118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
                AM62X_IOPAD(0x114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
                AM62X_IOPAD(0x110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
                AM62X_IOPAD(0x10c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
                AM62X_IOPAD(0x108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
                AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */
            >;
        };
    
        main_wlirq_pins_default: main-wlirq-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x128, PIN_INPUT, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
            >;
        };
    };
    
    &main_i2c1 {
        exp1: gpio@22 {
            compatible = "ti,tca6424";
            reg = <0x22>;
            gpio-controller;
            #gpio-cells = <2>;
            gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
                       "PRU_DETECT", "MMC1_SD_EN",
                       "VPP_LDO_EN", "EXP_PS_3V3_En",
                       "EXP_PS_5V0_En", "EXP_HAT_DETECT",
                       "GPIO_AUD_RSTn", "GPIO_eMMC_RSTn",
                       "UART1_FET_BUF_EN", "WL_LT_EN",
                       "GPIO_HDMI_RSTn", "CSI_GPIO1",
                       "CSI_GPIO2", "PRU_3V3_EN",
                       "HDMI_INTn", "PD_I2C_IRQ",
                       "MCASP1_FET_EN", "MCASP1_BUF_BT_EN",
                       "MCASP1_FET_SEL", "UART1_FET_SEL",
                       "TSINT#", "IO_EXP_TEST_LED";
    
            interrupt-parent = <&main_gpio1>;
            interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
            interrupt-controller;
            #interrupt-cells = <2>;
    
            pinctrl-names = "default";
            pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
        };
    };
    
    &sdhci1 {
        vmmc-supply = <&vdd_mmc1>;
        vqmmc-supply = <&vdd_sd_dv>;
    };
    
    &sdhci2 {
        status = "okay";
        vmmc-supply = <&wlan_en>;
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc2_pins_default>;
        bus-width = <4>;
        non-removable;
        ti,fails-without-test-cd;
        cap-power-off-card;
        keep-power-in-suspend;
        assigned-clocks = <&k3_clks 157 158>;
        assigned-clock-parents = <&k3_clks 157 160>;
    
        #address-cells = <1>;
        #size-cells = <0>;
        wlcore: wlcore@2 {
            compatible = "ti,wl1837";
            reg = <2>;
            pinctrl-names = "default";
            pinctrl-0 = <&main_wlirq_pins_default>;
            interrupt-parent = <&main_gpio0>;
            interrupts = <72 IRQ_TYPE_EDGE_RISING>;
        };
    };
    
    &cpsw3g {
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default
                 &main_rgmii2_pins_default>;
    
        cpts@3d000 {
            /* MAP HW3_TS_PUSH to GENF1 */
            ti,pps = <2 1>;
        };
    };
    
    &cpsw_port2 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy1>;
    };
    
    &cpsw3g_mdio {
        cpsw3g_phy1: ethernet-phy@1 {
            reg = <1>;
            ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
            ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
            ti,min-output-impedance;
        };
    };
    
    &ospi0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
    
        flash@0{
            compatible = "jedec,spi-nor";
            reg = <0x0>;
            spi-tx-bus-width = <8>;
            spi-rx-bus-width = <8>;
            spi-max-frequency = <25000000>;
            cdns,tshsl-ns = <60>;
            cdns,tsd2d-ns = <60>;
            cdns,tchsh-ns = <60>;
            cdns,tslch-ns = <60>;
            cdns,read-delay = <4>;
    
            partitions {
                compatible = "fixed-partitions";
                #address-cells = <1>;
                #size-cells = <1>;
    
                partition@0 {
                    label = "ospi.tiboot3";
                    reg = <0x0 0x80000>;
                };
    
                partition@80000 {
                    label = "ospi.tispl";
                    reg = <0x80000 0x200000>;
                };
    
                partition@280000 {
                    label = "ospi.u-boot";
                    reg = <0x280000 0x400000>;
                };
    
                partition@680000 {
                    label = "ospi.env";
                    reg = <0x680000 0x40000>;
                };
    
                partition@6c0000 {
                    label = "ospi.env.backup";
                    reg = <0x6c0000 0x40000>;
                };
    
                partition@800000 {
                    label = "ospi.rootfs";
                    reg = <0x800000 0x37c0000>;
                };
    
                partition@3fc0000 {
                    label = "ospi.phypattern";
                    reg = <0x3fc0000 0x40000>;
                };
            };
        };
    };
    
    &tlv320aic3106 {
        DVDD-supply = <&vcc_1v8>;
    };
    
    #define K3_TS_OFFSET(pa, val)    (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_cpts>;
    
        /* Use Time Sync Router to map GENF1 input to HW3_TS_PUSH output */
        cpsw_cpts: cpsw-cpts {
            pinctrl-single,pins = <
                /* pps [cpsw cpts genf1] in17 -> out12 [cpsw cpts hw3_push] */
                K3_TS_OFFSET(12, 17)
                >;
        };
    };

  • Hello

               Again i modified my code and i shared to you below. what is the reason why the 3v3 is not enabling  to enable expansion header i2c and power.so can u please verify it and say to me that where is the exact error.

    // SPDX-License-Identifier: GPL-2.0
    /*
     * AM625 SK: https://www.ti.com/lit/zip/sprr448
     *
     * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include "k3-am62x-sk-common.dtsi"
    
    / {
        compatible = "ti,am625-sk", "ti,am625";
        model = "Texas Instruments AM625 SK";
    
        opp-table {
            /* Add 1.4GHz OPP for am625-sk board. Requires VDD_CORE to be at 0.85V */
            opp-1400000000 {
                opp-hz = /bits/ 64 <1400000000>;
                opp-supported-hw = <0x01 0x0004>;
                clock-latency-ns = <6000000>;
            };
        };
    
        memory@80000000 {
            device_type = "memory";
            /* 2G RAM */
            reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
        };
    
        vmain_pd: regulator-0 {
            /* TPS65988 PD CONTROLLER OUTPUT */
            bootph-all;
            compatible = "regulator-fixed";
            regulator-name = "vmain_pd";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        vcc_5v0: regulator-1 {
            /* Output of LM34936 */
            bootph-all;
            compatible = "regulator-fixed";
            regulator-name = "vcc_5v0";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            vin-supply = <&vmain_pd>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        vcc_3v3_sys: regulator-2 {
            /* output of LM61460-Q1 */
            bootph-all;
            compatible = "regulator-fixed";
            regulator-name = "vcc_3v3_sys";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            vin-supply = <&vmain_pd>;
            regulator-always-on;
            regulator-boot-on;
        };
    
        vdd_mmc1: regulator-3 {
            /* TPS22918DBVR */
            bootph-all;
            compatible = "regulator-fixed";
            regulator-name = "vdd_mmc1";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            enable-active-high;
            vin-supply = <&vcc_3v3_sys>;
            gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
        };
    
        vdd_sd_dv: regulator-4 {
            /* Output of TLV71033 */
            bootph-all;
            compatible = "regulator-gpio";
            regulator-name = "tlv71033";
            pinctrl-names = "default";
            pinctrl-0 = <&vdd_sd_dv_pins_default>;
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            vin-supply = <&vcc_5v0>;
            gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
            states = <1800000 0x0>,
                 <3300000 0x1>;
        };
    
        vcc_1v8: regulator-5 {
            /* output of TPS6282518DMQ */
            compatible = "regulator-fixed";
            regulator-name = "vcc_1v8";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            vin-supply = <&vcc_3v3_sys>;
            regulator-always-on;
            regulator-boot-on;
        };
    
    +    vdd_exp: regulator-6 {
    +        /* TPS22918DBVR */
    +        bootph-all;
    +        compatible = "regulator-fixed";
    +        regulator-name = "vdd_exp";
    +        regulator-min-microvolt = <3300000>;
    +        regulator-max-microvolt = <3300000>;
    +        regulator-boot-on;
    +        enable-active-high;
    +        vin-supply = <&vcc_3v3_sys>;
    +        gpio = <&exp1 5 GPIO_ACTIVE_HIGH>;
    +    };
    +};
    
    &main_pmx0 {
        main_rgmii2_pins_default: main-rgmii2-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */
                AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */
                AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */
                AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */
                AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */
                AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */
                AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */
                AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */
                AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */
                AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */
                AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */
                AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */
            >;
        };
    
        ospi0_pins_default: ospi0-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
                AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
                AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
                AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
                AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
                AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
                AM62X_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */
                AM62X_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */
                AM62X_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */
                AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
                AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
            >;
        };
    
        vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */
            >;
        };
    
        main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
            bootph-all;
            pinctrl-single,pins = <
                AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (B15) UART0_RTSn.GPIO1_23 */
            >;
        };
    };
    
    &main_gpio0 {
        bootph-all;
    };
    
    
    &main_gpio1 {
        bootph-all;
    };
    
    &main_i2c1 {
        bootph-all;
        exp1: gpio@22 {
            bootph-all;
            compatible = "ti,tca6424";
            reg = <0x22>;
            gpio-controller;
            #gpio-cells = <2>;
            gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
                       "PRU_DETECT", "MMC1_SD_EN",
                       "VPP_LDO_EN", "EXP_PS_3V3_En",
                       "EXP_PS_5V0_En", "EXP_HAT_DETECT",
                       "GPIO_AUD_RSTn", "GPIO_eMMC_RSTn",
                       "UART1_FET_BUF_EN", "WL_LT_EN",
                       "GPIO_HDMI_RSTn", "CSI_GPIO1",
                       "CSI_GPIO2", "PRU_3V3_EN",
                       "HDMI_INTn", "PD_I2C_IRQ",
                       "MCASP1_FET_EN", "MCASP1_BUF_BT_EN",
                       "MCASP1_FET_SEL", "UART1_FET_SEL",
                       "TSINT#", "IO_EXP_TEST_LED";
    
            interrupt-parent = <&main_gpio1>;
            interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
            interrupt-controller;
            #interrupt-cells = <2>;
    
            pinctrl-names = "default";
            pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
            gpio = <&exp1 5 GPIO_ACTIVE_HIGH>;
        };
    };
    
    &sdhci1 {
        vmmc-supply = <&vdd_mmc1>;
        vqmmc-supply = <&vdd_sd_dv>;
        vxmmc-supply = <&vdd_exp>;
    };
    
    &cpsw3g {
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default
                 &main_rgmii2_pins_default>;
    
        cpts@3d000 {
            /* MAP HW3_TS_PUSH to GENF1 */
            ti,pps = <2 1>;
        };
    };
    
    &cpsw_port2 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy1>;
    };
    
    &cpsw3g_mdio {
        cpsw3g_phy1: ethernet-phy@1 {
            reg = <1>;
            ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
            ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
            ti,min-output-impedance;
        };
    };
    
    &mailbox0_cluster0 {
        mbox_m4_0: mbox-m4-0 {
            ti,mbox-rx = <0 0 0>;
            ti,mbox-tx = <1 0 0>;
        };
    };
    
    &fss {
        bootph-all;
    };
    
    &ospi0 {
        bootph-all;
        status = "disabled";
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
    
        flash@0 {
            bootph-all;
            compatible = "jedec,spi-nor";
            reg = <0x0>;
            spi-tx-bus-width = <8>;
            spi-rx-bus-width = <8>;
            spi-max-frequency = <25000000>;
            cdns,tshsl-ns = <60>;
            cdns,tsd2d-ns = <60>;
            cdns,tchsh-ns = <60>;
            cdns,tslch-ns = <60>;
            cdns,read-delay = <4>;
    
            partitions {
                bootph-all;
                compatible = "fixed-partitions";
                #address-cells = <1>;
                #size-cells = <1>;
    
                partition@0 {
                    label = "ospi.tiboot3";
                    reg = <0x0 0x80000>;
                };
    
                partition@80000 {
                    label = "ospi.tispl";
                    reg = <0x80000 0x200000>;
                };
    
                partition@280000 {
                    label = "ospi.u-boot";
                    reg = <0x280000 0x400000>;
                };
    
                partition@680000 {
                    label = "ospi.env";
                    reg = <0x680000 0x40000>;
                };
    
                partition@6c0000 {
                    label = "ospi.env.backup";
                    reg = <0x6c0000 0x40000>;
                };
    
                partition@800000 {
                    label = "ospi.rootfs";
                    reg = <0x800000 0x37c0000>;
                };
    
                partition@3fc0000 {
                    bootph-pre-ram;
                    label = "ospi.phypattern";
                    reg = <0x3fc0000 0x40000>;
                };
            };
        };
    };
    
    
    &tlv320aic3106 {
        DVDD-supply = <&vcc_1v8>;
    };
    
    #define K3_TS_OFFSET(pa, val)    (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_cpts>;
    
        /* Use Time Sync Router to map GENF1 input to HW3_TS_PUSH output */
        cpsw_cpts: cpsw-cpts {
            pinctrl-single,pins = <
                /* pps [cpsw cpts genf1] in17 -> out12 [cpsw cpts hw3_push] */
                K3_TS_OFFSET(12, 17)
                >;
        };
    };

  • Hello Vaishnavi,

    Let's use this thread to discuss I2C related debug, and your other thread to discuss enabling the 3.3V output: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1441695/processor-sdk-am62x-issues-while-aading-i2c-device 

    If the discussion comes back to using I2C commands, we can continue discussing here.

    Regards,

    Nick