AM62P: How to change linux kernel RAM size?

Part Number: AM62P

Hi Ti 

Now I use AM62P SKEVM board ,the RAM  is 8GB

But we want to use 1 GB RAM ,

How to change linux kernel RAM is 1GB?

Thanks

  • Hi,

    I’ve assigned your query to the concerned expert. Please note that responses may be delayed due to the Christmas and New Year holidays. Please feel free to ping this thread if you don't receive a response latest by Jan 1st week

    Regards,
    Johnson

  • Hi Pengfei,

    Please refer the device tree: we reserve just 2GB out of 8GB

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts?h=ti-linux-6.12.y#n53

    Please modify based on your customization.

    Best Regards

    Suren

  • Hi 

    How to modify  k3-am62p5-sk.dts   use 1GB ?

    Best Regards

    SUI

  • Hi Pengfei,

    Please refer to the below FAQ:

     [FAQ] AM625: Memory node initialization for 1GB, 2GB, 4GB, 8GB size 

    Please see the device tree changes for each of these configurations.

    Best Regards,

    Suren

  • Hi  

    I have already modify linux Memory  is 1GB 

    I set bootargs ="console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G"

    there is the linux kernel log

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    [    0.000000] Boot time to Start Kernel : 6475 ms
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.12.35-ti-00920-g78e6abff3220-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    [    0.000000] KASLR disabled due to lack of seed
    [    0.000000] Machine model: Texas Instruments AM62P5 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: legacy bootconsole [ns16550a0] enabled
    [    0.000000] Memory limited to 1024MB
    [    0.000000] efi: UEFI not found.
    [    0.000000] OF: reserved mem: failed to allocate memory for node 'linux,cma': size 576 MiB
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    [    0.000000] OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    [    0.000000] OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    [    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    [    0.000000] OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000bfffffff]
    [    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-0x00000000934fffff]
    [    0.000000]   node   0: [mem 0x0000000093500000-0x000000009e6fffff]
    [    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
    [    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
    [    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000bfffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000bce00000 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.5
    [    0.000000] percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    [    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 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G
    [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 262144
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    [    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 1MB
    [    0.000000] software IO TLB: area num 4.
    [    0.000000] software IO TLB: mapped [mem 0x00000000bcc80000-0x00000000bcd80000] (1MB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, 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=512 to nr_cpu_ids=4.
    [    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=4
    [    0.000000] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    [    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    [    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: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    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 @0x0000000080050000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080060000
    [    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.000000] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    

    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: legacy bootconsole [ns16550a0] enabled
    [ 0.000000] Memory limited to 1024MB

    But  I found linux,cma  have some errors 

    [    0.000000] OF: reserved mem: failed to allocate memory for node 'linux,cma': size 576 MiB

    Then  kernel dead

    I modify dts   CMA memory  is 200MB

    the kernel also is dead

    there is the log

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    [    0.000000] Boot time to Start Kernel : 13624 ms
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.12.35-ti-00920-g78e6abff3220-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    [    0.000000] KASLR disabled due to lack of seed
    [    0.000000] Machine model: Texas Instruments AM62P5 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: legacy bootconsole [ns16550a0] enabled
    [    0.000000] Memory limited to 1024MB
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x00000000b3800000, size 200 MiB
    [    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000b3800000..0x00000000bfffffff (204800 KiB) map reusable linux,cma
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    [    0.000000] OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    [    0.000000] OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    [    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    [    0.000000] OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000bfffffff]
    [    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-0x00000000934fffff]
    [    0.000000]   node   0: [mem 0x0000000093500000-0x000000009e6fffff]
    [    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
    [    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
    [    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000bfffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
    [    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.5
    [    0.000000] percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    [    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 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G
    [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 262144
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    [    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 1MB
    [    0.000000] software IO TLB: area num 4.
    [    0.000000] software IO TLB: mapped [mem 0x00000000b2480000-0x00000000b2580000] (1MB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, 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=512 to nr_cpu_ids=4.
    [    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=4
    [    0.000000] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    [    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    [    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: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    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 @0x0000000080050000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080060000
    [    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.000000] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    

    How to reslove the kernel dead issue ?  when I modify Memory size  1GB

    Best Regards

    SUI

  • Hi  

    How to reslove the kernel dead issue ?  when I modify Memory size  1GB

    Best Regards

    SUI

  • Hi Pengfei Sui,

    Can you share your device tree changes that you made for 1GB DDR?

    Best Regards,

    Suren

  • Hi  

    I use AM62P SKEVM board , SDK is  11_01_05_03  

    There is my device tree

    // SPDX-License-Identifier: GPL-2.0-only OR MIT
    /*
     * Device Tree file for the AM62P5-SK
     * Copyright (C) 2023-2024 Texas Instruments Incorporated - https://www.ti.com/
     *
     * Schematics: https://www.ti.com/lit/zip/sprr487
     */
    
    /dts-v1/;
    
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include "k3-am62p5.dtsi"
    
    / {
    	compatible = "ti,am62p5-sk", "ti,am62p5";
    	model = "Texas Instruments AM62P5 SK";
    
    	aliases {
    		serial0 = &wkup_uart0;
    		serial1 = &mcu_uart0;
    		serial2 = &main_uart0;
    		serial3 = &main_uart1;
    		mmc0 = &sdhci0;
    		mmc1 = &sdhci1;
    		mmc2 = &sdhci2;
    		spi0 = &ospi0;
    		ethernet0 = &cpsw_port1;
    		ethernet1 = &cpsw_port2;
    		usb0 = &usb0;
    		usb1 = &usb1;
    	};
    
    	chosen {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
                    bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G";
    		stdout-path = &main_uart0;
    
    		framebuffer0: framebuffer@0 {
    			compatible = "simple-framebuffer";
    			power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>;
    			clocks = <&k3_clks 186 6>,
    				 <&dss0_vp1_clk>,
    				 <&k3_clks 186 2>;
    			display = <&dss0>;
    			status = "disabled";
    		};
    	};
    
    	memory@80000000 {
    		/* 8G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
    		      <0x00000008 0x80000000 0x00000001 0x80000000>;
    		device_type = "memory";
    		bootph-pre-ram;
    	};
    
    	reserved_memory: reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		linux,cma {
    			compatible = "shared-dma-pool";
    			reusable;
    			/********576 MB**********
    			size = <0x00 0x24000000>;
    			************************/
    			/*******200MB***********/
    			size = <0x00 0xc800000>;
    			
    			linux,cma-default;
    		};
    
    		rtos_ipc_memory_region: rtos-ipc-memory@9b500000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b500000 0x00 0x00300000>;
    			no-map;
    		};
    
    		mcu_r5fss0_core0_dma_memory_region: mcu-r5fss-dma-memory-region@9b800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b800000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_r5fss0_core0_memory_region: mcu-r5fss-memory-region@9b900000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b900000 0x00 0xf00000>;
    			no-map;
    		};
    
    		wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9c800000 0x00 0x100000>;
    			no-map;
    		};
    
    		wkup_r5fss0_core0_memory_region: r5f-memory@9c900000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9c900000 0x00 0x1e00000>;
    			no-map;
    		};
    
    		secure_tfa_ddr: tfa@9e780000 {
    			reg = <0x00 0x9e780000 0x00 0x80000>;
    			no-map;
    		};
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			no-map;
    		};
    		
    		rtos_framebuffer_memory_region: rtos-framebuffer-memory@93500000 {
                    	reg = <0x00 0x93500000 0x00 0x08000000>;
                    	no-map;
           		 };
    	};
    
    	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;
    		bootph-all;
    	};
    
    	vcc_5v0: regulator-1 {
    		/* Output of TPS630702RNMR */
    		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;
    		bootph-all;
    	};
    
    	vdd_mmc1: regulator-2 {
    		/* TPS22918DBVR */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    		bootph-all;
    	};
    
    	vddshv_sdio: regulator-3 {
    		compatible = "regulator-gpio";
    		regulator-name = "vddshv_sdio";
    		pinctrl-names = "default";
    		pinctrl-0 = <&vddshv_sdio_pins_default>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
    		states = <1800000 0x0>,
    			 <3300000 0x1>;
    		bootph-all;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am62-sk:green:heartbeat";
    			gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	opp-table {
    		/* Requires VDD_CORE at 0v85 */
    		opp-1400000000 {
    			opp-hz = /bits/ 64 <1400000000>;
    			opp-supported-hw = <0x01 0x0004>;
    			clock-latency-ns = <6000000>;
    		};
    	};
    
    	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>;
    			};
    		};
    	};
    };
    
    &main_gpio0 {
    	bootph-all;
    };
    
    &main_gpio1 {
    	bootph-all;
    };
    
    &main_pmx0 {
    	bootph-all;
    
    	main_i2c0_pins_default: main-i2c0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B25) I2C0_SCL */
    			AM62PX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A24) I2C0_SDA */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C24) I2C1_SCL */
    			AM62PX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (B24) I2C1_SDA */
    		>;
    		bootph-all;
    	};
    
    	main_i2c2_pins_default: main-i2c2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (T22) GPMC0_CSn2.I2C2_SCL */
    			AM62PX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (U25) GPMC0_CSn3.I2C2_SDA */
    		>;
    	};
    
    	main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C22) UART0_RTSn.GPIO1_23 */
    		>;
    	};
    
    	main_mcasp1_pins_default: main-mcasp1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0090, PIN_INPUT, 2) /* (U24) GPMC0_BE0n_CLE.MCASP1_ACLKX */
    			AM62PX_IOPAD(0x0098, PIN_INPUT, 2) /* (AA24) GPMC0_WAIT0.MCASP1_AFSX */
    			AM62PX_IOPAD(0x008c, PIN_OUTPUT, 2) /* (T25) GPMC0_WEn.MCASP1_AXR0 */
    			AM62PX_IOPAD(0x0084, PIN_INPUT, 2) /* (R25) GPMC0_ADVn_ALE.MCASP1_AXR2 */
    		>;
    	};
    
    	main_mdio1_pins_default: main-mdio1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0160, PIN_OUTPUT, 0) /* (F17) MDIO0_MDC */
    			AM62PX_IOPAD(0x015c, PIN_INPUT, 0) /* (F16) MDIO0_MDIO */
    		>;
    		bootph-all;
    	};
    
    	main_mmc1_pins_default: main-mmc1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x023c, PIN_INPUT, 0) /* (H20) MMC1_CMD */
    			AM62PX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (J24) MMC1_CLK */
    			AM62PX_IOPAD(0x0230, PIN_INPUT, 0) /* (H21) MMC1_DAT0 */
    			AM62PX_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H23) MMC1_DAT1 */
    			AM62PX_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (H22) MMC1_DAT2 */
    			AM62PX_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
    			AM62PX_IOPAD(0x0240, PIN_INPUT, 0) /* (D23) MMC1_SDCD */
    		>;
    		bootph-all;
    	};
    
    	main_mmc2_pins_default: main-mmc2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0120, PIN_INPUT, 0) /* (K24) MMC2_CMD */
    			AM62PX_IOPAD(0x0118, PIN_OUTPUT, 0) /* (K21) MMC2_CLK */
    			AM62PX_IOPAD(0x011C, PIN_INPUT, 0) /* () MMC2_CLKLB */
    			AM62PX_IOPAD(0x0114, PIN_INPUT, 0) /* (K23) MMC2_DAT0 */
    			AM62PX_IOPAD(0x0110, PIN_INPUT_PULLUP, 0) /* (K22) MMC2_DAT1 */
    			AM62PX_IOPAD(0x010c, PIN_INPUT_PULLUP, 0) /* (L20) MMC2_DAT2 */
    			AM62PX_IOPAD(0x0108, PIN_INPUT_PULLUP, 0) /* (L21) MMC2_DAT3 */
    		>;
    		bootph-all;
    	};
    
    	main_rgmii1_pins_default: main-rgmii1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x014c, PIN_INPUT, 0) /* (B15) RGMII1_RD0 */
    			AM62PX_IOPAD(0x0150, PIN_INPUT, 0) /* (B16) RGMII1_RD1 */
    			AM62PX_IOPAD(0x0154, PIN_INPUT, 0) /* (A14) RGMII1_RD2 */
    			AM62PX_IOPAD(0x0158, PIN_INPUT, 0) /* (B14) RGMII1_RD3 */
    			AM62PX_IOPAD(0x0148, PIN_INPUT, 0) /* (A16) RGMII1_RXC */
    			AM62PX_IOPAD(0x0144, PIN_INPUT, 0) /* (A15) RGMII1_RX_CTL */
    			AM62PX_IOPAD(0x0134, PIN_INPUT, 0) /* (A18) RGMII1_TD0 */
    			AM62PX_IOPAD(0x0138, PIN_INPUT, 0) /* (C17) RGMII1_TD1 */
    			AM62PX_IOPAD(0x013c, PIN_INPUT, 0) /* (A17) RGMII1_TD2 */
    			AM62PX_IOPAD(0x0140, PIN_INPUT, 0) /* (C16) RGMII1_TD3 */
    			AM62PX_IOPAD(0x0130, PIN_INPUT, 0) /* (B17) RGMII1_TXC */
    			AM62PX_IOPAD(0x012c, PIN_INPUT, 0) /* (B18) RGMII1_TX_CTL */
    		>;
    		bootph-all;
    	};
    
    	main_rgmii2_pins_default: main-rgmii2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0184, PIN_INPUT, 0) /* (E19) RGMII2_RD0 */
    			AM62PX_IOPAD(0x0188, PIN_INPUT, 0) /* (E16) RGMII2_RD1 */
    			AM62PX_IOPAD(0x018c, PIN_INPUT, 0) /* (E17) RGMII2_RD2 */
    			AM62PX_IOPAD(0x0190, PIN_INPUT, 0) /* (C19) RGMII2_RD3 */
    			AM62PX_IOPAD(0x0180, PIN_INPUT, 0) /* (D19) RGMII2_RXC */
    			AM62PX_IOPAD(0x017c, PIN_INPUT, 0) /* (F19) RGMII2_RX_CTL */
    			AM62PX_IOPAD(0x016c, PIN_INPUT, 0) /* (B19) RGMII2_TD0 */
    			AM62PX_IOPAD(0x0170, PIN_INPUT, 0) /* (A21) RGMII2_TD1 */
    			AM62PX_IOPAD(0x0174, PIN_INPUT, 0) /* (D17) RGMII2_TD2 */
    			AM62PX_IOPAD(0x0178, PIN_INPUT, 0) /* (A19) RGMII2_TD3 */
    			AM62PX_IOPAD(0x0168, PIN_INPUT, 0) /* (D16) RGMII2_TXC */
    			AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
    		>;
    		bootph-all;
    	};
    
    	main_uart0_pins_default: main-uart0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x1c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
    			AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
    		>;
    		bootph-all;
    	};
    
    	main_uart1_pins_default: main-uart1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
    			AM62PX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (E25) MCASP0_AXR2.UART1_RTSn */
    			AM62PX_IOPAD(0x01ac, PIN_INPUT, 2) /* (G23) MCASP0_AFSR.UART1_RXD */
    			AM62PX_IOPAD(0x01b0, PIN_OUTPUT, 2) /* (G20) MCASP0_ACLKR.UART1_TXD */
    		>;
    		bootph-all;
    	};
    
    	main_usb1_pins_default: main-usb1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0258, PIN_INPUT | PIN_DS_PULLUD_ENABLE | PIN_DS_PULL_UP, 0) /* (G21) USB1_DRVVBUS */
    		>;
    	};
    
    	main_wlirq_pins_default: main-wlirq-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0128, PIN_INPUT, 7) /* (K25) MMC2_SDWP.GPIO0_72 */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0000, PIN_OUTPUT, 0) /* (P23) OSPI0_CLK */
    			AM62PX_IOPAD(0x002c, PIN_OUTPUT, 0) /* (M25) OSPI0_CSn0 */
    			AM62PX_IOPAD(0x000c, PIN_INPUT, 0) /* (L25) OSPI0_D0 */
    			AM62PX_IOPAD(0x0010, PIN_INPUT, 0) /* (N24) OSPI0_D1 */
    			AM62PX_IOPAD(0x0014, PIN_INPUT, 0) /* (N25) OSPI0_D2 */
    			AM62PX_IOPAD(0x0018, PIN_INPUT, 0) /* (M24) OSPI0_D3 */
    			AM62PX_IOPAD(0x001c, PIN_INPUT, 0) /* (N21) OSPI0_D4 */
    			AM62PX_IOPAD(0x0020, PIN_INPUT, 0) /* (N22) OSPI0_D5 */
    			AM62PX_IOPAD(0x0024, PIN_INPUT, 0) /* (P21) OSPI0_D6 */
    			AM62PX_IOPAD(0x0028, PIN_INPUT, 0) /* (N20) OSPI0_D7 */
    			AM62PX_IOPAD(0x0008, PIN_INPUT, 0) /* (P22) OSPI0_DQS */
    		>;
    		bootph-all;
    	};
    
    	usr_led_pins_default: usr-led-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0244, PIN_INPUT, 7) /* (D24) MMC1_SDWP.GPIO1_49 */
    		>;
    	};
    
    	vddshv_sdio_pins_default: vddshvr-sdio-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x007c, PIN_INPUT, 7) /* (Y25) GPMC0_CLK.GPIO0_31 */
    		>;
    		bootph-all;
    	};
    
    	wlan_en_pins_default: wlan-en-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0124, PIN_INPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
    		>;
    	};
    
    	main_dpi_pins_default: main-dpi-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0100, PIN_OUTPUT, 0) /* (W20) VOUT0_VSYNC */
    			AM62PX_IOPAD(0x00f8, PIN_OUTPUT, 0) /* (AC20) VOUT0_HSYNC */
    			AM62PX_IOPAD(0x0104, PIN_OUTPUT, 0) /* (Y21) VOUT0_PCLK */
    			AM62PX_IOPAD(0x00fc, PIN_OUTPUT, 0) /* (W21) VOUT0_DE */
    			AM62PX_IOPAD(0x00b8, PIN_OUTPUT, 0) /* (AE24) VOUT0_DATA0 */
    			AM62PX_IOPAD(0x00bc, PIN_OUTPUT, 0) /* (W23) VOUT0_DATA1 */
    			AM62PX_IOPAD(0x00c0, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA2 */
    			AM62PX_IOPAD(0x00c4, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA3 */
    			AM62PX_IOPAD(0x00c8, PIN_OUTPUT, 0) /* (AB23) VOUT0_DATA4 */
    			AM62PX_IOPAD(0x00cc, PIN_OUTPUT, 0) /* (AD23) VOUT0_DATA5 */
    			AM62PX_IOPAD(0x00d0, PIN_OUTPUT, 0) /* (AC23) VOUT0_DATA6 */
    			AM62PX_IOPAD(0x00d4, PIN_OUTPUT, 0) /* (AE23) VOUT0_DATA7 */
    			AM62PX_IOPAD(0x00d8, PIN_OUTPUT, 0) /* (AE22) VOUT0_DATA8 */
    			AM62PX_IOPAD(0x00dc, PIN_OUTPUT, 0) /* (AC22) VOUT0_DATA9 */
    			AM62PX_IOPAD(0x00e0, PIN_OUTPUT, 0) /* (W22) VOUT0_DATA10 */
    			AM62PX_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AE21) VOUT0_DATA11 */
    			AM62PX_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (AD21) VOUT0_DATA12 */
    			AM62PX_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (AC21) VOUT0_DATA13 */
    			AM62PX_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (AA20) VOUT0_DATA14 */
    			AM62PX_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (Y20) VOUT0_DATA15 */
    			AM62PX_IOPAD(0x005c, PIN_OUTPUT, 1) /* (AC25) GPMC0_AD8.VOUT0_DATA16 */
    			AM62PX_IOPAD(0x0060, PIN_OUTPUT, 1) /* (AB25) GPMC0_AD9.VOUT0_DATA17 */
    			AM62PX_IOPAD(0x0064, PIN_OUTPUT, 1) /* (AA25) GPMC0_AD10.VOUT0_DATA18 */
    			AM62PX_IOPAD(0x0068, PIN_OUTPUT, 1) /* (W24) GPMC0_AD11.VOUT0_DATA19 */
    			AM62PX_IOPAD(0x006c, PIN_OUTPUT, 1) /* (Y24) GPMC0_AD12.VOUT0_DATA20 */
    			AM62PX_IOPAD(0x0070, PIN_OUTPUT, 1) /* (AD25) GPMC0_AD13.VOUT0_DATA21 */
    			AM62PX_IOPAD(0x0074, PIN_OUTPUT, 1) /* (AB24) GPMC0_AD14.VOUT0_DATA22 */
    			AM62PX_IOPAD(0x0078, PIN_OUTPUT, 1) /* (AC24) GPMC0_AD15.VOUT0_DATA23 */
    			AM62PX_IOPAD(0x009c, PIN_OUTPUT, 1) /* (AD24) GPMC0_WAIT1.VOUT0_EXTPCLKIN */
    		>;
    	};
    
    	main_epwm0_pins_default: main_epwm0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01b4, PIN_OUTPUT, 2) /* (D20) SPI0_CS0.EHRPWM0_A */
    			AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 2) /* (E20) SPI0_CS1.EHRPWM0_B */
    		>;
    	};
    
    	main_epwm1_pins_default: main_epwm1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01bc, PIN_OUTPUT, 2) /* (B21) SPI0_CLK.EHRPWM1_A */
    			AM62PX_IOPAD(0x01c0, PIN_OUTPUT, 2) /* (B20) SPI0_D0.EHRPWM1_B */
    		>;
    	};
    
    	main_ecap1_pins_default: main_ecap1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x019c, PIN_OUTPUT, 2) /* (E24) MCASP0_AXR1.ECAP1_IN_APWM_OUT */
    		>;
    	};
    
    	main_ecap2_pins_default: main-ecap2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01a4, PIN_OUTPUT, 2) /* (F24) MCASP0_ACLKX.ECAP2_IN_APWM_OUT */
    		>;
    	};
    };
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    	clock-frequency = <400000>;
    
    	typec_pd0: usb-power-controller@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>;
    				};
    			};
    		};
    	};
    };
    
    &main_i2c1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <100000>;
    	bootph-all;
    
    	tlv320aic3106: audio-codec@1b {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3106";
    		reg = <0x1b>;
    		ai3x-micbias-vg = <1>;  /* 2.0V */
    	};
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "OLDI_INT#", "x8_NAND_DETECT",
    				   "UART1_FET_SEL", "MMC1_SD_EN",
    				   "VPP_EN", "EXP_PS_3V3_EN",
    				   "UART1_FET_BUF_EN", "EXP_HAT_DETECT",
    				   "DSI_GPIO0", "DSI_GPIO1",
    				   "OLDI_EDID", "BT_UART_WAKE_SOC_3V3",
    				   "USB_TYPEA_OC_INDICATION", "CSI_GPIO0",
    				   "CSI_GPIO1", "WLAN_ALERTn",
    				   "HDMI_INTn", "TEST_GPIO2",
    				   "MCASP1_FET_EN", "MCASP1_BUF_BT_EN",
    				   "MCASP1_FET_SEL", "DSI_EDID",
    				   "PD_I2C_IRQ", "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>;
    		bootph-all;
    	};
    
    	exp2: gpio@23 {
    		compatible = "ti,tca6424";
    		reg = <0x23>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "BT_EN_SOC", "EXP_PS_5V0_EN",
    				   "", "",
    				   "", "",
    				   "", "",
    				   "WL_LT_EN", "",
    				   "TP3", "TP6",
    				   "TP4", "TP7",
    				   "TP5", "TP8",
    				   "SoC_I2C2_MCAN_SEL", "GPIO_HDMI_RSTn",
    				   "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    				   "GPIO_OLDI_RSTn", "GPIO_AUD_RSTn",
    				   "GPIO_eMMC_RSTn", "SoC_WLAN_SDIO_RST";
    	};
    
    	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 >;
    
    		hdmi_tx_ports: ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			/*
    			 * HDMI can be serviced with 3 potential VPs -
    			 * (DSS0 VP1 / DSS1 VP0 / DSS1 VP1).
    			 * For now, we will service it with DSS0 VP1.
    			 */
    			port@0 {
    				reg = <0>;
    
    				sii9022_in: endpoint {
    					remote-endpoint = <&dss0_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 {
    	status = "okay";
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    	bootph-all;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	status = "disabled";
    	vmmc-supply = <&vdd_mmc1>;
    	vqmmc-supply = <&vddshv_sdio>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	disable-wp;
    	bootph-all;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_rgmii1_pins_default>,
    		    <&main_rgmii2_pins_default>;
    	status = "okay";
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    	status = "okay";
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    	status = "okay";
    };
    
    &cpsw3g_mdio {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mdio1_pins_default>;
    	status = "okay";
    
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		bootph-all;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    		ti,min-output-impedance;
    	};
    
    	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;
    	};
    };
    
    &usbss0 {
    	status = "okay";
    	ti,vbus-divider;
    };
    
    &usbss1 {
    	status = "okay";
    	ti,vbus-divider;
    };
    
    &usb0 {
    	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
    	>;
    };
    
    &fss {
    	bootph-all;
    };
    
    &ospi0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    	bootph-all;
    
    	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>;
    		cdns,phy-mode;
    		bootph-all;
    
    		partitions {
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			bootph-all;
    
    			partition@0 {
    				label = "sbl_ospi_linux_stage1.release.hs_fs.tiimage";
    				reg = <0x00 0x80000>;
    			};
    
    			partition@80000 {
    				label = "wkup-r5_stage2.release.appimage.hs_fs";
    				reg = <0x80000 0xa00000>;
    			};
    
    			partition@100000 {
    				label = "hsm_a.appimage.hs_fs";
    				reg = <0xa80000 0x40000>;
    			};
    
    			partition@140000 {
    				label = "mcu-r5_a.release.appimage.hs_fs";
    				reg = <0xac0000 0x200000>;
    			};
    
    			partition@340000 {
    				label = "linux.falcon_a.appimage.hs_fs";
    				reg = <0xcc0000 0x1100000>;
    			};
    
    			partition@1440000 {
    				label = "hsm_b.appimage.hs_fs";
    				reg = <0x1dc0000 0x40000>;
    			};
    
    			partition@1480000 {
    				label = "mcu-r5_b.release.appimage.hs_fs";
    				reg = <0x1e00000 0x200000>;
    			};
    
    			partition@1680000 {
    				label = "linux.falcon_b.appimage.hs_fs";
    				reg = <0x2000000 0x1100000>;
    			};
    
    			partition@2780000 {
    				label = "slot_partition";
    				reg = <0x3100000 0x40000>;
    			};
    
    			partition@27c0000 {
    				label = "backup1";
    				reg = <0x3140000 0xa00000>;
    			};
    
    			partition@3fc0000 {
    				label = "ospi_phy_pattern";
    				reg = <0x3fc0000 0x40000>;
    				bootph-all;
    			};
    
    		};
    	};
    };
    
    &mailbox0_cluster0 {
    	status = "okay";
    
    	mbox_r5_0: mbox-r5-0 {
    		ti,mbox-rx = <0 0 0>;
    		ti,mbox-tx = <1 0 0>;
    	};
    };
    
    &mailbox0_cluster1 {
    	status = "okay";
    
    	mbox_mcu_r5_0: mbox-mcu-r5-0 {
    		ti,mbox-rx = <0 0 0>;
    		ti,mbox-tx = <1 0 0>;
    	};
    };
    
    &wkup_r5fss0 {
    	status = "okay";
    };
    
    &wkup_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
    	memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
    			<&wkup_r5fss0_core0_memory_region>;
    };
    
    &mcu_r5fss0 {
    	status = "okay";
    };
    
    &mcu_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster1 &mbox_mcu_r5_0>;
    	memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
    			<&mcu_r5fss0_core0_memory_region>;
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    	interrupts-extended = <&gic500 GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
    			<&main_pmx0 0x1c8>; /* (D14) UART0_RXD PADCONFIG114 */
    	interrupt-names = "irq", "wakeup";
    	status = "okay";
    	bootph-all;
    };
    
    &main_uart1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart1_pins_default>;
    	/* Main UART1 is used by TIFS firmware */
    	status = "reserved";
    	bootph-all;
    };
    
    &mcu_pmx0 {
    	bootph-all;
    
    	wkup_uart0_pins_default: wkup-uart0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
    			AM62PX_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
    		>;
    		bootph-all;
    	};
    };
    
    &wkup_uart0 {
    	/* WKUP UART0 is used by DM firmware */
    	pinctrl-names = "default";
    	pinctrl-0 = <&wkup_uart0_pins_default>;
    	status = "reserved";
    	bootph-all;
    };
    
    /* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &mcu_gpio_intr {
    	status = "reserved";
    };
    
    &dss_oldi_io_ctrl {
    	bootph-all;
    };
    
    &dss0 {
            ti,dss-shared-mode;
            ti,dss-shared-mode-vp = "vp1";
            ti,dss-shared-mode-vp-owned = <0>;
            ti,dss-shared-mode-common = "common1";
            ti,dss-shared-mode-planes = "vid";
            ti,dss-shared-mode-plane-zorder = <0>;
            interrupt-parent = <&gic500>;
            interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
    };
    
    &dss0 {
    	bootph-all;
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_dpi_pins_default>;
    };
    
    &dss0_ports {
    	/* DSS0-VP2: DPI/HDMI Output */
    	hdmi0_dss: port@1 {
    		reg = <1>;
    
    		dss0_dpi1_out: endpoint {
    			remote-endpoint = <&sii9022_in>;
    		};
    	};
    };
    
    &epwm0 {
    	/* Pin 24/26 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_epwm0_pins_default>;
    	status = "okay";
    };
    
    &epwm1 {
    	/* Pin 23/19 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_epwm1_pins_default>;
    	status = "okay";
    };
    
    &ecap1 {
    	/* ECAP1 in APWM mode */
    	/* Pin 36 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap1_pins_default>;
    	status = "okay";
    };
    
    &ecap2 {
    	/* ECAP2 in APWM mode */
    	/* Pin 11 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap2_pins_default>;
    	status = "okay";
    };
    
    
    &{/} {
    	display {
    		compatible = "microtips,mf-101hiebcaf0", "panel-simple";
    
    		/*
    		* Note that the OLDI TX 0 transmits the odd set of pixels
    		* while the OLDI TX 1 transmits the even set. This is a
    		* fixed configuration in the IP integration and is not
    		* changeable. The properties, "dual-lvds-odd-pixels" and
    		* "dual-lvds-even-pixels" have been used to merely
    		* identify if a Dual Link configuration is required.
    		* Swapping them will cause an error in the dss oldi driver.
    		*/
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    				dual-lvds-odd-pixels;
    
    				lcd_in0: endpoint {
    					remote-endpoint = <&oldi0_dss0_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    				dual-lvds-even-pixels;
    
    				lcd_in1: endpoint {
    					remote-endpoint = <&oldi1_dss0_out>;
    				};
    			};
    		};
    	};
    };
    
    &dss0 {
    	status = "okay";
    };
    
    &oldi0_dss0 {
    	status = "okay";
    	ti,companion-oldi = <&oldi1_dss0>;
    };
    
    &oldi1_dss0 {
    	status = "okay";
    	ti,secondary-oldi;
    };
    
    &oldi0_dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	port@0 {
    		reg = <0>;
    
    		oldi0_dss0_in: endpoint {
    			remote-endpoint = <&dss0_dpi0_out0>;
    		};
    	};
    
    	port@1 {
    		reg = <1>;
    
    		oldi0_dss0_out: endpoint {
    			remote-endpoint = <&lcd_in0>;
    		};
    	};
    };
    
    &oldi1_dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	port@0 {
    		reg = <0>;
    
    		oldi1_dss0_in: endpoint {
    			remote-endpoint = <&dss0_dpi0_out1>;
    		};
    	};
    
    	port@1 {
    		reg = <1>;
    
    		oldi1_dss0_out: endpoint {
    			remote-endpoint = <&lcd_in1>;
    		};
    	};
    };
    
    &dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	/* VP1: Output to OLDI */
    	port@0 {
    		reg = <0>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		dss0_dpi0_out0: endpoint@0 {
    			reg = <0>;
    			remote-endpoint = <&oldi0_dss0_in>;
    		};
    
    		dss0_dpi0_out1: endpoint@1 {
    			reg = <1>;
    			remote-endpoint = <&oldi1_dss0_in>;
    		};
    	};
    };
    
    &main_i2c0 {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	touchscreen@41 {
    		compatible = "ilitek,ili251x";
    		reg = <0x41>;
    		interrupt-parent = <&exp1>;
    		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
    		reset-gpios = <&exp2 20 GPIO_ACTIVE_LOW>;
    	};
    };
    
    

    And there is the  device tree changes

    From 40bdfbf29d8b2a020cd7044b33e1ec48a0d04f8f Mon Sep 17 00:00:00 2001
    From: suipengfei <suipengfei01@163.com>
    Date: Fri, 16 Jan 2026 08:20:44 +0800
    Subject: [PATCH] modify-k3-am62p5-sk.dts
    
    ---
     arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 211 ++++++++++++++++++++++--
     1 file changed, 193 insertions(+), 18 deletions(-)
    
    diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    index ddcbdee853e6..393d078318e2 100644
    --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    @@ -10,7 +10,9 @@
     
     #include <dt-bindings/leds/common.h>
     #include <dt-bindings/gpio/gpio.h>
    +#include <dt-bindings/interrupt-controller/irq.h>
     #include <dt-bindings/net/ti-dp83867.h>
    +#include <dt-bindings/interrupt-controller/arm-gic.h>
     #include "k3-am62p5.dtsi"
     
     / {
    @@ -36,7 +38,7 @@ chosen {
     		#address-cells = <2>;
     		#size-cells = <2>;
     		ranges;
    -
    +                bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G";
     		stdout-path = &main_uart0;
     
     		framebuffer0: framebuffer@0 {
    @@ -66,7 +68,12 @@ reserved_memory: reserved-memory {
     		linux,cma {
     			compatible = "shared-dma-pool";
     			reusable;
    +			/********576 MB**********
     			size = <0x00 0x24000000>;
    +			************************/
    +			/*******200MB***********/
    +			size = <0x00 0xc800000>;
    +			
     			linux,cma-default;
     		};
     
    @@ -109,6 +116,11 @@ secure_ddr: optee@9e800000 {
     			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
     			no-map;
     		};
    +		
    +		rtos_framebuffer_memory_region: rtos-framebuffer-memory@93500000 {
    +                	reg = <0x00 0x93500000 0x00 0x08000000>;
    +                	no-map;
    +       		 };
     	};
     
     	vmain_pd: regulator-0 {
    @@ -613,7 +625,7 @@ &sdhci0 {
     
     &sdhci1 {
     	/* SD/MMC */
    -	status = "okay";
    +	status = "disabled";
     	vmmc-supply = <&vdd_mmc1>;
     	vqmmc-supply = <&vddshv_sdio>;
     	pinctrl-names = "default";
    @@ -737,40 +749,61 @@ partitions {
     			bootph-all;
     
     			partition@0 {
    -				label = "ospi.tiboot3";
    +				label = "sbl_ospi_linux_stage1.release.hs_fs.tiimage";
     				reg = <0x00 0x80000>;
     			};
     
     			partition@80000 {
    -				label = "ospi.tispl";
    -				reg = <0x80000 0x200000>;
    +				label = "wkup-r5_stage2.release.appimage.hs_fs";
    +				reg = <0x80000 0xa00000>;
    +			};
    +
    +			partition@100000 {
    +				label = "hsm_a.appimage.hs_fs";
    +				reg = <0xa80000 0x40000>;
    +			};
    +
    +			partition@140000 {
    +				label = "mcu-r5_a.release.appimage.hs_fs";
    +				reg = <0xac0000 0x200000>;
     			};
     
    -			partition@280000 {
    -				label = "ospi.u-boot";
    -				reg = <0x280000 0x400000>;
    +			partition@340000 {
    +				label = "linux.falcon_a.appimage.hs_fs";
    +				reg = <0xcc0000 0x1100000>;
     			};
     
    -			partition@680000 {
    -				label = "ospi.env";
    -				reg = <0x680000 0x40000>;
    +			partition@1440000 {
    +				label = "hsm_b.appimage.hs_fs";
    +				reg = <0x1dc0000 0x40000>;
     			};
     
    -			partition@6c0000 {
    -				label = "ospi.env.backup";
    -				reg = <0x6c0000 0x40000>;
    +			partition@1480000 {
    +				label = "mcu-r5_b.release.appimage.hs_fs";
    +				reg = <0x1e00000 0x200000>;
     			};
     
    -			partition@800000 {
    -				label = "ospi.rootfs";
    -				reg = <0x800000 0x37c0000>;
    +			partition@1680000 {
    +				label = "linux.falcon_b.appimage.hs_fs";
    +				reg = <0x2000000 0x1100000>;
    +			};
    +
    +			partition@2780000 {
    +				label = "slot_partition";
    +				reg = <0x3100000 0x40000>;
    +			};
    +
    +			partition@27c0000 {
    +				label = "backup1";
    +				reg = <0x3140000 0xa00000>;
     			};
     
     			partition@3fc0000 {
    -				label = "ospi.phypattern";
    +				label = "ospi_phy_pattern";
     				reg = <0x3fc0000 0x40000>;
     				bootph-all;
     			};
    +
     		};
     	};
     };
    @@ -864,6 +897,17 @@ &dss_oldi_io_ctrl {
     	bootph-all;
     };
     
    +&dss0 {
    +        ti,dss-shared-mode;
    +        ti,dss-shared-mode-vp = "vp1";
    +        ti,dss-shared-mode-vp-owned = <0>;
    +        ti,dss-shared-mode-common = "common1";
    +        ti,dss-shared-mode-planes = "vid";
    +        ti,dss-shared-mode-plane-zorder = <0>;
    +        interrupt-parent = <&gic500>;
    +        interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
    +};
    +
     &dss0 {
     	bootph-all;
     	status = "okay";
    @@ -911,3 +955,134 @@ &ecap2 {
     	pinctrl-0 = <&main_ecap2_pins_default>;
     	status = "okay";
     };
    +
    +
    +&{/} {
    +	display {
    +		compatible = "microtips,mf-101hiebcaf0", "panel-simple";
    +
    +		/*
    +		* Note that the OLDI TX 0 transmits the odd set of pixels
    +		* while the OLDI TX 1 transmits the even set. This is a
    +		* fixed configuration in the IP integration and is not
    +		* changeable. The properties, "dual-lvds-odd-pixels" and
    +		* "dual-lvds-even-pixels" have been used to merely
    +		* identify if a Dual Link configuration is required.
    +		* Swapping them will cause an error in the dss oldi driver.
    +		*/
    +		ports {
    +			#address-cells = <1>;
    +			#size-cells = <0>;
    +
    +			port@0 {
    +				reg = <0>;
    +				dual-lvds-odd-pixels;
    +
    +				lcd_in0: endpoint {
    +					remote-endpoint = <&oldi0_dss0_out>;
    +				};
    +			};
    +
    +			port@1 {
    +				reg = <1>;
    +				dual-lvds-even-pixels;
    +
    +				lcd_in1: endpoint {
    +					remote-endpoint = <&oldi1_dss0_out>;
    +				};
    +			};
    +		};
    +	};
    +};
    +
    +&dss0 {
    +	status = "okay";
    +};
    +
    +&oldi0_dss0 {
    +	status = "okay";
    +	ti,companion-oldi = <&oldi1_dss0>;
    +};
    +
    +&oldi1_dss0 {
    +	status = "okay";
    +	ti,secondary-oldi;
    +};
    +
    +&oldi0_dss0_ports {
    +	#address-cells = <1>;
    +	#size-cells = <0>;
    +
    +	port@0 {
    +		reg = <0>;
    +
    +		oldi0_dss0_in: endpoint {
    +			remote-endpoint = <&dss0_dpi0_out0>;
    +		};
    +	};
    +
    +	port@1 {
    +		reg = <1>;
    +
    +		oldi0_dss0_out: endpoint {
    +			remote-endpoint = <&lcd_in0>;
    +		};
    +	};
    +};
    +
    +&oldi1_dss0_ports {
    +	#address-cells = <1>;
    +	#size-cells = <0>;
    +
    +	port@0 {
    +		reg = <0>;
    +
    +		oldi1_dss0_in: endpoint {
    +			remote-endpoint = <&dss0_dpi0_out1>;
    +		};
    +	};
    +
    +	port@1 {
    +		reg = <1>;
    +
    +		oldi1_dss0_out: endpoint {
    +			remote-endpoint = <&lcd_in1>;
    +		};
    +	};
    +};
    +
    +&dss0_ports {
    +	#address-cells = <1>;
    +	#size-cells = <0>;
    +
    +	/* VP1: Output to OLDI */
    +	port@0 {
    +		reg = <0>;
    +		#address-cells = <1>;
    +		#size-cells = <0>;
    +
    +		dss0_dpi0_out0: endpoint@0 {
    +			reg = <0>;
    +			remote-endpoint = <&oldi0_dss0_in>;
    +		};
    +
    +		dss0_dpi0_out1: endpoint@1 {
    +			reg = <1>;
    +			remote-endpoint = <&oldi1_dss0_in>;
    +		};
    +	};
    +};
    +
    +&main_i2c0 {
    +	#address-cells = <1>;
    +	#size-cells = <0>;
    +
    +	touchscreen@41 {
    +		compatible = "ilitek,ili251x";
    +		reg = <0x41>;
    +		interrupt-parent = <&exp1>;
    +		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
    +		reset-gpios = <&exp2 20 GPIO_ACTIVE_LOW>;
    +	};
    +};
    +
    -- 
    2.34.1
    
    

    Best Regards

    SUI

  • Hi Suren,

    can you help check this thread?

    BR,

    Biao

  • Hi  

    How to reslove the kernel dead issue ?  when I modify Memory size  1GB

    Best Regards

    SUI

  • Hi Pengfei,

    Based on the device tree changes this is our observations:

    The system is making several memory reservations:

    • CMA pool: 200MB at 0xb3800000
    • RTOS IPC memory: 3MB at 0x9b500000
    • MCU R5FSS DMA memory: 1MB at 0x9b800000
    • MCU R5FSS memory region: 15MB at 0x9b900000
    • R5F DMA memory: 1MB at 0x9c800000
    • R5F memory: 30MB at 0x9c900000
    • TFA: 512KB at 0x9e780000
    • OPTEE: 24MB at 0x9e800000
    • RTOS framebuffer: 128MB at 0x93500000

    If possible, increase the system memory beyond 1GB to accommodate all these reservations and let us know if it works? Or does reducing the CMA pool to 128MB help

    Best Regards,

    Suren

  • Hi  

    1、Now I increase the system memory  2GB  accommodate all these reservations   the linux kernel start failed , there is 2GB log

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    Linux version 6.12.35-ti-00921-g40bdfbf29d8b-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    KASLR disabled due to lack of seed
    Machine model: Texas Instruments AM62P5 SK
    earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    printk: legacy bootconsole [ns16550a0] enabled
    efi: UEFI not found.
    Reserved memory: created CMA memory pool at 0x00000000dc000000, size 576 MiB
    OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    OF: reserved mem: 0x00000000dc000000..0x00000000ffffffff (589824 KiB) map reusable linux,cma
    Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    Zone ranges:
      DMA      [mem 0x0000000080000000-0x00000000ffffffff]
      DMA32    empty
      Normal   empty
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000080000000-0x00000000934fffff]
      node   0: [mem 0x0000000093500000-0x000000009e6fffff]
      node   0: [mem 0x000000009e700000-0x000000009e77ffff]
      node   0: [mem 0x000000009e780000-0x000000009fffffff]
      node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
    Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    psci: probing for conduit method from DT.
    psci: PSCIv1.1 detected in firmware.
    psci: Using standard PSCI v0.2 function IDs
    psci: Trusted OS migration not required
    psci: SMC Calling Convention v1.5
    percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    Detected VIPT I-cache on CPU0
    CPU features: detected: GIC system register CPU interface
    CPU features: detected: ARM erratum 845719
    alternatives: applying boot alternatives
    Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    Built 1 zonelists, mobility grouping on.  Total pages: 524288
    mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    software IO TLB: SWIOTLB bounce buffer size adjusted to 2MB
    software IO TLB: area num 4.
    software IO TLB: mapped [mem 0x00000000d9a00000-0x00000000d9c00000] (2MB)
    SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    rcu: Preemptible hierarchical RCU implementation.
    rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
    	Trampoline variant of Tasks RCU enabled.
    	Tracing variant of Tasks RCU enabled.
    rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    GICv3: GIC: Using split EOI/Deactivate mode
    GICv3: 256 SPIs implemented
    GICv3: 0 Extended SPIs implemented
    Root IRQ handler: gic_handle_irq
    GICv3: GICv3 features: 16 PPIs
    GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    ITS [mem 0x01820000-0x0182ffff]
    ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    ITS: using cache flushing for cmd queue
    GICv3: using LPI property table @0x0000000080050000
    GIC: using cache flushing for LPI property table
    GICv3: CPU0: using allocated LPI pending table @0x0000000080060000
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    

    2、I reducing the CMA pool to 128MB  , And DDR memory use 2GB  the linux kernel start failed , there is DDR 2GB   CAM  128MB log

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    Linux version 6.12.35-ti-00921-g40bdfbf29d8b-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    KASLR disabled due to lack of seed
    Machine model: Texas Instruments AM62P5 SK
    earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    printk: legacy bootconsole [ns16550a0] enabled
    efi: UEFI not found.
    Reserved memory: created CMA memory pool at 0x00000000f8000000, size 128 MiB
    OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    OF: reserved mem: 0x00000000f8000000..0x00000000ffffffff (131072 KiB) map reusable linux,cma
    Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    Zone ranges:
      DMA      [mem 0x0000000080000000-0x00000000ffffffff]
      DMA32    empty
      Normal   empty
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000080000000-0x00000000934fffff]
      node   0: [mem 0x0000000093500000-0x000000009e6fffff]
      node   0: [mem 0x000000009e700000-0x000000009e77ffff]
      node   0: [mem 0x000000009e780000-0x000000009fffffff]
      node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
    Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    psci: probing for conduit method from DT.
    psci: PSCIv1.1 detected in firmware.
    psci: Using standard PSCI v0.2 function IDs
    psci: Trusted OS migration not required
    psci: SMC Calling Convention v1.5
    percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    Detected VIPT I-cache on CPU0
    CPU features: detected: GIC system register CPU interface
    CPU features: detected: ARM erratum 845719
    alternatives: applying boot alternatives
    Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    Built 1 zonelists, mobility grouping on.  Total pages: 524288
    mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    software IO TLB: SWIOTLB bounce buffer size adjusted to 2MB
    software IO TLB: area num 4.
    software IO TLB: mapped [mem 0x00000000f5a00000-0x00000000f5c00000] (2MB)
    SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    rcu: Preemptible hierarchical RCU implementation.
    rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
    	Trampoline variant of Tasks RCU enabled.
    	Tracing variant of Tasks RCU enabled.
    rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    GICv3: GIC: Using split EOI/Deactivate mode
    GICv3: 256 SPIs implemented
    GICv3: 0 Extended SPIs implemented
    Root IRQ handler: gic_handle_irq
    GICv3: GICv3 features: 16 PPIs
    GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    ITS [mem 0x01820000-0x0182ffff]
    ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    ITS: using cache flushing for cmd queue
    GICv3: using LPI property table @0x0000000080050000
    GIC: using cache flushing for LPI property table
    GICv3: CPU0: using allocated LPI pending table @0x0000000080060000
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    

    3、 I use DDR memory use 8GB  accommodate all these reservations   the linux kernel start  is ok  there is the log

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    Linux version 6.12.35-ti-00921-g40bdfbf29d8b-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    KASLR disabled due to lack of seed
    Machine model: Texas Instruments AM62P5 SK
    earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    printk: legacy bootconsole [ns16550a0] enabled
    efi: UEFI not found.
    Reserved memory: created CMA memory pool at 0x00000009dc000000, size 576 MiB
    OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    OF: reserved mem: 0x00000009dc000000..0x00000009ffffffff (589824 KiB) map reusable linux,cma
    Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    Zone ranges:
      DMA      [mem 0x0000000080000000-0x00000000ffffffff]
      DMA32    empty
      Normal   [mem 0x0000000100000000-0x00000009ffffffff]
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000080000000-0x00000000934fffff]
      node   0: [mem 0x0000000093500000-0x000000009e6fffff]
      node   0: [mem 0x000000009e700000-0x000000009e77ffff]
      node   0: [mem 0x000000009e780000-0x000000009fffffff]
      node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
      node   0: [mem 0x0000000880000000-0x00000009ffffffff]
    Initmem setup node 0 [mem 0x0000000080000000-0x00000009ffffffff]
    psci: probing for conduit method from DT.
    psci: PSCIv1.1 detected in firmware.
    psci: Using standard PSCI v0.2 function IDs
    psci: Trusted OS migration not required
    psci: SMC Calling Convention v1.5
    percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    Detected VIPT I-cache on CPU0
    CPU features: detected: GIC system register CPU interface
    CPU features: detected: ARM erratum 845719
    alternatives: applying boot alternatives
    Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
    Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
    Built 1 zonelists, mobility grouping on.  Total pages: 2097152
    mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    software IO TLB: area num 4.
    software IO TLB: mapped [mem 0x00000000fbfff000-0x00000000fffff000] (64MB)
    SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    rcu: Preemptible hierarchical RCU implementation.
    rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
    	Trampoline variant of Tasks RCU enabled.
    	Tracing variant of Tasks RCU enabled.
    rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    GICv3: GIC: Using split EOI/Deactivate mode
    GICv3: 256 SPIs implemented
    GICv3: 0 Extended SPIs implemented
    Root IRQ handler: gic_handle_irq
    GICv3: GICv3 features: 16 PPIs
    GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    ITS [mem 0x01820000-0x0182ffff]
    ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    ITS@0x0000000001820000: allocated 524288 Devices @880800000 (flat, esz 8, psz 64K, shr 0)
    ITS: using cache flushing for cmd queue
    GICv3: using LPI property table @0x0000000880050000
    GIC: using cache flushing for LPI property table
    GICv3: CPU0: using allocated LPI pending table @0x0000000880060000
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    Console: colour dummy device 80x25
    Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    pid_max: default: 32768 minimum: 301
    LSM: initializing lsm=capability
    Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
    Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
    rcu: Hierarchical SRCU implementation.
    rcu: 	Max phase no-delay instances is 1000.
    Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
    EFI services will not be available.
    smp: Bringing up secondary CPUs ...
    Detected VIPT I-cache on CPU1
    GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    GICv3: CPU1: using allocated LPI pending table @0x0000000880070000
    CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    Detected VIPT I-cache on CPU2
    GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    GICv3: CPU2: using allocated LPI pending table @0x0000000880080000
    CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    Detected VIPT I-cache on CPU3
    GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    GICv3: CPU3: using allocated LPI pending table @0x0000000880090000
    CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    smp: Brought up 1 node, 4 CPUs
    SMP: Total of 4 processors activated.
    CPU: All CPU(s) started at EL2
    CPU features: detected: 32-bit EL0 Support
    CPU features: detected: CRC32 instructions
    alternatives: applying system-wide alternatives
    Memory: 7355352K/8388608K available (10048K kernel code, 1068K rwdata, 2872K rodata, 1920K init, 573K bss, 434508K reserved, 589824K cma-reserved)
    devtmpfs: initialized
    clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
    28592 pages in range for non-PLT usage
    520112 pages in range for PLT usage
    pinctrl core: initialized pinctrl subsystem
    DMI not present or invalid.
    NET: Registered PF_NETLINK/PF_ROUTE protocol family
    DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations
    DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    audit: initializing netlink subsys (disabled)
    audit: type=2000 audit(0.156:1): state=initialized audit_enabled=0 res=1
    cpuidle: using governor menu
    hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    ASID allocator initialised with 65536 entries
    /bus@f0000/interrupt-controller@1800000: Fixed dependency cycle(s) with /bus@f0000/interrupt-controller@1800000
    /bus@f0000/i2c@20000000/usb-power-controller@3f/connector: Fixed dependency cycle(s) with /bus@f0000/usb@f900000/usb@31000000
    /bus@f0000/i2c@20010000/bridge-hdmi@3b: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/usb@f900000/usb@31000000: Fixed dependency cycle(s) with /bus@f0000/i2c@20000000/usb-power-controller@3f/connector
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@1
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@0
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@0: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@1: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/i2c@20000000/usb-power-controller@3f/connector: Fixed dependency cycle(s) with /bus@f0000/usb@f900000/usb@31000000
    /bus@f0000/i2c@20010000/bridge-hdmi@3b: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/usb@f900000/usb@31000000: Fixed dependency cycle(s) with /bus@f0000/i2c@20000000/usb-power-controller@3f/connector
    /bus@f0000/i2c@20010000/bridge-hdmi@3b: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@1
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@0
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@0: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@1: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    /bus@f0000/i2c@20010000/bridge-hdmi@3b: Fixed dependency cycle(s) with /connector-hdmi
    /connector-hdmi: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@1: Fixed dependency cycle(s) with /display
    /bus@f0000/dss@30200000/oldi-transmitters/oldi@0: Fixed dependency cycle(s) with /display
    /display: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@1
    /display: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-transmitters/oldi@0
    HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    k3-chipinfo 43000014.chipid: Family:AM62PX rev:SR1.0 JTAGID[0x0bb9d02f] Detected
    iommu: Default domain type: Translated
    iommu: DMA domain TLB invalidation policy: strict mode
    EDAC MC: Ver: 3.0.0
    scmi_core: SCMI protocol bus registered
    clocksource: Switched to clocksource arch_sys_counter
    NET: Registered PF_INET protocol family
    IP idents hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear)
    Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear)
    TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
    TCP: Hash tables configured (established 65536 bind 65536)
    UDP hash table entries: 4096 (order: 5, 131072 bytes, linear)
    UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear)
    NET: Registered PF_UNIX/PF_LOCAL protocol family
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp-with-tls transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    Initialise system trusted keyrings
    workingset: timestamp_bits=46 max_order=21 bucket_order=0
    NFS: Registering the id_resolver key type
    Key type id_resolver registered
    Key type id_legacy registered
    nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    Key type asymmetric registered
    Asymmetric key parser 'x509' registered
    Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
    io scheduler mq-deadline registered
    io scheduler kyber registered
    io scheduler bfq registered
    pinctrl-single 4084000.pinctrl: 34 pins, size 136
    pinctrl-single f4000.pinctrl: 171 pins, size 684
    Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    panel-simple display: supply power not found, using dummy regulator
    loop: module loaded
    i2c_dev: i2c /dev entries driver
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 (0,8000003f) counters available
    optee: probing for conduit method.
    optee: revision 4.6 (71785645fa6ce42d)
    optee: dynamic shared memory is enabled
    optee: initialized driver
    random: crng init done
    NET: Registered PF_PACKET protocol family
    Key type dns_resolver registered
    Loading compiled-in X.509 certificates
    ti-sci 44043000.system-controller: ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
    /bus@f0000/i2c@20000000/usb-power-controller@3f/connector: Fixed dependency cycle(s) with /bus@f0000/usb@f900000/usb@31000000
    omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    pca953x 1-0023: supply vcc not found, using dummy regulator
    pca953x 1-0023: using AI
    /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /bus@f0000/i2c@20010000/bridge-hdmi@3b
    /bus@f0000/i2c@20010000/bridge-hdmi@3b: Fixed dependency cycle(s) with /bus@f0000/dss@30200000
    omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
    omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
    ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
    ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    ti-sci-inta 4e400000.interrupt-controller: Interrupt Aggregator domain 200 created
    ti-udma 485c0100.dma-controller: Number of rings: 82
    ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
    ti-udma 485c0000.dma-controller: Number of rings: 150
    ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
    ti-udma 4e230000.dma-controller: Number of rings: 6
    ti-udma 4e230000.dma-controller: Channels: 6 (bchan: 0, tchan: 0, rchan: 6)
    printk: legacy console [ttyS2] disabled
    2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 250, base_baud = 3000000) is a 8250
    printk: legacy console [ttyS2] enabled
    printk: legacy console [ttyS2] enabled
    printk: legacy bootconsole [ns16550a0] disabled
    printk: legacy bootconsole [ns16550a0] disabled
    [drm] Initialized tidss 1.0.0 for 30200000.dss on minor 0
    tidss 30200000.dss: [drm] fb0: tidssdrmfb frame buffer device
    11 fixed-partitions partitions found on MTD device fc40000.spi.0
    Creating 11 MTD partitions on "fc40000.spi.0":
    0x000000000000-0x000000080000 : "sbl_ospi_linux_stage1.release.hs_fs.tiimage"
    0x000000080000-0x000000a80000 : "wkup-r5_stage2.release.appimage.hs_fs"
    0x000000a80000-0x000000ac0000 : "hsm_a.appimage.hs_fs"
    0x000000ac0000-0x000000cc0000 : "mcu-r5_a.release.appimage.hs_fs"
    0x000000cc0000-0x000001dc0000 : "linux.falcon_a.appimage.hs_fs"
    0x000001dc0000-0x000001e00000 : "hsm_b.appimage.hs_fs"
    0x000001e00000-0x000002000000 : "mcu-r5_b.release.appimage.hs_fs"
    0x000002000000-0x000003100000 : "linux.falcon_b.appimage.hs_fs"
    0x000003100000-0x000003140000 : "slot_partition"
    0x000003140000-0x000003b40000 : "backup1"
    0x000003fc0000-0x000004000000 : "ospi_phy_pattern"
    mmc0: CQHCI version 5.10
    pca953x 1-0022: supply vcc not found, using dummy regulator
    pca953x 1-0022: using AI
    sii902x 1-003b: supply iovcc not found, using dummy regulator
    sii902x 1-003b: supply cvcc12 not found, using dummy regulator
    i2c i2c-1: Added multiplexed i2c bus 3
    clk: Disabling unused clocks
    PM: genpd: Disabling unused power domains
    mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    Waiting for root device /dev/mmcblk0p2...
    mmc0: Command Queue Engine enabled
    mmc0: new HS200 MMC card at address 0001
    mmcblk0: mmc0:0001 G1M15L 29.6 GiB
     mmcblk0: p1 p2 p3
    mmcblk0boot0: mmc0:0001 G1M15L 31.5 MiB
    mmcblk0boot1: mmc0:0001 G1M15L 31.5 MiB
    mmcblk0rpmb: mmc0:0001 G1M15L 4.00 MiB, chardev (248:0)
    EXT4-fs (mmcblk0p2): mounted filesystem 250c7601-3093-4771-8754-4397d737c0be r/w with ordered data mode. Quota mode: disabled.
    VFS: Mounted root (ext4 filesystem) on device 179:2.
    devtmpfs: mounted
    Freeing unused kernel memory: 1920K
    Run /sbin/init as init process
    INIT: version 3.04 booting
    Starting udev
    udevd[107]: starting version 3.2.14
    udevd[107]: specified group 'tee' unknown
    udevd[107]: specified group 'teepriv' unknown
    udevd[108]: starting eudev-3.2.14
    EXT4-fs (mmcblk0p1): mounted filesystem 250c7601-3093-4771-8754-4397d737c0be r/w with ordered data mode. Quota mode: disabled.
    EXT4-fs (mmcblk0p3): mounted filesystem ce530488-b9cf-40bc-a313-28eea26ec700 r/w with ordered data mode. Quota mode: disabled.
    EXT4-fs (mmcblk0p2): re-mounted 250c7601-3093-4771-8754-4397d737c0be.
    hwclock: can't open '/dev/misc/rtc': No such file or directory
    Fri Mar  9 13:46:42 UTC 2018
    hwclock: can't open '/dev/misc/rtc': No such file or directory
    INIT: Entering runlevel: 5misc/rtc': No such file or directory
    Configuring network interfaces... ifup: interface lo already configured
    ip: SIOCGIFFLAGS: No such device
    done.
    Starting OP-TEE Supplicant: tee-supplicant.
    Starting syslogd/klogd: done
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project am62pxx-evm /dev/ttyS2
    
    Arago 2025.01 am62pxx-evm /dev/ttyS2
    
    am62pxx-evm login: vdd_mmc1: disabling
    

    Why  I  increase the system memory  , the linux kernel start failed  ?

    why  I reducing the CMA pool to 128MB ,   the linux kernel start failed  ?

    Best Regards

    SUI

  • Hi Pengfei,

    This thread also can be referred.

    (1) AM62P-Q1: kernel start failed, when DDR size from 8GB change to 1GB - Processors forum - Processors - TI E2E support forums

    except change in pervious post, CMA need be put in 1GB range.

    BR,

    Biao 

  • Hi Pengfei,

    can you help share the Mem map in your system(2GB/1GB) just like this?

    • CMA pool: 200MB at 0xb3800000
    • RTOS IPC memory: 3MB at 0x9b500000
    • MCU R5FSS DMA memory: 1MB at 0x9b800000
    • MCU R5FSS memory region: 15MB at 0x9b900000
    • R5F DMA memory: 1MB at 0x9c800000
    • R5F memory: 30MB at 0x9c900000
    • TFA: 512KB at 0x9e780000
    • OPTEE: 24MB at 0x9e800000
    • RTOS framebuffer: 128MB at 0x93500000

    BR,

    Biao 

  • Hi  Biao

    There is my the Mem map in our system

    CMA memory pool at 0xb3800000, size 200 MiB
    rtos-ipc-memory at 0x9b500000, size 3 MiB
    mcu-r5fss-dma-memory-region at 0x9b800000, size 1 MiB
    mcu-r5fss-memory-region at 0x9b900000, size 15 MiB
    r5f-dma-memory at 0x9c800000, size 1 MiB
    r5f-memory at 0x9c900000, size 30 MiB
    tfa at 0x9e780000 512 KiB
    optee at 0x9e800000 24576 KiB
    rtos-framebuffer-memory at 0x93500000 131072 KiB

    But the kernel start failed , there is my modify dts

    memory@80000000 {
    /* 1G RAM */
    reg = <0x00000000 0x80000000 0x00000000 0x40000000>;

    device_type = "memory";
    bootph-pre-ram;
    };

    reserved_memory: reserved-memory {
    #address-cells = <2>;
    #size-cells = <2>;
    ranges;

    linux,cma {
    compatible = "shared-dma-pool";
    reusable;
    /*******200MB***********/
    size = <0x00 0xc800000>;
    reg = <0x00 0xb3800000 0x00 0xc800000>;
    linux,cma-default;
    };

    there is my kernel start log , you can check 

    Starting linux and RTOS/Baremetal applications
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    Linux version 6.12.35-ti-00921-g40bdfbf29d8b-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Thu Jul  3 17:10:29 UTC 2025
    KASLR disabled due to lack of seed
    Machine model: Texas Instruments AM62P5 SK
    earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    printk: legacy bootconsole [ns16550a0] enabled
    efi: UEFI not found.
    Reserved memory: created CMA memory pool at 0x00000000b3800000, size 200 MiB
    OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    OF: reserved mem: 0x00000000b3800000..0x00000000bfffffff (204800 KiB) map reusable linux,cma
    Reserved memory: created DMA memory pool at 0x000000009b500000, size 3 MiB
    OF: reserved mem: initialized node rtos-ipc-memory@9b500000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b500000..0x000000009b7fffff (3072 KiB) nomap non-reusable rtos-ipc-memory@9b500000
    Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    OF: reserved mem: initialized node mcu-r5fss-dma-memory-region@9b800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b800000..0x000000009b8fffff (1024 KiB) nomap non-reusable mcu-r5fss-dma-memory-region@9b800000
    Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    OF: reserved mem: initialized node mcu-r5fss-memory-region@9b900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009b900000..0x000000009c7fffff (15360 KiB) nomap non-reusable mcu-r5fss-memory-region@9b900000
    Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c800000..0x000000009c8fffff (1024 KiB) nomap non-reusable r5f-dma-memory@9c800000
    Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    OF: reserved mem: initialized node r5f-memory@9c900000, compatible id shared-dma-pool
    OF: reserved mem: 0x000000009c900000..0x000000009e6fffff (30720 KiB) nomap non-reusable r5f-memory@9c900000
    OF: reserved mem: 0x000000009e780000..0x000000009e7fffff (512 KiB) nomap non-reusable tfa@9e780000
    OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    OF: reserved mem: 0x0000000093500000..0x000000009b4fffff (131072 KiB) nomap non-reusable rtos-framebuffer-memory@93500000
    Zone ranges:
      DMA      [mem 0x0000000080000000-0x00000000bfffffff]
      DMA32    empty
      Normal   empty
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000080000000-0x00000000934fffff]
      node   0: [mem 0x0000000093500000-0x000000009e6fffff]
      node   0: [mem 0x000000009e700000-0x000000009e77ffff]
      node   0: [mem 0x000000009e780000-0x000000009fffffff]
      node   0: [mem 0x00000000a0000000-0x00000000bfffffff]
    Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
    psci: probing for conduit method from DT.
    psci: PSCIv1.1 detected in firmware.
    psci: Using standard PSCI v0.2 function IDs
    psci: Trusted OS migration not required
    psci: SMC Calling Convention v1.5
    percpu: Embedded 22 pages/cpu s50520 r8192 d31400 u90112
    Detected VIPT I-cache on CPU0
    CPU features: detected: GIC system register CPU interface
    CPU features: detected: ARM erratum 845719
    alternatives: applying boot alternatives
    Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
    Built 1 zonelists, mobility grouping on.  Total pages: 262144
    mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    software IO TLB: SWIOTLB bounce buffer size adjusted to 1MB
    software IO TLB: area num 4.
    software IO TLB: mapped [mem 0x00000000b2480000-0x00000000b2580000] (1MB)
    SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    rcu: Preemptible hierarchical RCU implementation.
    rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
    	Trampoline variant of Tasks RCU enabled.
    	Tracing variant of Tasks RCU enabled.
    rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
    NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    GICv3: GIC: Using split EOI/Deactivate mode
    GICv3: 256 SPIs implemented
    GICv3: 0 Extended SPIs implemented
    Root IRQ handler: gic_handle_irq
    GICv3: GICv3 features: 16 PPIs
    GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=1
    GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    ITS [mem 0x01820000-0x0182ffff]
    ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    ITS: using cache flushing for cmd queue
    GICv3: using LPI property table @0x0000000080050000
    GIC: using cache flushing for LPI property table
    GICv3: CPU0: using allocated LPI pending table @0x0000000080060000
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    

    Best Regards

    SUI

  • Hi Suren,

    Can you help check this thread? do you have a try on your EVM?

    BR,

    Biao

  • Hi Biao, 

    I tried to change the exisiting Linux kernel DTS file with the below changes:

    diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    index 740c25d92..dbec925eb 100644
    --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
    @@ -52,8 +52,7 @@ framebuffer0: framebuffer@0 {
    
            memory@80000000 {
                    /* 8G RAM */
    -               reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
    -                     <0x00000008 0x80000000 0x00000001 0x80000000>;
    +               reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
                    device_type = "memory";
                    bootph-pre-ram;
            };
    @@ -66,7 +65,7 @@ reserved_memory: reserved-memory {
                    linux,cma {
                            compatible = "shared-dma-pool";
                            reusable;
    -                       size = <0x00 0x24000000>;
    +                       size = <0x00 0x10000000>;
                            linux,cma-default;
                    }; 

    As you can see I have configured the DDR memory to be 1GB and reduced the CMA memory to 256MB and still able to boot my AM62P EVM.

    Attached is the device tree blob if the customer wants to test on our EVM with this.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/k3_2D00_am62p5_2D00_sk_2D00_256mb.dtb

    Best Regards,

    Suren

  • Hi  Suren

    Yes When I use  CMA memory to 256MB ,  AM62P EVM  board boot is ok 

    But the DDR memory is 8GB , I want use DDR  1GB

    you can check 

    Best Regards

    SUI

  • Hi I changed the DDR memory to be 1GB as you can see in the patch that I shared in my last reply.

    Best Regards,

    Suren

  • Hi Suren 

    I use the the patch  that you shared in your last reply,  the AM62P EVM  board can not boot , the kernel boot failed .

    Best Regards

    SUI

  • Have you changed the u-boot as well or just linux kernel?

    Best Regards,

    Suren

  • Hi  Suren 

    Now I use SBL boot mode ,  R5 SPL -> ATF -> OP-TEE -> Linux

    So I remove uboot , I only modify  linux kernel  dts file 

     

    Best Regards

    SUI

  • Hi  Suren

    Now I use falcon boot mode ,  R5 SPL -> ATF -> OP-TEE -> Linux

    So I remove uboot , I only modify  linux kernel  dts file 

    Best Regards

    SUI

  • Hi Pengfei,

    So what's the observation on when you use Falcon boot mode?

    Best Regards

    Suren

  • Hi  Suren

    R5 SPL -> ATF -> OP-TEE  is ok 

    But When I use 1GB ddr  the linux can not boot ,and boot failed , if I use 8GB ddr  the linux boot is ok 

    How to use 1GB ddr at linux and boot is ok ?

    How to change linux kernel RAM is 1GB?

    Best Regards

    SUI

  • Please share your changes in order to replicate the issue on my end.

    Best Regards

    Suren

  • Hi  Suren

    If you want replicate the issue , you must use falcon boot mode ,  R5 SPL -> ATF -> OP-TEE -> Linux

    there is my modify DTS file 

    // SPDX-License-Identifier: GPL-2.0-only OR MIT
    /*
     * Device Tree file for the AM62P5-SK
     * Copyright (C) 2023-2024 Texas Instruments Incorporated - https://www.ti.com/
     *
     * Schematics: https://www.ti.com/lit/zip/sprr487
     */
    
    /dts-v1/;
    
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include "k3-am62p5.dtsi"
    
    / {
    	compatible = "ti,am62p5-sk", "ti,am62p5";
    	model = "Texas Instruments AM62P5 SK";
    
    	aliases {
    		serial0 = &wkup_uart0;
    		serial1 = &mcu_uart0;
    		serial2 = &main_uart0;
    		serial3 = &main_uart1;
    		mmc0 = &sdhci0;
    		mmc1 = &sdhci1;
    		mmc2 = &sdhci2;
    		spi0 = &ospi0;
    		ethernet0 = &cpsw_port1;
    		ethernet1 = &cpsw_port2;
    		usb0 = &usb0;
    		usb1 = &usb1;
    	};
    
    	chosen {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
                    bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait mem=1G";
    		stdout-path = &main_uart0;
    
    		framebuffer0: framebuffer@0 {
    			compatible = "simple-framebuffer";
    			power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>;
    			clocks = <&k3_clks 186 6>,
    				 <&dss0_vp1_clk>,
    				 <&k3_clks 186 2>;
    			display = <&dss0>;
    			status = "disabled";
    		};
    	};
    
    	memory@80000000 {
    		/* 8G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
    		      <0x00000008 0x80000000 0x00000001 0x80000000>;
    		device_type = "memory";
    		bootph-pre-ram;
    	};
    
    	reserved_memory: reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		linux,cma {
    			compatible = "shared-dma-pool";
    			reusable;
    			/********576 MB**********
    			size = <0x00 0x24000000>;
    			************************/
    			/*******200MB***********/
    			size = <0x00 0xc800000>;
    			
    			linux,cma-default;
    		};
    
    		rtos_ipc_memory_region: rtos-ipc-memory@9b500000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b500000 0x00 0x00300000>;
    			no-map;
    		};
    
    		mcu_r5fss0_core0_dma_memory_region: mcu-r5fss-dma-memory-region@9b800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b800000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_r5fss0_core0_memory_region: mcu-r5fss-memory-region@9b900000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9b900000 0x00 0xf00000>;
    			no-map;
    		};
    
    		wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9c800000 0x00 0x100000>;
    			no-map;
    		};
    
    		wkup_r5fss0_core0_memory_region: r5f-memory@9c900000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0x9c900000 0x00 0x1e00000>;
    			no-map;
    		};
    
    		secure_tfa_ddr: tfa@9e780000 {
    			reg = <0x00 0x9e780000 0x00 0x80000>;
    			no-map;
    		};
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			no-map;
    		};
    		
    		rtos_framebuffer_memory_region: rtos-framebuffer-memory@93500000 {
                    	reg = <0x00 0x93500000 0x00 0x08000000>;
                    	no-map;
           		 };
    	};
    
    	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;
    		bootph-all;
    	};
    
    	vcc_5v0: regulator-1 {
    		/* Output of TPS630702RNMR */
    		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;
    		bootph-all;
    	};
    
    	vdd_mmc1: regulator-2 {
    		/* TPS22918DBVR */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    		bootph-all;
    	};
    
    	vddshv_sdio: regulator-3 {
    		compatible = "regulator-gpio";
    		regulator-name = "vddshv_sdio";
    		pinctrl-names = "default";
    		pinctrl-0 = <&vddshv_sdio_pins_default>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
    		states = <1800000 0x0>,
    			 <3300000 0x1>;
    		bootph-all;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am62-sk:green:heartbeat";
    			gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	opp-table {
    		/* Requires VDD_CORE at 0v85 */
    		opp-1400000000 {
    			opp-hz = /bits/ 64 <1400000000>;
    			opp-supported-hw = <0x01 0x0004>;
    			clock-latency-ns = <6000000>;
    		};
    	};
    
    	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>;
    			};
    		};
    	};
    };
    
    &main_gpio0 {
    	bootph-all;
    };
    
    &main_gpio1 {
    	bootph-all;
    };
    
    &main_pmx0 {
    	bootph-all;
    
    	main_i2c0_pins_default: main-i2c0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B25) I2C0_SCL */
    			AM62PX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A24) I2C0_SDA */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C24) I2C1_SCL */
    			AM62PX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (B24) I2C1_SDA */
    		>;
    		bootph-all;
    	};
    
    	main_i2c2_pins_default: main-i2c2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (T22) GPMC0_CSn2.I2C2_SCL */
    			AM62PX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (U25) GPMC0_CSn3.I2C2_SDA */
    		>;
    	};
    
    	main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C22) UART0_RTSn.GPIO1_23 */
    		>;
    	};
    
    	main_mcasp1_pins_default: main-mcasp1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0090, PIN_INPUT, 2) /* (U24) GPMC0_BE0n_CLE.MCASP1_ACLKX */
    			AM62PX_IOPAD(0x0098, PIN_INPUT, 2) /* (AA24) GPMC0_WAIT0.MCASP1_AFSX */
    			AM62PX_IOPAD(0x008c, PIN_OUTPUT, 2) /* (T25) GPMC0_WEn.MCASP1_AXR0 */
    			AM62PX_IOPAD(0x0084, PIN_INPUT, 2) /* (R25) GPMC0_ADVn_ALE.MCASP1_AXR2 */
    		>;
    	};
    
    	main_mdio1_pins_default: main-mdio1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0160, PIN_OUTPUT, 0) /* (F17) MDIO0_MDC */
    			AM62PX_IOPAD(0x015c, PIN_INPUT, 0) /* (F16) MDIO0_MDIO */
    		>;
    		bootph-all;
    	};
    
    	main_mmc1_pins_default: main-mmc1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x023c, PIN_INPUT, 0) /* (H20) MMC1_CMD */
    			AM62PX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (J24) MMC1_CLK */
    			AM62PX_IOPAD(0x0230, PIN_INPUT, 0) /* (H21) MMC1_DAT0 */
    			AM62PX_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H23) MMC1_DAT1 */
    			AM62PX_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (H22) MMC1_DAT2 */
    			AM62PX_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
    			AM62PX_IOPAD(0x0240, PIN_INPUT, 0) /* (D23) MMC1_SDCD */
    		>;
    		bootph-all;
    	};
    
    	main_mmc2_pins_default: main-mmc2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0120, PIN_INPUT, 0) /* (K24) MMC2_CMD */
    			AM62PX_IOPAD(0x0118, PIN_OUTPUT, 0) /* (K21) MMC2_CLK */
    			AM62PX_IOPAD(0x011C, PIN_INPUT, 0) /* () MMC2_CLKLB */
    			AM62PX_IOPAD(0x0114, PIN_INPUT, 0) /* (K23) MMC2_DAT0 */
    			AM62PX_IOPAD(0x0110, PIN_INPUT_PULLUP, 0) /* (K22) MMC2_DAT1 */
    			AM62PX_IOPAD(0x010c, PIN_INPUT_PULLUP, 0) /* (L20) MMC2_DAT2 */
    			AM62PX_IOPAD(0x0108, PIN_INPUT_PULLUP, 0) /* (L21) MMC2_DAT3 */
    		>;
    		bootph-all;
    	};
    
    	main_rgmii1_pins_default: main-rgmii1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x014c, PIN_INPUT, 0) /* (B15) RGMII1_RD0 */
    			AM62PX_IOPAD(0x0150, PIN_INPUT, 0) /* (B16) RGMII1_RD1 */
    			AM62PX_IOPAD(0x0154, PIN_INPUT, 0) /* (A14) RGMII1_RD2 */
    			AM62PX_IOPAD(0x0158, PIN_INPUT, 0) /* (B14) RGMII1_RD3 */
    			AM62PX_IOPAD(0x0148, PIN_INPUT, 0) /* (A16) RGMII1_RXC */
    			AM62PX_IOPAD(0x0144, PIN_INPUT, 0) /* (A15) RGMII1_RX_CTL */
    			AM62PX_IOPAD(0x0134, PIN_INPUT, 0) /* (A18) RGMII1_TD0 */
    			AM62PX_IOPAD(0x0138, PIN_INPUT, 0) /* (C17) RGMII1_TD1 */
    			AM62PX_IOPAD(0x013c, PIN_INPUT, 0) /* (A17) RGMII1_TD2 */
    			AM62PX_IOPAD(0x0140, PIN_INPUT, 0) /* (C16) RGMII1_TD3 */
    			AM62PX_IOPAD(0x0130, PIN_INPUT, 0) /* (B17) RGMII1_TXC */
    			AM62PX_IOPAD(0x012c, PIN_INPUT, 0) /* (B18) RGMII1_TX_CTL */
    		>;
    		bootph-all;
    	};
    
    	main_rgmii2_pins_default: main-rgmii2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0184, PIN_INPUT, 0) /* (E19) RGMII2_RD0 */
    			AM62PX_IOPAD(0x0188, PIN_INPUT, 0) /* (E16) RGMII2_RD1 */
    			AM62PX_IOPAD(0x018c, PIN_INPUT, 0) /* (E17) RGMII2_RD2 */
    			AM62PX_IOPAD(0x0190, PIN_INPUT, 0) /* (C19) RGMII2_RD3 */
    			AM62PX_IOPAD(0x0180, PIN_INPUT, 0) /* (D19) RGMII2_RXC */
    			AM62PX_IOPAD(0x017c, PIN_INPUT, 0) /* (F19) RGMII2_RX_CTL */
    			AM62PX_IOPAD(0x016c, PIN_INPUT, 0) /* (B19) RGMII2_TD0 */
    			AM62PX_IOPAD(0x0170, PIN_INPUT, 0) /* (A21) RGMII2_TD1 */
    			AM62PX_IOPAD(0x0174, PIN_INPUT, 0) /* (D17) RGMII2_TD2 */
    			AM62PX_IOPAD(0x0178, PIN_INPUT, 0) /* (A19) RGMII2_TD3 */
    			AM62PX_IOPAD(0x0168, PIN_INPUT, 0) /* (D16) RGMII2_TXC */
    			AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
    		>;
    		bootph-all;
    	};
    
    	main_uart0_pins_default: main-uart0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x1c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
    			AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
    		>;
    		bootph-all;
    	};
    
    	main_uart1_pins_default: main-uart1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
    			AM62PX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (E25) MCASP0_AXR2.UART1_RTSn */
    			AM62PX_IOPAD(0x01ac, PIN_INPUT, 2) /* (G23) MCASP0_AFSR.UART1_RXD */
    			AM62PX_IOPAD(0x01b0, PIN_OUTPUT, 2) /* (G20) MCASP0_ACLKR.UART1_TXD */
    		>;
    		bootph-all;
    	};
    
    	main_usb1_pins_default: main-usb1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0258, PIN_INPUT | PIN_DS_PULLUD_ENABLE | PIN_DS_PULL_UP, 0) /* (G21) USB1_DRVVBUS */
    		>;
    	};
    
    	main_wlirq_pins_default: main-wlirq-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0128, PIN_INPUT, 7) /* (K25) MMC2_SDWP.GPIO0_72 */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0000, PIN_OUTPUT, 0) /* (P23) OSPI0_CLK */
    			AM62PX_IOPAD(0x002c, PIN_OUTPUT, 0) /* (M25) OSPI0_CSn0 */
    			AM62PX_IOPAD(0x000c, PIN_INPUT, 0) /* (L25) OSPI0_D0 */
    			AM62PX_IOPAD(0x0010, PIN_INPUT, 0) /* (N24) OSPI0_D1 */
    			AM62PX_IOPAD(0x0014, PIN_INPUT, 0) /* (N25) OSPI0_D2 */
    			AM62PX_IOPAD(0x0018, PIN_INPUT, 0) /* (M24) OSPI0_D3 */
    			AM62PX_IOPAD(0x001c, PIN_INPUT, 0) /* (N21) OSPI0_D4 */
    			AM62PX_IOPAD(0x0020, PIN_INPUT, 0) /* (N22) OSPI0_D5 */
    			AM62PX_IOPAD(0x0024, PIN_INPUT, 0) /* (P21) OSPI0_D6 */
    			AM62PX_IOPAD(0x0028, PIN_INPUT, 0) /* (N20) OSPI0_D7 */
    			AM62PX_IOPAD(0x0008, PIN_INPUT, 0) /* (P22) OSPI0_DQS */
    		>;
    		bootph-all;
    	};
    
    	usr_led_pins_default: usr-led-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0244, PIN_INPUT, 7) /* (D24) MMC1_SDWP.GPIO1_49 */
    		>;
    	};
    
    	vddshv_sdio_pins_default: vddshvr-sdio-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x007c, PIN_INPUT, 7) /* (Y25) GPMC0_CLK.GPIO0_31 */
    		>;
    		bootph-all;
    	};
    
    	wlan_en_pins_default: wlan-en-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0124, PIN_INPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
    		>;
    	};
    
    	main_dpi_pins_default: main-dpi-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0100, PIN_OUTPUT, 0) /* (W20) VOUT0_VSYNC */
    			AM62PX_IOPAD(0x00f8, PIN_OUTPUT, 0) /* (AC20) VOUT0_HSYNC */
    			AM62PX_IOPAD(0x0104, PIN_OUTPUT, 0) /* (Y21) VOUT0_PCLK */
    			AM62PX_IOPAD(0x00fc, PIN_OUTPUT, 0) /* (W21) VOUT0_DE */
    			AM62PX_IOPAD(0x00b8, PIN_OUTPUT, 0) /* (AE24) VOUT0_DATA0 */
    			AM62PX_IOPAD(0x00bc, PIN_OUTPUT, 0) /* (W23) VOUT0_DATA1 */
    			AM62PX_IOPAD(0x00c0, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA2 */
    			AM62PX_IOPAD(0x00c4, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA3 */
    			AM62PX_IOPAD(0x00c8, PIN_OUTPUT, 0) /* (AB23) VOUT0_DATA4 */
    			AM62PX_IOPAD(0x00cc, PIN_OUTPUT, 0) /* (AD23) VOUT0_DATA5 */
    			AM62PX_IOPAD(0x00d0, PIN_OUTPUT, 0) /* (AC23) VOUT0_DATA6 */
    			AM62PX_IOPAD(0x00d4, PIN_OUTPUT, 0) /* (AE23) VOUT0_DATA7 */
    			AM62PX_IOPAD(0x00d8, PIN_OUTPUT, 0) /* (AE22) VOUT0_DATA8 */
    			AM62PX_IOPAD(0x00dc, PIN_OUTPUT, 0) /* (AC22) VOUT0_DATA9 */
    			AM62PX_IOPAD(0x00e0, PIN_OUTPUT, 0) /* (W22) VOUT0_DATA10 */
    			AM62PX_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AE21) VOUT0_DATA11 */
    			AM62PX_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (AD21) VOUT0_DATA12 */
    			AM62PX_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (AC21) VOUT0_DATA13 */
    			AM62PX_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (AA20) VOUT0_DATA14 */
    			AM62PX_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (Y20) VOUT0_DATA15 */
    			AM62PX_IOPAD(0x005c, PIN_OUTPUT, 1) /* (AC25) GPMC0_AD8.VOUT0_DATA16 */
    			AM62PX_IOPAD(0x0060, PIN_OUTPUT, 1) /* (AB25) GPMC0_AD9.VOUT0_DATA17 */
    			AM62PX_IOPAD(0x0064, PIN_OUTPUT, 1) /* (AA25) GPMC0_AD10.VOUT0_DATA18 */
    			AM62PX_IOPAD(0x0068, PIN_OUTPUT, 1) /* (W24) GPMC0_AD11.VOUT0_DATA19 */
    			AM62PX_IOPAD(0x006c, PIN_OUTPUT, 1) /* (Y24) GPMC0_AD12.VOUT0_DATA20 */
    			AM62PX_IOPAD(0x0070, PIN_OUTPUT, 1) /* (AD25) GPMC0_AD13.VOUT0_DATA21 */
    			AM62PX_IOPAD(0x0074, PIN_OUTPUT, 1) /* (AB24) GPMC0_AD14.VOUT0_DATA22 */
    			AM62PX_IOPAD(0x0078, PIN_OUTPUT, 1) /* (AC24) GPMC0_AD15.VOUT0_DATA23 */
    			AM62PX_IOPAD(0x009c, PIN_OUTPUT, 1) /* (AD24) GPMC0_WAIT1.VOUT0_EXTPCLKIN */
    		>;
    	};
    
    	main_epwm0_pins_default: main_epwm0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01b4, PIN_OUTPUT, 2) /* (D20) SPI0_CS0.EHRPWM0_A */
    			AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 2) /* (E20) SPI0_CS1.EHRPWM0_B */
    		>;
    	};
    
    	main_epwm1_pins_default: main_epwm1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01bc, PIN_OUTPUT, 2) /* (B21) SPI0_CLK.EHRPWM1_A */
    			AM62PX_IOPAD(0x01c0, PIN_OUTPUT, 2) /* (B20) SPI0_D0.EHRPWM1_B */
    		>;
    	};
    
    	main_ecap1_pins_default: main_ecap1-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x019c, PIN_OUTPUT, 2) /* (E24) MCASP0_AXR1.ECAP1_IN_APWM_OUT */
    		>;
    	};
    
    	main_ecap2_pins_default: main-ecap2-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x01a4, PIN_OUTPUT, 2) /* (F24) MCASP0_ACLKX.ECAP2_IN_APWM_OUT */
    		>;
    	};
    };
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    	clock-frequency = <400000>;
    
    	typec_pd0: usb-power-controller@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>;
    				};
    			};
    		};
    	};
    };
    
    &main_i2c1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <100000>;
    	bootph-all;
    
    	tlv320aic3106: audio-codec@1b {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3106";
    		reg = <0x1b>;
    		ai3x-micbias-vg = <1>;  /* 2.0V */
    	};
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "OLDI_INT#", "x8_NAND_DETECT",
    				   "UART1_FET_SEL", "MMC1_SD_EN",
    				   "VPP_EN", "EXP_PS_3V3_EN",
    				   "UART1_FET_BUF_EN", "EXP_HAT_DETECT",
    				   "DSI_GPIO0", "DSI_GPIO1",
    				   "OLDI_EDID", "BT_UART_WAKE_SOC_3V3",
    				   "USB_TYPEA_OC_INDICATION", "CSI_GPIO0",
    				   "CSI_GPIO1", "WLAN_ALERTn",
    				   "HDMI_INTn", "TEST_GPIO2",
    				   "MCASP1_FET_EN", "MCASP1_BUF_BT_EN",
    				   "MCASP1_FET_SEL", "DSI_EDID",
    				   "PD_I2C_IRQ", "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>;
    		bootph-all;
    	};
    
    	exp2: gpio@23 {
    		compatible = "ti,tca6424";
    		reg = <0x23>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "BT_EN_SOC", "EXP_PS_5V0_EN",
    				   "", "",
    				   "", "",
    				   "", "",
    				   "WL_LT_EN", "",
    				   "TP3", "TP6",
    				   "TP4", "TP7",
    				   "TP5", "TP8",
    				   "SoC_I2C2_MCAN_SEL", "GPIO_HDMI_RSTn",
    				   "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    				   "GPIO_OLDI_RSTn", "GPIO_AUD_RSTn",
    				   "GPIO_eMMC_RSTn", "SoC_WLAN_SDIO_RST";
    	};
    
    	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 >;
    
    		hdmi_tx_ports: ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			/*
    			 * HDMI can be serviced with 3 potential VPs -
    			 * (DSS0 VP1 / DSS1 VP0 / DSS1 VP1).
    			 * For now, we will service it with DSS0 VP1.
    			 */
    			port@0 {
    				reg = <0>;
    
    				sii9022_in: endpoint {
    					remote-endpoint = <&dss0_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 {
    	status = "okay";
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    	bootph-all;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	status = "disabled";
    	vmmc-supply = <&vdd_mmc1>;
    	vqmmc-supply = <&vddshv_sdio>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	disable-wp;
    	bootph-all;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_rgmii1_pins_default>,
    		    <&main_rgmii2_pins_default>;
    	status = "okay";
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    	status = "okay";
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    	status = "okay";
    };
    
    &cpsw3g_mdio {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mdio1_pins_default>;
    	status = "okay";
    
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		bootph-all;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    		ti,min-output-impedance;
    	};
    
    	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;
    	};
    };
    
    &usbss0 {
    	status = "okay";
    	ti,vbus-divider;
    };
    
    &usbss1 {
    	status = "okay";
    	ti,vbus-divider;
    };
    
    &usb0 {
    	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
    	>;
    };
    
    &fss {
    	bootph-all;
    };
    
    &ospi0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    	bootph-all;
    
    	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>;
    		cdns,phy-mode;
    		bootph-all;
    
    		partitions {
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			bootph-all;
    
    			partition@0 {
    				label = "sbl_ospi_linux_stage1.release.hs_fs.tiimage";
    				reg = <0x00 0x80000>;
    			};
    
    			partition@80000 {
    				label = "wkup-r5_stage2.release.appimage.hs_fs";
    				reg = <0x80000 0xa00000>;
    			};
    
    			partition@100000 {
    				label = "hsm_a.appimage.hs_fs";
    				reg = <0xa80000 0x40000>;
    			};
    
    			partition@140000 {
    				label = "mcu-r5_a.release.appimage.hs_fs";
    				reg = <0xac0000 0x200000>;
    			};
    
    			partition@340000 {
    				label = "linux.falcon_a.appimage.hs_fs";
    				reg = <0xcc0000 0x1100000>;
    			};
    
    			partition@1440000 {
    				label = "hsm_b.appimage.hs_fs";
    				reg = <0x1dc0000 0x40000>;
    			};
    
    			partition@1480000 {
    				label = "mcu-r5_b.release.appimage.hs_fs";
    				reg = <0x1e00000 0x200000>;
    			};
    
    			partition@1680000 {
    				label = "linux.falcon_b.appimage.hs_fs";
    				reg = <0x2000000 0x1100000>;
    			};
    
    			partition@2780000 {
    				label = "slot_partition";
    				reg = <0x3100000 0x40000>;
    			};
    
    			partition@27c0000 {
    				label = "backup1";
    				reg = <0x3140000 0xa00000>;
    			};
    
    			partition@3fc0000 {
    				label = "ospi_phy_pattern";
    				reg = <0x3fc0000 0x40000>;
    				bootph-all;
    			};
    
    		};
    	};
    };
    
    &mailbox0_cluster0 {
    	status = "okay";
    
    	mbox_r5_0: mbox-r5-0 {
    		ti,mbox-rx = <0 0 0>;
    		ti,mbox-tx = <1 0 0>;
    	};
    };
    
    &mailbox0_cluster1 {
    	status = "okay";
    
    	mbox_mcu_r5_0: mbox-mcu-r5-0 {
    		ti,mbox-rx = <0 0 0>;
    		ti,mbox-tx = <1 0 0>;
    	};
    };
    
    &wkup_r5fss0 {
    	status = "okay";
    };
    
    &wkup_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
    	memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
    			<&wkup_r5fss0_core0_memory_region>;
    };
    
    &mcu_r5fss0 {
    	status = "okay";
    };
    
    &mcu_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster1 &mbox_mcu_r5_0>;
    	memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
    			<&mcu_r5fss0_core0_memory_region>;
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    	interrupts-extended = <&gic500 GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
    			<&main_pmx0 0x1c8>; /* (D14) UART0_RXD PADCONFIG114 */
    	interrupt-names = "irq", "wakeup";
    	status = "okay";
    	bootph-all;
    };
    
    &main_uart1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart1_pins_default>;
    	/* Main UART1 is used by TIFS firmware */
    	status = "reserved";
    	bootph-all;
    };
    
    &mcu_pmx0 {
    	bootph-all;
    
    	wkup_uart0_pins_default: wkup-uart0-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
    			AM62PX_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
    		>;
    		bootph-all;
    	};
    };
    
    &wkup_uart0 {
    	/* WKUP UART0 is used by DM firmware */
    	pinctrl-names = "default";
    	pinctrl-0 = <&wkup_uart0_pins_default>;
    	status = "reserved";
    	bootph-all;
    };
    
    /* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &mcu_gpio_intr {
    	status = "reserved";
    };
    
    &dss_oldi_io_ctrl {
    	bootph-all;
    };
    
    &dss0 {
            ti,dss-shared-mode;
            ti,dss-shared-mode-vp = "vp1";
            ti,dss-shared-mode-vp-owned = <0>;
            ti,dss-shared-mode-common = "common1";
            ti,dss-shared-mode-planes = "vid";
            ti,dss-shared-mode-plane-zorder = <0>;
            interrupt-parent = <&gic500>;
            interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
    };
    
    &dss0 {
    	bootph-all;
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_dpi_pins_default>;
    };
    
    &dss0_ports {
    	/* DSS0-VP2: DPI/HDMI Output */
    	hdmi0_dss: port@1 {
    		reg = <1>;
    
    		dss0_dpi1_out: endpoint {
    			remote-endpoint = <&sii9022_in>;
    		};
    	};
    };
    
    &epwm0 {
    	/* Pin 24/26 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_epwm0_pins_default>;
    	status = "okay";
    };
    
    &epwm1 {
    	/* Pin 23/19 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_epwm1_pins_default>;
    	status = "okay";
    };
    
    &ecap1 {
    	/* ECAP1 in APWM mode */
    	/* Pin 36 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap1_pins_default>;
    	status = "okay";
    };
    
    &ecap2 {
    	/* ECAP2 in APWM mode */
    	/* Pin 11 of J4 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap2_pins_default>;
    	status = "okay";
    };
    
    
    &{/} {
    	display {
    		compatible = "microtips,mf-101hiebcaf0", "panel-simple";
    
    		/*
    		* Note that the OLDI TX 0 transmits the odd set of pixels
    		* while the OLDI TX 1 transmits the even set. This is a
    		* fixed configuration in the IP integration and is not
    		* changeable. The properties, "dual-lvds-odd-pixels" and
    		* "dual-lvds-even-pixels" have been used to merely
    		* identify if a Dual Link configuration is required.
    		* Swapping them will cause an error in the dss oldi driver.
    		*/
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    				dual-lvds-odd-pixels;
    
    				lcd_in0: endpoint {
    					remote-endpoint = <&oldi0_dss0_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    				dual-lvds-even-pixels;
    
    				lcd_in1: endpoint {
    					remote-endpoint = <&oldi1_dss0_out>;
    				};
    			};
    		};
    	};
    };
    
    &dss0 {
    	status = "okay";
    };
    
    &oldi0_dss0 {
    	status = "okay";
    	ti,companion-oldi = <&oldi1_dss0>;
    };
    
    &oldi1_dss0 {
    	status = "okay";
    	ti,secondary-oldi;
    };
    
    &oldi0_dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	port@0 {
    		reg = <0>;
    
    		oldi0_dss0_in: endpoint {
    			remote-endpoint = <&dss0_dpi0_out0>;
    		};
    	};
    
    	port@1 {
    		reg = <1>;
    
    		oldi0_dss0_out: endpoint {
    			remote-endpoint = <&lcd_in0>;
    		};
    	};
    };
    
    &oldi1_dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	port@0 {
    		reg = <0>;
    
    		oldi1_dss0_in: endpoint {
    			remote-endpoint = <&dss0_dpi0_out1>;
    		};
    	};
    
    	port@1 {
    		reg = <1>;
    
    		oldi1_dss0_out: endpoint {
    			remote-endpoint = <&lcd_in1>;
    		};
    	};
    };
    
    &dss0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	/* VP1: Output to OLDI */
    	port@0 {
    		reg = <0>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		dss0_dpi0_out0: endpoint@0 {
    			reg = <0>;
    			remote-endpoint = <&oldi0_dss0_in>;
    		};
    
    		dss0_dpi0_out1: endpoint@1 {
    			reg = <1>;
    			remote-endpoint = <&oldi1_dss0_in>;
    		};
    	};
    };
    
    &main_i2c0 {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	touchscreen@41 {
    		compatible = "ilitek,ili251x";
    		reg = <0x41>;
    		interrupt-parent = <&exp1>;
    		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
    		reset-gpios = <&exp2 20 GPIO_ACTIVE_LOW>;
    	};
    };
    
    

    Best Regards

    SUI

  • Hi Pengfei,

    Give me couple of days to replicate the setup. If you don't hear back by Monday of next week, please ping again.

    Best Regards

    Suren