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.

SK-AM64B: Deferred probe of i2c bus using SDK 09 and 10

Part Number: SK-AM64B
Other Parts Discussed in Thread: TMDS64EVM

Tool/software:

We have been using AM64x linux SDK 8 for our custom board and am64b-skevm boards.  The i2c busses all were avaliable from linux using the old kernel.  We are attempting to upgrade the kernel using sdk9 or sdk 10.  The i2c-1 bus is the only one being initialized by the kernel using the newer SDKs.

We have the following in our dts:

&main_pmx0 {
    .
    .
    .
    main_i2c0_pins_default: main-i2c0-default-pins {
		pinctrl-single,pins = <
			AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (A18) I2C0_SCL */
			AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (B18) I2C0_SDA */
		>;
	};
};

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

	eeprom@51 {
		compatible = "atmel,24c512";
		reg = <0x51>;
	};
};


The kernel prints this message for the i2c-0 bus:

[   19.593992] platform 20000000.i2c: deferred probe pending

20000000.i2c is the i2c-0 bus.

  • Hello Dan,

    To confirm, Linux is not using any of the other I2C ports? (I2C2, 3, or MCU_I2C0 & 2)

    Since you did not list a specific SDK version, I just took a look at AM64x SDK 10.0. Looks like we have exactly the same eeprom connected to exactly the same I2C interface for the AM64x SK board:
    ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-am642-sk.dts

    The only difference I see is that the Linux devicetree file for the EVM lists "bootph-all".

    It looks like the EEPROM is also defined in u-boot:
    ti-u-boot-2024.04+git/arch/arm/dts/k3-am642-sk.dts

    Regards,

    Nick

  • The board we have designed has devices on the i2c0, i2c1, and i2c2 busses.  The only i2c bus that is working under Linux (SDK 9 or 10) is i2c1.  If we boot the SDK 9 kernel, the device under is i2c0.  We have the same result with the sk-am64b boards.  The i2c devices are usable with SDK 8.

  • We have the "bootph-all parameter in the device tree when booting SDK 10.  none of the devices under SDK 9 have that parameter, so it was not added.

  • Has there been any attempt at resolution of this issue?

  • Hello Dan,

    Apologies for the delayed responses here. I was going to try to test on my SK-AM64B, but I have been running into different boot issues with it.

    Can I get you to post the full boot logs of the problematic boots on the SK-AM64B? Either as separate text files, or copied into the thread like this:

    Insert > code

    Have you made any modifications to the SK-AM64B?

    Regards,

    Nick

  • Also just to double check, you are using the SK-AM64B and not the older SK-AM64, right? The board should include the exact part number on it.

    Regards,

    Nick

  • We are using the SK-AM64B

  • No modifications have been made to the board.

    This is the dmesg output.

    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.6.58-ti-01497-ga7758da17c28-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.3.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Wed Nov 27 13:23:15 UTC 2024
    [    0.000000] KASLR disabled due to lack of seed
    [    0.000000] Machine model: Texas Instruments AM642 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0000000..0x00000000a00fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a0000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0100000..0x00000000a0ffffff (15360 KiB) nomap non-reusable r5f-memory@a0100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1000000..0x00000000a10fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a1000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1100000..0x00000000a1ffffff (15360 KiB) nomap non-reusable r5f-memory@a1100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2000000..0x00000000a20fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a2000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2100000..0x00000000a2ffffff (15360 KiB) nomap non-reusable r5f-memory@a2100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3000000..0x00000000a30fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a3000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3100000..0x00000000a3ffffff (15360 KiB) nomap non-reusable r5f-memory@a3100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a4000000..0x00000000a40fffff (1024 KiB) nomap non-reusable m4f-dma-memory@a4000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a4100000..0x00000000a4ffffff (15360 KiB) nomap non-reusable m4f-memory@a4100000
    [    0.000000] OF: reserved mem: 0x00000000a5000000..0x00000000a57fffff (8192 KiB) nomap non-reusable ipc-memories@a5000000
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fba00000 on node -1
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.4
    [    0.000000] percpu: Embedded 20 pages/cpu s43176 r8192 d30552 u81920
    [    0.000000] pcpu-alloc: s43176 r8192 d30552 u81920 alloc=20*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000f7800000-0x00000000fb800000] (64MB)
    [    0.000000] Memory: 1822040K/2097152K available (12480K kernel code, 1272K rwdata, 4184K rodata, 2496K init, 528K bss, 242344K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] 	Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: gic_handle_irq
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080040000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080050000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008668] Console: colour dummy device 80x25
    [    0.013284] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023965] pid_max: default: 32768 minimum: 301
    [    0.028799] LSM: initializing lsm=capability,selinux,integrity
    [    0.034794] SELinux:  Initializing.
    [    0.038530] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.046113] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.056414] RCU Tasks: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1.
    [    0.063779] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1.
    [    0.071784] rcu: Hierarchical SRCU implementation.
    [    0.076698] rcu: 	Max phase no-delay instances is 1000.
    [    0.082373] Platform MSI: msi-controller@1820000 domain created
    [    0.088800] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.098370] EFI services will not be available.
    [    0.103402] smp: Bringing up secondary CPUs ...
    [    0.117101] Detected VIPT I-cache on CPU1
    [    0.117213] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.117235] GICv3: CPU1: using allocated LPI pending table @0x0000000080060000
    [    0.117300] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.117455] smp: Brought up 1 node, 2 CPUs
    [    0.146841] SMP: Total of 2 processors activated.
    [    0.151653] CPU features: detected: 32-bit EL0 Support
    [    0.156925] CPU features: detected: CRC32 instructions
    [    0.162246] CPU: All CPU(s) started at EL2
    [    0.166432] alternatives: applying system-wide alternatives
    [    0.174382] devtmpfs: initialized
    [    0.188914] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.198933] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.207470] pinctrl core: initialized pinctrl subsystem
    [    0.213550] DMI not present or invalid.
    [    0.218404] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.225700] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.233158] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.241265] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.249477] audit: initializing netlink subsys (disabled)
    [    0.255337] audit: type=2000 audit(0.156:1): state=initialized audit_enabled=0 res=1
    [    0.255989] thermal_sys: Registered thermal governor 'step_wise'
    [    0.263293] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.269516] cpuidle: using governor menu
    [    0.280454] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.287481] ASID allocator initialised with 65536 entries
    [    0.299590] /bus@f4000/interrupt-controller@1800000: Fixed dependency cycle(s) with /bus@f4000/interrupt-controller@1800000
    [    0.317136] /bus@f4000/pinctrl@a40000: Fixed dependency cycle(s) with /bus@f4000/pinctrl@a40000/cpsw-cpts-pps
    [    0.331919] Modules: 27488 pages in range for non-PLT usage
    [    0.331942] Modules: 519008 pages in range for PLT usage
    [    0.338765] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.351160] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.357566] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.364500] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.370904] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.377839] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.384243] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.391177] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    0.399624] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    0.409368] iommu: Default domain type: Translated
    [    0.414316] iommu: DMA domain TLB invalidation policy: strict mode
    [    0.421033] SCSI subsystem initialized
    [    0.425184] libata version 3.00 loaded.
    [    0.425456] usbcore: registered new interface driver usbfs
    [    0.431123] usbcore: registered new interface driver hub
    [    0.436601] usbcore: registered new device driver usb
    [    0.442385] pps_core: LinuxPPS API ver. 1 registered
    [    0.447472] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.456820] PTP clock support registered
    [    0.461093] EDAC MC: Ver: 3.0.0
    [    0.465229] scmi_core: SCMI protocol bus registered
    [    0.470796] FPGA manager framework
    [    0.474446] Advanced Linux Sound Architecture Driver Initialized.
    [    0.482014] vgaarb: loaded
    [    0.485394] clocksource: Switched to clocksource arch_sys_counter
    [    0.492030] VFS: Disk quotas dquot_6.6.0
    [    0.496112] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.511886] NET: Registered PF_INET protocol family
    [    0.517233] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.526891] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.535753] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.543698] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.551923] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)
    [    0.560050] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.567020] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.573997] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.581585] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.588065] RPC: Registered named UNIX socket transport module.
    [    0.594174] RPC: Registered udp transport module.
    [    0.598982] RPC: Registered tcp transport module.
    [    0.603789] RPC: Registered tcp-with-tls transport module.
    [    0.609395] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.615989] NET: Registered PF_XDP protocol family
    [    0.620910] PCI: CLS 0 bytes, default 64
    [    0.626600] Initialise system trusted keyrings
    [    0.631553] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.638651] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.645103] NFS: Registering the id_resolver key type
    [    0.650376] Key type id_resolver registered
    [    0.654658] Key type id_legacy registered
    [    0.658786] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.665640] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.714311] Key type asymmetric registered
    [    0.718532] Asymmetric key parser 'x509' registered
    [    0.723607] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
    [    0.731458] io scheduler mq-deadline registered
    [    0.736108] io scheduler kyber registered
    [    0.740262] io scheduler bfq registered
    [    0.747819] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.754335] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.762119] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [    0.776139] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    0.797714] loop: module loaded
    [    0.802328] megasas: 07.725.01.00-rc1
    [    0.810858] tun: Universal TUN/TAP device driver, 1.6
    [    0.817645] VFIO - User Level meta-driver version: 0.3
    [    0.824274] usbcore: registered new interface driver usb-storage
    [    0.831254] i2c_dev: i2c /dev entries driver
    [    0.836966] sdhci: Secure Digital Host Controller Interface driver
    [    0.843329] sdhci: Copyright(c) Pierre Ossman
    [    0.848048] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.854693] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.861238] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.868755] usbcore: registered new interface driver usbhid
    [    0.874480] usbhid: USB HID core driver
    [    0.880162] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.889327] optee: probing for conduit method.
    [    0.893946] optee: revision 4.2 (322dc2c6)
    [    0.910755] optee: dynamic shared memory is enabled
    [    0.921000] random: crng init done
    [    0.924677] optee: initialized driver
    [    0.931383] Initializing XFRM netlink socket
    [    0.935857] NET: Registered PF_PACKET protocol family
    [    0.941129] Key type dns_resolver registered
    [    0.956172] registered taskstats version 1
    [    0.960566] Loading compiled-in X.509 certificates
    [    0.983181] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    [    1.108482] pca953x 1-0070: supply vcc not found, using dummy regulator
    [    1.115486] pca953x 1-0070: using no AI
    [    1.142404] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.148526] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    1.157918] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.170272] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.178425] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.188905] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.207361] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.219134] printk: console [ttyS2] disabled
    [    1.224220] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 309, base_baud = 3000000) is a 8250
    [    1.233163] printk: console [ttyS2] enabled
    [    1.241634] printk: bootconsole [ns16550a0] disabled
    [    1.258623] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.263778] 7 fixed-partitions partitions found on MTD device fc40000.spi.0
    [    1.270754] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.276152] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.283378] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.290485] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.297616] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.304340] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.311729] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.318864] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.466300] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.513404] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.526343] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.534458] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
    [    1.542596] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [    1.555523] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.562659] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.569524] pps pps0: new PPS source ptp0
    [    1.574049] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.592114] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.605357] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.632478] mmc1: CQHCI version 5.10
    [    1.632975] mmc0: CQHCI version 5.10
    [    1.642053] clk: Disabling unused clocks
    [    1.667002] ALSA device list:
    [    1.670097]   No soundcards found.
    [    1.682350] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.682382] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.695459] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
    [    1.705765] Waiting for root device PARTUUID=00000000-02...
    [    1.722469] mmc0: new SDIO card at address 0001
    [    1.758593] mmc1: new ultra high speed SDR104 SDHC card at address 59b4
    [    1.766223] mmcblk1: mmc1:59b4 LX32G 29.5 GiB
    [    1.773085]  mmcblk1: p1 p2 p3
    [    1.793444] EXT4-fs (mmcblk1p2): warning: maximal mount count reached, running e2fsck is recommended
    [    1.804066] EXT4-fs (mmcblk1p2): mounted filesystem f946695b-2551-404e-b7bb-24728e7c7e9d r/w without journal. Quota mode: none.
    [    1.815714] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.822553] devtmpfs: mounted
    [    1.827288] Freeing unused kernel memory: 2496K
    [    1.832023] Run /sbin/init as init process
    [    1.836132]   with arguments:
    [    1.836137]     /sbin/init
    [    1.836141]   with environment:
    [    1.836144]     HOME=/
    [    1.836148]     TERM=linux
    [    3.037048] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [    3.046395] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [   11.646797] platform led-controller: deferred probe pending
    [   11.652431] platform 20000000.i2c: deferred probe pending
    [   12.341469] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [   12.350813] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    

    I grepped the output for i2c here:

    [    0.831254] i2c_dev: i2c /dev entries driver
    [    1.142404] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [   11.652431] platform 20000000.i2c: deferred probe pending
    

    I used the fitImage from processor SDK 10.01.10.04  board-support/prebuilt-images/am64xx-evm directory.  If I substitute an image that was generated by a local build, I get the same result.

    I mounted debugfs to look for the reason that the deferral is happening.  The following is the content of devices_deferred:

    led-controller
    20000000.i2c

    The deferral for the led-controller is due to the missing modules for the kernel.  I could not locate them in the SDK.  I do not get that deferral when using a locally built fitImage and modules tree.

  • Does the TMDS64EVM have the same issue?

  • Edited January 30, 2025

    Hello Dan,

    I am able to replicate your observations on AM64B-SK, and I see similar (but not identical) behavior. However, the EEPROM I2C module is coming up as expected on AM64 EVM:

    AM64B-SK SDK 8.6 Linux

    [    0.804404] i2c /dev entries driver
    ...
    [    1.000169] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.007671] pca953x 1-0070: supply vcc not found, using dummy regulator
    [    1.014679] pca953x 1-0070: using no AI
    [    1.043020] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.050254] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    

    AM64B-SK SDK 10.0 RT Linux

    [    1.128217] i2c_dev: i2c /dev entries driver
    ...
    [    1.365536] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    ...
    [   21.990163] platform 20000000.i2c: deferred probe pending

    AM64 EVM SDK 8.6 Linux

    [    0.813562] i2c /dev entries driver
    ...
    [    1.010784] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.126928] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.134021] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.141022] omap_i2c 20030000.i2c: bus 3 rev0.12 at 100 kHz
    

    AM64 EVM SDK 10.0 RT Linux

    [    1.144563] i2c_dev: i2c /dev entries driver
    ...
    [    1.383687] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.399267] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    

    Will spend a bit more time looking into this before signing off today.

    Regards,

    Nick

  • Hello there,

    Observations on the board

    I misspoke in my previous response. We do NOT see this behavior on the general purpose EVM. The Atmel EEPROM driver is getting probed and working as expected:

    AM64 EVM 10.0 RT Linux

    root@am64xx-evm:~# dmesg | grep i2c
    [    1.144563] i2c_dev: i2c /dev entries driver
    [    1.383687] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.399267] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    
    root@am64xx-evm:~# i2cdetect -l
    i2c-0   i2c             OMAP I2C adapter                        I2C adapter
    i2c-1   i2c             OMAP I2C adapter                        I2C adapter
    root@am64xx-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: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: UU UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    
    root@am64xx-evm:~# lsmod
    Module                  Size  Used by
    ...
    at24                   16384  0
    
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty/kernel# find -name
     "*at24*"
    ./drivers/misc/eeprom/at24.ko
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty/kernel# dmesg | gr
    ep at24
    [    9.188128] at24 0-0050: supply vcc not found, using dummy regulator
    [    9.208369] at24 0-0050: 131072 byte 24c1024 EEPROM, writable, 1 bytes/write
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty/kernel# dmesg | gr
    ep pca
    [    1.371269] pca953x 0-0038: supply vcc not found, using dummy regulator
    [    1.371456] pca953x 0-0038: using no AI
    [    1.385959] pca953x 1-0022: supply vcc not found, using dummy regulator
    [    1.386159] pca953x 1-0022: using AI
    

    compared to the AM64B-SK on 10.0 RT Linux:

    root@am64xx-evm:~# dmesg | grep i2c
    [    1.136847] i2c_dev: i2c /dev entries driver
    [    1.372995] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [   21.990594] platform 20000000.i2c: deferred probe pending
    root@am64xx-evm:~# i2cdetect -l
    i2c-1   i2c             OMAP I2C adapter                        I2C adapter
    root@am64xx-evm:~# i2cdetect -y -r 0
    Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory
    root@am64xx-evm:~# i2cdetect -y -r 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 49 -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: UU -- -- -- -- -- -- --
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty# find -name "*at24*"
    ./kernel/drivers/misc/eeprom/at24.ko
    
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty# dmesg | grep at24
    root@am64xx-evm:/lib/modules/6.6.32-rt32-ti-rt-g04a9ad081f0f-dirty#
    

    The kernel module is there on both boards, but it is not getting loaded.

    devicetree analysis 

    Since AM64x EVM is working as expected, I would assume that the behavior is caused by a difference in the devicetree files (as opposed to something like a kernel config, which should be identical for both boards since I was using the same SD card to boot them).

    Comparing against the SDK 8.6 version of the AM64B-SK board is not very helpful, since nothing is defined for the I2C0 peripheral. I suspect that version of the devicetree file was written for the previous version of the starter kit, which was called AM64-SK. Off the top of my head I'm not sure if that version of the board had EEPROM attached or not - the ti.com page for the older board seems to have been taken down, so I might have to ask around internally to get the schematics (didn't have time to check if the AM64B-SK schematic files include older versions for the AM64-SK or not).

    k3-am642-evm.dts on SDK 10.0 defines a different atmel compatible string, I assume for 1MB (?) instead of 512KB(?), and a different register address. I do not see any other obvious differences. Did not get time to look into whether there was a mismatch between the EEPROM devicetree definition and the EEPROM on the board.

    Regards,

    Nick

  • I modified the SDK 8.6 dts for the AM64B-SK to enable the EEPROM on i2c0, and for an RTC board that we we attached to the i2c2 bus on the Raspberry PI connector.  We had no issues with either.  The same fragment works on our custom board, too.

  • Is there possibly a regulator that needs to be enabled for the device?

  • Hi Dan

    Thank you for the additional details. We will need to get back to you on Monday or Tuesday as Nick is currently occupied on another debug and has not been able to allocate the time on this for a follow up.

    We do appreciate that you are giving  us something that you have reproducibility on EVM , this helps with diagnosing it more efficiently 

    Mukul 

  • Hi Dan,

    Apologies for the delay. It appears the kernel failed in processing the "power-domains" information in i2c0 devicetree node, which caused the "deferred probe pending".

    The following kernel devicetee change (remove power-domains from i2c0 node) will make i2c0 working in Linux. Meanwhile I will work with our dev team to understand the root cause.

    diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
    index 305fca851118..52ff124b5ec6 100644
    --- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
    @@ -475,7 +475,7 @@ main_i2c0: i2c@20000000 {
                    interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
                    #address-cells = <1>;
                    #size-cells = <0>;
    -               power-domains = <&k3_pds 102 TI_SCI_PD_EXCLUSIVE>;
    +               // power-domains = <&k3_pds 102 TI_SCI_PD_EXCLUSIVE>;
                    clocks = <&k3_clks 102 2>;
                    clock-names = "fck";
                    status = "disabled";

  • Hi Dan,

    While trying to narrow down the issue, I found the i2c0 probe defer issue is only in SDK10.0 (I didn't test with SDK10.1), but not in SDK9.2.1.10. Please let me know when you saw the issue in SDK9, did you use the U-Boot binaries from SDK10. Since the root cause is likely in the SYSFW, so I would expect to see the problem in any kernel version combined with SDK10.0 U-Boot binaries.

  • Bin - please check this i2c0 probe defer issue in SDK v10.1. I know TI does not have 10.2 on the table, and I have not yet heard from m-firth@ti.com on when SDK 11 will arrive.

    thanks

    Jim

  • Hi Jim,

    Yes I am working on the root cause of the i2c0 probe defer issue, but my devicetree patch above can be used as a workaround for SDK10.x.

  • I used U-boot from SDK 10 for both kernels.  I added some modifications, and did not want to port them to SDK 9.  We have been trying to update the SDK from 8 to 10.

  • I will be trying this with SDK 10.0.  The dts for our custom board will have to be reworked for 10.1.  I based our dts on the k3-am642-sk.dtb, and I noticed that there are some changes.  Our schematic is based on the SK-AM64B.

  • Hi Dan,

    I used U-boot from SDK 10 for both kernels.

    Okay, this would explain that you see the probe issue in both SDK9 and SDK10, while I only see it in SDK10. The issue seems to be related to SYSFW in SDK10.

  • Is there a change to SYSFW that I should apply?

  • No. You only need to apply the kernel devicetree change above (remove power-domains in i2c0 node), then i2c0 should work in Linux.

  • The change resolved the issue:

    [~]> uname -a
    Linux terastor-d7cfcc 6.6.32-g3115f296c2a2 #1 SMP PREEMPT Tue Feb  4 09:40:37 CST 2025 aarch64 GNU/Linux
    [ems@terastor-d7cfcc]-[Tue Feb 04 11:31 AM]
    [~]> dmesg | grep i2c
    [    0.824660] i2c_dev: i2c /dev entries driver
    [    1.161368] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.194158] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    

    I am also able to read from the EEPROM:

    [~]> sudo id-eeprom | jq .
    {
      "Name": "AM64B-SKEVM",
      "Label": "K50000011TI24370a6e",
      "Label_name": "K50000011",
      "Vendor_Initial": "K",
      "Assembly_Number": "50000011",
      "Assembly_Revision": "TI",
      "Year_Week": "2437",
      "Serial": "0a6e",
      "Customer_ID": 0,
      "Site_ID": 0,
      "TeraStor_ID": 0,
      "TeraStor_Min_P": -3600,
      "TeraStor_Max_P": 3600,
      "TeraStor_Min_Q": -3600,
      "TeraStor_Max_Q": 3600,
      "TeraStor_Min_S": -3600,
      "TeraStor_Max_S": 3600,
      "TeraStor_PCS_Count": 3,
      "TeraStor_PCS_Rating_P": 1200,
      "TeraStor_PCS_Rating_Q": 1200,
      "TeraStor_PCS_Rating_S": 1200,
      "TeraStor_Cell_Capacity": 280,
      "TeraStor_Cell_Chemistry": "LFP",
      "TeraStor_Cell_Vendor": "EVE",
      "TeraStor_Product_Name": "TS7000",
      "TeraStor_PCS_Type": "CAB1000",
      "Hostname": "terastor-0",
      "IP": [],
      "Mac": [
        "0e:09:29:d7:cf:cc",
        "06:c3:87:46:4d:36",
        "04:02:e7:65:0e:89"
      ]
    }
    

  • Hi Dan,

    Glad the issue is resolved now with the workaround. Thanks for the update.

    The root cause appears to be that i2c0 is enabled in R5 SPL for accessing EEPROM, but it is not freed before the execution is transitioned to A53 U-Boot/Linux, which causes Linux is unable to query the power-domain for i2c0. The workaround provided tells Linux to bypass the power-domain configuration for i2c0 since it has been done by R5 SPL. I will report the issue back to our dev team and it will be fixed in the next SDK.

  • Bin: in case users need it, could a "patch" on the TI git repo trees be available to customers prior to SDK v12 ? (Some will stay on the Linux 6.6 baseline before SDK v12 with the Linux 6.12 baseline).

    Jim

  • I will request the dev team to backport the fix to 6.6.y-cicd branch once the patch is available.