AM5728: Porting ov5640 camera onto to TI Linux SDK 9.03.

Part Number: AM5728

Tool/software:

Hi,

I have the same custom board as mentioned in (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1008216/am5728-unable-to-get-correct-capture-with-ov5640-green-pink-screen-issue?tisearch=e2e-sitesearch&keymatch=am5728%252520ov5640#) based on TI's AM5728 EVM.

I am running the latest Linux PSDK 9.03 on it. I have done the same dts changes similar to what is described in the post above. (See dts changes below:-)

clk_ov5640_fixed: clk_ov5640_fixed {
                          compatible = "fixed-clock";
                          #clock-cells = <0>;
                          clock-frequency = <24000000>;
                  };
clk_ov5640: clk_ov5640 {
                    compatible = "gpio-gate-clock";
                    #clock-cells = <0>;
                    clocks = <&clk_ov5640_fixed>;
                    enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>; //[04] changed in VIC2 from ACTIVE_LOW
                };


&vip2 {
    status = "okay";
};

&vin3a {
    status = "okay";

    port {
        vin3a_ep: endpoint {
            remote-endpoint = <&cam>;
            slave-mode;
            bus-width = <8>;
            data-shift = <0>;
            hsync-active = <1>;
            vsync-active = <0>;
            pclk-sample = <0>;
        };
    };
};

&i2c3 {
        status = "okay";
        clock-frequency = <400000>;

        ov5640@3c {
                compatible = "ovti,ov5640";
                reg = <0x3c>;
                status="okay";
                clocks = <&clk_ov5640>;
                clock-names = "xclk";
                powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;

                port {
                        cam: endpoint {
                                bus-width = <8>;
                                data-shift = <0>;
                                hsync-active = <1>;
                                vsync-active = <0>;
                                pclk-sample = <0>;
                                remote-endpoint = <&vin3a_ep>;
                        };
                };
        };
};

I have enabled ov5640 driver in the kernel and I too am taking care of all its dependencies as well. I am using the same driver code which is present in Linux 9.03 PSDK. Path for the driver is -  

/opt/ti-processor-sdk-linux-am57xx-evm-09_03_06_05/board-support/ti-linux-kernel-6.1.119+gitAUTOINC+e4e8b16e66-ti/drivers/media/i2c/ov5640.c 


But the camera device is not getting registered as /dev/video1 (capture device). Only /dev/video0 is showing. 

I have put prints in each function in drivers/media/i2c/ov5640.c and ./drivers/media/platform/ti/vpe/vip.c (See dmesg logs below)

[    0.326049] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
[    9.326629] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
[    9.362701] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
[    9.496124] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
[    9.597930] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
[    9.660461] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
[    9.686187] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 333, Function: vip_init_format_info ****************************
[    9.817169] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3617, Function: get_field ****************************
[    9.884002] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 529, Function: vip_shared_set_clock_enable ****************************
[    9.938079] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 569, Function: vip_top_vpdma_reset ****************************
[   10.002136] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.018829] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.044342] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
[   10.065155] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
[   10.087524] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.102722] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.118164] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
[   10.158843] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
[   10.207580] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.267791] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
[   10.400909] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
[   10.490997] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.588836] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
[   10.588867] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
[   10.604034] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3624, Function: vip_vpdma_fw_cb ****************************
[   10.604064] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3801, Function: vip_probe_complete ****************************
[   10.604064] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3583, Function: alloc_port ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3712, Function: vip_register_subdev_notif ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604125] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604125] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************


What am I missing? 

Please help resolve this !

  • Hi Vishal,

    Is the ov5640 probing successfully? If you run lsmod, what appears? Can you send your dmesg?

    I noticed that the endpoint values differed with the dts in: AM5728: Unable to get correct capture with ov5640 (green/pink screen issue). Will that cause issues?

    Best,
    Jared

  • Hi  ,

    Below is the output of lsmod command. 

    root@am57xx-evm:~# lsmod                                                     
    Module                  Size  Used by                                        
    xfrm_user              36864  2                                              
    xfrm_algo              16384  1 xfrm_user                                    
    sha256_generic         16384  0                                              
    libsha256              16384  1 sha256_generic                               
    sha256_arm             24576  0                                              
    cfg80211              655360  0                                              
    bluetooth             491520  2                                              
    ecdh_generic           16384  1 bluetooth                                    
    ecc                    36864  1 ecdh_generic                                 
    onboard_usb_hub        16384  0                                              
    snd_soc_omap_hdmi      16384  0
    irq_pruss_intc         16384  0
    icss_iep               20480  0
    rpmsg_ctrl             16384  0
    dwc3                  139264  0
    rpmsg_char             16384  1 rpmsg_ctrl
    snd_soc_davinci_mcasp    28672  2
    snd_soc_ti_udma        16384  1 snd_soc_davinci_mcasp
    snd_soc_ti_edma        16384  1 snd_soc_davinci_mcasp
    snd_soc_tlv320aic3x_i2c    16384  1
    snd_soc_simple_card    20480  0
    snd_soc_tlv320aic3x    53248  1 snd_soc_tlv320aic3x_i2c
    snd_soc_ti_sdma        16384  2 snd_soc_davinci_mcasp,snd_soc_omap_hdmi
    snd_soc_simple_card_utils    20480  1 snd_soc_simple_card
    ti_vip                 53248  0
    ti_vpe                 28672  0
    ti_sc                  36864  2 ti_vpe,ti_vip
    ti_csc                 16384  2 ti_vpe,ti_vip
    snd_soc_core          172032  8 snd_soc_davinci_mcasp,snd_soc_omap_hdmi,snd_soc_simple_card_utils,snd_soc_ti_sdma,snd_soc_ti_edma,snd_soc_tlv320aic3x,snd_soc_ti_udma,snd_soc_simple_card
    v4l2_mem2mem           24576  1 ti_vpe
    ti_vpdma               20480  2 ti_vpe,ti_vip
    videobuf2_dma_contig    20480  2 ti_vpe,ti_vip
    snd_pcm_dmaengine      16384  1 snd_soc_core
    ac97_bus               16384  1 snd_soc_core
    snd_pcm                94208  6 snd_soc_davinci_mcasp,snd_pcm_dmaengine,snd_soc_omap_hdmi,snd_soc_simple_card_utils,snd_soc_core,snd_soc_tlv320aic3x
    omapdrm               184320  4
    ov5640                 36864  0
    snd_timer              28672  1 snd_pcm
    videobuf2_memops       16384  1 videobuf2_dma_contig
    v4l2_fwnode            20480  2 ov5640,ti_vip
    videobuf2_v4l2         24576  3 ti_vpe,ti_vip,v4l2_mem2mem
    cec                    40960  1 omapdrm
    pruss                  16384  0
    omap_aes_driver        24576  0
    videobuf2_common       45056  6 ti_vpe,ti_vip,videobuf2_dma_contig,videobuf2_memops,v4l2_mem2mem,videobuf2_v4l2
    snd                    61440  3 snd_timer,snd_soc_core,snd_pcm
    v4l2_async             20480  3 ov5640,v4l2_fwnode,ti_vip
    omap_des               20480  0
    libaes                 16384  2 omap_aes_driver,bluetooth
    omap_wdt               16384  0
    ahci_dwc               16384  0
    omap_crypto            16384  2 omap_des,omap_aes_driver
    soundcore              16384  1 snd
    omap_hwspinlock        16384  0
    libdes                 28672  1 omap_des
    videodev              196608  8 ov5640,ti_csc,ti_vpe,videobuf2_common,ti_vip,v4l2_mem2mem,videobuf2_v4l2,v4l2_async
    dwc3_omap              16384  0
    rtc_omap               20480  0
    pwm_tiehrpwm           16384  1
    extcon_palmas          16384  0
    omap_sham              28672  0
    crypto_engine          16384  3 omap_des,omap_aes_driver,omap_sham
    omap_remoteproc        20480  0
    virtio_rpmsg_bus       20480  0
    rpmsg_ns               16384  1 virtio_rpmsg_bus
    rpmsg_core             16384  4 rpmsg_char,rpmsg_ctrl,rpmsg_ns,virtio_rpmsg_bus
    ti_tpd12s015           16384  0
    display_connector      16384  0
    

    Like I said I had put prints in drivers/media/i2c/ov5640.c and drivers/media/platform/ti/vpe/vip.c (ignore my prints in any other drivers )  below is the output of dmesg command. 

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00007-gcbebd7e94d2a (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #34 SMP PREEMPT Mon Jul 21 09:19:26 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757948K/4174848K available (12288K kernel code, 1467K rwdata, 3300K rodata, 2048K init, 305K bss, 220292K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001434] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003173] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003356] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004516] Console: colour dummy device 80x30
    [    0.004547] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062072] CPU: Testing write buffer coherency: ok
    [    0.062103] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062103] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062103] pid_max: default: 32768 minimum: 301
    [    0.062255] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062255] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062896] /cpus/cpu@0 missing clock-frequency property
    [    0.062927] /cpus/cpu@1 missing clock-frequency property
    [    0.062957] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063598] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063598] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063690] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063781] rcu: Hierarchical SRCU implementation.
    [    0.063812] rcu: 	Max phase no-delay instances is 1000.
    [    0.066162] EFI services will not be available.
    [    0.066711] smp: Bringing up secondary CPUs ...
    [    0.126922] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126953] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127044] smp: Brought up 1 node, 2 CPUs
    [    0.127044] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127075] CPU: All CPU(s) started in HYP mode.
    [    0.127075] CPU: Virtualization extensions available.
    [    0.127502] devtmpfs: initialized
    [    0.153167] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153350] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153350] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.157836] pinctrl core: initialized pinctrl subsystem
    [    0.158477] DMI not present or invalid.
    [    0.158874] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160583] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161529] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161590] cpuidle: using governor menu
    [    0.188934] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.188995] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.192901] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.192993] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193054] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193389] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.194976] No ATAGs?
    [    0.195037] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195037] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.219757] iommu: Default domain type: Translated 
    [    0.219787] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221130] SCSI subsystem initialized
    [    0.221282] libata version 3.00 loaded.
    [    0.221466] usbcore: registered new interface driver usbfs
    [    0.221496] usbcore: registered new interface driver hub
    [    0.221527] usbcore: registered new device driver usb
    [    0.221954] mc: Linux media interface: v0.10
    [    0.221984] pps_core: LinuxPPS API ver. 1 registered
    [    0.221984] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.222015] PTP clock support registered
    [    0.222137] EDAC MC: Ver: 3.0.0
    [    0.223999] clocksource: Switched to clocksource 32k_counter
    [    0.231628] NET: Registered PF_INET protocol family
    [    0.231811] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.244445] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.244476] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.244476] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.244537] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.244781] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.244842] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244873] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244995] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.245422] RPC: Registered named UNIX socket transport module.
    [    0.245422] RPC: Registered udp transport module.
    [    0.245422] RPC: Registered tcp transport module.
    [    0.245422] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.245452] PCI: CLS 0 bytes, default 64
    [    0.245819] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.245971] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.246826] Initialise system trusted keyrings
    [    0.247039] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.252319] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.252929] NFS: Registering the id_resolver key type
    [    0.252990] Key type id_resolver registered
    [    0.252990] Key type id_legacy registered
    [    0.253051] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.253082] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.253112] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.253570] Key type asymmetric registered
    [    0.253570] Asymmetric key parser 'x509' registered
    [    0.253692] bounce: pool size: 64 pages
    [    0.253784] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.253784] io scheduler mq-deadline registered
    [    0.253814] io scheduler kyber registered
    [    0.257049] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.302947] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.304931] STMicroelectronics ASC driver initialized
    [    0.305603] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.307037] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.307037] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.307037] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.307067] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.314056] brd: module loaded
    [    0.318634] loop: module loaded
    [    0.323059] CAN device driver interface
    [    0.323486] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.323486] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.323547] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.323547] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.324462] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.324493] usbcore: registered new interface driver pegasus
    [    0.324523] usbcore: registered new interface driver asix
    [    0.324554] usbcore: registered new interface driver ax88179_178a
    [    0.324584] usbcore: registered new interface driver cdc_ether
    [    0.324615] usbcore: registered new interface driver smsc75xx
    [    0.324676] usbcore: registered new interface driver smsc95xx
    [    0.324707] usbcore: registered new interface driver net1080
    [    0.324737] usbcore: registered new interface driver cdc_subset
    [    0.324768] usbcore: registered new interface driver zaurus
    [    0.324798] usbcore: registered new interface driver cdc_ncm
    [    0.325531] usbcore: registered new interface driver usb-storage
    [    0.326049] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
    [    0.326080] omap4-keypad 4ae1c00000000100.keypad: no base address specified
    [    0.326080] omap4-keypad: probe of 4ae1c00000000100.keypad failed with error -22
    [    0.326507] i2c_dev: i2c /dev entries driver
    [    0.328979] sdhci: Secure Digital Host Controller Interface driver
    [    0.328979] sdhci: Copyright(c) Pierre Ossman
    [    0.329162] Synopsys Designware Multimedia Card Interface Driver
    [    0.329376] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.330017] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.330322] usbcore: registered new interface driver usbhid
    [    0.330322] usbhid: USB HID core driver
    [    0.332977] NET: Registered PF_INET6 protocol family
    [    0.333862] Segment Routing with IPv6
    [    0.333923] In-situ OAM (IOAM) with IPv6
    [    0.334014] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.334503] NET: Registered PF_PACKET protocol family
    [    0.334503] can: controller area network core
    [    0.334564] NET: Registered PF_CAN protocol family
    [    0.334564] can: raw protocol
    [    0.334564] can: broadcast manager protocol
    [    0.334594] can: netlink gateway - max_hops=1
    [    0.334716] Key type dns_resolver registered
    [    0.334777] ThumbEE CPU extension supported.
    [    0.334808] Registering SWP/SWPB emulation handler
    [    0.335266] omap_voltage_late_init: Voltage driver support not added
    [    0.335266] Power Management for TI OMAP4+ devices.
    [    0.336029] Loading compiled-in X.509 certificates
    [    0.369750] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.375701] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.397766] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.413879] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.414276] OMAP GPIO hardware version 0.1
    [    0.416595] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.423583] printk: console [ttyS2] disabled
    [    0.423645] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.788330] printk: console [ttyS2] enabled
    [    1.800201] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.810119] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.820068] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.829925] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.839813] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.849853] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.859771] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.871032] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.883117] palmas 0-0058: Irq flag is 0x00000008
    [    1.917388] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    1.950012] at24 0-0050: supply vcc not found, using dummy regulator
    [    1.956878] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    1.963684] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.974090] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    1.981109] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    1.988281] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    1.997985] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.004333] random: crng init done
    [    2.007537] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    2.021057] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    2.025756] edt_ft5x06 4-0038: touchscreen probe failed
    [    2.026000] sdhci-omap 4809c000.mmc: supply vqmmc not found, using dummy regulator
    [    2.039550] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    2.054931] edt_ft5x06: probe of 4-0038 failed with error -121
    [    2.074157] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    2.114013] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.120056] mmc0: new high speed SDHC card at address 5048
    [    2.127746] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    2.128173] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.139068] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.140655]  mmcblk0: p1 p2
    [    2.147796] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.156829] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.162567] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.170196] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.181365] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:10
    [    2.188385] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:11
    [    2.197113] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.219940] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.227630] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.238494] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.245819] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.261199] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.278167] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.287261] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.295440] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.303771] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.309326] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    3.317718] dra7-pcie 51000000.pcie: Phy link never came up
    [    3.323425] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    3.329772] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    3.335296] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    3.341491] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    3.348449] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    3.354522] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    3.360839] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    3.367218] pci 0000:00:00.0: supports D1
    [    3.371246] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    3.384735] PCI: bus0: Fast back to back transfers disabled
    [    3.390686] PCI: bus1: Fast back to back transfers enabled
    [    3.396240] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    3.403045] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    3.409912] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    3.415527] pcieport 0000:00:00.0: PME: Signaling with IRQ 137
    [    3.427520] edma 43300000.dma: memcpy is disabled
    [    3.435546] edma 43300000.dma: TI EDMA DMA engine driver
    [    3.447265] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    3.455047] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    3.461730] platform 40800000.dsp: Adding to iommu group 0
    [    3.468749] platform 58820000.ipu: Adding to iommu group 1
    [    3.474456] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    3.482330] platform 55020000.ipu: Adding to iommu group 2
    [    3.487884] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    3.500061] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    3.508880] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    3.525024] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    3.532287] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    3.539123] platform 41000000.dsp: Adding to iommu group 3
    [    3.547149] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    3.586120] rtc-ds1307 2-006f: registered as rtc0
    [    3.591156] rtc-ds1307 2-006f: setting system clock to 2025-07-25T17:53:50 UTC (1753466030)
    [    3.602783] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    3.612030] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    3.620819] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    3.634338] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    3.647308] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    3.661376] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.673828] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.674774] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.695098] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.708557] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.715332] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.728179] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.741729] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.755737] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.769714] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.785217] clk: Disabling unused clocks
    [    3.794250] l3init-clkctrl:0030:0: failed to disable
    [    3.820556] mmc1: new DDR MMC card at address 0001
    [    3.825836] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.832336]  mmcblk1: p1 p2
    [    3.835632] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.841613] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.847564] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    3.862030] EXT4-fs (mmcblk0p2): recovery complete
    [    3.866882] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.875885] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.889373] devtmpfs: mounted
    [    3.893402] Freeing unused kernel image (initmem) memory: 2048K
    [    3.899505] Run /sbin/init as init process
    [    3.903594]   with arguments:
    [    3.903594]     /sbin/init
    [    3.903625]   with environment:
    [    3.903625]     HOME=/
    [    3.903625]     TERM=linux
    [    4.293609] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    4.325927] systemd[1]: Detected architecture arm.
    [    4.365356] systemd[1]: Hostname set to <am57xx-evm>.
    [    4.499176] systemd-sysv-generator[108]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.523864] systemd-sysv-generator[108]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.788696] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.854248] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.876617] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.957305] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.966735] systemd[1]: Created slice Slice /system/getty.
    [    5.005004] systemd[1]: Created slice Slice /system/modprobe.
    [    5.045593] systemd[1]: Created slice Slice /system/serial-getty.
    [    5.084472] systemd[1]: Created slice User and Session Slice.
    [    5.124359] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.164703] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.204559] systemd[1]: Reached target Path Units.
    [    5.244445] systemd[1]: Reached target Remote File Systems.
    [    5.284149] systemd[1]: Reached target Slice Units.
    [    5.324279] systemd[1]: Reached target Swaps.
    [    5.406494] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.444641] systemd[1]: Reached target RPC Port Mapper.
    [    5.493530] systemd[1]: Listening on Process Core Dump Socket.
    [    5.534851] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.624298] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    5.635833] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.684722] systemd[1]: Listening on Journal Socket.
    [    5.714752] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.754577] systemd[1]: Listening on udev Control Socket.
    [    5.794464] systemd[1]: Listening on udev Kernel Socket.
    [    5.834808] systemd[1]: Listening on User Database Manager Socket.
    [    5.874542] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.934417] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.977447] systemd[1]: Mounting Kernel Debug File System...
    [    6.016235] systemd[1]: Mounting Kernel Trace File System...
    [    6.078308] systemd[1]: Mounting Temporary Directory /tmp...
    [    6.118591] systemd[1]: Starting Create List of Static Device Nodes...
    [    6.157012] systemd[1]: Starting Load Kernel Module configfs...
    [    6.274566] systemd[1]: Starting Load Kernel Module drm...
    [    6.317321] systemd[1]: Starting Load Kernel Module fuse...
    [    6.414581] systemd[1]: Starting Start psplash boot splash screen...
    [    6.458435] systemd[1]: Starting RPC Bind...
    [    6.494537] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    6.507873] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    6.520843] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    6.574676] systemd[1]: Starting Journal Service...
    [    6.618469] systemd[1]: Starting Load Kernel Modules...
    [    6.656188] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.696350] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.725708] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.736694] systemd[1]: Starting Coldplug All udev Devices...
    [    6.781890] systemd[1]: Started RPC Bind.
    [    6.814575] systemd[1]: Started Journal Service.
    [    7.399017] systemd-journald[121]: Received client request to flush runtime journal.
    [    8.224609] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    8.232727] remoteproc remoteproc0: 58820000.ipu is available
    [    8.280731] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    8.296844] remoteproc remoteproc1: 55020000.ipu is available
    [    8.308593] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    8.320037] remoteproc remoteproc2: 40800000.dsp is available
    [    8.341857] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    8.367797] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    8.384887] remoteproc remoteproc3: 41000000.dsp is available
    [    8.459442] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    8.759979] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    8.794830] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    8.902160] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.912292] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.920318] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.931518] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.960083] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.969207] omap-iommu 58882000.mmu: no fck found
    [    8.973937] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.981750] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    9.004852] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu1-memory@9d000000
    [    9.016326] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    9.018341] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [    9.022155] rproc-virtio rproc-virtio.2.auto: registered virtio0 (type 7)
    [    9.041992] pwm-backlight backlight: supply power not found, using dummy regulator
    [    9.052093] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    9.059173] omap_rtc 48838000.rtc: registered as rtc2
    [    9.066864] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    9.074829] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    9.090148] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    9.094268] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [    9.103607] panel-simple display: supply power not found, using dummy regulator
    [    9.121337] panel-simple display: Specify missing connector_type
    [    9.150970] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [    9.175506] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    9.273162] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu2-memory@95800000
    [    9.293823] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    9.297271] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    9.308441] rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
    [    9.318511] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    9.339294] videodev: Linux video capture interface: v2.00
    [    9.363616] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    9.386291] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    9.398773] remoteproc remoteproc2: powering up 40800000.dsp
    [    9.406585] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    9.414672] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    9.428070] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    9.436401] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    9.454193] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    9.454559] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [    9.462127] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    9.485198] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    9.493316] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    9.494628] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    9.507019] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    9.515075] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    9.521087] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    9.528533] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    9.538238] remoteproc remoteproc3: powering up 41000000.dsp
    [    9.543975] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    9.556060] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    9.564178] omap-des 480a5000.des: will run requests pump with realtime priority
    [    9.573120] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    9.585266] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    9.591186] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    9.603057] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    9.603179] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    9.628387] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [    9.637359] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    9.647735] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    9.675750] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.676391] scsi host0: ahci-dwc
    [    9.681335] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    9.686035] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 162
    [    9.702484] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    9.710510] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    9.747833] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    9.760314] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    9.764190] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    9.774383] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    9.784423] DSS: OMAP DSS rev 6.1
    [    9.787811] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    9.805114] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    9.814208] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    9.822998] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    9.832794] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    9.841583] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    9.860107] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    9.860443] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.909088] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [    9.944671] dmm 4e000000.dmm: workaround for errata i878 in use
    [    9.986328] dmm 4e000000.dmm: initialized all PAT entries
    [   10.035125] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [   10.052825] ata1: SATA link down (SStatus 0 SControl 300)
    [   10.104125] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [   10.115234] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
    [   10.146850] vpe 489d0000.vpe: Device registered as /dev/video0
    [   10.174468] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.242187] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
    [   10.278015] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [   10.355926] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   10.377990] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 333, Function: vip_init_format_info ****************************
    [   10.433166] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.486145] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3617, Function: get_field ****************************
    [   10.508972] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.528747] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 529, Function: vip_shared_set_clock_enable ****************************
    [   10.558258] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   10.559356] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 569, Function: vip_top_vpdma_reset ****************************
    [   10.594055] omapdss error: HDMI I2C Master Error
    [   10.605621] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.618499] [drm] Enabling DMM ywrap scrolling
    [   10.620544] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.635864] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
    [   10.650146] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
    [   10.650177] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650451] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650451] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
    [   10.650451] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650512] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
    [   10.650604] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
    [   10.650604] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650695] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   10.650695] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.650695] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   10.650695] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   10.650878] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650878] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
    [   10.650878] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.650909] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [   10.651092] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
    [   10.651123] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
    [   10.674041] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3624, Function: vip_vpdma_fw_cb ****************************
    [   10.674072] vip 48990000.vip: VPDMA firmware loaded
    [   10.674072] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3801, Function: vip_probe_complete ****************************
    [   10.674072] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   10.674102] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3583, Function: alloc_port ****************************
    [   10.674102] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3712, Function: vip_register_subdev_notif ****************************
    [   10.674102] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   10.674102] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   10.674133] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   10.765228] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   10.765258] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.851074] Console: switching to colour frame buffer device 128x37
    [   11.251831] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   11.284057] ------------[ cut here ]------------
    [   11.288726] WARNING: CPU: 1 PID: 152 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   11.298400] Hot plug detection already enabled
    [   11.302856] Modules linked in: snd_soc_davinci_mcasp snd_soc_ti_udma snd_soc_ti_edma snd_soc_tlv320aic3x_i2c snd_soc_simple_card snd_soc_tlv320aic3x snd_soc_ti_sdma snd_soc_simple_card_utils ti_vip ti_vpe ti_sc ti_csc snd_soc_core v4l2_mem2mem ti_vpdma videobuf2_dma_contig snd_pcm_dmaengine ac97_bus snd_pcm omapdrm(+) ov5640 snd_timer videobuf2_memops v4l2_fwnode videobuf2_v4l2 cec pruss omap_aes_driver videobuf2_common snd v4l2_async omap_des libaes omap_wdt ahci_dwc omap_crypto soundcore omap_hwspinlock libdes videodev dwc3_omap rtc_omap pwm_tiehrpwm extcon_palmas omap_sham crypto_engine omap_remoteproc virtio_rpmsg_bus rpmsg_ns rpmsg_core ti_tpd12s015 display_connector
    [   11.362915] CPU: 1 PID: 152 Comm: systemd-udevd Not tainted 6.1.119-00007-gcbebd7e94d2a #34
    [   11.371307] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   11.377441]  unwind_backtrace from show_stack+0x10/0x14
    [   11.388275]  show_stack from dump_stack_lvl+0x40/0x4c
    [   11.394409]  dump_stack_lvl from __warn+0x7c/0x158
    [   11.399261]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   11.404449]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   11.410766]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   11.417663]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   11.423797]  platform_probe from really_probe+0xc8/0x2ec
    [   11.429168]  really_probe from __driver_probe_device+0x88/0x1a0
    [   11.435150]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   11.441711]  driver_probe_device from __driver_attach+0x90/0x174
    [   11.447784]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   11.453491]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   11.459259]  bus_add_driver from driver_register+0x88/0x11c
    [   11.464874]  driver_register from __platform_register_drivers+0x38/0x88
    [   11.471557]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   11.479034]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   11.485534]  do_one_initcall from do_init_module+0x44/0x1d4
    [   11.491149]  do_init_module from sys_finit_module+0xc0/0x110
    [   11.496856]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   11.502716] Exception stack(0xf2015fa8 to 0xf2015ff0)
    [   11.507812] 5fa0:                   00000000 00000000 0000000f b6d4a8a0 00000000 00020000
    [   11.521331] 5fc0: 00000000 00000000 00000000 0000017b 00000000 00098468 00000007 00000000
    [   11.529541] 5fe0: bea8f710 bea8f700 b6d45d4f b6c7b052
    [   11.534851] ---[ end trace 0000000000000000 ]---
    [   11.540618] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   12.576599] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   12.590454] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   12.613464] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   12.623199] xhci-hcd xhci-hcd.6.auto: irq 171, io mem 0x48890000
    [   12.629547] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   12.655212] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   12.663604] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   12.674804] hub 1-0:1.0: USB hub found
    [   12.681457] hub 1-0:1.0: 1 port detected
    [   12.688415] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   12.697113] hub 2-0:1.0: USB hub found
    [   12.700958] hub 2-0:1.0: 1 port detected
    [   13.014038] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   13.250762] hub 1-1:1.0: USB hub found
    [   13.256164] hub 1-1:1.0: 4 ports detected
    [   13.344085] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   13.394744] hub 2-1:1.0: USB hub found
    [   13.398620] hub 2-1:1.0: 4 ports detected
    [   13.403320] usbcore: registered new device driver onboard-usb-hub
    [   13.731048] hub 1-1:1.0: USB hub found
    [   13.734924] hub 1-1:1.0: 4 ports detected
    [   13.891143] hub 1-1:1.0: USB hub found
    [   13.897308] hub 1-1:1.0: 4 ports detected
    [   13.987182] hub 2-1:1.0: USB hub found
    [   13.991027] hub 2-1:1.0: 4 ports detected
    [   14.035156] hub 2-1:1.0: USB hub found
    [   14.041198] hub 2-1:1.0: 4 ports detected
    [   14.620574] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   15.312744] Bluetooth: Core ver 2.22
    [   15.317871] NET: Registered PF_BLUETOOTH protocol family
    [   15.354064] Bluetooth: HCI device and connection manager initialized
    [   15.360473] Bluetooth: HCI socket layer initialized
    [   15.416900] Bluetooth: L2CAP socket layer initialized
    [   15.437347] Bluetooth: SCO socket layer initialized
    [   15.679016] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   15.851684] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   15.859069] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   15.965789] Initializing XFRM netlink socket
    [   16.001281] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   16.070892] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   16.161254] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   16.214935] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   23.787689] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   23.824035] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   23.844055] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   23.874023] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   23.906829] omapdss error: HDMI I2C Master Error
    [  618.934631] systemd-journald[121]: Time jumped backwards, rotating.

    I noticed that the endpoint values differed with the dts in: AM5728: Unable to get correct capture with ov5640 (green/pink screen issue). Will that cause issues?

    This is the dmesg command ouput when I used dts mentioned in the link e2e.ti.com/.../am5728-unable-to-get-correct-capture-with-ov5640-green-pink-screen-issue 

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00007-gcbebd7e94d2a-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #36 SMP PREEMPT Mon Jul 21 14:38:43 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757948K/4174848K available (12288K kernel code, 1467K rwdata, 3304K rodata, 2048K init, 305K bss, 220292K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001434] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003173] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003356] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004516] Console: colour dummy device 80x30
    [    0.004547] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062072] CPU: Testing write buffer coherency: ok
    [    0.062103] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062103] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062103] pid_max: default: 32768 minimum: 301
    [    0.062255] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062255] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062896] /cpus/cpu@0 missing clock-frequency property
    [    0.062927] /cpus/cpu@1 missing clock-frequency property
    [    0.062927] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063568] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063598] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063690] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063781] rcu: Hierarchical SRCU implementation.
    [    0.063781] rcu: 	Max phase no-delay instances is 1000.
    [    0.066162] EFI services will not be available.
    [    0.066680] smp: Bringing up secondary CPUs ...
    [    0.126892] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126922] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127014] smp: Brought up 1 node, 2 CPUs
    [    0.127014] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127044] CPU: All CPU(s) started in HYP mode.
    [    0.127044] CPU: Virtualization extensions available.
    [    0.127471] devtmpfs: initialized
    [    0.153137] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153289] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153320] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.157775] pinctrl core: initialized pinctrl subsystem
    [    0.158447] DMI not present or invalid.
    [    0.158843] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160583] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161529] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161560] cpuidle: using governor menu
    [    0.188934] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.188995] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.192932] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.193023] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193115] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193450] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.194976] No ATAGs?
    [    0.195068] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195068] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.219726] iommu: Default domain type: Translated 
    [    0.219757] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221099] SCSI subsystem initialized
    [    0.221252] libata version 3.00 loaded.
    [    0.221435] usbcore: registered new interface driver usbfs
    [    0.221466] usbcore: registered new interface driver hub
    [    0.221496] usbcore: registered new device driver usb
    [    0.221923] mc: Linux media interface: v0.10
    [    0.221954] pps_core: LinuxPPS API ver. 1 registered
    [    0.221954] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.221984] PTP clock support registered
    [    0.222106] EDAC MC: Ver: 3.0.0
    [    0.223968] clocksource: Switched to clocksource 32k_counter
    [    0.231597] NET: Registered PF_INET protocol family
    [    0.231781] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.244415] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.244445] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.244445] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.244506] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.244750] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.244812] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244842] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244964] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.245391] RPC: Registered named UNIX socket transport module.
    [    0.245391] RPC: Registered udp transport module.
    [    0.245391] RPC: Registered tcp transport module.
    [    0.245391] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.245391] PCI: CLS 0 bytes, default 64
    [    0.245788] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.245941] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.246795] Initialise system trusted keyrings
    [    0.247009] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.252258] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.252899] NFS: Registering the id_resolver key type
    [    0.252899] Key type id_resolver registered
    [    0.252929] Key type id_legacy registered
    [    0.252990] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.252990] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.253021] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.253479] Key type asymmetric registered
    [    0.253509] Asymmetric key parser 'x509' registered
    [    0.253631] bounce: pool size: 64 pages
    [    0.253723] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.253723] io scheduler mq-deadline registered
    [    0.253723] io scheduler kyber registered
    [    0.257019] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.302947] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.304962] STMicroelectronics ASC driver initialized
    [    0.305603] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.307098] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.307098] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.307128] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.307128] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.314147] brd: module loaded
    [    0.318725] loop: module loaded
    [    0.323150] CAN device driver interface
    [    0.323577] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.323577] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.323608] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.323638] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.324523] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.324554] usbcore: registered new interface driver pegasus
    [    0.324584] usbcore: registered new interface driver asix
    [    0.324615] usbcore: registered new interface driver ax88179_178a
    [    0.324645] usbcore: registered new interface driver cdc_ether
    [    0.324707] usbcore: registered new interface driver smsc75xx
    [    0.324737] usbcore: registered new interface driver smsc95xx
    [    0.324768] usbcore: registered new interface driver net1080
    [    0.324798] usbcore: registered new interface driver cdc_subset
    [    0.324798] usbcore: registered new interface driver zaurus
    [    0.324859] usbcore: registered new interface driver cdc_ncm
    [    0.325561] usbcore: registered new interface driver usb-storage
    [    0.326110] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
    [    0.326141] omap4-keypad 4ae1c00000000100.keypad: no base address specified
    [    0.326141] omap4-keypad: probe of 4ae1c00000000100.keypad failed with error -22
    [    0.326568] i2c_dev: i2c /dev entries driver
    [    0.329010] sdhci: Secure Digital Host Controller Interface driver
    [    0.329040] sdhci: Copyright(c) Pierre Ossman
    [    0.329223] Synopsys Designware Multimedia Card Interface Driver
    [    0.329437] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.330078] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.330383] usbcore: registered new interface driver usbhid
    [    0.330383] usbhid: USB HID core driver
    [    0.333038] NET: Registered PF_INET6 protocol family
    [    0.333923] Segment Routing with IPv6
    [    0.334014] In-situ OAM (IOAM) with IPv6
    [    0.334106] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.334564] NET: Registered PF_PACKET protocol family
    [    0.334564] can: controller area network core
    [    0.334625] NET: Registered PF_CAN protocol family
    [    0.334625] can: raw protocol
    [    0.334625] can: broadcast manager protocol
    [    0.334655] can: netlink gateway - max_hops=1
    [    0.334808] Key type dns_resolver registered
    [    0.334869] ThumbEE CPU extension supported.
    [    0.334869] Registering SWP/SWPB emulation handler
    [    0.335327] omap_voltage_late_init: Voltage driver support not added
    [    0.335327] Power Management for TI OMAP4+ devices.
    [    0.336090] Loading compiled-in X.509 certificates
    [    0.369781] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.375640] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.397674] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.413757] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.414093] OMAP GPIO hardware version 0.1
    [    0.416351] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.423370] printk: console [ttyS2] disabled
    [    0.423400] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.788269] printk: console [ttyS2] enabled
    [    1.800201] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.810180] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.820037] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.829803] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.839691] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.849700] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.859619] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.895996] rtc-ds1307 2-006f: registered as rtc0
    [    1.901062] rtc-ds1307 2-006f: setting system clock to 2025-07-25T23:21:43 UTC (1753485703)
    [    1.909729] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.919860] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.931732] palmas 0-0058: Irq flag is 0x00000008
    [    1.966705] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    2.000244] at24 0-0050: supply vcc not found, using dummy regulator
    [    2.007110] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    2.013916] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    2.023956] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    2.024414] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    2.034118] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.036682] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    2.042816] random: crng init done
    [    2.056396] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    2.065704] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    2.070556] sdhci-omap 4809c000.mmc: supply vqmmc not found, using dummy regulator
    [    2.078277] edt_ft5x06 4-0038: touchscreen probe failed
    [    2.090484] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    2.104095] edt_ft5x06: probe of 4-0038 failed with error -121
    [    2.124237] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    2.134002] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.142944] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.149688] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.158325] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.165191] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.169891] mmc0: new high speed SDHC card at address 5048
    [    2.170928] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.176849] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    2.183990] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.184051] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:10
    [    2.206390]  mmcblk0: p1 p2
    [    2.206634] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:11
    [    2.218109] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.240966] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.248687] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.259582] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.266906] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.282287] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.292266] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.309204] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.318267] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.326446] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.334777] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.340301] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    3.348693] dra7-pcie 51000000.pcie: Phy link never came up
    [    3.354461] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    3.360748] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    3.366271] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    3.372497] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    3.379455] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    3.385498] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    3.391815] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    3.398193] pci 0000:00:00.0: supports D1
    [    3.402221] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    3.415740] PCI: bus0: Fast back to back transfers disabled
    [    3.421661] PCI: bus1: Fast back to back transfers enabled
    [    3.427215] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    3.434051] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    3.440887] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    3.446502] pcieport 0000:00:00.0: PME: Signaling with IRQ 138
    [    3.458435] edma 43300000.dma: memcpy is disabled
    [    3.466522] edma 43300000.dma: TI EDMA DMA engine driver
    [    3.478271] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    3.486053] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    3.492706] platform 40800000.dsp: Adding to iommu group 0
    [    3.499725] platform 58820000.ipu: Adding to iommu group 1
    [    3.505432] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    3.513275] platform 55020000.ipu: Adding to iommu group 2
    [    3.518859] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    3.531036] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    3.539855] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    3.555877] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    3.563140] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    3.569976] platform 41000000.dsp: Adding to iommu group 3
    [    3.578002] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    3.596496] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    3.605834] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    3.614898] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    3.628326] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    3.641296] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    3.655395] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.666687] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.668823] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.689300] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.702972] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.709747] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.722717] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.736358] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.750427] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.764526] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.780395] clk: Disabling unused clocks
    [    3.789459] l3init-clkctrl:0030:0: failed to disable
    [    3.860198] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.869171] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.882720] devtmpfs: mounted
    [    3.886749] Freeing unused kernel image (initmem) memory: 2048K
    [    3.892791] Run /sbin/init as init process
    [    3.896942]   with arguments:
    [    3.896942]     /sbin/init
    [    3.896942]   with environment:
    [    3.896942]     HOME=/
    [    3.896942]     TERM=linux
    [    3.917877] mmc1: new DDR MMC card at address 0001
    [    3.923156] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.929718]  mmcblk1: p1 p2
    [    3.933074] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.939636] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.945495] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    4.286773] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    4.319030] systemd[1]: Detected architecture arm.
    [    4.355316] systemd[1]: Hostname set to <am57xx-evm>.
    [    4.500213] systemd-sysv-generator[109]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.525299] systemd-sysv-generator[109]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.763519] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.828887] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.851226] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.931793] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.941192] systemd[1]: Created slice Slice /system/getty.
    [    4.975555] systemd[1]: Created slice Slice /system/modprobe.
    [    5.014923] systemd[1]: Created slice Slice /system/serial-getty.
    [    5.055114] systemd[1]: Created slice User and Session Slice.
    [    5.094268] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.134765] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.174438] systemd[1]: Reached target Path Units.
    [    5.214447] systemd[1]: Reached target Remote File Systems.
    [    5.254119] systemd[1]: Reached target Slice Units.
    [    5.294525] systemd[1]: Reached target Swaps.
    [    5.347167] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.384246] systemd[1]: Reached target RPC Port Mapper.
    [    5.433013] systemd[1]: Listening on Process Core Dump Socket.
    [    5.474334] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.563232] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    5.574707] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.614501] systemd[1]: Listening on Journal Socket.
    [    5.644592] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.684631] systemd[1]: Listening on udev Control Socket.
    [    5.724731] systemd[1]: Listening on udev Kernel Socket.
    [    5.764434] systemd[1]: Listening on User Database Manager Socket.
    [    5.804931] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.874389] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.916778] systemd[1]: Mounting Kernel Debug File System...
    [    5.946716] systemd[1]: Mounting Kernel Trace File System...
    [    5.985473] systemd[1]: Mounting Temporary Directory /tmp...
    [    6.018066] systemd[1]: Starting Create List of Static Device Nodes...
    [    6.057495] systemd[1]: Starting Load Kernel Module configfs...
    [    6.096862] systemd[1]: Starting Load Kernel Module drm...
    [    6.127319] systemd[1]: Starting Load Kernel Module fuse...
    [    6.169067] systemd[1]: Starting Start psplash boot splash screen...
    [    6.208312] systemd[1]: Starting RPC Bind...
    [    6.234436] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    6.247802] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    6.260833] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    6.334686] systemd[1]: Starting Journal Service...
    [    6.369201] systemd[1]: Starting Load Kernel Modules...
    [    6.406402] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.446258] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.476409] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.486511] systemd[1]: Starting Coldplug All udev Devices...
    [    6.522003] systemd[1]: Started RPC Bind.
    [    6.554443] systemd[1]: Started Journal Service.
    [    7.138885] systemd-journald[122]: Received client request to flush runtime journal.
    [    7.981842] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    8.017395] remoteproc remoteproc0: 58820000.ipu is available
    [    8.018463] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    8.049224] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    8.067230] remoteproc remoteproc1: 55020000.ipu is available
    [    8.076934] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    8.088134] remoteproc remoteproc2: 40800000.dsp is available
    [    8.094238] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    8.094879] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    8.120086] remoteproc remoteproc3: 41000000.dsp is available
    [    8.157684] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    8.166320] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    8.678070] pwm-backlight backlight: supply power not found, using dummy regulator
    [    8.715148] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    8.737274] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    8.756591] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.758178] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    8.762298] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.779510] panel-simple display: supply power not found, using dummy regulator
    [    8.786071] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.825805] panel-simple display: Specify missing connector_type
    [    8.851013] omap_rtc 48838000.rtc: registered as rtc2
    [    8.878540] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.888549] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.921661] omap-iommu 58882000.mmu: no fck found
    [    8.926483] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.934295] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    8.951080] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu2-memory@95800000
    [    8.965087] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu1-memory@9d000000
    [    8.974975] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.976715] virtio_rpmsg_bus virtio1: creating channel rpmsg-client-sample addr 0x32
    [    8.980590] rproc-virtio rproc-virtio.2.auto: registered virtio1 (type 7)
    [    8.995208] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    9.020202] videodev: Linux video capture interface: v2.00
    [    9.030639] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    9.054870] virtio_rpmsg_bus virtio1: creating channel rpmsg-client-sample addr 0x33
    [    9.062774] virtio_rpmsg_bus virtio1: creating channel rpmsg-omx addr 0x3c
    [    9.062866] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    9.081146] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    9.089904] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    9.098968] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    9.105010] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    9.105041] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    9.152374] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    9.168304] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    9.182067] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    9.183013] omap-des 480a5000.des: will run requests pump with realtime priority
    [    9.187805] rproc-virtio rproc-virtio.1.auto: registered virtio0 (type 7)
    [    9.195281] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    9.201934] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    9.238830] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x66
    [    9.255340] scsi host0: ahci-dwc
    [    9.258789] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 161
    [    9.313903] remoteproc remoteproc2: powering up 40800000.dsp
    [    9.320007] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    9.329895] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    9.335845] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    9.357116] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [    9.367248] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    9.368560] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    9.373901] remoteproc remoteproc3: powering up 41000000.dsp
    [    9.392120] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    9.396331] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    9.400268] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    9.415100] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    9.422912] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    9.424072] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    9.428833] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    9.444091] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    9.462158] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    9.470001] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    9.483093] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [    9.492492] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    9.498748] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    9.506591] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.512176] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    9.512176] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    9.519042] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    9.531524] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    9.541992] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    9.549224] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    9.605102] ata1: SATA link down (SStatus 0 SControl 300)
    [    9.637878] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    9.695587] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    9.709594] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    9.734283] vpe 489d0000.vpe: Device registered as /dev/video0
    [    9.738311] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    9.748107] DSS: OMAP DSS rev 6.1
    [    9.774078] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    9.813629] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
    [    9.825744] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    9.874664] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    9.924591] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.964660] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
    [    9.996063] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [   10.104858] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 333, Function: vip_init_format_info ****************************
    [   10.133422] dmm 4e000000.dmm: workaround for errata i878 in use
    [   10.217254] dmm 4e000000.dmm: initialized all PAT entries
    [   10.255859] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3617, Function: get_field ****************************
    [   10.276885] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [   10.425323] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 529, Function: vip_shared_set_clock_enable ****************************
    [   10.440338] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [   10.479980] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.574005] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 569, Function: vip_top_vpdma_reset ****************************
    [   10.668579] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   10.738891] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.783020] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.872589] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   10.981048] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.989593] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
    [   11.114044] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   11.281555] omapdss error: HDMI I2C Master Error
    [   11.297119] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
    [   11.310607] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   11.336334] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   11.341949] [drm] Enabling DMM ywrap scrolling
    [   11.350463] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.391113] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   11.396270] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   11.396270] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.396301] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   11.396301] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   11.397338] xhci-hcd xhci-hcd.6.auto: irq 169, io mem 0x48890000
    [   11.397491] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   11.397491] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   11.397521] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   11.398071] hub 1-0:1.0: USB hub found
    [   11.398101] hub 1-0:1.0: 1 port detected
    [   11.398529] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   11.404541] hub 2-0:1.0: USB hub found
    [   11.404571] hub 2-0:1.0: 1 port detected
    [   11.452728] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.452728] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
    [   11.452728] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.452789] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
    [   11.452880] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
    [   11.452911] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.453582] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.453582] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
    [   11.453582] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
    [   11.453643] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [   11.456237] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
    [   11.456237] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
    [   11.474029] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3624, Function: vip_vpdma_fw_cb ****************************
    [   11.474029] vip 48990000.vip: VPDMA firmware loaded
    [   11.474029] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3801, Function: vip_probe_complete ****************************
    [   11.474060] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   11.474060] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3583, Function: alloc_port ****************************
    [   11.474060] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3712, Function: vip_register_subdev_notif ****************************
    [   11.474121] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3669, Function: vip_async_bound ****************************
    [   11.474121] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 396, Function: notifier_to_vip_port ****************************
    [   11.474151] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [   11.474151] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3634, Function: vip_create_streams ****************************
    [   11.474151] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474151] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474151] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474151] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474182] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3500, Function: free_stream ****************************
    [   11.474212] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3527, Function: get_subdev_active_format ****************************
    [   11.474243] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474243] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474243] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474243] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474243] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474243] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474273] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474304] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474334] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474334] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474365] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474365] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474365] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474365] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474365] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474365] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474395] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474395] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474395] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474395] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474395] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474395] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474426] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474426] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474426] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474426] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 437, Function: vip_csc_direction ****************************
    [   11.474426] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 402, Function: vip_is_mbuscode_yuv ****************************
    [   11.474426] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 408, Function: vip_is_mbuscode_rgb ****************************
    [   11.474426] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.474456] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3691, Function: vip_async_complete ****************************
    [   11.474456] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   11.474456] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   11.474487] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
    [   11.516601] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   11.516601] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.601074] Console: switching to colour frame buffer device 128x37
    [   11.773986] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   11.786132] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   12.984008] ------------[ cut here ]------------
    [   12.989105] WARNING: CPU: 0 PID: 159 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   13.003692] Hot plug detection already enabled
    [   13.003845] hub 1-1:1.0: USB hub found
    [   13.008178] Modules linked in: irq_pruss_intc icss_iep rpmsg_ctrl rpmsg_char dwc3 snd_soc_tlv320aic3x_i2c snd_soc_tlv320aic3x snd_soc_davinci_mcasp snd_soc_simple_card snd_soc_ti_udma snd_soc_simple_card_utils snd_soc_ti_edma snd_soc_ti_sdma ti_vip snd_soc_core ti_vpe ti_sc omapdrm(+) ti_csc v4l2_mem2mem ti_vpdma snd_pcm_dmaengine ov5640 ac97_bus videobuf2_dma_contig videobuf2_memops snd_pcm cec videobuf2_v4l2 pruss omap_aes_driver videobuf2_common snd_timer v4l2_fwnode libaes omap_des snd omap_wdt v4l2_async omap_hwspinlock ahci_dwc omap_crypto videodev dwc3_omap libdes rtc_omap soundcore pwm_tiehrpwm extcon_palmas omap_sham crypto_engine omap_remoteproc virtio_rpmsg_bus rpmsg_ns rpmsg_core ti_tpd12s015 display_connector
    [   13.076507] hub 1-1:1.0: 4 ports detected
    [   13.076507] CPU: 0 PID: 159 Comm: systemd-udevd Not tainted 6.1.119-00007-gcbebd7e94d2a-dirty #36
    [   13.089447] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   13.095550]  unwind_backtrace from show_stack+0x10/0x14
    [   13.100830]  show_stack from dump_stack_lvl+0x40/0x4c
    [   13.105895]  dump_stack_lvl from __warn+0x7c/0x158
    [   13.110717]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   13.115875]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   13.122192]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   13.129028]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   13.135070]  platform_probe from really_probe+0xc8/0x2ec
    [   13.140411]  really_probe from __driver_probe_device+0x88/0x1a0
    [   13.146362]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   13.152923]  driver_probe_device from __driver_attach+0x90/0x174
    [   13.158966]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   13.164672]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   13.170440]  bus_add_driver from driver_register+0x88/0x11c
    [   13.176055]  driver_register from __platform_register_drivers+0x38/0x88
    [   13.182708]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   13.190124]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   13.196624]  do_one_initcall from do_init_module+0x44/0x1d4
    [   13.202209]  do_init_module from sys_finit_module+0xc0/0x110
    [   13.207916]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   13.213775] Exception stack(0xf204dfa8 to 0xf204dff0)
    [   13.218841] dfa0:                   00000000 00000000 0000000f b6d3a8a0 00000000 00020000
    [   13.227081] dfc0: 00000000 00000000 00000000 0000017b 00000000 00098cb8 00000007 00000000
    [   13.235290] dfe0: be8586d8 be8586c8 b6d35d4f b6c6b052
    [   13.240386] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   13.240386] ---[ end trace 0000000000000000 ]---
    [   13.252929] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   13.325347] hub 2-1:1.0: USB hub found
    [   13.343353] hub 2-1:1.0: 4 ports detected
    [   13.472839] usbcore: registered new device driver onboard-usb-hub
    [   13.767211] hub 1-1:1.0: USB hub found
    [   13.771057] hub 1-1:1.0: 4 ports detected
    [   13.943176] hub 1-1:1.0: USB hub found
    [   13.947052] hub 1-1:1.0: 4 ports detected
    [   14.103302] hub 2-1:1.0: USB hub found
    [   14.107147] hub 2-1:1.0: 4 ports detected
    [   14.151275] hub 2-1:1.0: USB hub found
    [   14.155120] hub 2-1:1.0: 4 ports detected
    [   15.498321] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   16.082519] Bluetooth: Core ver 2.22
    [   16.099884] NET: Registered PF_BLUETOOTH protocol family
    [   16.146423] Bluetooth: HCI device and connection manager initialized
    [   16.164581] Bluetooth: HCI socket layer initialized
    [   16.184082] Bluetooth: L2CAP socket layer initialized
    [   16.203979] Bluetooth: SCO socket layer initialized
    [   16.260772] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   16.462707] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   16.475097] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   16.602783] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   16.633697] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   16.706970] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   16.741943] Initializing XFRM netlink socket
    [   16.758544] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   23.445861] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   23.484008] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   23.503997] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   23.543975] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   23.575775] omapdss error: HDMI I2C Master Error

    Actually I am getting a vin3a print (as below) in the above dmesg output which I was not getting using my dts file.


    root@am57xx-evm:~# dmesg | grep vin3a
    [   11.474151] vin3a: Port A: Using subdev ov5640 2-003c for capture

    Although the dmesg of working flow (6.03 SDK) contains the following lines where the camera device does get registered :-

    root@am57xx-evm:~# dmesg | grep vin3a
    [    7.681839] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [    7.681846] vin3a: subdev ov5640 2-003c: code: 4001 idx: 0
    [    7.681850] vin3a: subdev ov5640 2-003c: code: 2006 idx: 1
    [    7.681854] vin3a: matched fourcc: NV12: code: 2006 idx: 0
    [    7.681858] vin3a: matched fourcc: UYVY: code: 2006 idx: 1
    [    7.681861] vin3a: matched fourcc: YUYV: code: 2006 idx: 2
    [    7.681864] vin3a: matched fourcc: VYUY: code: 2006 idx: 3
    [    7.681867] vin3a: matched fourcc: YVYU: code: 2006 idx: 4
    [    7.681870] vin3a: matched fourcc: RGB3: code: 2006 idx: 5
    [    7.681872] vin3a: matched fourcc: RGB4: code: 2006 idx: 6
    [    7.681875] vin3a: matched fourcc: BGR3: code: 2006 idx: 7
    [    7.681878] vin3a: matched fourcc: BGR4: code: 2006 idx: 8
    [    7.681881] vin3a: subdev ov5640 2-003c: code: 2008 idx: 2
    [    7.681884] vin3a: subdev ov5640 2-003c: code: 1008 idx: 3
    [    7.681887] vin3a: subdev ov5640 2-003c: code: 1007 idx: 4
    [    7.682057] vin3a-0: device registered as video1
    

    What could be the reason behind this behaviour ??

    If you could provide any insights based on the lsmod and dmesg outputs shared above, that would be helpful. 

     

    Thanks and regards!

  • Hi Vishal,

    Actually I am getting a vin3a print (as below) in the above dmesg output which I was not getting using my dts file.

    I assume there is some issue with your device tree in comparison with the version from the previous E2E.

    What could be the reason behind this behaviour ??

    Can you add prints to the drivers/media/platform/ti/vpe/vip.c driver? It appears that the streams are not being created/allocated based on the missing dmesg statements.

    Best,
    Jared

  • Hi Jared,

    I assume there is some issue with your device tree in comparison with the version from the previous E2E.

    here is the dtsi file (arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi). Please help me put what content is missing in it. I can share any other dtsi file if needed.

    // SPDX-License-Identifier: GPL-2.0-only
    /*
     * Copyright (C) 2014-2016 Texas Instruments Incorporated - https://www.ti.com/
     */
    /dts-v1/;
    
    #include "am5728.dtsi"
    #include "am57xx-commercial-grade.dtsi"
    #include "dra74x-mmc-iodelay.dtsi"
    #include "dra74-ipu-dsp-common.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc1 = &tps659038_rtc;
    		rtc2 = &rtc;
    		//display0 = &hdmi0;
    		display0 = "/display";
    	};
    
    	gpio-keys {
                    compatible = "gpio-keys";
    
                    button-user1 {
                            gpios = <&gpio1 14 0>;
                            label = "HOOK_INT";
    			linux,code = <103>;
                    };
    
                    button-user2 {
    			gpios = <&gpio2 6 1>;
                            label = "KEYL_INT";
    			linux,code = <102>;
                    };
    
                    button-user3 {
    			gpios = <&gpio5 1 0>;
                            label = "HEADSET_INT";
    			linux,code = <108>;
                    };
    
            };
    		
    	keypad: keypad@4ae1c000 {
                            compatible = "ti,omap4-keypad";
    			reg = <0x4ae1c000 0x100>;
                            //reg = <0x4ae1c000 0x80>;
                            interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
                            keypad,num-rows = <4>;
                            keypad,num-columns = <4>;
                            linux,input-no-autorepeat;
                            linux,keymap = <
                                    0x00000041 0x00010042 0x00020043 0x00030044
                                    0x01000045 0x01010046 0x01020047 0x01030048
                                    0x02000049 0x0201004a 0x0202004b 0x0203004c
                                    0x0300004d 0x0301004e 0x0302004f 0x03030050
                                    >;
    			status = "okay";
                    };
    
    
    	chosen {
    		stdout-path = &uart3;
    	};
    
    	memory@0 {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    
    	main_12v0: fixedregulator-main_12v0 {
    		/* main supply */
    		compatible = "regulator-fixed";
    		regulator-name = "main_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	evm_5v0: fixedregulator-evm_5v0 {
    		/* Output of TPS54531D */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&main_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		ipu2_memory_region: ipu2-memory@95800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x95800000 0x0 0x3800000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp1_memory_region: dsp1-memory@99000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x99000000 0x0 0x4000000>;
    			reusable;
    			status = "okay";
    		};
    
    		ipu1_memory_region: ipu1-memory@9d000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9d000000 0x0 0x2000000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp2_memory_region: dsp2-memory@9f000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9f000000 0x0 0x800000>;
    			reusable;
    			status = "okay";
    		};
    	};
    
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	/*leds {
    		compatible = "gpio-leds";
    
    		led0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio7 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio7 15 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "disk-activity";
    			default-state = "off";
    		};
    	};*/
    
    	gpio_fan: gpio_fan {
    		/* Based on 5v 500mA AFB02505HHB */
    		compatible = "gpio-fan";
    		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
    		gpio-fan,speed-map = <0     0>,
    				     <13000 1>;
    		#cooling-cells = <2>;
    	};
    
    	hdmi0: connector {
    		compatible = "hdmi-connector";
    		label = "hdmi";
    
    		type = "a";
    
    		port {
    			hdmi_connector_in: endpoint {
    				remote-endpoint = <&tpd12s015_out>;
    			};
    		};
    	};
    	
    	
    	
    	clk_ov5640_fixed: clk_ov5640_fixed {
                            compatible = "fixed-clock";
                            #clock-cells = <0>;
                            clock-frequency = <24000000>;
                    };
    	clk_ov5640: clk_ov5640 {
                            compatible = "gpio-gate-clock";
                            #clock-cells = <0>;
                            clocks = <&clk_ov5640_fixed>;
                            enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
                    };
    
    	
    	tpd12s015: encoder {
    		compatible = "ti,tpd12s015";
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				tpd12s015_in: endpoint {
    					remote-endpoint = <&hdmi_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    
    				tpd12s015_out: endpoint {
    					remote-endpoint = <&hdmi_connector_in>;
    				};
    			};
    		};
    	};
    
    	lcd0: display {
                  compatible = "bolymin,btz070f-chc" ,"panel-dpi";
                  //compatible = "osddisplays,osd070t1718-19ts" ,"panel-dpi";
                  backlight = <&lcd_bl>;
                  enable-gpios = <&gpio5 12 GPIO_ACTIVE_HIGH>;
                  attr-gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>; //LCD GPIO [AKSHI] changed in VIC2
                  label = "lcd";
    
    
                  port {
                       lcd_in: endpoint {
                               remote-endpoint = <&dpi_out>;
                               };
                  };
             };
    
             lcd_bl: backlight {
                     compatible = "pwm-backlight";
                     brightness-levels = <0 32 64 96 128 160 192 255>;
                     default-brightness-level = <8>;
                     pwms = <&ehrpwm0 0 50000 0>;
             };
    
    	sound0: sound0 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "BeagleBoard-X15";
    		simple-audio-card,widgets =
    			"Line", "Line Out",
    			"Line", "Line In";
    		simple-audio-card,routing =
    			"Line Out",	"LLOUT",
    			"Line Out",	"RLOUT",
    			"MIC2L",	"Line In",
    			"MIC2R",	"Line In";
    		simple-audio-card,format = "dsp_b";
    		simple-audio-card,bitclock-master = <&sound0_master>;
    		simple-audio-card,frame-master = <&sound0_master>;
    		simple-audio-card,bitclock-inversion;
    
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp3>;
    		};
    
    		sound0_master: simple-audio-card,codec {
    			sound-dai = <&tlv320aic3104>;
    			clocks = <&clkout2_clk>;
    		};
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,palmas-override-powerhold;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			vbus-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
    		};
    
    	};
    
    	tmp102: tmp102@48 {
    		compatible = "ti,tmp102";
    		reg = <0x48>;
    		interrupt-parent = <&gpio7>;
    		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
    		#thermal-sensor-cells = <1>;
    	};
    
    	tlv320aic3104: tlv320aic3104@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3104";
    		reg = <0x18>;
    		assigned-clocks = <&clkoutmux2_clk_mux>;
    		assigned-clock-parents = <&sys_clk2_dclk_div>;
    
    		status = "okay";
    		adc-settle-ms = <40>;
    
    		AVDD-supply = <&vdd_3v3>;
    		IOVDD-supply = <&vdd_3v3>;
    		DRVDD-supply = <&vdd_3v3>;
    		DVDD-supply = <&aic_dvdd>;
    	};
    
    	eeprom: eeprom@50 {
    		compatible = "atmel,24c32";
    		reg = <0x50>;
    	};
    };
    
    
    &vin3a {
            vin3a_ep: endpoint {
                    remote-endpoint = <&cam>;
                    slave-mode;
            };
    };
    
    &vip2 {
            status = "okay";
    };
    
    &i2c3 {
            status = "okay";
            clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    		interrupt-names = "irq", "wakeup";
    	};
    
            
            ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clocks = <&clk_ov5640>;
                    clock-names = "xclk";
                    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <0>;
                                    hsync-active = <1>;
                                    vsync-active = <0>;
                                    pclk-sample = <0>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };
    
    };
    
    
    &ehrpwm0 {
            status = "okay";
    };
    
    &epwmss0 {
            status = "okay";
    };
    
    
    /* [00] ::  Added Touch panel entries */
    &i2c5 {
            status = "okay";
            clock-frequency = <400000>;
    
            polytouch: edt-ft5x06@38 {
                    compatible = "edt,edt-ft5x06";
                    reg = <0x38>;
                    attb-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
                    interrupt-parent = <&gpio5>;
                    interrupts = <9 0>;
            //reset-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
            //wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
    /* AKSHI*/
                    threshold = <20>;
                    touchscreen-size-x = <1024>;
                    touchscreen-size-y = <600>;
                    wakeup-source;
        };
    
    };
    
    
    &gpio7_target {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &cpu0 {
    	vdd-supply = <&smps12_reg>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &davinci_mdio_sw {
    	phy0: ethernet-phy@1 {
    		reg = <1>;
    	};
    
    	phy1: ethernet-phy@2 {
    		reg = <2>;
    	};
    };
    
    &mac_sw {
    	status = "okay";
    };
    
    &cpsw_port1 {
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <1>;
    };
    
    &cpsw_port2 {
    	phy-handle = <&phy1>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc1_pins_default>;
    
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
    	no-1-8-v;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc2_pins_default>;
    
    	vmmc-supply = <&vdd_3v3>;
    	vqmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	non-removable;
    	no-1-8-v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "peripheral";
    };
    
    &cpu_trips {
    	cpu_alert1: cpu_alert1 {
    		temperature = <50000>; /* millicelsius */
    		hysteresis = <2000>; /* millicelsius */
    		type = "active";
    	};
    };
    
    &cpu_cooling_maps {
    	map1 {
    		trip = <&cpu_alert1>;
    		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    	};
    };
    
    &thermal_zones {
    	board_thermal: board_thermal {
    		polling-delay-passive = <1250>; /* milliseconds */
    		polling-delay = <1500>; /* milliseconds */
    
    				/* sensor       ID */
    		thermal-sensors = <&tmp102     0>;
    
    		board_trips: trips {
    			board_alert0: board_alert {
    				temperature = <40000>; /* millicelsius */
    				hysteresis = <2000>; /* millicelsius */
    				type = "active";
    			};
    
    			board_crit: board_crit {
    				temperature = <105000>; /* millicelsius */
    				hysteresis = <0>; /* millicelsius */
    				type = "critical";
    			};
    		};
    
    		board_cooling_maps: cooling-maps {
    			map0 {
    				trip = <&board_alert0>;
    				cooling-device =
    				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    			};
    		};
           };
    };
    
    &dss {
            status = "okay";
            vdda_video-supply = <&ldoln_reg>;
            ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    port {
                            reg = <0>;
                            dpi_out: endpoint {
                                    data-lines = <24>;
                                    remote-endpoint = <&lcd_in>;
                            };
                    };
            };
    };
    
    
    &hdmi {
    	status = "okay";
    	vdda-supply = <&ldo4_reg>;
    
    	port {
    		hdmi_out: endpoint {
    			remote-endpoint = <&tpd12s015_in>;
    		};
    	};
    };
    
    &pcie1_rc {
    	status = "okay";
    	gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
    };
    
    &mcasp3 {
    	#sound-dai-cells = <0>;
    	assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
    	assigned-clock-parents = <&sys_clkin2>;
    	status = "okay";
    
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 4 serializers */
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    		1 2 0 0
    	>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    &ipu2 {
    	status = "okay";
    	memory-region = <&ipu2_memory_region>;
    };
    
    &ipu1 {
    	status = "okay";
    	memory-region = <&ipu1_memory_region>;
    };
    
    &dsp1 {
    	status = "okay";
    	memory-region = <&dsp1_memory_region>;
    };
    
    &dsp2 {
    	status = "okay";
    	memory-region = <&dsp2_memory_region>;
    };
    
    &pruss1_mdio {
    	status = "disabled";
    };
    
    &pruss2_mdio {
    	status = "disabled";
    };
    
    #include "dra7-ipu-common-early-boot.dtsi"

    Can you add prints to the drivers/media/platform/ti/vpe/vip.c driver? It appears that the streams are not being created/allocated based on the missing dmesg statements.

    I have already put prints at the start of each function of the vip.c driver. Where exactly do you want me to put prints in it? Can you send me updated driver file -  drivers/media/platform/ti/vpe/vip.c ?? I mean just send me diff of the original driver with the updated driver with prints.

    I will then compile and send you the dmesg ouput ! 

    Thanks!

     

  • Hi Vishal,

    Please help me put what content is missing in it. I can share any other dtsi file if needed.

    I think you should follow the preexisting dts from the other thread.

    I have already put prints at the start of each function of the vip.c driver. Where exactly do you want me to put prints in it? Can you send me updated driver file -  drivers/media/platform/ti/vpe/vip.c ?? I mean just send me diff of the original driver with the updated driver with prints.

    I want to see why the streams are not being allocated or where it's exiting before then.

    // SPDX-License-Identifier: GPL-2.0
    /*
     * TI VIP capture driver
     *
     * Copyright (C) 2018 Texas Instruments Incorporated -  http://www.ti.com/
     * David Griego, <dagriego@biglakesoftware.com>
     * Dale Farnsworth, <dale@farnsworth.org>
     * Nikhil Devshatwar, <nikhil.nd@ti.com>
     * Benoit Parrot, <bparrot@ti.com>
     */
    
    #include <linux/clk.h>
    #include <linux/delay.h>
    #include <linux/dma-mapping.h>
    #include <linux/err.h>
    #include <linux/interrupt.h>
    #include <linux/module.h>
    #include <linux/workqueue.h>
    #include <linux/pm_runtime.h>
    #include <linux/sched.h>
    #include <linux/mfd/syscon.h>
    #include <linux/regmap.h>
    
    #include <linux/pinctrl/consumer.h>
    #include <linux/of_device.h>
    #include <linux/of_graph.h>
    
    #include "vip.h"
    
    #define VIP_MODULE_NAME "vip"
    
    static int debug;
    module_param(debug, int, 0644);
    MODULE_PARM_DESC(debug, "debug level (0-8)");
    
    /*
     * Minimum and maximum frame sizes
     */
    #define MIN_W		128
    #define MIN_H		128
    #define MAX_W		2048
    #define MAX_H		1536
    
    /*
     * Required alignments
     */
    #define S_ALIGN		0 /* multiple of 1 */
    #define H_ALIGN		1 /* multiple of 2 */
    #define W_ALIGN		1 /* multiple of 2 */
    #define L_ALIGN		7 /* multiple of 128, line stride, 16 bytes */
    
    /*
     * Need a descriptor entry for each of up to 15 outputs,
     * and up to 2 control transfers.
     */
    #define VIP_DESC_LIST_SIZE	(17 * sizeof(struct vpdma_dtd))
    
    #define vip_dbg(level, dev, fmt, arg...)	\
    		v4l2_dbg(level, debug, dev, fmt, ##arg)
    #define vip_err(dev, fmt, arg...)	\
    		v4l2_err(dev, fmt, ##arg)
    #define vip_info(dev, fmt, arg...)	\
    		v4l2_info(dev, fmt, ##arg)
    
    #define CTRL_CORE_SMA_SW_1      0x534
    
    /*
     * port flag bits
     */
    #define FLAG_FRAME_1D		BIT(0)
    #define FLAG_EVEN_LINE_SKIP	BIT(1)
    #define FLAG_ODD_LINE_SKIP	BIT(2)
    #define FLAG_MODE_TILED		BIT(3)
    #define FLAG_INTERLACED		BIT(4)
    #define FLAG_MULTIPLEXED	BIT(5)
    #define FLAG_MULT_PORT		BIT(6)
    #define FLAG_MULT_ANC		BIT(7)
    
    #define VIP_VPDMA_FIFO_SIZE	2
    #define VIP_DROPQ_SIZE		3
    
    /*
     * Define indices into the srce_info tables
     */
    
    #define VIP_SRCE_MULT_PORT	0
    #define VIP_SRCE_MULT_ANC	1
    #define VIP_SRCE_LUMA		2
    #define VIP_SRCE_CHROMA		3
    #define VIP_SRCE_RGB		4
    
    #define reg_read(dev, offset) ioread32((dev)->base + (offset))
    #define reg_write(dev, offset, val) iowrite32((val), (dev)->base + (offset))
    
    #define GET_OFFSET_TOP(port, obj, reg)	\
    	((obj)->res->start - (port)->dev->res->start + (reg))
    
    #define VIP_SET_MMR_ADB_HDR(port, hdr, regs, offset_a)	\
    	VPDMA_SET_MMR_ADB_HDR((port)->mmr_adb, vip_mmr_adb, hdr, regs, offset_a)
    
    /*
     * These represent the module resets bit for slice 1
     * Upon detecting slice2 we simply left shift by 1
     */
    #define VIP_DP_RST	BIT(16)
    #define VIP_PARSER_RST	BIT(18)
    #define VIP_CSC_RST	BIT(20)
    #define VIP_SC_RST	BIT(22)
    #define VIP_DS0_RST	BIT(25)
    #define VIP_DS1_RST	BIT(27)
    
    #define VIP_PARSER_PORT(p)		(VIP_PARSER_PORTA_0 + ((p) * 0x8U))
    #define VIP_PARSER_EXTRA_PORT(p)	(VIP_PARSER_PORTA_1 + ((p) * 0x8U))
    #define VIP_PARSER_CROP_H_PORT(p) \
    		(VIP_PARSER_PORTA_EXTRA4 + ((p) * 0x10U))
    #define VIP_PARSER_CROP_V_PORT(p) \
    		(VIP_PARSER_PORTA_EXTRA5 + ((p) * 0x10U))
    #define VIP_PARSER_STOP_IMM_PORT(p)	(VIP_PARSER_PORTA_EXTRA6 + ((p) * 0x4U))
    
    #define PARSER_IRQ_MASK (VIP_PORTA_OUTPUT_FIFO_YUV | \
    			 VIP_PORTB_OUTPUT_FIFO_YUV)
    
    /*
     * The srce_info structure contains per-srce data.
     */
    struct vip_srce_info {
    	u8	base_channel;	/* the VPDMA channel number */
    	u8	vb_index;	/* input frame f, f-1, f-2 index */
    	u8	vb_part;	/* identifies section of co-planar formats */
    };
    
    static struct vip_srce_info srce_info[5] = {
    	[VIP_SRCE_MULT_PORT] = {
    		.base_channel	= VIP1_CHAN_NUM_MULT_PORT_A_SRC0,
    		.vb_index	= 0,
    		.vb_part	= VIP_CHROMA,
    	},
    	[VIP_SRCE_MULT_ANC] = {
    		.base_channel	= VIP1_CHAN_NUM_MULT_ANC_A_SRC0,
    		.vb_index	= 0,
    		.vb_part	= VIP_LUMA,
    	},
    	[VIP_SRCE_LUMA] = {
    		.base_channel	= VIP1_CHAN_NUM_PORT_A_LUMA,
    		.vb_index	= 1,
    		.vb_part	= VIP_LUMA,
    	},
    	[VIP_SRCE_CHROMA] = {
    		.base_channel	= VIP1_CHAN_NUM_PORT_A_CHROMA,
    		.vb_index	= 1,
    		.vb_part	= VIP_CHROMA,
    	},
    	[VIP_SRCE_RGB] = {
    		.base_channel	= VIP1_CHAN_NUM_PORT_A_RGB,
    		.vb_part	= VIP_LUMA,
    	},
    };
    
    static struct vip_fmt vip_formats[VIP_MAX_ACTIVE_FMT] = {
    	{
    		.fourcc		= V4L2_PIX_FMT_NV12,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 1,
    		.vpdma_fmt	= { &vpdma_yuv_fmts[VPDMA_DATA_FMT_Y420],
    				    &vpdma_yuv_fmts[VPDMA_DATA_FMT_C420],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_UYVY,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_yuv_fmts[VPDMA_DATA_FMT_CBY422],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_YUYV,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_yuv_fmts[VPDMA_DATA_FMT_YCB422],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_VYUY,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_yuv_fmts[VPDMA_DATA_FMT_CRY422],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_YVYU,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_yuv_fmts[VPDMA_DATA_FMT_YCR422],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_RGB24,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_RGB24],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_RGB32,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_ARGB32],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_BGR24,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_BGR24],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_BGR32,
    		.code		= MEDIA_BUS_FMT_UYVY8_2X8,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_ABGR32],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_RGB24,
    		.code		= MEDIA_BUS_FMT_RGB888_1X24,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_RGB24],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_RGB32,
    		.code		= MEDIA_BUS_FMT_ARGB8888_1X32,
    		.colorspace	= V4L2_COLORSPACE_SRGB,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_rgb_fmts[VPDMA_DATA_FMT_ARGB32],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_SBGGR8,
    		.code		= MEDIA_BUS_FMT_SBGGR8_1X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_SGBRG8,
    		.code		= MEDIA_BUS_FMT_SGBRG8_1X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_SGRBG8,
    		.code		= MEDIA_BUS_FMT_SGRBG8_1X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8],
    				  },
    	},
    	{
    		.fourcc		= V4L2_PIX_FMT_SRGGB8,
    		.code		= MEDIA_BUS_FMT_SRGGB8_1X8,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8],
    				  },
    	},
    	{
    		/* V4L2 currently only defines one 16 bit variant */
    		.fourcc		= V4L2_PIX_FMT_SBGGR16,
    		.code		= MEDIA_BUS_FMT_SBGGR16_1X16,
    		.colorspace	= V4L2_COLORSPACE_SMPTE170M,
    		.coplanar	= 0,
    		.vpdma_fmt	= { &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW16],
    				  },
    	},
    };
    
    /*
     * DMA address/data block for the shadow registers
     */
    struct vip_mmr_adb {
    	struct vpdma_adb_hdr	sc_hdr0;
    	u32			sc_regs0[7];
    	u32			sc_pad0[1];
    	struct vpdma_adb_hdr	sc_hdr8;
    	u32			sc_regs8[6];
    	u32			sc_pad8[2];
    	struct vpdma_adb_hdr	sc_hdr17;
    	u32			sc_regs17[9];
    	u32			sc_pad17[3];
    	struct vpdma_adb_hdr	csc_hdr;
    	u32			csc_regs[6];
    	u32			csc_pad[2];
    };
    
    /*
     * Function prototype declarations
     */
    static int alloc_port(struct vip_dev *, int);
    static void free_port(struct vip_port *);
    static int vip_setup_parser(struct vip_port *port);
    static int vip_setup_scaler(struct vip_stream *stream);
    static void vip_enable_parser(struct vip_port *port, bool on);
    static void vip_reset_parser(struct vip_port *port, bool on);
    static void vip_parser_stop_imm(struct vip_port *port, bool on);
    static void stop_dma(struct vip_stream *stream, bool clear_list);
    static int vip_load_vpdma_list_fifo(struct vip_stream *stream);
    static inline bool is_scaler_available(struct vip_port *port);
    static inline bool allocate_scaler(struct vip_port *port);
    static inline void free_scaler(struct vip_port *port);
    static bool is_csc_available(struct vip_port *port);
    static bool allocate_csc(struct vip_port *port,
    			 enum vip_csc_state csc_direction);
    static void free_csc(struct vip_port *port);
    
    /* initialize  v4l2_format_info member in vip_formats array */
    static void vip_init_format_info(struct device *dev)
    {
    	struct vip_fmt *fmt;
    	int i;
    
    	for (i = 0; i < ARRAY_SIZE(vip_formats); i++) {
    		fmt = &vip_formats[i];
    		fmt->finfo = v4l2_format_info(fmt->fourcc);
    	}
    }
    
    /*  Print Four-character-code (FOURCC) */
    static char *fourcc_to_str(u32 fmt)
    {
    	static char code[5];
    
    	code[0] = (unsigned char)(fmt & 0xff);
    	code[1] = (unsigned char)((fmt >> 8) & 0xff);
    	code[2] = (unsigned char)((fmt >> 16) & 0xff);
    	code[3] = (unsigned char)((fmt >> 24) & 0xff);
    	code[4] = '\0';
    
    	return code;
    }
    
    /*
     * Find our format description corresponding to the passed v4l2_format
     */
    static struct vip_fmt *find_port_format_by_pix(struct vip_port *port,
    					       u32 pixelformat)
    {
    	struct vip_fmt *fmt;
    	unsigned int k;
    
    	for (k = 0; k < port->num_active_fmt; k++) {
    		fmt = port->active_fmt[k];
    		if (fmt->fourcc == pixelformat)
    			return fmt;
    	}
    
    	return NULL;
    }
    
    static struct vip_fmt *find_port_format_by_code(struct vip_port *port,
    						u32 code)
    {
    	struct vip_fmt *fmt;
    	unsigned int k;
    
    	for (k = 0; k < port->num_active_fmt; k++) {
    		fmt = port->active_fmt[k];
    		if (fmt->code == code)
    			return fmt;
    	}
    
    	return NULL;
    }
    
    inline struct vip_port *notifier_to_vip_port(struct v4l2_async_notifier *n)
    {
    	return container_of(n, struct vip_port, notifier);
    }
    
    static bool vip_is_mbuscode_yuv(u32 code)
    {
    	return ((code & 0xff00) == 0x2000);
    }
    
    static bool vip_is_mbuscode_rgb(u32 code)
    {
    	return ((code & 0xff00) == 0x1000);
    }
    
    static bool vip_is_mbuscode_raw(u32 code)
    {
    	return ((code & 0xff00) == 0x3000);
    }
    
    /*
     * This is not an accurate conversion but it is only used to
     * assess if color conversion is needed.
     */
    static u32 vip_mbus_code_to_fourcc(u32 code)
    {
    	if (vip_is_mbuscode_rgb(code))
    		return V4L2_PIX_FMT_RGB24;
    
    	if (vip_is_mbuscode_yuv(code))
    		return V4L2_PIX_FMT_UYVY;
    
    	return V4L2_PIX_FMT_SBGGR8;
    }
    
    static enum vip_csc_state
    vip_csc_direction(u32 src_code, const struct v4l2_format_info *dfinfo)
    {
    	if (vip_is_mbuscode_yuv(src_code) && v4l2_is_format_rgb(dfinfo))
    		return VIP_CSC_Y2R;
    	else if (vip_is_mbuscode_rgb(src_code) && v4l2_is_format_yuv(dfinfo))
    		return VIP_CSC_R2Y;
    	else
    		return VIP_CSC_NA;
    }
    
    /*
     * Insert a masked field into a 32-bit field
     */
    static void insert_field(u32 *valp, u32 field, u32 mask, int shift)
    {
    	u32 val = *valp;
    
    	val &= ~(mask << shift);
    	val |= (field & mask) << shift;
    	*valp = val;
    }
    
    /*
     * Set the headers for all of the address/data block structures.
     */
    static void init_adb_hdrs(struct vip_port *port)
    {
    	VIP_SET_MMR_ADB_HDR(port, sc_hdr0, sc_regs0,
    			    GET_OFFSET_TOP(port, port->dev->sc, CFG_SC0));
    	VIP_SET_MMR_ADB_HDR(port, sc_hdr8, sc_regs8,
    			    GET_OFFSET_TOP(port, port->dev->sc, CFG_SC8));
    	VIP_SET_MMR_ADB_HDR(port, sc_hdr17, sc_regs17,
    			    GET_OFFSET_TOP(port, port->dev->sc, CFG_SC17));
    	VIP_SET_MMR_ADB_HDR(port, csc_hdr, csc_regs,
    			    GET_OFFSET_TOP(port, port->dev->csc, CSC_CSC00));
    
    };
    
    static void vip_module_reset(struct vip_dev *dev, uint32_t module, bool on)
    {
    	u32 val = 0;
    
    	val = reg_read(dev, VIP_CLK_RESET);
    
    	if (dev->slice_id == VIP_SLICE2)
    		module <<= 1;
    
    	if (on)
    		val |= module;
    	else
    		val &= ~module;
    
    	reg_write(dev, VIP_CLK_RESET, val);
    }
    
    /*
     * Enable or disable the VIP clocks
     */
    static void vip_set_clock_enable(struct vip_dev *dev, bool on)
    {
    	u32 val = 0;
    
    	val = reg_read(dev, VIP_CLK_ENABLE);
    	if (on) {
    		val |= VIP_VPDMA_CLK_ENABLE;
    		if (dev->slice_id == VIP_SLICE1)
    			val |= VIP_VIP1_DATA_PATH_CLK_ENABLE;
    		else
    			val |= VIP_VIP2_DATA_PATH_CLK_ENABLE;
    	} else {
    		if (dev->slice_id == VIP_SLICE1)
    			val &= ~VIP_VIP1_DATA_PATH_CLK_ENABLE;
    		else
    			val &= ~VIP_VIP2_DATA_PATH_CLK_ENABLE;
    
    		/* Both VIP are disabled then shutdown VPDMA also */
    		if (!(val & (VIP_VIP1_DATA_PATH_CLK_ENABLE |
    			     VIP_VIP2_DATA_PATH_CLK_ENABLE)))
    			val = 0;
    	}
    
    	reg_write(dev, VIP_CLK_ENABLE, val);
    }
    
    /* This helper function is used to enable the clock early on to
     * enable vpdma firmware loading before the slice device are created
     */
    static void vip_shared_set_clock_enable(struct vip_shared *shared, bool on)
    {
    	u32 val = 0;
    
    	if (on)
    		val = VIP_VIP1_DATA_PATH_CLK_ENABLE | VIP_VPDMA_CLK_ENABLE;
    
    	reg_write(shared, VIP_CLK_ENABLE, val);
    }
    
    static void vip_top_reset(struct vip_dev *dev)
    {
    	u32 val = 0;
    
    	val = reg_read(dev, VIP_CLK_RESET);
    
    	if (dev->slice_id == VIP_SLICE1)
    		insert_field(&val, 1, VIP_DATA_PATH_CLK_RESET_MASK,
    			     VIP_VIP1_DATA_PATH_RESET_SHIFT);
    	else
    		insert_field(&val, 1, VIP_DATA_PATH_CLK_RESET_MASK,
    			     VIP_VIP2_DATA_PATH_RESET_SHIFT);
    
    	reg_write(dev, VIP_CLK_RESET, val);
    
    	usleep_range(200, 250);
    
    	val = reg_read(dev, VIP_CLK_RESET);
    
    	if (dev->slice_id == VIP_SLICE1)
    		insert_field(&val, 0, VIP_DATA_PATH_CLK_RESET_MASK,
    			     VIP_VIP1_DATA_PATH_RESET_SHIFT);
    	else
    		insert_field(&val, 0, VIP_DATA_PATH_CLK_RESET_MASK,
    			     VIP_VIP2_DATA_PATH_RESET_SHIFT);
    	reg_write(dev, VIP_CLK_RESET, val);
    }
    
    static void vip_top_vpdma_reset(struct vip_shared *shared)
    {
    	u32 val;
    
    	val = reg_read(shared, VIP_CLK_RESET);
    	insert_field(&val, 1, VIP_VPDMA_CLK_RESET_MASK,
    		     VIP_VPDMA_CLK_RESET_SHIFT);
    	reg_write(shared, VIP_CLK_RESET, val);
    
    	usleep_range(200, 250);
    
    	val = reg_read(shared, VIP_CLK_RESET);
    	insert_field(&val, 0, VIP_VPDMA_CLK_RESET_MASK,
    		     VIP_VPDMA_CLK_RESET_SHIFT);
    	reg_write(shared, VIP_CLK_RESET, val);
    }
    
    static void vip_set_pclk_invert(struct vip_port *port)
    {
    	u32 offset;
    	/*
    	 * When the VIP parser is configured to so that the pixel clock
    	 * is to be sampled at falling edge, the pixel clock needs to be
    	 * inverted before it is given to the VIP module. This is done
    	 * by setting a bit in the CTRL_CORE_SMA_SW1 register.
    	 */
    
    	if (port->dev->instance_id == VIP_INSTANCE1) {
    		offset = 0 + 2 * port->port_id + port->dev->slice_id;
    	} else if (port->dev->instance_id == VIP_INSTANCE2) {
    		offset = 4 + 2 * port->port_id + port->dev->slice_id;
    	} else if (port->dev->instance_id == VIP_INSTANCE3) {
    		offset = 10 - port->dev->slice_id;
    	} else {
    		vip_err(port, "%s: VIP instance id out of range...\n",
    			__func__);
    		return;
    	}
    
    	if (port->dev->syscon_pol)
    		regmap_update_bits(port->dev->syscon_pol,
    				   port->dev->syscon_pol_offset,
    				   1 << offset, 1 << offset);
    }
    
    static void vip_set_data_interface(struct vip_port *port,
    				   enum data_interface_modes mode)
    {
    	u32 val = 0;
    
    	insert_field(&val, mode, VIP_DATA_INTERFACE_MODE_MASK,
    		     VIP_DATA_INTERFACE_MODE_SHFT);
    
    	reg_write(port->dev->parser, VIP_PARSER_MAIN_CFG, val);
    }
    
    static void vip_set_slice_path(struct vip_dev *dev,
    			       enum data_path_select data_path, u32 path_val)
    {
    	u32 val = 0;
    	int data_path_reg;
    
    	data_path_reg = VIP_VIP1_DATA_PATH_SELECT + 4 * dev->slice_id;
    
    	switch (data_path) {
    	case ALL_FIELDS_DATA_SELECT:
    		val |= path_val;
    		break;
    	case VIP_CSC_SRC_DATA_SELECT:
    		insert_field(&val, path_val, VIP_CSC_SRC_SELECT_MASK,
    			     VIP_CSC_SRC_SELECT_SHFT);
    		break;
    	case VIP_SC_SRC_DATA_SELECT:
    		insert_field(&val, path_val, VIP_SC_SRC_SELECT_MASK,
    			     VIP_SC_SRC_SELECT_SHFT);
    		break;
    	case VIP_RGB_SRC_DATA_SELECT:
    		val |= (path_val) ? VIP_RGB_SRC_SELECT : 0;
    		break;
    	case VIP_RGB_OUT_LO_DATA_SELECT:
    		val |= (path_val) ? VIP_RGB_OUT_LO_SRC_SELECT : 0;
    		break;
    	case VIP_RGB_OUT_HI_DATA_SELECT:
    		val |= (path_val) ? VIP_RGB_OUT_HI_SRC_SELECT : 0;
    		break;
    	case VIP_CHR_DS_1_SRC_DATA_SELECT:
    		insert_field(&val, path_val, VIP_DS1_SRC_SELECT_MASK,
    			     VIP_DS1_SRC_SELECT_SHFT);
    		break;
    	case VIP_CHR_DS_2_SRC_DATA_SELECT:
    		insert_field(&val, path_val, VIP_DS2_SRC_SELECT_MASK,
    			     VIP_DS2_SRC_SELECT_SHFT);
    		break;
    	case VIP_MULTI_CHANNEL_DATA_SELECT:
    		val |= (path_val) ? VIP_MULTI_CHANNEL_SELECT : 0;
    		break;
    	case VIP_CHR_DS_1_DATA_BYPASS:
    		val |= (path_val) ? VIP_DS1_BYPASS : 0;
    		break;
    	case VIP_CHR_DS_2_DATA_BYPASS:
    		val |= (path_val) ? VIP_DS2_BYPASS : 0;
    		break;
    	default:
    		vip_err(dev, "%s: data_path 0x%x is not valid\n",
    			__func__, data_path);
    		return;
    	}
    	insert_field(&val, data_path, VIP_DATAPATH_SELECT_MASK,
    		     VIP_DATAPATH_SELECT_SHFT);
    	reg_write(dev, data_path_reg, val);
    	vip_dbg(3, dev, "%s: DATA_PATH_SELECT(%08X): %08X\n", __func__,
    		data_path_reg, reg_read(dev, data_path_reg));
    }
    
    /*
     * Return the vip_stream structure for a given struct file
     */
    static inline struct vip_stream *file2stream(struct file *file)
    {
    	return video_drvdata(file);
    }
    
    /*
     * Append a destination descriptor to the current descriptor list,
     * setting up dma to the given srce.
     */
    static int add_out_dtd(struct vip_stream *stream, int srce_type)
    {
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	struct vip_srce_info *sinfo = &srce_info[srce_type];
    	struct v4l2_rect *c_rect = &port->c_rect;
    	struct vip_fmt *fmt = port->fmt;
    	int channel, plane = 0;
    	int max_width, max_height;
    	dma_addr_t dma_addr;
    	u32 flags;
    	u32 width = stream->width;
    
    	channel = sinfo->base_channel;
    
    	switch (srce_type) {
    	case VIP_SRCE_MULT_PORT:
    	case VIP_SRCE_MULT_ANC:
    		if (port->port_id == VIP_PORTB)
    			channel += VIP_CHAN_MULT_PORTB_OFFSET;
    		channel += stream->stream_id;
    		flags = 0;
    		break;
    	case VIP_SRCE_CHROMA:
    		plane = 1;
    		fallthrough;
    	case VIP_SRCE_LUMA:
    		if (port->port_id == VIP_PORTB) {
    			if (port->scaler && !port->fmt->coplanar)
    				/*
    				 * In this case Port A Chroma channel
    				 * is used to carry Port B scaled YUV422
    				 */
    				channel += 1;
    			else
    				channel += VIP_CHAN_YUV_PORTB_OFFSET;
    		}
    		flags = port->flags;
    		break;
    	case VIP_SRCE_RGB:
    		if (port->port_id == VIP_PORTB ||
    		    (port->port_id == VIP_PORTA &&
    		     port->csc == VIP_CSC_NA &&
    		     v4l2_is_format_rgb(port->fmt->finfo)))
    			/*
    			 * RGB sensor only connect to Y_LO
    			 * channel i.e. port B channel.
    			 */
    			channel += VIP_CHAN_RGB_PORTB_OFFSET;
    		flags = port->flags;
    		break;
    	default:
    		vip_err(stream, "%s: srce_type 0x%x is not valid\n",
    			__func__, srce_type);
    		return -1;
    	}
    
    	if (dev->slice_id == VIP_SLICE2)
    		channel += VIP_CHAN_VIP2_OFFSET;
    
    	/* This is just for initialization purposes.
    	 * The actual dma_addr will be configured in vpdma_update_dma_addr
    	 */
    	dma_addr = 0;
    
    	if (port->fmt->vpdma_fmt[0] == &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8]) {
    		/*
    		 * Special case since we are faking a YUV422 16bit format
    		 * to have the vpdma perform the needed byte swap
    		 * we need to adjust the pixel width accordingly
    		 * otherwise the parser will attempt to collect more pixels
    		 * then available and the vpdma transfer will exceed the
    		 * allocated frame buffer.
    		 */
    		width >>= 1;
    		vip_dbg(1, stream, "%s: 8 bit raw detected, adjusting width to %d\n",
    			__func__, width);
    	}
    
    	/*
    	 * Use VPDMA_MAX_SIZE1 or VPDMA_MAX_SIZE2 register for slice0/1
    	 */
    
    	if (dev->slice_id == VIP_SLICE1) {
    		vpdma_set_max_size(dev->shared->vpdma, VPDMA_MAX_SIZE1,
    				   width, stream->height);
    
    		max_width = MAX_OUT_WIDTH_REG1;
    		max_height = MAX_OUT_HEIGHT_REG1;
    	} else {
    		vpdma_set_max_size(dev->shared->vpdma, VPDMA_MAX_SIZE2,
    				   width, stream->height);
    
    		max_width = MAX_OUT_WIDTH_REG2;
    		max_height = MAX_OUT_HEIGHT_REG2;
    	}
    
    	/*
    	 * Mark this channel to be cleared while cleaning up resources
    	 * This will make sure that an abort descriptor for this channel
    	 * would be submitted to VPDMA causing any ongoing  transaction to be
    	 * aborted and cleanup the VPDMA FSM for this channel
    	 */
    	stream->vpdma_channels[channel] = 1;
    
    	vpdma_rawchan_add_out_dtd(&stream->desc_list, c_rect->width,
    				  stream->bytesperline, c_rect,
    				  fmt->vpdma_fmt[plane], dma_addr,
    				  max_width, max_height, channel, flags);
    	return 0;
    }
    
    /*
     * add_stream_dtds - prepares and starts DMA for pending transfers
     */
    static void add_stream_dtds(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	int srce_type;
    
    	if (port->flags & FLAG_MULT_PORT)
    		srce_type = VIP_SRCE_MULT_PORT;
    	else if (port->flags & FLAG_MULT_ANC)
    		srce_type = VIP_SRCE_MULT_ANC;
    	else if (v4l2_is_format_rgb(port->fmt->finfo))
    		srce_type = VIP_SRCE_RGB;
    	else
    		srce_type = VIP_SRCE_LUMA;
    
    	add_out_dtd(stream, srce_type);
    
    	if (srce_type == VIP_SRCE_LUMA && port->fmt->coplanar)
    		add_out_dtd(stream, VIP_SRCE_CHROMA);
    }
    
    static void enable_irqs(struct vip_dev *dev, int irq_num, int list_num)
    {
    	struct vip_parser_data *parser = dev->parser;
    	u32 reg_addr = VIP_INT0_ENABLE0_SET +
    			VIP_INTC_INTX_OFFSET * irq_num;
    	u32 irq_val = (1 << (list_num * 2)) |
    		      (VIP_VIP1_PARSER_INT << (irq_num * 1));
    
    	/* Enable Parser Interrupt */
    	reg_write(parser, VIP_PARSER_FIQ_MASK, ~PARSER_IRQ_MASK);
    
    	reg_write(dev->shared, reg_addr, irq_val);
    
    	vpdma_enable_list_complete_irq(dev->shared->vpdma,
    				       irq_num, list_num, true);
    }
    
    static void disable_irqs(struct vip_dev *dev, int irq_num, int list_num)
    {
    	struct vip_parser_data *parser = dev->parser;
    	u32 reg_addr = VIP_INT0_ENABLE0_CLR +
    			VIP_INTC_INTX_OFFSET * irq_num;
    	u32 irq_val = (1 << (list_num * 2)) |
    		      (VIP_VIP1_PARSER_INT << (irq_num * 1));
    
    	/* Disable all Parser Interrupt */
    	reg_write(parser, VIP_PARSER_FIQ_MASK, 0xffffffff);
    
    	reg_write(dev->shared, reg_addr, irq_val);
    
    	vpdma_enable_list_complete_irq(dev->shared->vpdma,
    				       irq_num, list_num, false);
    }
    
    static void clear_irqs(struct vip_dev *dev, int irq_num, int list_num)
    {
    	struct vip_parser_data *parser = dev->parser;
    	u32 reg_addr = VIP_INT0_STATUS0_CLR +
    			VIP_INTC_INTX_OFFSET * irq_num;
    	u32 irq_val = (1 << (list_num * 2)) |
    		      (VIP_VIP1_PARSER_INT << (irq_num * 1));
    
    	/* Clear all Parser Interrupt */
    	reg_write(parser, VIP_PARSER_FIQ_CLR, 0xffffffff);
    	reg_write(parser, VIP_PARSER_FIQ_CLR, 0x0);
    
    	reg_write(dev->shared, reg_addr, irq_val);
    
    	vpdma_clear_list_stat(dev->shared->vpdma, irq_num, dev->slice_id);
    }
    
    static void populate_desc_list(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	unsigned int list_length;
    
    	stream->desc_next = stream->desc_list.buf.addr;
    	add_stream_dtds(stream);
    
    	list_length = stream->desc_next - stream->desc_list.buf.addr;
    	vpdma_map_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    }
    
    /*
     * start_dma - adds descriptors to the dma list and submits them.
     * Should be called after a new vb is queued and on a vpdma list
     * completion interrupt.
     */
    static void start_dma(struct vip_stream *stream, struct vip_buffer *buf)
    {
    	struct vip_dev *dev = stream->port->dev;
    	struct vpdma_data *vpdma = dev->shared->vpdma;
    	int list_num = stream->list_num;
    	dma_addr_t dma_addr;
    	int drop_data;
    
    	if (vpdma_list_busy(vpdma, list_num)) {
    		vip_err(stream, "vpdma list busy, cannot post\n");
    		return;				/* nothing to do */
    	}
    
    	if (buf) {
    		dma_addr = vb2_dma_contig_plane_dma_addr(&buf->vb.vb2_buf, 0);
    		drop_data = 0;
    		vip_dbg(4, stream, "%s: vb2 buf idx:%d, dma_addr:%pad\n",
    			__func__, buf->vb.vb2_buf.index, &dma_addr);
    	} else {
    		dma_addr = 0;
    		drop_data = 1;
    		vip_dbg(4, stream, "%s: dropped\n", __func__);
    	}
    
    	vpdma_update_dma_addr(dev->shared->vpdma, &stream->desc_list,
    			      dma_addr, stream->write_desc, drop_data, 0);
    
    	if (stream->port->fmt->coplanar) {
    		dma_addr += stream->bytesperline * stream->height;
    		vpdma_update_dma_addr(dev->shared->vpdma, &stream->desc_list,
    				      dma_addr, stream->write_desc + 1,
    				      drop_data, 1);
    	}
    
    	vpdma_submit_descs(dev->shared->vpdma,
    			   &stream->desc_list, stream->list_num);
    }
    
    static void vip_schedule_next_buffer(struct vip_stream *stream)
    {
    	struct vip_dev *dev = stream->port->dev;
    	struct vip_buffer *buf;
    	unsigned long flags;
    
    	spin_lock_irqsave(&dev->slock, flags);
    	if (list_empty(&stream->vidq)) {
    		vip_dbg(4, stream, "Dropping frame\n");
    		if (list_empty(&stream->dropq)) {
    			vip_err(stream, "No dropq buffer left!");
    			spin_unlock_irqrestore(&dev->slock, flags);
    			return;
    		}
    		buf = list_entry(stream->dropq.next,
    				 struct vip_buffer, list);
    
    		buf->drop = true;
    		list_move_tail(&buf->list, &stream->post_bufs);
    		buf = NULL;
    	} else {
    		buf = list_entry(stream->vidq.next,
    				 struct vip_buffer, list);
    		buf->drop = false;
    		list_move_tail(&buf->list, &stream->post_bufs);
    		vip_dbg(4, stream, "added next buffer\n");
    	}
    
    	spin_unlock_irqrestore(&dev->slock, flags);
    	start_dma(stream, buf);
    }
    
    static void vip_process_buffer_complete(struct vip_stream *stream)
    {
    	struct vip_dev *dev = stream->port->dev;
    	struct vip_buffer *buf;
    	struct vb2_v4l2_buffer *vb = NULL;
    	unsigned long flags, fld;
    
    	buf = list_first_entry(&stream->post_bufs, struct vip_buffer, list);
    
    	if (stream->port->flags & FLAG_INTERLACED) {
    		vpdma_unmap_desc_buf(dev->shared->vpdma,
    				     &stream->desc_list.buf);
    
    		fld = dtd_get_field(stream->write_desc);
    		stream->field = fld ? V4L2_FIELD_BOTTOM : V4L2_FIELD_TOP;
    
    		vpdma_map_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    	}
    
    	if (buf) {
    		vip_dbg(4, stream, "vip buffer complete 0x%x, 0x%x\n",
    			(unsigned int)buf, buf->drop);
    
    		vb = &buf->vb;
    		vb->field = stream->field;
    		vb->sequence = stream->sequence;
    		vb->vb2_buf.timestamp = ktime_get_ns();
    
    		if (buf->drop) {
    			spin_lock_irqsave(&dev->slock, flags);
    			list_move_tail(&buf->list, &stream->dropq);
    			spin_unlock_irqrestore(&dev->slock, flags);
    		} else {
    			spin_lock_irqsave(&dev->slock, flags);
    			list_del(&buf->list);
    			spin_unlock_irqrestore(&dev->slock, flags);
    			vb2_buffer_done(&vb->vb2_buf, VB2_BUF_STATE_DONE);
    		}
    	} else {
    		vip_err(stream, "%s: buf is null!!!\n", __func__);
    		return;
    	}
    
    	stream->sequence++;
    }
    
    static int vip_reset_vpdma(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	struct vip_buffer *buf;
    	unsigned long flags;
    
    	stop_dma(stream, false);
    
    	spin_lock_irqsave(&dev->slock, flags);
    	/* requeue all active buffers in the opposite order */
    	while (!list_empty(&stream->post_bufs)) {
    		buf = list_last_entry(&stream->post_bufs,
    				      struct vip_buffer, list);
    		list_del(&buf->list);
    		if (buf->drop == 1) {
    			list_add_tail(&buf->list, &stream->dropq);
    			vip_dbg(4, stream, "requeueing drop buffer on dropq\n");
    		} else {
    			list_add(&buf->list, &stream->vidq);
    			vip_dbg(4, stream, "requeueing vb2 buf idx:%d on vidq\n",
    				buf->vb.vb2_buf.index);
    		}
    	}
    	spin_unlock_irqrestore(&dev->slock, flags);
    
    	/* Make sure the desc_list is unmapped */
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    
    	return 0;
    }
    
    static void vip_overflow_recovery_work(struct work_struct *work)
    {
    	struct vip_stream *stream = container_of(work, struct vip_stream,
    						 recovery_work);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    
    	vip_err(stream, "%s: Port %c\n", __func__,
    		port->port_id == VIP_PORTA ? 'A' : 'B');
    
    	disable_irqs(dev, dev->slice_id, stream->list_num);
    	clear_irqs(dev, dev->slice_id, stream->list_num);
    
    	/* 1.	Set VIP_XTRA6_PORT_A[31:16] YUV_SRCNUM_STOP_IMMEDIATELY */
    	/* 2.	Set VIP_XTRA6_PORT_A[15:0] ANC_SRCNUM_STOP_IMMEDIATELY */
    	vip_parser_stop_imm(port, 1);
    
    	/* 3.	Clear VIP_PORT_A[8] ENABLE */
    	/*
    	 * 4.	Set VIP_PORT_A[7] CLR_ASYNC_FIFO_RD
    	 *      Set VIP_PORT_A[6] CLR_ASYNC_FIFO_WR
    	 */
    	vip_enable_parser(port, false);
    
    	/* 5.	Set VIP_PORT_A[23] SW_RESET */
    	vip_reset_parser(port, 1);
    
    	/*
    	 * 6.	Reset other VIP modules
    	 *	For each module used downstream of VIP_PARSER, write 1 to the
    	 *      bit location of the VIP_CLKC_RST register which is connected
    	 *      to VIP_PARSER
    	 */
    	vip_module_reset(dev, VIP_DP_RST, true);
    
    	usleep_range(200, 250);
    
    	/*
    	 * 7.	Abort VPDMA channels
    	 *	Write to list attribute to stop list 0
    	 *	Write to list address register location of abort list
    	 *	Write to list attribute register list 0 and size of abort list
    	 */
    	vip_reset_vpdma(stream);
    
    	/* 8.	Clear VIP_PORT_A[23] SW_RESET */
    	vip_reset_parser(port, 0);
    
    	/*
    	 * 9.	Un-reset other VIP modules
    	 *	For each module used downstream of VIP_PARSER, write 0 to
    	 *	the bit location of the VIP_CLKC_RST register which is
    	 *	connected to VIP_PARSER
    	 */
    	vip_module_reset(dev, VIP_DP_RST, false);
    
    	/* 10.	(Delay) */
    	/* 11.	SC coeff downloaded (if VIP_SCALER is being used) */
    	vip_setup_scaler(stream);
    
    	/* 12.	(Delay) */
    		/* the above are not needed here yet */
    
    	populate_desc_list(stream);
    	stream->num_recovery++;
    	if (stream->num_recovery < 5) {
    		/* Reload the vpdma */
    		vip_load_vpdma_list_fifo(stream);
    
    		enable_irqs(dev, dev->slice_id, stream->list_num);
    		vip_schedule_next_buffer(stream);
    
    		/* 13.	Clear VIP_XTRA6_PORT_A[31:16] YUV_SRCNUM_STOP_IMM */
    		/* 14.	Clear VIP_XTRA6_PORT_A[15:0] ANC_SRCNUM_STOP_IMM */
    
    		vip_parser_stop_imm(port, 0);
    
    		/* 15.	Set VIP_PORT_A[8] ENABLE */
    		/*
    		 * 16.	Clear VIP_PORT_A[7] CLR_ASYNC_FIFO_RD
    		 *	Clear VIP_PORT_A[6] CLR_ASYNC_FIFO_WR
    		 */
    		vip_enable_parser(port, true);
    	} else {
    		vip_err(stream, "%s: num_recovery limit exceeded leaving disabled\n",
    			__func__);
    	}
    }
    
    static void handle_parser_irqs(struct vip_dev *dev)
    {
    	struct vip_parser_data *parser = dev->parser;
    	struct vip_port *porta = dev->ports[VIP_PORTA];
    	struct vip_port *portb = dev->ports[VIP_PORTB];
    	struct vip_stream *stream = NULL;
    	u32 irq_stat = reg_read(parser, VIP_PARSER_FIQ_STATUS);
    	int i;
    
    	vip_dbg(3, dev, "%s: FIQ_STATUS: 0x%08x\n", __func__, irq_stat);
    
    	/* Clear all Parser Interrupt */
    	reg_write(parser, VIP_PARSER_FIQ_CLR, irq_stat);
    	reg_write(parser, VIP_PARSER_FIQ_CLR, 0x0);
    
    	if (irq_stat & VIP_PORTA_VDET)
    		vip_dbg(3, dev, "VIP_PORTA_VDET\n");
    	if (irq_stat & VIP_PORTB_VDET)
    		vip_dbg(3, dev, "VIP_PORTB_VDET\n");
    	if (irq_stat & VIP_PORTA_ASYNC_FIFO_OF)
    		vip_err(dev, "VIP_PORTA_ASYNC_FIFO_OF\n");
    	if (irq_stat & VIP_PORTB_ASYNC_FIFO_OF)
    		vip_err(dev, "VIP_PORTB_ASYNC_FIFO_OF\n");
    	if (irq_stat & VIP_PORTA_OUTPUT_FIFO_YUV)
    		vip_err(dev, "VIP_PORTA_OUTPUT_FIFO_YUV\n");
    	if (irq_stat & VIP_PORTA_OUTPUT_FIFO_ANC)
    		vip_err(dev, "VIP_PORTA_OUTPUT_FIFO_ANC\n");
    	if (irq_stat & VIP_PORTB_OUTPUT_FIFO_YUV)
    		vip_err(dev, "VIP_PORTB_OUTPUT_FIFO_YUV\n");
    	if (irq_stat & VIP_PORTB_OUTPUT_FIFO_ANC)
    		vip_err(dev, "VIP_PORTB_OUTPUT_FIFO_ANC\n");
    	if (irq_stat & VIP_PORTA_CONN)
    		vip_dbg(3, dev, "VIP_PORTA_CONN\n");
    	if (irq_stat & VIP_PORTA_DISCONN)
    		vip_dbg(3, dev, "VIP_PORTA_DISCONN\n");
    	if (irq_stat & VIP_PORTB_CONN)
    		vip_dbg(3, dev, "VIP_PORTB_CONN\n");
    	if (irq_stat & VIP_PORTB_DISCONN)
    		vip_dbg(3, dev, "VIP_PORTB_DISCONN\n");
    	if (irq_stat & VIP_PORTA_SRC0_SIZE)
    		vip_dbg(3, dev, "VIP_PORTA_SRC0_SIZE\n");
    	if (irq_stat & VIP_PORTB_SRC0_SIZE)
    		vip_dbg(3, dev, "VIP_PORTB_SRC0_SIZE\n");
    	if (irq_stat & VIP_PORTA_YUV_PROTO_VIOLATION)
    		vip_dbg(3, dev, "VIP_PORTA_YUV_PROTO_VIOLATION\n");
    	if (irq_stat & VIP_PORTA_ANC_PROTO_VIOLATION)
    		vip_dbg(3, dev, "VIP_PORTA_ANC_PROTO_VIOLATION\n");
    	if (irq_stat & VIP_PORTB_YUV_PROTO_VIOLATION)
    		vip_dbg(3, dev, "VIP_PORTB_YUV_PROTO_VIOLATION\n");
    	if (irq_stat & VIP_PORTB_ANC_PROTO_VIOLATION)
    		vip_dbg(3, dev, "VIP_PORTB_ANC_PROTO_VIOLATION\n");
    	if (irq_stat & VIP_PORTA_CFG_DISABLE_COMPLETE)
    		vip_dbg(3, dev, "VIP_PORTA_CFG_DISABLE_COMPLETE\n");
    	if (irq_stat & VIP_PORTB_CFG_DISABLE_COMPLETE)
    		vip_dbg(3, dev, "VIP_PORTB_CFG_DISABLE_COMPLETE\n");
    
    	if (irq_stat & (VIP_PORTA_ASYNC_FIFO_OF |
    			VIP_PORTA_OUTPUT_FIFO_YUV |
    			VIP_PORTA_OUTPUT_FIFO_ANC)) {
    		for (i = 0; i < VIP_CAP_STREAMS_PER_PORT; i++) {
    			if (porta->cap_streams[i] &&
    			    porta->cap_streams[i]->port->port_id ==
    			    porta->port_id) {
    				stream = porta->cap_streams[i];
    				break;
    			}
    		}
    		if (stream) {
    			disable_irqs(dev, dev->slice_id,
    				     stream->list_num);
    			schedule_work(&stream->recovery_work);
    			return;
    		}
    	}
    	if (irq_stat & (VIP_PORTB_ASYNC_FIFO_OF |
    			VIP_PORTB_OUTPUT_FIFO_YUV |
    			VIP_PORTB_OUTPUT_FIFO_ANC)) {
    		for (i = 0; i < VIP_CAP_STREAMS_PER_PORT; i++) {
    			if (portb->cap_streams[i] &&
    			    portb->cap_streams[i]->port->port_id ==
    			    portb->port_id) {
    				stream = portb->cap_streams[i];
    				break;
    			}
    		}
    		if (stream) {
    			disable_irqs(dev, dev->slice_id,
    				     stream->list_num);
    			schedule_work(&stream->recovery_work);
    			return;
    		}
    	}
    }
    
    static irqreturn_t vip_irq(int irq_vip, void *data)
    {
    	struct vip_dev *dev = (struct vip_dev *)data;
    	struct vpdma_data *vpdma;
    	struct vip_stream *stream;
    	int list_num;
    	int irq_num = dev->slice_id;
    	u32 irqst, irqst_saved, reg_addr;
    
    	if (!dev->shared)
    		return IRQ_HANDLED;
    
    	vpdma = dev->shared->vpdma;
    	reg_addr = VIP_INT0_STATUS0 +
    			VIP_INTC_INTX_OFFSET * irq_num;
    	irqst_saved = reg_read(dev->shared, reg_addr);
    	irqst = irqst_saved;
    
    	vip_dbg(8, dev, "IRQ %d VIP_INT%d_STATUS0 0x%x\n",
    		irq_vip, irq_num, irqst);
    	if (irqst) {
    		if (irqst & (VIP_VIP1_PARSER_INT << (irq_num * 1))) {
    			irqst &= ~(VIP_VIP1_PARSER_INT << (irq_num * 1));
    			handle_parser_irqs(dev);
    		}
    
    		for (list_num = 0; irqst && (list_num < 8);  list_num++) {
    			/* Check for LIST_COMPLETE IRQ */
    			if (!(irqst & (1 << list_num * 2)))
    				continue;
    
    			vip_dbg(8, dev, "IRQ %d: handling LIST%d_COMPLETE\n",
    				irq_num, list_num);
    
    			stream = vpdma_hwlist_get_priv(vpdma, list_num);
    			if (!stream || stream->list_num != list_num) {
    				vip_err(dev, "IRQ occurred for unused list");
    				continue;
    			}
    
    			vpdma_clear_list_stat(vpdma, irq_num, list_num);
    
    			vip_process_buffer_complete(stream);
    
    			vip_schedule_next_buffer(stream);
    
    			irqst &= ~((1 << list_num * 2));
    		}
    	}
    
    	/* Acknowledge that we are done with all interrupts */
    	reg_write(dev->shared, VIP_INTC_E0I, 1 << irq_num);
    
    	/* Clear handled events from status register */
    	reg_addr = VIP_INT0_STATUS0_CLR +
    		   VIP_INTC_INTX_OFFSET * irq_num;
    	reg_write(dev->shared, reg_addr, irqst_saved);
    
    	return IRQ_HANDLED;
    }
    
    /*
     * video ioctls
     */
    static int vip_querycap(struct file *file, void *priv,
    			struct v4l2_capability *cap)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	u32 vin_id = 1 + ((dev->instance_id - 1) * 2) + dev->slice_id;
    
    	strscpy(cap->driver, VIP_MODULE_NAME, sizeof(cap->driver));
    	strscpy(cap->card, VIP_MODULE_NAME, sizeof(cap->card));
    
    	snprintf(cap->bus_info, sizeof(cap->bus_info),
    		 "platform:vip%1d:vin%1d%c:stream%1d", dev->instance_id, vin_id,
    		 port->port_id == VIP_PORTA ? 'a' : 'b', stream->stream_id);
    	return 0;
    }
    
    static int vip_enuminput(struct file *file, void *priv,
    			 struct v4l2_input *inp)
    {
    	struct vip_stream *stream = file2stream(file);
    
    	if (inp->index)
    		return -EINVAL;
    
    	inp->type = V4L2_INPUT_TYPE_CAMERA;
    	inp->std = stream->vfd->tvnorms;
    	sprintf(inp->name, "camera %u", stream->vfd->num);
    
    	return 0;
    }
    
    static int vip_g_input(struct file *file, void *priv, unsigned int *i)
    {
    	*i = 0;
    	return 0;
    }
    
    static int vip_s_input(struct file *file, void *priv, unsigned int i)
    {
    	if (i != 0)
    		return -EINVAL;
    	return 0;
    }
    
    static int vip_querystd(struct file *file, void *fh, v4l2_std_id *std)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    
    	*std = stream->vfd->tvnorms;
    	v4l2_subdev_call(port->subdev, video, querystd, std);
    	vip_dbg(1, stream, "querystd: 0x%lx\n", (unsigned long)*std);
    	return 0;
    }
    
    static int vip_g_std(struct file *file, void *fh, v4l2_std_id *std)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    
    	*std = stream->vfd->tvnorms;
    	v4l2_subdev_call(port->subdev, video, g_std_output, std);
    	vip_dbg(1, stream, "g_std: 0x%lx\n", (unsigned long)*std);
    
    	return 0;
    }
    
    static int vip_s_std(struct file *file, void *fh, v4l2_std_id std)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    
    	vip_dbg(1, stream, "s_std: 0x%lx\n", (unsigned long)std);
    
    	if (!(std & stream->vfd->tvnorms)) {
    		vip_dbg(1, stream, "s_std after check: 0x%lx\n",
    			(unsigned long)std);
    		return -EINVAL;
    	}
    
    	v4l2_subdev_call(port->subdev, video, s_std_output, std);
    	return 0;
    }
    
    static int vip_enum_fmt_vid_cap(struct file *file, void *priv,
    				struct v4l2_fmtdesc *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt;
    
    	vip_dbg(3, stream, "enum_fmt index:%d\n", f->index);
    	if (f->index >= port->num_active_fmt)
    		return -EINVAL;
    
    	fmt = port->active_fmt[f->index];
    
    	f->pixelformat = fmt->fourcc;
    	f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    	vip_dbg(3, stream, "enum_fmt fourcc:%s\n",
    		fourcc_to_str(f->pixelformat));
    
    	return 0;
    }
    
    static int vip_enum_framesizes(struct file *file, void *priv,
    			       struct v4l2_frmsizeenum *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt;
    	int ret;
    	struct v4l2_subdev_frame_size_enum fse = {
    		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
    		.pad = 0,
    	};
    
    	fmt = find_port_format_by_pix(port, f->pixel_format);
    	if (!fmt)
    		return -EINVAL;
    
    	fse.index = f->index;
    	fse.code = fmt->code;
    	ret = v4l2_subdev_call(port->subdev, pad, enum_frame_size, NULL, &fse);
    	if (ret)
    		return -EINVAL;
    
    	vip_dbg(1, stream, "%s: index: %d code: %x W:[%d,%d] H:[%d,%d]\n",
    		__func__, fse.index, fse.code, fse.min_width, fse.max_width,
    		fse.min_height, fse.max_height);
    
    	f->type = V4L2_FRMSIZE_TYPE_DISCRETE;
    	f->discrete.width = fse.max_width;
    	f->discrete.height = fse.max_height;
    
    	return 0;
    }
    
    static int vip_enum_frameintervals(struct file *file, void *priv,
    				   struct v4l2_frmivalenum *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt;
    	struct v4l2_subdev_frame_interval_enum fie = {
    		.index = f->index,
    		.width = f->width,
    		.height = f->height,
    		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
    	};
    	int ret;
    
    	fmt = find_port_format_by_pix(port, f->pixel_format);
    	if (!fmt)
    		return -EINVAL;
    
    	fie.code = fmt->code;
    	ret = v4l2_subdev_call(port->subdev, pad, enum_frame_interval,
    			       NULL, &fie);
    	if (ret)
    		return ret;
    	f->type = V4L2_FRMIVAL_TYPE_DISCRETE;
    	f->discrete = fie.interval;
    
    	return 0;
    }
    
    static int vip_g_parm(struct file *file, void *priv,
    		      struct v4l2_streamparm *parm)
    {
    	if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
    		return -EINVAL;
    
    	parm->parm.capture.capability   = V4L2_CAP_TIMEPERFRAME;
    	parm->parm.capture.timeperframe.numerator = 1;
    	parm->parm.capture.timeperframe.denominator = 30;
    	parm->parm.capture.readbuffers  = 4;
    	return 0;
    }
    
    static int vip_s_parm(struct file *file, void *priv,
    		      struct v4l2_streamparm *parm)
    {
    	if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
    		return -EINVAL;
    
    	parm->parm.capture.timeperframe.numerator = 1;
    	parm->parm.capture.timeperframe.denominator = 30;
    	parm->parm.capture.readbuffers  = 4;
    
    	return 0;
    }
    
    static int vip_calc_format_size(struct vip_port *port,
    				struct vip_fmt *fmt,
    				struct v4l2_format *f)
    {
    	enum v4l2_field *field;
    	unsigned int stride;
    
    	if (!fmt) {
    		vip_dbg(2, port,
    			"no vip_fmt format provided!\n");
    		return -EINVAL;
    	}
    
    	field = &f->fmt.pix.field;
    	if (*field == V4L2_FIELD_ANY)
    		*field = V4L2_FIELD_NONE;
    	else if (V4L2_FIELD_NONE != *field && V4L2_FIELD_ALTERNATE != *field)
    		return -EINVAL;
    
    	v4l_bound_align_image(&f->fmt.pix.width, MIN_W, MAX_W, W_ALIGN,
    			      &f->fmt.pix.height, MIN_H, MAX_H, H_ALIGN,
    			      S_ALIGN);
    
    	stride = f->fmt.pix.width * (fmt->vpdma_fmt[0]->depth >> 3);
    	if (stride > f->fmt.pix.bytesperline)
    		f->fmt.pix.bytesperline = stride;
    	f->fmt.pix.bytesperline = ALIGN(f->fmt.pix.bytesperline,
    					VPDMA_STRIDE_ALIGN);
    
    	f->fmt.pix.sizeimage = f->fmt.pix.height * f->fmt.pix.bytesperline;
    	if (fmt->coplanar) {
    		f->fmt.pix.sizeimage += f->fmt.pix.height *
    					f->fmt.pix.bytesperline *
    					fmt->vpdma_fmt[VIP_CHROMA]->depth >> 3;
    	}
    
    	f->fmt.pix.colorspace = fmt->colorspace;
    	f->fmt.pix.priv = 0;
    
    	vip_dbg(3, port, "calc_format_size: fourcc:%s size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		f->fmt.pix.width, f->fmt.pix.height,
    		f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
    
    	return 0;
    }
    
    static inline bool vip_is_size_dma_aligned(u32 bpp, u32 width)
    {
    	return ((width * bpp) == ALIGN(width * bpp, VPDMA_STRIDE_ALIGN));
    }
    
    static int vip_try_fmt_vid_cap(struct file *file, void *priv,
    			       struct v4l2_format *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt;
    	u32 best_width, best_height, largest_width, largest_height;
    	int ret, found;
    	enum vip_csc_state csc_direction;
    	struct v4l2_subdev_frame_size_enum fse = {
    		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
    		.pad = 0,
    	};
    
    	vip_dbg(3, stream, "try_fmt fourcc:%s size: %dx%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		f->fmt.pix.width, f->fmt.pix.height);
    
    	fmt = find_port_format_by_pix(port, f->fmt.pix.pixelformat);
    	if (!fmt) {
    		vip_dbg(2, stream,
    			"Fourcc format (0x%08x) not found.\n",
    			f->fmt.pix.pixelformat);
    
    		/* Just get the first one enumerated */
    		fmt = port->active_fmt[0];
    		f->fmt.pix.pixelformat = fmt->fourcc;
    	}
    
    	csc_direction =  vip_csc_direction(fmt->code, fmt->finfo);
    	if (csc_direction != VIP_CSC_NA) {
    		if (!is_csc_available(port)) {
    			vip_dbg(2, stream,
    				"CSC not available for Fourcc format (0x%08x).\n",
    				f->fmt.pix.pixelformat);
    
    			/* Just get the first one enumerated */
    			fmt = port->active_fmt[0];
    			f->fmt.pix.pixelformat = fmt->fourcc;
    			/* re-evaluate the csc_direction here */
    			csc_direction =  vip_csc_direction(fmt->code,
    							   fmt->finfo);
    		} else {
    			vip_dbg(3, stream, "CSC active on Port %c: going %s\n",
    				port->port_id == VIP_PORTA ? 'A' : 'B',
    				(csc_direction == VIP_CSC_Y2R) ? "Y2R" : "R2Y");
    		}
    	}
    
    	/*
    	 * Given that sensors might support multiple mbus code we need
    	 * to use the one that matches the requested pixel format
    	 */
    	port->try_mbus_framefmt = port->mbus_framefmt;
    	port->try_mbus_framefmt.code = fmt->code;
    
    	/* check for/find a valid width/height */
    	ret = 0;
    	found = false;
    	best_width = 0;
    	best_height = 0;
    	largest_width = 0;
    	largest_height = 0;
    
    	fse.code = fmt->code;
    	for (fse.index = 0; ; fse.index++) {
    		u32 bpp = fmt->vpdma_fmt[0]->depth >> 3;
    
    		ret = v4l2_subdev_call(port->subdev, pad,
    				       enum_frame_size, NULL, &fse);
    		if (ret)
    			break;
    
    		vip_dbg(3, stream, "try_fmt loop:%d fourcc:%s size: %dx%d\n",
    			fse.index, fourcc_to_str(f->fmt.pix.pixelformat),
    			fse.max_width, fse.max_height);
    
    		if (!vip_is_size_dma_aligned(bpp, fse.max_width))
    			continue;
    
    		if (fse.max_width >= largest_width &&
    		    fse.max_height >= largest_height) {
    			vip_dbg(3, stream, "try_fmt loop:%d found new larger: %dx%d\n",
    				fse.index, fse.max_width, fse.max_height);
    			largest_width = fse.max_width;
    			largest_height = fse.max_height;
    		}
    
    		if (fse.max_width >= f->fmt.pix.width &&
    		    fse.max_height >= f->fmt.pix.height) {
    			vip_dbg(3, stream, "try_fmt loop:%d found at least larger: %dx%d\n",
    				fse.index, fse.max_width, fse.max_height);
    
    			if (!best_width ||
    			    ((abs(best_width - f->fmt.pix.width) >=
    			      abs(fse.max_width - f->fmt.pix.width)) &&
    			     (abs(best_height - f->fmt.pix.height) >=
    			      abs(fse.max_height - f->fmt.pix.height)))) {
    				best_width = fse.max_width;
    				best_height = fse.max_height;
    				vip_dbg(3, stream, "try_fmt loop:%d found new best: %dx%d\n",
    					fse.index, fse.max_width,
    					fse.max_height);
    			}
    		}
    
    		if (f->fmt.pix.width == fse.max_width &&
    		    f->fmt.pix.height == fse.max_height) {
    			found = true;
    			vip_dbg(3, stream, "try_fmt loop:%d found direct match: %dx%d\n",
    				fse.index, fse.max_width,
    				fse.max_height);
    			break;
    		}
    
    		if (f->fmt.pix.width >= fse.min_width &&
    		    f->fmt.pix.width <= fse.max_width &&
    		    f->fmt.pix.height >= fse.min_height &&
    		    f->fmt.pix.height <= fse.max_height) {
    			found = true;
    			vip_dbg(3, stream, "try_fmt loop:%d found direct range match: %dx%d\n",
    				fse.index, fse.max_width,
    				fse.max_height);
    			break;
    		}
    	}
    
    	if (found) {
    		port->try_mbus_framefmt.width = f->fmt.pix.width;
    		port->try_mbus_framefmt.height = f->fmt.pix.height;
    		/* No need to check for scaling */
    		goto calc_size;
    	} else if (f->fmt.pix.width > largest_width) {
    		port->try_mbus_framefmt.width = largest_width;
    		port->try_mbus_framefmt.height = largest_height;
    	} else if (best_width) {
    		port->try_mbus_framefmt.width = best_width;
    		port->try_mbus_framefmt.height = best_height;
    	} else {
    		/* use existing values as default */
    	}
    
    	vip_dbg(3, stream, "try_fmt best subdev size: %dx%d\n",
    		port->try_mbus_framefmt.width,
    		port->try_mbus_framefmt.height);
    
    	if (is_scaler_available(port) &&
    	    csc_direction != VIP_CSC_Y2R &&
    	    !vip_is_mbuscode_raw(fmt->code) &&
    	    f->fmt.pix.height <= port->try_mbus_framefmt.height &&
    	    port->try_mbus_framefmt.height <= SC_MAX_PIXEL_HEIGHT &&
    	    port->try_mbus_framefmt.width <= SC_MAX_PIXEL_WIDTH) {
    		/*
    		 * Scaler is only accessible if the dst colorspace is YUV.
    		 * As the input to the scaler must be in YUV mode only.
    		 *
    		 * Scaling up is allowed only horizontally.
    		 */
    		unsigned int hratio, vratio, width_align, height_align;
    		u32 bpp = fmt->vpdma_fmt[0]->depth >> 3;
    
    		vip_dbg(3, stream, "Scaler active on Port %c: requesting %dx%d\n",
    			port->port_id == VIP_PORTA ? 'A' : 'B',
    			f->fmt.pix.width, f->fmt.pix.height);
    
    		/* Just make sure everything is properly aligned */
    		width_align = ALIGN(f->fmt.pix.width * bpp, VPDMA_STRIDE_ALIGN);
    		width_align /= bpp;
    		height_align = ALIGN(f->fmt.pix.height, 2);
    
    		f->fmt.pix.width = width_align;
    		f->fmt.pix.height = height_align;
    
    		hratio = f->fmt.pix.width * 1000 /
    			 port->try_mbus_framefmt.width;
    		vratio = f->fmt.pix.height * 1000 /
    			 port->try_mbus_framefmt.height;
    		if (hratio < 125) {
    			f->fmt.pix.width = port->try_mbus_framefmt.width / 8;
    			vip_dbg(3, stream, "Horizontal scaling ratio out of range adjusting -> %d\n",
    				f->fmt.pix.width);
    		}
    
    		if (vratio < 188) {
    			f->fmt.pix.height = port->try_mbus_framefmt.height / 4;
    			vip_dbg(3, stream, "Vertical scaling ratio out of range adjusting -> %d\n",
    				f->fmt.pix.height);
    		}
    		vip_dbg(3, stream, "Scaler: got %dx%d\n",
    			f->fmt.pix.width, f->fmt.pix.height);
    	} else {
    		/* use existing values as default */
    		f->fmt.pix.width = port->try_mbus_framefmt.width;
    		f->fmt.pix.height = port->try_mbus_framefmt.height;
    	}
    
    calc_size:
    	/* That we have a fmt calculate imagesize and bytesperline */
    	return vip_calc_format_size(port, fmt, f);
    }
    
    static int vip_g_fmt_vid_cap(struct file *file, void *priv,
    			     struct v4l2_format *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt = port->fmt;
    
    	/* Use last known values or defaults */
    	f->fmt.pix.width	= stream->width;
    	f->fmt.pix.height	= stream->height;
    	f->fmt.pix.pixelformat	= port->fmt->fourcc;
    	f->fmt.pix.field	= stream->sup_field;
    	f->fmt.pix.colorspace	= port->fmt->colorspace;
    	f->fmt.pix.bytesperline	= stream->bytesperline;
    	f->fmt.pix.sizeimage	= stream->sizeimage;
    
    	vip_dbg(3, stream,
    		"g_fmt fourcc:%s code: %04x size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		fmt->code,
    		f->fmt.pix.width, f->fmt.pix.height,
    		f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
    	vip_dbg(3, stream, "g_fmt vpdma data type: 0x%02X\n",
    		port->fmt->vpdma_fmt[0]->data_type);
    
    	return 0;
    }
    
    static int vip_s_fmt_vid_cap(struct file *file, void *priv,
    			     struct v4l2_format *f)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct vip_port *port = stream->port;
    	struct v4l2_subdev_format sfmt;
    	struct v4l2_mbus_framefmt *mf;
    	enum vip_csc_state csc_direction;
    	int ret;
    
    	vip_dbg(3, stream, "s_fmt input fourcc:%s size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		f->fmt.pix.width, f->fmt.pix.height,
    		f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
    
    	ret = vip_try_fmt_vid_cap(file, priv, f);
    	if (ret)
    		return ret;
    
    	vip_dbg(3, stream, "s_fmt try_fmt fourcc:%s size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		f->fmt.pix.width, f->fmt.pix.height,
    		f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
    
    	if (vb2_is_busy(&stream->vb_vidq)) {
    		vip_err(stream, "%s queue busy\n", __func__);
    		return -EBUSY;
    	}
    
    	/*
    	 * Check if we need the scaler or not
    	 *
    	 * Since on previous S_FMT call the scaler might have been
    	 * allocated if it is not needed in this instance we will
    	 * attempt to free it just in case.
    	 *
    	 * free_scaler() is harmless unless the current port
    	 * allocated it.
    	 */
    	if (f->fmt.pix.width == port->try_mbus_framefmt.width &&
    	    f->fmt.pix.height == port->try_mbus_framefmt.height)
    		free_scaler(port);
    	else
    		allocate_scaler(port);
    
    	port->fmt = find_port_format_by_pix(port,
    					    f->fmt.pix.pixelformat);
    	stream->width		= f->fmt.pix.width;
    	stream->height		= f->fmt.pix.height;
    	stream->bytesperline	= f->fmt.pix.bytesperline;
    	stream->sizeimage	= f->fmt.pix.sizeimage;
    	stream->sup_field	= f->fmt.pix.field;
    
    	port->c_rect.left	= 0;
    	port->c_rect.top	= 0;
    	port->c_rect.width	= stream->width;
    	port->c_rect.height	= stream->height;
    
    	/*
    	 * Check if we need the csc unit or not
    	 *
    	 * Since on previous S_FMT call, the csc might have been
    	 * allocated if it is not needed in this instance we will
    	 * attempt to free it just in case.
    	 *
    	 * free_csc() is harmless unless the current port
    	 * allocated it.
    	 */
    	csc_direction =  vip_csc_direction(port->fmt->code, port->fmt->finfo);
    	if (csc_direction == VIP_CSC_NA)
    		free_csc(port);
    	else
    		allocate_csc(port, csc_direction);
    
    	if (stream->sup_field == V4L2_FIELD_ALTERNATE)
    		port->flags |= FLAG_INTERLACED;
    	else
    		port->flags &= ~FLAG_INTERLACED;
    
    	vip_dbg(3, stream, "s_fmt fourcc:%s size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f->fmt.pix.pixelformat),
    		f->fmt.pix.width, f->fmt.pix.height,
    		f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
    
    	memset(&sfmt, 0, sizeof(sfmt));
    	mf = &sfmt.format;
    	v4l2_fill_mbus_format(mf, &f->fmt.pix, port->fmt->code);
    	/* Make sure to use the subdev size found in the try_fmt */
    	mf->width = port->try_mbus_framefmt.width;
    	mf->height = port->try_mbus_framefmt.height;
    
    	vip_dbg(3, stream, "s_fmt pix_to_mbus mbus_code: %04X size: %dx%d\n",
    		mf->code,
    		mf->width, mf->height);
    
    	sfmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    	sfmt.pad = 0;
    	ret = v4l2_subdev_call(port->subdev, pad, set_fmt, NULL, &sfmt);
    	if (ret) {
    		vip_dbg(1, stream, "set_fmt failed in subdev\n");
    		return ret;
    	}
    
    	/* Save it */
    	port->mbus_framefmt = *mf;
    
    	vip_dbg(3, stream, "s_fmt subdev fmt mbus_code: %04X size: %dx%d\n",
    		port->mbus_framefmt.code,
    		port->mbus_framefmt.width, port->mbus_framefmt.height);
    	vip_dbg(3, stream, "s_fmt vpdma data type: 0x%02X\n",
    		port->fmt->vpdma_fmt[0]->data_type);
    
    	return 0;
    }
    
    /*
     * Does the exact opposite of set_fmt_params
     * It makes sure the DataPath register is sane after tear down
     */
    static void unset_fmt_params(struct vip_stream *stream)
    {
    	struct vip_dev *dev = stream->port->dev;
    	struct vip_port *port = stream->port;
    
    	stream->sequence = 0;
    	stream->field = V4L2_FIELD_TOP;
    
    	if (port->csc == VIP_CSC_Y2R) {
    		if (port->port_id == VIP_PORTA) {
    			vip_set_slice_path(dev, VIP_CSC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_SRC_DATA_SELECT, 0);
    		} else {
    			vip_set_slice_path(dev, VIP_CSC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    		}
    		/* We are done */
    		return;
    	} else if (port->csc == VIP_CSC_R2Y) {
    		if (port->scaler && port->fmt->coplanar) {
    			if (port->port_id == VIP_PORTA) {
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_SC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			}
    		} else if (port->scaler) {
    			if (port->port_id == VIP_PORTA) {
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_SC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			}
    		} else if (port->fmt->coplanar) {
    			if (port->port_id == VIP_PORTA) {
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			}
    		} else {
    			if (port->port_id == VIP_PORTA) {
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   0);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			}
    		}
    		/* We are done */
    		return;
    	} else if (v4l2_is_format_rgb(port->fmt->finfo)) {
    		if (port->port_id == VIP_PORTA) {
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    		}
    		/* We are done */
    		return;
    	}
    
    	if (port->scaler && port->fmt->coplanar) {
    		if (port->port_id == VIP_PORTA) {
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    		}
    	} else if (port->scaler) {
    		if (port->port_id == VIP_PORTA) {
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_2_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		}
    	} else if (port->fmt->coplanar) {
    		if (port->port_id == VIP_PORTA) {
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_CHR_DS_2_DATA_BYPASS, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    		}
    	} else {
    		/*
    		 * We undo all data path setting except for the multi
    		 * stream case.
    		 * Because we cannot disrupt other on-going capture if only
    		 * one stream is terminated the other might still be going
    		 */
    		vip_set_slice_path(dev, VIP_MULTI_CHANNEL_DATA_SELECT, 1);
    		vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    	}
    }
    
    /*
     * Set the registers that are modified when the video format changes.
     */
    static void set_fmt_params(struct vip_stream *stream)
    {
    	struct vip_dev *dev = stream->port->dev;
    	struct vip_port *port = stream->port;
    
    	stream->sequence = 0;
    	stream->field = V4L2_FIELD_TOP;
    
    	if (port->csc == VIP_CSC_Y2R) {
    		port->flags &= ~FLAG_MULT_PORT;
    		/* Set alpha component in background color */
    		vpdma_set_bg_color(dev->shared->vpdma,
    				   (struct vpdma_data_format *)
    				   port->fmt->vpdma_fmt[0],
    				   0xff);
    		if (port->port_id == VIP_PORTA) {
    			/*
    			 * Input A: YUV422
    			 * Output: Y_UP/UV_UP: RGB
    			 * CSC_SRC_SELECT       = 1
    			 * RGB_OUT_HI_SELECT    = 1
    			 * RGB_SRC_SELECT       = 1
    			 * MULTI_CHANNEL_SELECT = 0
    			 */
    			vip_set_slice_path(dev, VIP_CSC_SRC_DATA_SELECT, 1);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_RGB_SRC_DATA_SELECT, 1);
    		} else {
    			/*
    			 * Input B: YUV422
    			 * Output: Y_UP/UV_UP: RGB
    			 * CSC_SRC_SELECT       = 2
    			 * RGB_OUT_LO_SELECT    = 1
    			 * MULTI_CHANNEL_SELECT = 0
    			 */
    			vip_set_slice_path(dev, VIP_CSC_SRC_DATA_SELECT, 2);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 1);
    		}
    		/* We are done */
    		return;
    	} else if (port->csc == VIP_CSC_R2Y) {
    		port->flags &= ~FLAG_MULT_PORT;
    		if (port->scaler && port->fmt->coplanar) {
    			if (port->port_id == VIP_PORTA) {
    				/*
    				 * Input A: RGB
    				 * Output: Y_UP/UV_UP: Scaled YUV420
    				 * CSC_SRC_SELECT       = 4
    				 * SC_SRC_SELECT        = 1
    				 * CHR_DS_1_SRC_SELECT  = 1
    				 * CHR_DS_1_BYPASS      = 0
    				 * RGB_OUT_HI_SELECT    = 0
    				 */
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 4);
    				vip_set_slice_path(dev,
    						   VIP_SC_SRC_DATA_SELECT, 1);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   1);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			} else {
    				vip_err(stream, "RGB sensor can only be on Port A\n");
    			}
    		} else if (port->scaler) {
    			if (port->port_id == VIP_PORTA) {
    				/*
    				 * Input A: RGB
    				 * Output: Y_UP: Scaled YUV422
    				 * CSC_SRC_SELECT       = 4
    				 * SC_SRC_SELECT        = 1
    				 * CHR_DS_1_SRC_SELECT  = 1
    				 * CHR_DS_1_BYPASS      = 1
    				 * RGB_OUT_HI_SELECT    = 0
    				 */
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 4);
    				vip_set_slice_path(dev,
    						   VIP_SC_SRC_DATA_SELECT, 1);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   1);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 1);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			} else {
    				vip_err(stream, "RGB sensor can only be on Port A\n");
    			}
    		} else if (port->fmt->coplanar) {
    			if (port->port_id == VIP_PORTA) {
    				/*
    				 * Input A: RGB
    				 * Output: Y_UP/UV_UP: YUV420
    				 * CSC_SRC_SELECT       = 4
    				 * CHR_DS_1_SRC_SELECT  = 2
    				 * CHR_DS_1_BYPASS      = 0
    				 * RGB_OUT_HI_SELECT    = 0
    				 */
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 4);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   2);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 0);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			} else {
    				vip_err(stream, "RGB sensor can only be on Port A\n");
    			}
    		} else {
    			if (port->port_id == VIP_PORTA) {
    				/*
    				 * Input A: RGB
    				 * Output: Y_UP/UV_UP: YUV420
    				 * CSC_SRC_SELECT       = 4
    				 * CHR_DS_1_SRC_SELECT  = 2
    				 * CHR_DS_1_BYPASS      = 1
    				 * RGB_OUT_HI_SELECT    = 0
    				 */
    				vip_set_slice_path(dev,
    						   VIP_CSC_SRC_DATA_SELECT, 4);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_SRC_DATA_SELECT,
    						   2);
    				vip_set_slice_path(dev,
    						   VIP_CHR_DS_1_DATA_BYPASS, 1);
    				vip_set_slice_path(dev,
    						   VIP_RGB_OUT_HI_DATA_SELECT,
    						   0);
    			} else {
    				vip_err(stream, "RGB sensor can only be on Port A\n");
    			}
    		}
    		/* We are done */
    		return;
    	} else if (v4l2_is_format_rgb(port->fmt->finfo)) {
    		port->flags &= ~FLAG_MULT_PORT;
    		/* Set alpha component in background color */
    		vpdma_set_bg_color(dev->shared->vpdma,
    				   (struct vpdma_data_format *)
    				   port->fmt->vpdma_fmt[0],
    				   0xff);
    		if (port->port_id == VIP_PORTA) {
    			/*
    			 * Input A: RGB
    			 * Output: Y_LO/UV_LO: RGB
    			 * RGB_OUT_LO_SELECT    = 1
    			 * MULTI_CHANNEL_SELECT = 1
    			 */
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 1);
    		} else {
    			vip_err(stream, "RGB sensor can only be on Port A\n");
    		}
    		/* We are done */
    		return;
    	}
    
    	if (port->scaler && port->fmt->coplanar) {
    		port->flags &= ~FLAG_MULT_PORT;
    		if (port->port_id == VIP_PORTA) {
    			/*
    			 * Input A: YUV422
    			 * Output: Y_UP/UV_UP: Scaled YUV420
    			 * SC_SRC_SELECT        = 2
    			 * CHR_DS_1_SRC_SELECT  = 1
    			 * CHR_DS_1_BYPASS      = 0
    			 * RGB_OUT_HI_SELECT    = 0
    			 */
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 2);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			/*
    			 * Input B: YUV422
    			 * Output: Y_LO/UV_LO: Scaled YUV420
    			 * SC_SRC_SELECT        = 3
    			 * CHR_DS_2_SRC_SELECT  = 1
    			 * RGB_OUT_LO_SELECT    = 0
    			 * MULTI_CHANNEL_SELECT = 0
    			 */
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 3);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    		}
    	} else if (port->scaler) {
    		port->flags &= ~FLAG_MULT_PORT;
    		if (port->port_id == VIP_PORTA) {
    			/*
    			 * Input A: YUV422
    			 * Output: Y_UP: Scaled YUV422
    			 * SC_SRC_SELECT        = 2
    			 * CHR_DS_1_SRC_SELECT  = 1
    			 * CHR_DS_1_BYPASS      = 1
    			 * RGB_OUT_HI_SELECT    = 0
    			 */
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 2);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 1);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			/*
    			 * Input B: YUV422
    			 * Output: UV_UP: Scaled YUV422
    			 * SC_SRC_SELECT        = 3
    			 * CHR_DS_2_SRC_SELECT  = 1
    			 * CHR_DS_1_BYPASS      = 1
    			 * CHR_DS_2_BYPASS      = 1
    			 * RGB_OUT_HI_SELECT    = 0
    			 */
    			vip_set_slice_path(dev, VIP_SC_SRC_DATA_SELECT, 3);
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 1);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 1);
    			vip_set_slice_path(dev, VIP_CHR_DS_2_DATA_BYPASS, 1);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		}
    	} else if (port->fmt->coplanar) {
    		port->flags &= ~FLAG_MULT_PORT;
    		if (port->port_id == VIP_PORTA) {
    			/*
    			 * Input A: YUV422
    			 * Output: Y_UP/UV_UP: YUV420
    			 * CHR_DS_1_SRC_SELECT  = 3
    			 * CHR_DS_1_BYPASS      = 0
    			 * RGB_OUT_HI_SELECT    = 0
    			 */
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_1_SRC_DATA_SELECT, 3);
    			vip_set_slice_path(dev, VIP_CHR_DS_1_DATA_BYPASS, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_HI_DATA_SELECT, 0);
    		} else {
    			/*
    			 * Input B: YUV422
    			 * Output: Y_LO/UV_LO: YUV420
    			 * CHR_DS_2_SRC_SELECT  = 4
    			 * CHR_DS_2_BYPASS      = 0
    			 * RGB_OUT_LO_SELECT    = 0
    			 * MULTI_CHANNEL_SELECT = 0
    			 */
    			vip_set_slice_path(dev,
    					   VIP_CHR_DS_2_SRC_DATA_SELECT, 4);
    			vip_set_slice_path(dev, VIP_CHR_DS_2_DATA_BYPASS, 0);
    			vip_set_slice_path(dev,
    					   VIP_MULTI_CHANNEL_DATA_SELECT, 0);
    			vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    		}
    	} else {
    		port->flags |= FLAG_MULT_PORT;
    		/*
    		 * Input A/B: YUV422
    		 * Output: Y_LO: YUV422 - UV_LO: YUV422
    		 * MULTI_CHANNEL_SELECT = 1
    		 * RGB_OUT_LO_SELECT    = 0
    		 */
    		vip_set_slice_path(dev, VIP_MULTI_CHANNEL_DATA_SELECT, 1);
    		vip_set_slice_path(dev, VIP_RGB_OUT_LO_DATA_SELECT, 0);
    	}
    }
    
    static int vip_g_selection(struct file *file, void *fh,
    			   struct v4l2_selection *s)
    {
    	struct vip_stream *stream = file2stream(file);
    
    	switch (s->target) {
    	case V4L2_SEL_TGT_COMPOSE_DEFAULT:
    	case V4L2_SEL_TGT_COMPOSE_BOUNDS:
    	case V4L2_SEL_TGT_CROP_BOUNDS:
    	case V4L2_SEL_TGT_CROP_DEFAULT:
    		s->r.left = 0;
    		s->r.top = 0;
    		s->r.width = stream->width;
    		s->r.height = stream->height;
    		return 0;
    
    	case V4L2_SEL_TGT_COMPOSE:
    	case V4L2_SEL_TGT_CROP:
    		s->r = stream->port->c_rect;
    		return 0;
    	}
    
    	return -EINVAL;
    }
    
    static int enclosed_rectangle(struct v4l2_rect *a, struct v4l2_rect *b)
    {
    	if (a->left < b->left || a->top < b->top)
    		return 0;
    	if (a->left + a->width > b->left + b->width)
    		return 0;
    	if (a->top + a->height > b->top + b->height)
    		return 0;
    
    	return 1;
    }
    
    static int vip_s_selection(struct file *file, void *fh,
    			   struct v4l2_selection *s)
    {
    	struct vip_stream *stream = file2stream(file);
    	struct v4l2_rect r = s->r;
    
    	v4l_bound_align_image(&r.width, 0, stream->width, 0,
    			      &r.height, 0, stream->height, 0, 0);
    
    	r.left = clamp_t(unsigned int, r.left, 0, stream->width - r.width);
    	r.top  = clamp_t(unsigned int, r.top, 0, stream->height - r.height);
    
    	if (s->flags & V4L2_SEL_FLAG_LE && !enclosed_rectangle(&r, &s->r))
    		return -ERANGE;
    
    	if (s->flags & V4L2_SEL_FLAG_GE && !enclosed_rectangle(&s->r, &r))
    		return -ERANGE;
    
    	s->r = r;
    	stream->port->c_rect = r;
    
    	vip_dbg(1, stream, "cropped (%d,%d)/%dx%d of %dx%d\n",
    		r.left, r.top, r.width, r.height,
    		stream->width, stream->height);
    
    	return 0;
    }
    
    static long vip_ioctl_default(struct file *file, void *fh, bool valid_prio,
    			      unsigned int cmd, void *arg)
    {
    	struct vip_stream *stream = file2stream(file);
    
    	if (!valid_prio) {
    		vip_err(stream, "%s device busy\n", __func__);
    		return -EBUSY;
    	}
    
    	switch (cmd) {
    	default:
    		return -ENOTTY;
    	}
    }
    
    static const struct v4l2_ioctl_ops vip_ioctl_ops = {
    	.vidioc_querycap	= vip_querycap,
    	.vidioc_enum_input	= vip_enuminput,
    	.vidioc_g_input		= vip_g_input,
    	.vidioc_s_input		= vip_s_input,
    
    	.vidioc_querystd	= vip_querystd,
    	.vidioc_g_std		= vip_g_std,
    	.vidioc_s_std		= vip_s_std,
    
    	.vidioc_enum_fmt_vid_cap = vip_enum_fmt_vid_cap,
    	.vidioc_g_fmt_vid_cap	= vip_g_fmt_vid_cap,
    	.vidioc_try_fmt_vid_cap	= vip_try_fmt_vid_cap,
    	.vidioc_s_fmt_vid_cap	= vip_s_fmt_vid_cap,
    
    	.vidioc_enum_frameintervals	= vip_enum_frameintervals,
    	.vidioc_enum_framesizes		= vip_enum_framesizes,
    	.vidioc_s_parm			= vip_s_parm,
    	.vidioc_g_parm			= vip_g_parm,
    	.vidioc_g_selection	= vip_g_selection,
    	.vidioc_s_selection	= vip_s_selection,
    	.vidioc_reqbufs		= vb2_ioctl_reqbufs,
    	.vidioc_create_bufs	= vb2_ioctl_create_bufs,
    	.vidioc_prepare_buf	= vb2_ioctl_prepare_buf,
    	.vidioc_querybuf	= vb2_ioctl_querybuf,
    	.vidioc_qbuf		= vb2_ioctl_qbuf,
    	.vidioc_dqbuf		= vb2_ioctl_dqbuf,
    	.vidioc_expbuf		= vb2_ioctl_expbuf,
    
    	.vidioc_streamon	= vb2_ioctl_streamon,
    	.vidioc_streamoff	= vb2_ioctl_streamoff,
    	.vidioc_log_status	= v4l2_ctrl_log_status,
    	.vidioc_subscribe_event = v4l2_ctrl_subscribe_event,
    	.vidioc_unsubscribe_event = v4l2_event_unsubscribe,
    	.vidioc_default		= vip_ioctl_default,
    };
    
    /*
     * Videobuf operations
     */
    static int vip_queue_setup(struct vb2_queue *vq,
    			   unsigned int *nbuffers, unsigned int *nplanes,
    			   unsigned int sizes[], struct device *alloc_devs[])
    {
    	struct vip_stream *stream = vb2_get_drv_priv(vq);
    	unsigned int size = stream->sizeimage;
    
    	if (vq->num_buffers + *nbuffers < 3)
    		*nbuffers = 3 - vq->num_buffers;
    
    	if (*nplanes) {
    		if (sizes[0] < size)
    			return -EINVAL;
    		size = sizes[0];
    	}
    
    	*nplanes = 1;
    	sizes[0] = size;
    
    	vip_dbg(1, stream, "get %d buffer(s) of size %d each.\n",
    		*nbuffers, sizes[0]);
    
    	return 0;
    }
    
    static int vip_buf_prepare(struct vb2_buffer *vb)
    {
    	struct vip_stream *stream = vb2_get_drv_priv(vb->vb2_queue);
    
    	if (vb2_plane_size(vb, 0) < stream->sizeimage) {
    		vip_dbg(1, stream,
    			"%s data will not fit into plane (%lu < %lu)\n",
    			__func__, vb2_plane_size(vb, 0),
    			(long)stream->sizeimage);
    		return -EINVAL;
    	}
    
    	vb2_set_plane_payload(vb, 0, stream->sizeimage);
    
    	return 0;
    }
    
    static void vip_buf_queue(struct vb2_buffer *vb)
    {
    	struct vip_stream *stream = vb2_get_drv_priv(vb->vb2_queue);
    	struct vip_dev *dev = stream->port->dev;
    	struct vip_buffer *buf = container_of(vb, struct vip_buffer,
    					      vb.vb2_buf);
    	unsigned long flags;
    
    	spin_lock_irqsave(&dev->slock, flags);
    	list_add_tail(&buf->list, &stream->vidq);
    	spin_unlock_irqrestore(&dev->slock, flags);
    }
    
    static int vip_setup_scaler(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	struct sc_data *sc = dev->sc;
    	struct csc_data *csc = dev->csc;
    	struct vpdma_data *vpdma = dev->shared->vpdma;
    	struct vip_mmr_adb *mmr_adb = port->mmr_adb.addr;
    	int list_num = stream->list_num;
    	int timeout = 500;
    	struct v4l2_format dst_f;
    	struct v4l2_format src_f;
    
    	memset(&src_f, 0, sizeof(src_f));
    	src_f.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    	v4l2_fill_pix_format(&src_f.fmt.pix, &port->mbus_framefmt);
    	src_f.fmt.pix.pixelformat = vip_mbus_code_to_fourcc(port->fmt->code);
    
    	dst_f = src_f;
    	dst_f.fmt.pix.pixelformat = port->fmt->fourcc;
    	dst_f.fmt.pix.width = stream->width;
    	dst_f.fmt.pix.height = stream->height;
    
    	/* if scaler not associated with this port then skip */
    	if (port->scaler) {
    		sc_set_hs_coeffs(sc, port->sc_coeff_h.addr,
    				 port->mbus_framefmt.width,
    				 port->c_rect.width);
    		sc_set_vs_coeffs(sc, port->sc_coeff_v.addr,
    				 port->mbus_framefmt.height,
    				 port->c_rect.height);
    		sc_config_scaler(sc, &mmr_adb->sc_regs0[0],
    				 &mmr_adb->sc_regs8[0], &mmr_adb->sc_regs17[0],
    				 port->mbus_framefmt.width,
    				 port->mbus_framefmt.height,
    				 port->c_rect.width,
    				 port->c_rect.height);
    		port->load_mmrs = true;
    	}
    
    	/* if csc not associated with this port then skip */
    	if (port->csc) {
    		csc_set_coeff(csc, &mmr_adb->csc_regs[0],
    			      &src_f, &dst_f);
    
    		port->load_mmrs = true;
    	}
    
    	/* If coeff are already loaded then skip */
    	if (!sc->load_coeff_v && !sc->load_coeff_h && !port->load_mmrs)
    		return 0;
    
    	if (vpdma_list_busy(vpdma, list_num)) {
    		vip_dbg(3, stream, "%s: List %d is busy\n",
    			__func__, list_num);
    	}
    
    	/* Make sure we start with a clean list */
    	vpdma_reset_desc_list(&stream->desc_list);
    
    	/* config descriptors */
    	if (port->load_mmrs) {
    		vpdma_map_desc_buf(vpdma, &port->mmr_adb);
    		vpdma_add_cfd_adb(&stream->desc_list, CFD_MMR_CLIENT,
    				  &port->mmr_adb);
    
    		port->load_mmrs = false;
    		vip_dbg(3, stream, "Added mmr_adb config desc\n");
    	}
    
    	if (sc->loaded_coeff_h != port->sc_coeff_h.dma_addr ||
    	    sc->load_coeff_h) {
    		vpdma_map_desc_buf(vpdma, &port->sc_coeff_h);
    		vpdma_add_cfd_block(&stream->desc_list,
    				    VIP_SLICE1_CFD_SC_CLIENT + dev->slice_id,
    				    &port->sc_coeff_h, 0);
    
    		sc->loaded_coeff_h = port->sc_coeff_h.dma_addr;
    		sc->load_coeff_h = false;
    		vip_dbg(3, stream, "Added sc_coeff_h config desc\n");
    	}
    
    	if (sc->loaded_coeff_v != port->sc_coeff_v.dma_addr ||
    	    sc->load_coeff_v) {
    		vpdma_map_desc_buf(vpdma, &port->sc_coeff_v);
    		vpdma_add_cfd_block(&stream->desc_list,
    				    VIP_SLICE1_CFD_SC_CLIENT + dev->slice_id,
    				    &port->sc_coeff_v, SC_COEF_SRAM_SIZE >> 4);
    
    		sc->loaded_coeff_v = port->sc_coeff_v.dma_addr;
    		sc->load_coeff_v = false;
    		vip_dbg(3, stream, "Added sc_coeff_v config desc\n");
    	}
    	vip_dbg(3, stream, "CFD_SC_CLIENT %d slice_id: %d\n",
    		VIP_SLICE1_CFD_SC_CLIENT + dev->slice_id, dev->slice_id);
    
    	vpdma_map_desc_buf(vpdma, &stream->desc_list.buf);
    	vip_dbg(3, stream, "Submitting desc on list# %d\n", list_num);
    	vpdma_submit_descs(vpdma, &stream->desc_list, list_num);
    
    	while (vpdma_list_busy(vpdma, list_num) && timeout--)
    		usleep_range(1000, 1100);
    
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &port->mmr_adb);
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &port->sc_coeff_h);
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &port->sc_coeff_v);
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    
    	vpdma_reset_desc_list(&stream->desc_list);
    
    	if (timeout <= 0) {
    		vip_err(stream, "Timed out setting up scaler through VPDMA list\n");
    		return -EBUSY;
    	}
    
    	return 0;
    }
    
    static int vip_load_vpdma_list_fifo(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	struct vpdma_data *vpdma = dev->shared->vpdma;
    	int list_num = stream->list_num;
    	struct vip_buffer *buf;
    	unsigned long flags;
    	int timeout, i;
    
    	if (vpdma_list_busy(dev->shared->vpdma, stream->list_num))
    		return -EBUSY;
    
    	for (i = 0; i < VIP_VPDMA_FIFO_SIZE; i++) {
    		spin_lock_irqsave(&dev->slock, flags);
    		if (list_empty(&stream->vidq)) {
    			vip_err(stream, "No buffer left!");
    			spin_unlock_irqrestore(&dev->slock, flags);
    			return -EINVAL;
    		}
    
    		buf = list_entry(stream->vidq.next,
    				 struct vip_buffer, list);
    		buf->drop = false;
    
    		list_move_tail(&buf->list, &stream->post_bufs);
    		spin_unlock_irqrestore(&dev->slock, flags);
    
    		vip_dbg(2, stream, "%s: start_dma vb2 buf idx:%d\n",
    			__func__, buf->vb.vb2_buf.index);
    		start_dma(stream, buf);
    
    		timeout = 500;
    		while (vpdma_list_busy(vpdma, list_num) && timeout--)
    			usleep_range(1000, 1100);
    
    		if (timeout <= 0) {
    			vip_err(stream, "Timed out loading VPDMA list fifo\n");
    			return -EBUSY;
    		}
    	}
    	return 0;
    }
    
    static int vip_start_streaming(struct vb2_queue *vq, unsigned int count)
    {
    	struct vip_stream *stream = vb2_get_drv_priv(vq);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	int ret;
    
    	vip_setup_scaler(stream);
    
    	/*
    	 * Make sure the scaler is configured before the datapath is
    	 * enabled. The scaler can only load the coefficient
    	 * parameters when it is idle. If the scaler path is enabled
    	 * and video data is being received then the VPDMA transfer will
    	 * stall indefinetely.
    	 */
    	set_fmt_params(stream);
    	vip_setup_parser(port);
    
    	if (port->subdev) {
    		ret = v4l2_subdev_call(port->subdev, video, s_stream, 1);
    		if (ret) {
    			vip_dbg(1, stream, "stream on failed in subdev\n");
    			return ret;
    		}
    	}
    
    	stream->sequence = 0;
    	stream->field = V4L2_FIELD_TOP;
    	populate_desc_list(stream);
    
    	ret = vip_load_vpdma_list_fifo(stream);
    	if (ret)
    		return ret;
    
    	stream->num_recovery = 0;
    
    	clear_irqs(dev, dev->slice_id, stream->list_num);
    	enable_irqs(dev, dev->slice_id, stream->list_num);
    	vip_schedule_next_buffer(stream);
    	vip_parser_stop_imm(port, false);
    	vip_enable_parser(port, true);
    
    	return 0;
    }
    
    /*
     * Abort streaming and wait for last buffer
     */
    static void vip_stop_streaming(struct vb2_queue *vq)
    {
    	struct vip_stream *stream = vb2_get_drv_priv(vq);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	struct vip_buffer *buf;
    	int ret;
    
    	vip_parser_stop_imm(port, true);
    	vip_enable_parser(port, false);
    	unset_fmt_params(stream);
    
    	disable_irqs(dev, dev->slice_id, stream->list_num);
    	clear_irqs(dev, dev->slice_id, stream->list_num);
    
    	if (port->subdev) {
    		ret = v4l2_subdev_call(port->subdev, video, s_stream, 0);
    		if (ret)
    			vip_dbg(1, stream, "stream on failed in subdev\n");
    	}
    
    	stop_dma(stream, true);
    
    	/* release all active buffers */
    	while (!list_empty(&stream->post_bufs)) {
    		buf = list_entry(stream->post_bufs.next,
    				 struct vip_buffer, list);
    		list_del(&buf->list);
    		if (buf->drop == 1)
    			list_add_tail(&buf->list, &stream->dropq);
    		else
    			vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
    	}
    	while (!list_empty(&stream->vidq)) {
    		buf = list_entry(stream->vidq.next, struct vip_buffer, list);
    		list_del(&buf->list);
    		vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
    	}
    
    	if (!vb2_is_streaming(vq))
    		return;
    
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    	vpdma_reset_desc_list(&stream->desc_list);
    }
    
    static const struct vb2_ops vip_video_qops = {
    	.queue_setup		= vip_queue_setup,
    	.buf_prepare		= vip_buf_prepare,
    	.buf_queue		= vip_buf_queue,
    	.start_streaming	= vip_start_streaming,
    	.stop_streaming		= vip_stop_streaming,
    	.wait_prepare		= vb2_ops_wait_prepare,
    	.wait_finish		= vb2_ops_wait_finish,
    };
    
    /*
     * File operations
     */
    
    static int vip_init_dev(struct vip_dev *dev)
    {
    	if (dev->num_ports != 0)
    		goto done;
    
    	vip_set_clock_enable(dev, 1);
    	vip_module_reset(dev, VIP_SC_RST, false);
    	vip_module_reset(dev, VIP_CSC_RST, false);
    done:
    	dev->num_ports++;
    
    	return 0;
    }
    
    static inline bool is_scaler_available(struct vip_port *port)
    {
    	if (port->endpoint.bus_type == V4L2_MBUS_PARALLEL)
    		if (port->dev->sc_assigned == VIP_NOT_ASSIGNED ||
    		    port->dev->sc_assigned == port->port_id)
    			return true;
    	return false;
    }
    
    static inline bool allocate_scaler(struct vip_port *port)
    {
    	if (is_scaler_available(port)) {
    		if (port->dev->sc_assigned == VIP_NOT_ASSIGNED ||
    		    port->dev->sc_assigned == port->port_id) {
    			port->dev->sc_assigned = port->port_id;
    			port->scaler = true;
    			return true;
    		}
    	}
    	return false;
    }
    
    static inline void free_scaler(struct vip_port *port)
    {
    	if (port->dev->sc_assigned == port->port_id) {
    		port->dev->sc_assigned = VIP_NOT_ASSIGNED;
    		port->scaler = false;
    	}
    }
    
    static bool is_csc_available(struct vip_port *port)
    {
    	if (port->endpoint.bus_type == V4L2_MBUS_PARALLEL)
    		if (port->dev->csc_assigned == VIP_NOT_ASSIGNED ||
    		    port->dev->csc_assigned == port->port_id)
    			return true;
    	return false;
    }
    
    static bool allocate_csc(struct vip_port *port,
    			 enum vip_csc_state csc_direction)
    {
    	/* Is CSC needed? */
    	if (csc_direction != VIP_CSC_NA) {
    		if (is_csc_available(port)) {
    			port->dev->csc_assigned = port->port_id;
    			port->csc = csc_direction;
    			vip_dbg(1, port, "%s: csc allocated: dir: %d\n",
    				__func__, csc_direction);
    			return true;
    		}
    	}
    	return false;
    }
    
    static void free_csc(struct vip_port *port)
    {
    	if (port->dev->csc_assigned == port->port_id) {
    		port->dev->csc_assigned = VIP_NOT_ASSIGNED;
    		port->csc = VIP_CSC_NA;
    		vip_dbg(1, port, "%s: csc freed\n",
    			__func__);
    	}
    }
    
    static int vip_init_port(struct vip_port *port)
    {
    	int ret;
    	struct vip_fmt *fmt;
    	struct v4l2_subdev_format sd_fmt = {
    		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
    		.pad = 0,
    	};
    	struct v4l2_mbus_framefmt *mbus_fmt = &sd_fmt.format;
    
    	if (port->num_streams != 0)
    		goto done;
    
    	ret = vip_init_dev(port->dev);
    	if (ret)
    		goto done;
    
    	/* Get subdevice current frame format */
    	ret = v4l2_subdev_call(port->subdev, pad, get_fmt, NULL, &sd_fmt);
    	if (ret)
    		vip_dbg(1, port, "init_port get_fmt failed in subdev: (%d)\n",
    			ret);
    
    	/* try to find one that matches */
    	fmt = find_port_format_by_code(port, mbus_fmt->code);
    	if (!fmt) {
    		vip_dbg(1, port, "subdev default mbus_fmt %04x is not matched.\n",
    			mbus_fmt->code);
    		/* if all else fails just pick the first one */
    		fmt = port->active_fmt[0];
    
    		mbus_fmt->code = fmt->code;
    		sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    		sd_fmt.pad = 0;
    		ret = v4l2_subdev_call(port->subdev, pad, set_fmt,
    				       NULL, &sd_fmt);
    		if (ret)
    			vip_dbg(1, port, "init_port set_fmt failed in subdev: (%d)\n",
    				ret);
    	}
    
    	/* Assign current format */
    	port->fmt = fmt;
    	port->mbus_framefmt = *mbus_fmt;
    
    	vip_dbg(3, port, "%s: g_mbus_fmt subdev mbus_code: %04X fourcc:%s size: %dx%d\n",
    		__func__, fmt->code,
    		fourcc_to_str(fmt->fourcc),
    		mbus_fmt->width, mbus_fmt->height);
    
    	if (mbus_fmt->field == V4L2_FIELD_ALTERNATE)
    		port->flags |= FLAG_INTERLACED;
    	else
    		port->flags &= ~FLAG_INTERLACED;
    
    	port->c_rect.left	= 0;
    	port->c_rect.top	= 0;
    	port->c_rect.width	= mbus_fmt->width;
    	port->c_rect.height	= mbus_fmt->height;
    
    	ret = vpdma_alloc_desc_buf(&port->sc_coeff_h, SC_COEF_SRAM_SIZE);
    	if (ret != 0)
    		return ret;
    
    	ret = vpdma_alloc_desc_buf(&port->sc_coeff_v, SC_COEF_SRAM_SIZE);
    	if (ret != 0)
    		goto free_sc_h;
    
    	ret = vpdma_alloc_desc_buf(&port->mmr_adb, sizeof(struct vip_mmr_adb));
    	if (ret != 0)
    		goto free_sc_v;
    
    	init_adb_hdrs(port);
    
    	vip_enable_parser(port, false);
    done:
    	port->num_streams++;
    	return 0;
    
    free_sc_v:
    	vpdma_free_desc_buf(&port->sc_coeff_v);
    free_sc_h:
    	vpdma_free_desc_buf(&port->sc_coeff_h);
    	return ret;
    }
    
    static int vip_init_stream(struct vip_stream *stream)
    {
    	struct vip_port *port = stream->port;
    	struct vip_fmt *fmt;
    	struct v4l2_mbus_framefmt *mbus_fmt;
    	struct v4l2_format f;
    	int ret;
    
    	ret = vip_init_port(port);
    	if (ret != 0)
    		return ret;
    
    	fmt = port->fmt;
    	mbus_fmt = &port->mbus_framefmt;
    
    	memset(&f, 0, sizeof(f));
    
    	/* Properly calculate the sizeimage and bytesperline values. */
    	v4l2_fill_pix_format(&f.fmt.pix, mbus_fmt);
    	f.fmt.pix.pixelformat = fmt->fourcc;
    	ret = vip_calc_format_size(port, fmt, &f);
    	if (ret)
    		return ret;
    
    	stream->width = f.fmt.pix.width;
    	stream->height = f.fmt.pix.height;
    	stream->sup_field = f.fmt.pix.field;
    	stream->bytesperline = f.fmt.pix.bytesperline;
    	stream->sizeimage = f.fmt.pix.sizeimage;
    
    	vip_dbg(3, stream, "init_stream fourcc:%s size: %dx%d bpl:%d img_size:%d\n",
    		fourcc_to_str(f.fmt.pix.pixelformat),
    		f.fmt.pix.width, f.fmt.pix.height,
    		f.fmt.pix.bytesperline, f.fmt.pix.sizeimage);
    	vip_dbg(3, stream, "init_stream vpdma data type: 0x%02X\n",
    		port->fmt->vpdma_fmt[0]->data_type);
    
    	ret = vpdma_create_desc_list(&stream->desc_list, VIP_DESC_LIST_SIZE,
    				     VPDMA_LIST_TYPE_NORMAL);
    
    	if (ret != 0)
    		return ret;
    
    	stream->write_desc = (struct vpdma_dtd *)stream->desc_list.buf.addr
    				+ 15;
    
    	vip_dbg(1, stream, "%s: stream instance %pa\n",
    		__func__, &stream);
    
    	return 0;
    }
    
    static void vip_release_dev(struct vip_dev *dev)
    {
    	/*
    	 * On last close, disable clocks to conserve power
    	 */
    
    	if (--dev->num_ports == 0) {
    		/* reset the scaler module */
    		vip_module_reset(dev, VIP_SC_RST, true);
    		vip_module_reset(dev, VIP_CSC_RST, true);
    		vip_set_clock_enable(dev, 0);
    	}
    }
    
    static int vip_set_crop_parser(struct vip_port *port)
    {
    	struct vip_dev *dev = port->dev;
    	struct vip_parser_data *parser = dev->parser;
    	u32 hcrop = 0, vcrop = 0;
    	u32 width = port->mbus_framefmt.width;
    
    	if (port->fmt->vpdma_fmt[0] == &vpdma_raw_fmts[VPDMA_DATA_FMT_RAW8]) {
    		/*
    		 * Special case since we are faking a YUV422 16bit format
    		 * to have the vpdma perform the needed byte swap
    		 * we need to adjust the pixel width accordingly
    		 * otherwise the parser will attempt to collect more pixels
    		 * then available and the vpdma transfer will exceed the
    		 * allocated frame buffer.
    		 */
    		width >>= 1;
    		vip_dbg(1, port, "%s: 8 bit raw detected, adjusting width to %d\n",
    			__func__, width);
    	}
    
    	/*
    	 * Set Parser Crop parameters to source size otherwise
    	 * scaler and colorspace converter will yield garbage.
    	 */
    	hcrop = VIP_ACT_BYPASS;
    	insert_field(&hcrop, 0, VIP_ACT_SKIP_NUMPIX_MASK,
    		     VIP_ACT_SKIP_NUMPIX_SHFT);
    	insert_field(&hcrop, width,
    		     VIP_ACT_USE_NUMPIX_MASK, VIP_ACT_USE_NUMPIX_SHFT);
    	reg_write(parser, VIP_PARSER_CROP_H_PORT(port->port_id), hcrop);
    
    	insert_field(&vcrop, 0, VIP_ACT_SKIP_NUMLINES_MASK,
    		     VIP_ACT_SKIP_NUMLINES_SHFT);
    	insert_field(&vcrop, port->mbus_framefmt.height,
    		     VIP_ACT_USE_NUMLINES_MASK, VIP_ACT_USE_NUMLINES_SHFT);
    	reg_write(parser, VIP_PARSER_CROP_V_PORT(port->port_id), vcrop);
    
    	return 0;
    }
    
    static int vip_setup_parser(struct vip_port *port)
    {
    	struct vip_dev *dev = port->dev;
    	struct vip_parser_data *parser = dev->parser;
    	struct v4l2_fwnode_endpoint *endpoint = &port->endpoint;
    	struct vip_bt656_bus *bt656_ep = &port->bt656_endpoint;
    	int iface, sync_type;
    	u32 flags = 0, config0;
    
    	/* Reset the port */
    	vip_reset_parser(port, true);
    	usleep_range(200, 250);
    	vip_reset_parser(port, false);
    
    	config0 = reg_read(parser, VIP_PARSER_PORT(port->port_id));
    
    	if (endpoint->bus_type == V4L2_MBUS_BT656) {
    		flags = endpoint->bus.parallel.flags;
    		iface = DUAL_8B_INTERFACE;
    
    		/*
    		 * Ideally, this should come from subdev
    		 * port->fmt can be anything once CSC is enabled
    		 */
    		if (vip_is_mbuscode_rgb(port->fmt->code)) {
    			sync_type = EMBEDDED_SYNC_SINGLE_RGB_OR_YUV444;
    		} else {
    			switch (bt656_ep->num_channels) {
    			case 4:
    				sync_type = EMBEDDED_SYNC_4X_MULTIPLEXED_YUV422;
    				break;
    			case 2:
    				sync_type = EMBEDDED_SYNC_2X_MULTIPLEXED_YUV422;
    				break;
    			case 1:
    				sync_type = EMBEDDED_SYNC_SINGLE_YUV422;
    				break;
    			default:
    				sync_type =
    				EMBEDDED_SYNC_LINE_MULTIPLEXED_YUV422;
    			}
    			if (bt656_ep->pixmux == 0)
    				sync_type =
    				EMBEDDED_SYNC_LINE_MULTIPLEXED_YUV422;
    		}
    
    	} else if (endpoint->bus_type == V4L2_MBUS_PARALLEL) {
    		flags = endpoint->bus.parallel.flags;
    
    		switch (endpoint->bus.parallel.bus_width) {
    		case 24:
    			iface = SINGLE_24B_INTERFACE;
    		break;
    		case 16:
    			iface = SINGLE_16B_INTERFACE;
    		break;
    		case 8:
    		default:
    			iface = DUAL_8B_INTERFACE;
    		}
    
    		if (vip_is_mbuscode_rgb(port->fmt->code))
    			sync_type = DISCRETE_SYNC_SINGLE_RGB_24B;
    		else
    			sync_type = DISCRETE_SYNC_SINGLE_YUV422;
    
    		if (flags & V4L2_MBUS_HSYNC_ACTIVE_HIGH)
    			config0 |= VIP_HSYNC_POLARITY;
    		else if (flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
    			config0 &= ~VIP_HSYNC_POLARITY;
    
    		if (flags & V4L2_MBUS_VSYNC_ACTIVE_HIGH)
    			config0 |= VIP_VSYNC_POLARITY;
    		else if (flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
    			config0 &= ~VIP_VSYNC_POLARITY;
    
    		config0 &= ~VIP_USE_ACTVID_HSYNC_ONLY;
    		config0 |= VIP_ACTVID_POLARITY;
    		config0 |= VIP_DISCRETE_BASIC_MODE;
    
    	} else {
    		vip_err(port, "Device doesn't support CSI2");
    		return -EINVAL;
    	}
    
    	if (flags & V4L2_MBUS_PCLK_SAMPLE_FALLING) {
    		vip_set_pclk_invert(port);
    		config0 |= VIP_PIXCLK_EDGE_POLARITY;
    	} else {
    		config0 &= ~VIP_PIXCLK_EDGE_POLARITY;
    	}
    
    	config0 |= ((sync_type & VIP_SYNC_TYPE_MASK) << VIP_SYNC_TYPE_SHFT);
    
    	reg_write(parser, VIP_PARSER_PORT(port->port_id), config0);
    
    	vip_set_data_interface(port, iface);
    	vip_set_crop_parser(port);
    
    	return 0;
    }
    
    static void vip_enable_parser(struct vip_port *port, bool on)
    {
    	u32 config0;
    	struct vip_dev *dev = port->dev;
    	struct vip_parser_data *parser = dev->parser;
    
    	config0 = reg_read(parser, VIP_PARSER_PORT(port->port_id));
    
    	if (on) {
    		config0 |= VIP_PORT_ENABLE;
    		config0 &= ~(VIP_ASYNC_FIFO_RD | VIP_ASYNC_FIFO_WR);
    	} else {
    		config0 &= ~VIP_PORT_ENABLE;
    		config0 |= (VIP_ASYNC_FIFO_RD | VIP_ASYNC_FIFO_WR);
    	}
    	reg_write(parser, VIP_PARSER_PORT(port->port_id), config0);
    }
    
    static void vip_reset_parser(struct vip_port *port, bool on)
    {
    	u32 config0;
    	struct vip_dev *dev = port->dev;
    	struct vip_parser_data *parser = dev->parser;
    
    	config0 = reg_read(parser, VIP_PARSER_PORT(port->port_id));
    
    	if (on)
    		config0 |= VIP_SW_RESET;
    	else
    		config0 &= ~VIP_SW_RESET;
    
    	reg_write(parser, VIP_PARSER_PORT(port->port_id), config0);
    }
    
    static void vip_parser_stop_imm(struct vip_port *port, bool on)
    {
    	u32 config0;
    	struct vip_dev *dev = port->dev;
    	struct vip_parser_data *parser = dev->parser;
    
    	config0 = reg_read(parser, VIP_PARSER_STOP_IMM_PORT(port->port_id));
    
    	if (on)
    		config0 = 0xffffffff;
    	else
    		config0 = 0;
    
    	reg_write(parser, VIP_PARSER_STOP_IMM_PORT(port->port_id), config0);
    }
    
    static void vip_release_stream(struct vip_stream *stream)
    {
    	struct vip_dev *dev = stream->port->dev;
    
    	vip_dbg(1, stream, "%s: stream instance %pa\n",
    		__func__, &stream);
    
    	vpdma_unmap_desc_buf(dev->shared->vpdma, &stream->desc_list.buf);
    	vpdma_free_desc_buf(&stream->desc_list.buf);
    	vpdma_free_desc_list(&stream->desc_list);
    }
    
    static void vip_release_port(struct vip_port *port)
    {
    	vip_dbg(1, port, "%s: port instance %pa\n",
    		__func__, &port);
    
    	vpdma_free_desc_buf(&port->mmr_adb);
    	vpdma_free_desc_buf(&port->sc_coeff_h);
    	vpdma_free_desc_buf(&port->sc_coeff_v);
    }
    
    static void stop_dma(struct vip_stream *stream, bool clear_list)
    {
    	struct vip_dev *dev = stream->port->dev;
    	int ch, size = 0;
    
    	/* Create a list of channels to be cleared */
    	for (ch = 0; ch < VPDMA_MAX_CHANNELS; ch++) {
    		if (stream->vpdma_channels[ch] == 1) {
    			stream->vpdma_channels_to_abort[size++] = ch;
    			vip_dbg(2, stream, "Clear channel no: %d\n", ch);
    		}
    	}
    
    	/* Clear all the used channels for the list */
    	vpdma_list_cleanup(dev->shared->vpdma, stream->list_num,
    			   stream->vpdma_channels_to_abort, size);
    
    	if (clear_list)
    		for (ch = 0; ch < VPDMA_MAX_CHANNELS; ch++)
    			stream->vpdma_channels[ch] = 0;
    }
    
    static int vip_open(struct file *file)
    {
    	struct vip_stream *stream = video_drvdata(file);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	int ret = 0;
    
    	mutex_lock(&dev->mutex);
    
    	ret = v4l2_fh_open(file);
    	if (ret) {
    		vip_err(stream, "v4l2_fh_open failed\n");
    		goto unlock;
    	}
    
    	/*
    	 * If this is the first open file.
    	 * Then initialize hw module.
    	 */
    	if (!v4l2_fh_is_singular_file(file))
    		goto unlock;
    
    	if (vip_init_stream(stream))
    		ret = -ENODEV;
    unlock:
    	mutex_unlock(&dev->mutex);
    	return ret;
    }
    
    static int vip_release(struct file *file)
    {
    	struct vip_stream *stream = video_drvdata(file);
    	struct vip_port *port = stream->port;
    	struct vip_dev *dev = port->dev;
    	bool fh_singular;
    	int ret;
    
    	mutex_lock(&dev->mutex);
    
    	/* Save the singular status before we call the clean-up helper */
    	fh_singular = v4l2_fh_is_singular_file(file);
    
    	/* the release helper will cleanup any on-going streaming */
    	ret = _vb2_fop_release(file, NULL);
    
    	free_csc(port);
    	free_scaler(port);
    
    	/*
    	 * If this is the last open file.
    	 * Then de-initialize hw module.
    	 */
    	if (fh_singular) {
    		vip_release_stream(stream);
    
    		if (--port->num_streams == 0) {
    			vip_release_port(port);
    			vip_release_dev(port->dev);
    		}
    	}
    
    	mutex_unlock(&dev->mutex);
    
    	return ret;
    }
    
    static const struct v4l2_file_operations vip_fops = {
    	.owner		= THIS_MODULE,
    	.open		= vip_open,
    	.release	= vip_release,
    	.read		= vb2_fop_read,
    	.poll		= vb2_fop_poll,
    	.unlocked_ioctl	= video_ioctl2,
    	.mmap		= vb2_fop_mmap,
    };
    
    static struct video_device vip_videodev = {
    	.name		= VIP_MODULE_NAME,
    	.fops		= &vip_fops,
    	.ioctl_ops	= &vip_ioctl_ops,
    	.minor		= -1,
    	.release	= video_device_release,
    	.tvnorms	= V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM,
    	.device_caps	= V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
    			  V4L2_CAP_READWRITE,
    };
    
    static int alloc_stream(struct vip_port *port, int stream_id, int vfl_type)
    {
    	struct vip_stream *stream;
    	struct vip_dev *dev = port->dev;
    	struct vb2_queue *q;
    	struct video_device *vfd;
    	struct vip_buffer *buf;
    	struct list_head *pos, *tmp;
    	int ret, i;
    	u32 vin_id;
    
    	stream = kzalloc(sizeof(*stream), GFP_KERNEL);
    	if (!stream)
    		return -ENOMEM;
    
        printf(""**** vip: alloc_stream: kzalloc done ****\n");
    
    	stream->port = port;
    	stream->stream_id = stream_id;
    	stream->vfl_type = vfl_type;
    	port->cap_streams[stream_id] = stream;
    
    	vin_id = 1 + ((dev->instance_id - 1) * 2) + dev->slice_id;
    	snprintf(stream->name, sizeof(stream->name), "vin%d%c-%d",
    		 vin_id, (port->port_id == VIP_PORTA) ? 'a' : 'b', stream_id);
    
    	stream->list_num = vpdma_hwlist_alloc(dev->shared->vpdma, stream);
    	if (stream->list_num < 0) {
    		vip_err(stream, "Could not get VPDMA hwlist");
    		ret = -ENODEV;
    		goto do_free_stream;
    	}
    	
    	printf(""**** vip: alloc_stream: vpdma_hwlist_alloc done ****\n");
    
    	INIT_LIST_HEAD(&stream->post_bufs);
    
    	/*
    	 * Initialize queue
    	 */
    	q = &stream->vb_vidq;
    	q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    	q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
    	q->drv_priv = stream;
    	q->buf_struct_size = sizeof(struct vip_buffer);
    	q->ops = &vip_video_qops;
    	q->mem_ops = &vb2_dma_contig_memops;
    	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
    	q->lock = &dev->mutex;
    	q->min_buffers_needed = 3;
    	q->dev = dev->v4l2_dev->dev;
    
    	ret = vb2_queue_init(q);
    	if (ret)
    		goto do_free_hwlist;
    		
    	printf(""**** vip: alloc_stream: queue initializations done ****\n");
    
    	INIT_WORK(&stream->recovery_work, vip_overflow_recovery_work);
    
    	INIT_LIST_HEAD(&stream->vidq);
    
    	/* Allocate/populate Drop queue entries */
    	INIT_LIST_HEAD(&stream->dropq);
    	for (i = 0; i < VIP_DROPQ_SIZE; i++) {
    		buf = kzalloc(sizeof(*buf), GFP_ATOMIC);
    		if (!buf) {
    			ret = -ENOMEM;
    			goto do_free_dropq;
    		}
    		buf->drop = true;
    		list_add(&buf->list, &stream->dropq);
    	}
    	
    	printf(""**** vip: alloc_stream: queues alloced done ****\n");
    
    	vfd = video_device_alloc();
    	if (!vfd)
    		goto do_free_dropq;
    	
    	printf(""**** vip: alloc_stream: video dev alloc done ****\n");
    		
    	*vfd = vip_videodev;
    	vfd->v4l2_dev = dev->v4l2_dev;
    	vfd->queue = q;
    
    	vfd->lock = &dev->mutex;
    	video_set_drvdata(vfd, stream);
    
    	ret = video_register_device(vfd, vfl_type, -1);
    	if (ret) {
    		vip_err(stream, "Failed to register video device\n");
    		goto do_free_vfd;
    	}
    
    	printf(""**** vip: alloc_stream: video dev registered ****\n");
    
    	stream->vfd = vfd;
    
    	vip_info(stream, "device registered as %s\n",
    		 video_device_node_name(vfd));
    	return 0;
    
    do_free_vfd:
    	video_device_release(vfd);
    do_free_dropq:
    	list_for_each_safe(pos, tmp, &stream->dropq) {
    		buf = list_entry(pos,
    				 struct vip_buffer, list);
    		vip_dbg(1, dev, "dropq buffer\n");
    		list_del(pos);
    		kfree(buf);
    	}
    do_free_hwlist:
    	vpdma_hwlist_release(dev->shared->vpdma, stream->list_num);
    do_free_stream:
    	kfree(stream);
    	return ret;
    }
    
    static void free_stream(struct vip_stream *stream)
    {
    	struct vip_dev *dev;
    	struct vip_buffer *buf;
    	struct list_head *pos, *q;
    
    	if (!stream)
    		return;
    
    	dev = stream->port->dev;
    	/* Free up the Drop queue */
    	list_for_each_safe(pos, q, &stream->dropq) {
    		buf = list_entry(pos,
    				 struct vip_buffer, list);
    		vip_dbg(1, stream, "dropq buffer\n");
    		list_del(pos);
    		kfree(buf);
    	}
    
    	video_unregister_device(stream->vfd);
    	vpdma_hwlist_release(dev->shared->vpdma, stream->list_num);
    	stream->port->cap_streams[stream->stream_id] = NULL;
    	kfree(stream);
    }
    
    static int get_subdev_active_format(struct vip_port *port,
    				    struct v4l2_subdev *subdev)
    {
    	struct vip_fmt *fmt;
    	struct v4l2_subdev_mbus_code_enum mbus_code;
    	int ret = 0;
    	unsigned int k, i, j;
    	enum vip_csc_state csc;
    
    	/* Enumerate sub device formats and enable all matching local formats */
    	port->num_active_fmt = 0;
    	for (k = 0, i = 0; (ret != -EINVAL); k++) {
    		memset(&mbus_code, 0, sizeof(mbus_code));
    		mbus_code.index = k;
    		mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    		ret = v4l2_subdev_call(subdev, pad, enum_mbus_code,
    				       NULL, &mbus_code);
    		if (ret)
    			continue;
    
    		vip_dbg(2, port,
    			"subdev %s: code: %04x idx: %d\n",
    			subdev->name, mbus_code.code, k);
    
    		for (j = 0; j < ARRAY_SIZE(vip_formats); j++) {
    			fmt = &vip_formats[j];
    			if (mbus_code.code != fmt->code)
    				continue;
    
    			/*
    			 * When the port is configured for BT656
    			 * then none of the downstream unit can be used.
    			 * So here we need to skip all format requiring
    			 * either CSC or CHR_DS
    			 */
    			csc = vip_csc_direction(fmt->code, fmt->finfo);
    			if (port->endpoint.bus_type == V4L2_MBUS_BT656 &&
    			    (csc != VIP_CSC_NA || fmt->coplanar))
    				continue;
    
    			port->active_fmt[i] = fmt;
    			vip_dbg(2, port,
    				"matched fourcc: %s: code: %04x idx: %d\n",
    				fourcc_to_str(fmt->fourcc), fmt->code, i);
    			port->num_active_fmt = ++i;
    		}
    	}
    
    	if (i == 0) {
    		vip_err(port, "No suitable format reported by subdev %s\n",
    			subdev->name);
    		return -EINVAL;
    	}
    	return 0;
    }
    
    static int alloc_port(struct vip_dev *dev, int id)
    {
    	struct vip_port *port;
    	u32 vin_id;
    
    	if (dev->ports[id])
    		return -EINVAL;
    
    	port = devm_kzalloc(&dev->pdev->dev, sizeof(*port), GFP_KERNEL);
    	if (!port)
    		return -ENOMEM;
    
    	dev->ports[id] = port;
    	port->dev = dev;
    	port->port_id = id;
    	vin_id = 1 + ((dev->instance_id - 1) * 2) + dev->slice_id;
    	snprintf(port->name, sizeof(port->name),
    		 "vin%d%c", vin_id, (id == VIP_PORTA) ? 'a' : 'b');
    	port->num_streams = 0;
    	return 0;
    }
    
    static void free_port(struct vip_port *port)
    {
    	if (!port)
    		return;
    
    	v4l2_async_nf_unregister(&port->notifier);
    	v4l2_async_nf_cleanup(&port->notifier);
    	free_stream(port->cap_streams[0]);
    }
    
    static int get_field(u32 value, u32 mask, int shift)
    {
    	return (value & (mask << shift)) >> shift;
    }
    
    static int vip_probe_complete(struct platform_device *pdev);
    static void vip_vpdma_fw_cb(struct platform_device *pdev)
    {
    	dev_info(&pdev->dev, "VPDMA firmware loaded\n");
    
    	if (pdev->dev.of_node)
    		vip_probe_complete(pdev);
    }
    
    static int vip_create_streams(struct vip_port *port,
    			      struct v4l2_subdev *subdev)
    {
    	struct v4l2_mbus_config_parallel *bus;
    	struct vip_bt656_bus *bt656_ep;
    	int i;
    
    	for (i = 0; i < VIP_CAP_STREAMS_PER_PORT; i++)
    		free_stream(port->cap_streams[i]);
    
    	if (get_subdev_active_format(port, subdev))
    		return -ENODEV;
    
    	port->subdev = subdev;
    
    	if (port->endpoint.bus_type == V4L2_MBUS_PARALLEL) {
    	    printf("**** vip: create_stream: V4L2_MBUS_PARALLEL ****\n");
    		port->flags |= FLAG_MULT_PORT;
    		port->num_streams_configured = 1;
    		alloc_stream(port, 0, VFL_TYPE_VIDEO);
    		printf("**** vip: create_stream: alloc_stream called ****\n");
    	} else if (port->endpoint.bus_type == V4L2_MBUS_BT656) {
    	    printf("**** vip: create_stream: V4L2_MBUS_BT656 ****\n");
    		port->flags |= FLAG_MULT_PORT;
    		bus = &port->endpoint.bus.parallel;
    		bt656_ep = &port->bt656_endpoint;
    		port->num_streams_configured = bt656_ep->num_channels;
    		for (i = 0; i < bt656_ep->num_channels; i++) {
    			if (bt656_ep->channels[i] >= 16)
    				continue;
    			alloc_stream(port, bt656_ep->channels[i], VFL_TYPE_VIDEO);
    			printf("**** vip: create_stream: alloc_stream called ****\n");
    		}
    	}
    	return 0;
    }
    
    static int vip_async_bound(struct v4l2_async_notifier *notifier,
    			   struct v4l2_subdev *subdev,
    			   struct v4l2_async_subdev *asd)
    {
    	struct vip_port *port = notifier_to_vip_port(notifier);
    	int ret;
    
    	if (port->subdev) {
    		vip_info(port, "Rejecting subdev %s (Already set!!)",
    			 subdev->name);
    		return 0;
    	}
    
    	vip_info(port, "Port %c: Using subdev %s for capture\n",
    		 port->port_id == VIP_PORTA ? 'A' : 'B', subdev->name);
    
    	ret = vip_create_streams(port, subdev);
    	if (ret)
    		return ret;
    
    	return 0;
    }
    
    static int vip_async_complete(struct v4l2_async_notifier *notifier)
    {
    	return 0;
    }
    
    static const struct v4l2_async_notifier_operations vip_async_ops = {
    	.bound = vip_async_bound,
    	.complete = vip_async_complete,
    };
    
    static struct fwnode_handle *
    fwnode_graph_get_next_endpoint_by_regs(const struct fwnode_handle *fwnode,
    				       int port_reg, int reg)
    {
    	return of_fwnode_handle(of_graph_get_endpoint_by_regs(to_of_node(fwnode),
    							      port_reg, reg));
    }
    
    static int vip_register_subdev_notif(struct vip_port *port,
    				     struct fwnode_handle *ep)
    {
    	struct v4l2_async_notifier *notifier = &port->notifier;
    	struct vip_dev *dev = port->dev;
    	struct fwnode_handle *subdev;
    	struct v4l2_fwnode_endpoint *vep;
    	struct vip_bt656_bus *bt656_vep;
    	struct v4l2_async_subdev *asd;
    	int ret, rval;
    
    	vep = &port->endpoint;
    	bt656_vep = &port->bt656_endpoint;
    
    	subdev = fwnode_graph_get_remote_port_parent(ep);
    	if (!subdev) {
    		vip_dbg(3, port, "can't get remote parent\n");
    		return -EINVAL;
    	}
    
    	ret = v4l2_fwnode_endpoint_parse(ep, vep);
    	if (ret) {
    		vip_dbg(3, port, "Failed to parse endpoint:\n");
    		fwnode_handle_put(subdev);
    		return -EINVAL;
    	}
    
    	if (vep->bus_type == V4L2_MBUS_BT656) {
    		if (fwnode_property_present(ep, "ti,vip-pixel-mux"))
    			bt656_vep->pixmux = 1;
    		else
    			bt656_vep->pixmux = 0;
    		vip_dbg(3, port, "ti,vip-pixel-mux %u\n", bt656_vep->pixmux);
    
    		bt656_vep->num_channels = 0;
    		rval = fwnode_property_read_u8_array(ep, "ti,vip-channels",
    						     NULL, 0);
    		if (rval > 0) {
    			bt656_vep->num_channels =
    				min_t(int, ARRAY_SIZE(bt656_vep->channels),
    				      rval);
    
    			fwnode_property_read_u8_array(ep, "ti,vip-channels",
    						      bt656_vep->channels,
    						      bt656_vep->num_channels);
    		}
    		vip_dbg(3, port, "ti,vip-channels %u\n", bt656_vep->num_channels);
    	}
    
    	v4l2_async_nf_init(notifier);
    
    	asd = v4l2_async_nf_add_fwnode(notifier, subdev, struct v4l2_async_subdev);
    	if (IS_ERR(asd)) {
    		vip_dbg(1, port, "Error adding asd\n");
    		fwnode_handle_put(subdev);
    		v4l2_async_nf_cleanup(notifier);
    		return -EINVAL;
    	}
    
    	notifier->ops = &vip_async_ops;
    	ret = v4l2_async_nf_register(dev->v4l2_dev, notifier);
    	if (ret) {
    		vip_dbg(1, port, "Error registering async notifier\n");
    		v4l2_async_nf_cleanup(notifier);
    		ret = -EINVAL;
    	}
    
    	return ret;
    }
    
    static int vip_endpoint_scan(struct platform_device *pdev)
    {
    	struct device_node *parent = pdev->dev.of_node;
    	struct device_node *ep = NULL;
    	int count = 0, p;
    
    	for (p = 0; p < (VIP_NUM_PORTS * VIP_NUM_SLICES); p++) {
    		ep = of_graph_get_endpoint_by_regs(parent, p, 0);
    		if (!ep)
    			continue;
    
    		count++;
    		of_node_put(ep);
    	}
    
    	return count;
    }
    
    static int vip_probe_complete(struct platform_device *pdev)
    {
    	struct vip_shared *shared = platform_get_drvdata(pdev);
    	struct regmap *syscon_pol = NULL;
    	u32 syscon_pol_offset = 0;
    	struct vip_port *port;
    	struct vip_dev *dev;
    	struct device_node *parent = pdev->dev.of_node;
    	struct fwnode_handle *ep = NULL;
    	int ret, slice_id, port_id, p;
    
    	if (parent && of_property_read_bool(parent, "ti,vip-clk-polarity")) {
    		syscon_pol = syscon_regmap_lookup_by_phandle(parent,
    							     "ti,vip-clk-polarity");
    		if (IS_ERR(syscon_pol)) {
    			dev_err(&pdev->dev, "failed to get ti,vip-clk-polarity regmap\n");
    			return PTR_ERR(syscon_pol);
    		}
    
    		if (of_property_read_u32_index(parent, "ti,vip-clk-polarity",
    					       1, &syscon_pol_offset)) {
    			dev_err(&pdev->dev, "failed to get ti,vip-clk-polarity offset\n");
    			return -EINVAL;
    		}
    	}
    
    	for (p = 0; p < (VIP_NUM_PORTS * VIP_NUM_SLICES); p++) {
    		ep = fwnode_graph_get_next_endpoint_by_regs(of_fwnode_handle(parent),
    							    p, 0);
    		if (!ep)
    			continue;
    
    		switch (p) {
    		case 0:
    			slice_id = VIP_SLICE1;	port_id = VIP_PORTA;
    			break;
    		case 1:
    			slice_id = VIP_SLICE2;	port_id = VIP_PORTA;
    			break;
    		case 2:
    			slice_id = VIP_SLICE1;	port_id = VIP_PORTB;
    			break;
    		case 3:
    			slice_id = VIP_SLICE2;	port_id = VIP_PORTB;
    			break;
    		default:
    			dev_err(&pdev->dev, "Unknown port reg=<%d>\n", p);
    			continue;
    		}
    
    		ret = alloc_port(shared->devs[slice_id], port_id);
    		if (ret < 0)
    			continue;
    
    		dev = shared->devs[slice_id];
    		dev->syscon_pol = syscon_pol;
    		dev->syscon_pol_offset = syscon_pol_offset;
    		port = dev->ports[port_id];
    
    		vip_register_subdev_notif(port, ep);
    		fwnode_handle_put(ep);
    	}
    	return 0;
    }
    
    static int vip_probe_slice(struct platform_device *pdev, int slice, int instance_id)
    {
    	struct vip_shared *shared = platform_get_drvdata(pdev);
    	struct vip_dev *dev;
    	struct vip_parser_data *parser;
    	u32 vin_id;
    	int ret;
    
    	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
    	if (!dev)
    		return -ENOMEM;
    
    	dev->instance_id = instance_id;
    	vin_id = 1 + ((dev->instance_id - 1) * 2) + slice;
    	snprintf(dev->name, sizeof(dev->name), "vin%d", vin_id);
    
    	dev->irq = platform_get_irq(pdev, slice);
    	if (dev->irq < 0)
    		return dev->irq;
    
    	ret = devm_request_irq(&pdev->dev, dev->irq, vip_irq,
    			       0, dev->name, dev);
    	if (ret < 0)
    		return -ENOMEM;
    
    	spin_lock_init(&dev->slock);
    	mutex_init(&dev->mutex);
    
    	dev->slice_id = slice;
    	dev->pdev = pdev;
    	dev->res = shared->res;
    	dev->base = shared->base;
    	dev->v4l2_dev = &shared->v4l2_dev;
    
    	dev->shared = shared;
    	shared->devs[slice] = dev;
    
    	vip_top_reset(dev);
    	vip_set_slice_path(dev, VIP_MULTI_CHANNEL_DATA_SELECT, 1);
    
    	parser = devm_kzalloc(&pdev->dev, sizeof(*dev->parser), GFP_KERNEL);
    	if (!parser)
    		return PTR_ERR(parser);
    
    	parser->res = platform_get_resource_byname(pdev,
    						   IORESOURCE_MEM,
    						   (slice == 0) ?
    						   "parser0" :
    						   "parser1");
    	parser->base = devm_ioremap_resource(&pdev->dev, parser->res);
    	if (IS_ERR(parser->base))
    		return PTR_ERR(parser->base);
    
    	parser->pdev = pdev;
    	dev->parser = parser;
    
    	dev->sc_assigned = VIP_NOT_ASSIGNED;
    	dev->sc = sc_create(pdev, (slice == 0) ? "sc0" : "sc1");
    	if (IS_ERR(dev->sc))
    		return PTR_ERR(dev->sc);
    
    	dev->csc_assigned = VIP_NOT_ASSIGNED;
    	dev->csc = csc_create(pdev, (slice == 0) ? "csc0" : "csc1");
    	if (IS_ERR(dev->sc))
    		return PTR_ERR(dev->sc);
    
    	return 0;
    }
    
    static int vip_probe(struct platform_device *pdev)
    {
    	struct vip_shared *shared;
    	struct pinctrl *pinctrl;
    	int ret, slice = VIP_SLICE1;
    	int instance_id;
    	u32 tmp, pid;
    
    	instance_id = (int)of_device_get_match_data(&pdev->dev);
    	if (!instance_id) {
    		dev_err(&pdev->dev, "%s: Unable to match device\n", __func__);
    		return -ENODEV;
    	}
    
    	/* If there are no endpoint defined there is nothing to do */
    	if (!vip_endpoint_scan(pdev))
    		return -ENODEV;
    
    	ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
    	if (ret) {
    		dev_err(&pdev->dev,
    			"32-bit consistent DMA enable failed\n");
    		return ret;
    	}
    
    	shared = devm_kzalloc(&pdev->dev, sizeof(*shared), GFP_KERNEL);
    	if (!shared)
    		return -ENOMEM;
    
    	shared->res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "vip");
    	shared->base = devm_ioremap_resource(&pdev->dev, shared->res);
    	if (IS_ERR(shared->base))
    		return PTR_ERR(shared->base);
    
    	vip_init_format_info(&pdev->dev);
    
    	pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
    
    	pm_runtime_enable(&pdev->dev);
    
    	ret = pm_runtime_get_sync(&pdev->dev);
    	if (ret)
    		goto err_runtime_disable;
    
    	/* Make sure H/W module has the right functionality */
    	pid = reg_read(shared, VIP_PID);
    	tmp = get_field(pid, VIP_PID_FUNC_MASK, VIP_PID_FUNC_SHIFT);
    
    	if (tmp != VIP_PID_FUNC) {
    		dev_info(&pdev->dev, "vip: unexpected PID function: 0x%x\n",
    			 tmp);
    		ret = -ENODEV;
    		goto err_runtime_put;
    	}
    
    	ret = v4l2_device_register(&pdev->dev, &shared->v4l2_dev);
    	if (ret)
    		goto err_runtime_put;
    
    	/* enable clocks, so the firmware will load properly */
    	vip_shared_set_clock_enable(shared, 1);
    	vip_top_vpdma_reset(shared);
    
    	platform_set_drvdata(pdev, shared);
    
    	v4l2_ctrl_handler_init(&shared->ctrl_handler, 11);
    	shared->v4l2_dev.ctrl_handler = &shared->ctrl_handler;
    
    	for (slice = VIP_SLICE1; slice < VIP_NUM_SLICES; slice++) {
    		ret = vip_probe_slice(pdev, slice, instance_id);
    		if (ret) {
    			dev_err(&pdev->dev, "Creating slice failed");
    			goto err_dev_unreg;
    		}
    	}
    
    	shared->vpdma = &shared->vpdma_data;
    	ret = vpdma_create(pdev, shared->vpdma, vip_vpdma_fw_cb);
    	if (ret) {
    		dev_err(&pdev->dev, "Creating VPDMA failed");
    		goto err_dev_unreg;
    	}
    
    	return 0;
    
    err_dev_unreg:
    	v4l2_ctrl_handler_free(&shared->ctrl_handler);
    	v4l2_device_unregister(&shared->v4l2_dev);
    err_runtime_put:
    	pm_runtime_put_sync(&pdev->dev);
    err_runtime_disable:
    	pm_runtime_disable(&pdev->dev);
    
    	return ret;
    }
    
    static int vip_remove(struct platform_device *pdev)
    {
    	struct vip_shared *shared = platform_get_drvdata(pdev);
    	struct vip_dev *dev;
    	int slice;
    
    	for (slice = 0; slice < VIP_NUM_SLICES; slice++) {
    		dev = shared->devs[slice];
    		if (!dev)
    			continue;
    
    		free_port(dev->ports[VIP_PORTA]);
    		free_port(dev->ports[VIP_PORTB]);
    	}
    
    	v4l2_ctrl_handler_free(&shared->ctrl_handler);
    
    	pm_runtime_put_sync(&pdev->dev);
    	pm_runtime_disable(&pdev->dev);
    
    	return 0;
    }
    
    #if defined(CONFIG_OF)
    static const struct of_device_id vip_of_match[] = {
    	{
    		.compatible = "ti,dra7-vip1",
    		.data = (void *)VIP_INSTANCE1,
    	},
    	{
    		.compatible = "ti,dra7-vip2",
    		.data = (void *)VIP_INSTANCE2,
    	},
    	{
    		.compatible = "ti,dra7-vip3",
    		.data = (void *)VIP_INSTANCE3,
    	},
    	{},
    };
    MODULE_DEVICE_TABLE(of, vip_of_match);
    #endif
    
    static struct platform_driver vip_pdrv = {
    	.probe		= vip_probe,
    	.remove		= vip_remove,
    	.driver		= {
    		.name	= VIP_MODULE_NAME,
    		.of_match_table = of_match_ptr(vip_of_match),
    	},
    };
    
    module_platform_driver(vip_pdrv);
    
    MODULE_DESCRIPTION("TI VIP driver");
    MODULE_AUTHOR("Texas Instruments");
    MODULE_LICENSE("GPL");

    Best,
    Jared

  • Hi Jared,

    I discovered that the required pinmux changes were missing in my 9.03 SDK's U-Boot sources. So, I added the necessary pinmux configurations in U-Boot and also applied the same device tree changes as referenced in this https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1008216/am5728-unable-to-get-correct-capture-with-ov5640-green-pink-screen-issue in kernel directory.

    However, after these changes, the camera probe is now failing. From the dmesg logs, it appears that the driver is unable to write to certain registers, although the root cause isn't clear yet.

    Also, the vip driver code that you gave gave above had printf statements. After having replaced each of them with printk, no printk statement of yours are appearing in the dmesg output below possibly because probe is failing stopping the flow there itself.

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00010-gd9f3c4d3b93d-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #44 SMP PREEMPT Wed Jul 23 15:14:07 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757948K/4174848K available (12288K kernel code, 1467K rwdata, 3304K rodata, 2048K init, 305K bss, 220292K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001403] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003173] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003356] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004516] Console: colour dummy device 80x30
    [    0.004547] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062072] CPU: Testing write buffer coherency: ok
    [    0.062103] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062103] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062103] pid_max: default: 32768 minimum: 301
    [    0.062255] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062255] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062896] /cpus/cpu@0 missing clock-frequency property
    [    0.062927] /cpus/cpu@1 missing clock-frequency property
    [    0.062927] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063598] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063598] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063690] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063781] rcu: Hierarchical SRCU implementation.
    [    0.063812] rcu: 	Max phase no-delay instances is 1000.
    [    0.066162] EFI services will not be available.
    [    0.066711] smp: Bringing up secondary CPUs ...
    [    0.126922] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126953] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127044] smp: Brought up 1 node, 2 CPUs
    [    0.127044] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127075] CPU: All CPU(s) started in HYP mode.
    [    0.127075] CPU: Virtualization extensions available.
    [    0.127502] devtmpfs: initialized
    [    0.153167] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153350] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153381] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.157867] pinctrl core: initialized pinctrl subsystem
    [    0.158508] DMI not present or invalid.
    [    0.158935] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160644] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161590] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161621] cpuidle: using governor menu
    [    0.189056] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.189117] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.193084] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.193176] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193267] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193603] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.195159] No ATAGs?
    [    0.195220] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195220] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.219787] iommu: Default domain type: Translated 
    [    0.219787] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221160] SCSI subsystem initialized
    [    0.221282] libata version 3.00 loaded.
    [    0.221466] usbcore: registered new interface driver usbfs
    [    0.221527] usbcore: registered new interface driver hub
    [    0.221557] usbcore: registered new device driver usb
    [    0.221954] mc: Linux media interface: v0.10
    [    0.222015] pps_core: LinuxPPS API ver. 1 registered
    [    0.222015] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.222015] PTP clock support registered
    [    0.222137] EDAC MC: Ver: 3.0.0
    [    0.223999] clocksource: Switched to clocksource 32k_counter
    [    0.231781] NET: Registered PF_INET protocol family
    [    0.231933] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.244628] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.244628] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.244659] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.244720] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.244934] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.244995] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.245056] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.245178] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.245574] RPC: Registered named UNIX socket transport module.
    [    0.245574] RPC: Registered udp transport module.
    [    0.245605] RPC: Registered tcp transport module.
    [    0.245605] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.245605] PCI: CLS 0 bytes, default 64
    [    0.246002] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.246154] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.247009] Initialise system trusted keyrings
    [    0.247314] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.252563] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.253143] NFS: Registering the id_resolver key type
    [    0.253173] Key type id_resolver registered
    [    0.253173] Key type id_legacy registered
    [    0.253265] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.253265] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.253295] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.253753] Key type asymmetric registered
    [    0.253753] Asymmetric key parser 'x509' registered
    [    0.253875] bounce: pool size: 64 pages
    [    0.253967] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.253997] io scheduler mq-deadline registered
    [    0.253997] io scheduler kyber registered
    [    0.257263] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.303405] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.305419] STMicroelectronics ASC driver initialized
    [    0.306060] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.307495] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.307525] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.307525] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.307556] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.314483] brd: module loaded
    [    0.319030] loop: module loaded
    [    0.323455] CAN device driver interface
    [    0.323883] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.323883] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.323913] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.323913] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.324859] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.324890] usbcore: registered new interface driver pegasus
    [    0.324920] usbcore: registered new interface driver asix
    [    0.324951] usbcore: registered new interface driver ax88179_178a
    [    0.324981] usbcore: registered new interface driver cdc_ether
    [    0.325012] usbcore: registered new interface driver smsc75xx
    [    0.325042] usbcore: registered new interface driver smsc95xx
    [    0.325073] usbcore: registered new interface driver net1080
    [    0.325103] usbcore: registered new interface driver cdc_subset
    [    0.325134] usbcore: registered new interface driver zaurus
    [    0.325195] usbcore: registered new interface driver cdc_ncm
    [    0.325897] usbcore: registered new interface driver usb-storage
    [    0.326446] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
    [    0.326446] omap4-keypad 4ae1c00000000100.keypad: no base address specified
    [    0.326446] omap4-keypad: probe of 4ae1c00000000100.keypad failed with error -22
    [    0.326873] i2c_dev: i2c /dev entries driver
    [    0.329345] sdhci: Secure Digital Host Controller Interface driver
    [    0.329345] sdhci: Copyright(c) Pierre Ossman
    [    0.329559] Synopsys Designware Multimedia Card Interface Driver
    [    0.329772] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.330413] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.330688] usbcore: registered new interface driver usbhid
    [    0.330718] usbhid: USB HID core driver
    [    0.333343] NET: Registered PF_INET6 protocol family
    [    0.334289] Segment Routing with IPv6
    [    0.334320] In-situ OAM (IOAM) with IPv6
    [    0.334381] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.334869] NET: Registered PF_PACKET protocol family
    [    0.334869] can: controller area network core
    [    0.334930] NET: Registered PF_CAN protocol family
    [    0.334930] can: raw protocol
    [    0.334930] can: broadcast manager protocol
    [    0.334960] can: netlink gateway - max_hops=1
    [    0.335083] Key type dns_resolver registered
    [    0.335144] ThumbEE CPU extension supported.
    [    0.335174] Registering SWP/SWPB emulation handler
    [    0.335601] omap_voltage_late_init: Voltage driver support not added
    [    0.335632] Power Management for TI OMAP4+ devices.
    [    0.336364] Loading compiled-in X.509 certificates
    [    0.369842] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.375762] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.397949] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.414001] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.414337] OMAP GPIO hardware version 0.1
    [    0.416625] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.423645] printk: console [ttyS2] disabled
    [    0.423706] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.788391] printk: console [ttyS2] enabled
    [    1.800476] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.810424] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.820251] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.830047] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.839935] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.849945] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.859832] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.896087] rtc-ds1307 2-006f: registered as rtc0
    [    1.901153] rtc-ds1307 2-006f: setting system clock to 2025-07-29T14:20:05 UTC (1753798805)
    [    1.909820] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.919952] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.931732] palmas 0-0058: Irq flag is 0x00000008
    [    1.966796] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    2.000366] at24 0-0050: supply vcc not found, using dummy regulator
    [    2.007232] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    2.014068] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    2.024108] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    2.024475] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    2.036834] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.036926] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    2.043731] random: crng init done
    [    2.076141] input: 4-0038 generic ft5x06 (8d) as /devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/4807c000.target-module/4807c000.i2c/i2c-4/4-0038/input/input0
    [    2.154052] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.163024] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.169830] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.178466] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.185333] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.191070] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.198699] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.209838] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:10
    [    2.216888] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:11
    [    2.225616] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.248168] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.255859] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.266754] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.273956] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.289276] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.299255] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.316101] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.325195] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.333343] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.341705] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.347259] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    3.355743] dra7-pcie 51000000.pcie: Phy link never came up
    [    3.361480] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    3.367797] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    3.373321] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    3.379547] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    3.386505] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    3.392547] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    3.398864] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    3.405242] pci 0000:00:00.0: supports D1
    [    3.409271] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    3.422760] PCI: bus0: Fast back to back transfers disabled
    [    3.428741] PCI: bus1: Fast back to back transfers enabled
    [    3.434295] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    3.441101] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    3.447967] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    3.453582] pcieport 0000:00:00.0: PME: Signaling with IRQ 136
    [    3.465484] edma 43300000.dma: memcpy is disabled
    [    3.473480] edma 43300000.dma: TI EDMA DMA engine driver
    [    3.485229] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    3.492980] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    3.499664] platform 40800000.dsp: Adding to iommu group 0
    [    3.506683] platform 58820000.ipu: Adding to iommu group 1
    [    3.512359] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    3.520233] platform 55020000.ipu: Adding to iommu group 2
    [    3.525817] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    3.538024] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    3.546844] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    3.562744] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    3.570037] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    3.576873] platform 41000000.dsp: Adding to iommu group 3
    [    3.584960] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    3.603332] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    3.612609] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    3.612915] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    3.621490] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    3.635345] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    3.648345] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    3.648529] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    3.668029] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    3.682312] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.695831] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.707641] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.709136] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.723449] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.737091] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.743927] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.756774] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.770446] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.784515] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.798614] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.814605] clk: Disabling unused clocks
    [    3.820922] Waiting for root device PARTUUID=5c496148-02...
    [    3.849273] mmc0: new high speed SDHC card at address 5048
    [    3.855224] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    3.862213]  mmcblk0: p1 p2
    [    4.077484] mmc1: new DDR MMC card at address 0001
    [    4.083862] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    4.090789]  mmcblk1: p1 p2
    [    4.094268] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    4.100524] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    4.107147] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    4.123626] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    4.132629] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    4.146118] devtmpfs: mounted
    [    4.150115] Freeing unused kernel image (initmem) memory: 2048K
    [    4.156219] Run /sbin/init as init process
    [    4.160339]   with arguments:
    [    4.160339]     /sbin/init
    [    4.160339]   with environment:
    [    4.160339]     HOME=/
    [    4.160339]     TERM=linux
    [    4.550964] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    4.582855] systemd[1]: Detected architecture arm.
    [    4.615600] systemd[1]: Hostname set to <am57xx-evm>.
    [    4.784149] systemd-sysv-generator[109]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.809082] systemd-sysv-generator[109]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    5.034912] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    5.100097] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    5.122436] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    5.203002] systemd[1]: Queued start job for default target Graphical Interface.
    [    5.212341] systemd[1]: Created slice Slice /system/getty.
    [    5.245025] systemd[1]: Created slice Slice /system/modprobe.
    [    5.285125] systemd[1]: Created slice Slice /system/serial-getty.
    [    5.325012] systemd[1]: Created slice User and Session Slice.
    [    5.364349] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.404785] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.444580] systemd[1]: Reached target Path Units.
    [    5.484497] systemd[1]: Reached target Remote File Systems.
    [    5.524169] systemd[1]: Reached target Slice Units.
    [    5.564270] systemd[1]: Reached target Swaps.
    [    5.606719] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.644409] systemd[1]: Reached target RPC Port Mapper.
    [    5.693908] systemd[1]: Listening on Process Core Dump Socket.
    [    5.734802] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.823852] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    5.835388] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.884796] systemd[1]: Listening on Journal Socket.
    [    5.915100] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.954620] systemd[1]: Listening on udev Control Socket.
    [    5.994537] systemd[1]: Listening on udev Kernel Socket.
    [    6.034576] systemd[1]: Listening on User Database Manager Socket.
    [    6.074890] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    6.134460] systemd[1]: Mounting POSIX Message Queue File System...
    [    6.177368] systemd[1]: Mounting Kernel Debug File System...
    [    6.274444] systemd[1]: Mounting Kernel Trace File System...
    [    6.318176] systemd[1]: Mounting Temporary Directory /tmp...
    [    6.368621] systemd[1]: Starting Create List of Static Device Nodes...
    [    6.418060] systemd[1]: Starting Load Kernel Module configfs...
    [    6.467620] systemd[1]: Starting Load Kernel Module drm...
    [    6.496917] systemd[1]: Starting Load Kernel Module fuse...
    [    6.538696] systemd[1]: Starting Start psplash boot splash screen...
    [    6.578430] systemd[1]: Starting RPC Bind...
    [    6.604492] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    6.617858] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    6.630859] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    6.684722] systemd[1]: Starting Journal Service...
    [    6.721984] systemd[1]: Starting Load Kernel Modules...
    [    6.742187] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.766601] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.789611] systemd[1]: Starting Coldplug All udev Devices...
    [    6.802062] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.840698] systemd[1]: Started RPC Bind.
    [    6.874511] systemd[1]: Started Journal Service.
    [    7.448516] systemd-journald[122]: Received client request to flush runtime journal.
    [    9.733489] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    9.750274] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    9.787933] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    9.823150] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    9.837982] remoteproc remoteproc0: 58820000.ipu is available
    [    9.855255] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    9.867889] videodev: Linux video capture interface: v2.00
    [    9.879333] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    9.902221] remoteproc remoteproc1: 55020000.ipu is available
    [    9.927032] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    9.975067] remoteproc remoteproc2: 40800000.dsp is available
    [    9.997894] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [   10.039489] remoteproc remoteproc3: 41000000.dsp is available
    [   10.115997] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [   10.164642] omap-des 480a5000.des: will run requests pump with realtime priority
    [   10.272644] pwm-backlight backlight: supply power not found, using dummy regulator
    [   10.308105] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [   10.338317] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [   10.412567] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [   10.467437] panel-simple display: supply power not found, using dummy regulator
    [   10.481414] remoteproc remoteproc0: powering up 58820000.ipu
    [   10.495666] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [   10.504211] remoteproc remoteproc1: powering up 55020000.ipu
    [   10.509033] panel-simple display: Specify missing connector_type
    [   10.509979] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [   10.523956] omap-iommu 58882000.mmu: no fck found
    [   10.528747] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [   10.536529] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [   10.544342] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [   10.551788] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu1-memory@9d000000
    [   10.560729] omap_rtc 48838000.rtc: registered as rtc2
    [   10.561248] virtio_rpmsg_bus virtio0: rpmsg host is online
    [   10.565917] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [   10.572326] rproc-virtio rproc-virtio.2.auto: registered virtio0 (type 7)
    [   10.586029] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [   10.642578] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [   10.670288] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [   10.695220] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [   10.705291] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [   10.712799] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [   10.717224] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [   10.720886] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [   10.733947] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [   10.745330] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [   10.765716] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [   10.780029] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [   10.827484] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [   10.835052] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [   10.835083] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [   10.846435] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [   10.849334] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [   10.867004] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [   10.875030] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [   10.884643] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [   10.891326] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [   10.941986] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu2-memory@95800000
    [   10.957427] virtio_rpmsg_bus virtio1: rpmsg host is online
    [   10.960845] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [   10.963073] rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
    [   10.973724] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [   10.977661] scsi host0: ahci-dwc
    [   10.987274] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 161
    [   10.995513] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [   10.996978] ov5640 2-003c: ov5640_write_reg: error: reg=3008, val=42
    [   11.021362] ov5640 2-003c: ov5640_write_reg: error: reg=3103, val=11
    [   11.027832] ov5640 2-003c: ov5640_read_reg: error: reg=3108
    [   11.033477] ov5640 2-003c: failed to power on
    [   11.038177] remoteproc remoteproc2: powering up 40800000.dsp
    [   11.043884] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [   11.044921] ov5640: probe of 2-003c failed with error -121
    [   11.051971] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [   11.063140] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [   11.069335] remoteproc remoteproc3: powering up 41000000.dsp
    [   11.075164] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [   11.083099] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [   11.089080] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [   11.114715] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [   11.125671] virtio_rpmsg_bus virtio2: rpmsg host is online
    [   11.131347] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [   11.140686] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [   11.169433] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [   11.182067] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [   11.191192] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [   11.199127] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [   11.215362] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [   11.225128] virtio_rpmsg_bus virtio3: rpmsg host is online
    [   11.230773] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [   11.237731] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [   11.245483] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [   11.253448] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [   11.278808] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [   11.300659] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [   11.338775] ata1: SATA link down (SStatus 0 SControl 300)
    [   11.402740] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [   11.403778] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [   11.414611] DSS: OMAP DSS rev 6.1
    [   11.444061] vip 48990000.vip: VPDMA firmware loaded
    [   11.444213] vpe 489d0000.vpe: Device registered as /dev/video0
    [   11.579528] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [   11.639923] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [   11.786590] dmm 4e000000.dmm: workaround for errata i878 in use
    [   11.846893] dmm 4e000000.dmm: initialized all PAT entries
    [   11.985961] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [   12.134063] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   12.319000] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   12.390747] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   12.548583] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   12.660095] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   12.776672] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   12.782226] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   12.858032] remoteproc remoteproc4: 4b234000.pru is available
    [   12.872528] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   12.874603] remoteproc remoteproc5: 4b238000.pru is available
    [   12.888671] remoteproc remoteproc6: 4b2b4000.pru is available
    [   12.898223] remoteproc remoteproc7: 4b2b8000.pru is available
    [   12.904205] xhci-hcd xhci-hcd.6.auto: irq 170, io mem 0x48890000
    [   12.920257] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   12.938262] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   12.949127] EDID block 0 is all zeroes
    [   12.953033] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953063] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953063] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953063] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953063] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953063] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953094] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.953094] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   12.962127] [drm] Enabling DMM ywrap scrolling
    [   12.970581] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   12.982025] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   12.982025] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   12.982055] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   12.982055] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   13.004791] hub 1-0:1.0: USB hub found
    [   13.004821] hub 1-0:1.0: 1 port detected
    [   13.005218] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   13.005828] hub 2-0:1.0: USB hub found
    [   13.005859] hub 2-0:1.0: 1 port detected
    [   13.099121] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   13.099151] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   13.181213] Console: switching to colour frame buffer device 128x37
    [   13.308532] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   13.322143] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   13.354064] ------------[ cut here ]------------
    [   13.358734] WARNING: CPU: 1 PID: 156 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   13.368438] Hot plug detection already enabled
    [   13.372924] Modules linked in: irq_pruss_intc pru_rproc icss_iep dwc3 rpmsg_ctrl rpmsg_char ti_vip ti_vpe omapdrm(+) ti_sc snd_soc_tlv320aic3x_i2c ti_csc snd_soc_davinci_mcasp snd_soc_tlv320aic3x v4l2_mem2mem snd_soc_simple_card ti_vpdma snd_soc_simple_card_utils snd_soc_ti_udma videobuf2_dma_contig snd_soc_ti_edma snd_soc_ti_sdma videobuf2_memops videobuf2_v4l2 cec snd_soc_core videobuf2_common pruss omap_aes_driver omap_wdt omap_hwspinlock libaes ahci_dwc snd_pcm_dmaengine ov5640 dwc3_omap rtc_omap ac97_bus snd_pcm pwm_tiehrpwm v4l2_fwnode omap_des snd_timer v4l2_async omap_crypto libdes extcon_palmas videodev snd soundcore omap_remoteproc virtio_rpmsg_bus rpmsg_ns omap_sham display_connector rpmsg_core ti_tpd12s015 crypto_engine
    [   13.438446] CPU: 1 PID: 156 Comm: systemd-udevd Not tainted 6.1.119-00010-gd9f3c4d3b93d-dirty #44
    [   13.447357] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   13.453491]  unwind_backtrace from show_stack+0x10/0x14
    [   13.458770]  show_stack from dump_stack_lvl+0x40/0x4c
    [   13.463836]  dump_stack_lvl from __warn+0x7c/0x158
    [   13.468658]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   13.473846]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   13.480163]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   13.487030]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   13.493103]  platform_probe from really_probe+0xc8/0x2ec
    [   13.498474]  really_probe from __driver_probe_device+0x88/0x1a0
    [   13.504425]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   13.511016]  driver_probe_device from __driver_attach+0x90/0x174
    [   13.517059]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   13.522766]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   13.528533]  bus_add_driver from driver_register+0x88/0x11c
    [   13.534149]  driver_register from __platform_register_drivers+0x38/0x88
    [   13.540802]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   13.548278]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   13.554748]  do_one_initcall from do_init_module+0x44/0x1d4
    [   13.560363]  do_init_module from sys_finit_module+0xc0/0x110
    [   13.566070]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   13.566070] Exception stack(0xf2049fa8 to 0xf2049ff0)
    [   13.566101] 9fa0:                   00000000 00000000 0000000f b6d8a8a0 00000000 00020000
    [   13.566101] 9fc0: 00000000 00000000 00000000 0000017b 00000000 000955d8 00000007 00000000
    [   13.566101] 9fe0: befd1710 befd1700 b6d85d4f b6cbb052
    [   13.566131] ---[ end trace 0000000000000000 ]---
    [   13.589660] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   13.708770] hub 1-1:1.0: USB hub found
    [   13.712615] hub 1-1:1.0: 4 ports detected
    [   13.814147] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   13.868835] hub 2-1:1.0: USB hub found
    [   13.872863] hub 2-1:1.0: 4 ports detected
    [   13.969238] usbcore: registered new device driver onboard-usb-hub
    [   14.253021] hub 1-1:1.0: USB hub found
    [   14.256927] hub 1-1:1.0: 4 ports detected
    [   14.413055] hub 1-1:1.0: USB hub found
    [   14.417053] hub 1-1:1.0: 4 ports detected
    [   14.685241] hub 2-1:1.0: USB hub found
    [   14.689178] hub 2-1:1.0: 4 ports detected
    [   14.733276] hub 2-1:1.0: USB hub found
    [   14.737152] hub 2-1:1.0: 4 ports detected
    [   15.664215] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   16.565917] Bluetooth: Core ver 2.22
    [   16.595672] NET: Registered PF_BLUETOOTH protocol family
    [   16.616119] Bluetooth: HCI device and connection manager initialized
    [   16.636322] Bluetooth: HCI socket layer initialized
    [   16.653381] Bluetooth: L2CAP socket layer initialized
    [   16.658538] Bluetooth: SCO socket layer initialized
    [   16.879638] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   17.053680] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   17.063659] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   17.247528] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   17.267608] Initializing XFRM netlink socket
    [   17.300018] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   17.397399] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   17.454193] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   24.174957] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   24.207153] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   24.234069] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   24.264038] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   24.427093] EDID block 0 is all zeroes

    Please help resolve the issue now! 
    Thanks!

  • Hi Vishal,

    It appears that your camera may not be powered on correctly, or is not plugged in properly. Please ensure that the pinmuxing is correct for your camera.

    You can check whether the camera is on/probe-able by scanning the i2c lines with i2cdetect.

    Best,
    Jared

  • Jared,

    It appears that your camera may not be powered on correctly, or is not plugged in properly. Please ensure that the pinmuxing is correct for your camera.

    You are right. The camera connection was loose. Anyway I fixed the connection but still the video1 is not getting registered.

    The pinmux changes done at u-boot are as in the link below:- 

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542924/am5728-lm75-sensor-i2c1-timeout-after-sdk-9-03-upgrade-on-am5728-custom-board#

    The pinmux changes done in kernel source code in file arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi are as below:-

    /*
     * MMC IOdelay values for TI's DRA74x, DRA75x and AM572x SoCs.
     *
     * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License as
     * published by the Free Software Foundation version 2.
     *
     * This program is distributed "as is" WITHOUT ANY WARRANTY of any
     * kind, whether express or implied; without even the implied warranty
     * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     */
    
    /*
     * Rules for modifying this file:
     * a) Update of this file should typically correspond to a datamanual revision.
     *    Datamanual revision that was used should be updated in comment below.
     *    If there is no update to datamanual, do not update the values. If you
     *    need to use values different from that recommended by the datamanual
     *    for your design, then you should consider adding values to the device-
     *    -tree file for your board directly.
     * b) We keep the mode names as close to the datamanual as possible. So
     *    if the manual calls a mode, DDR50, or DDR or DDR 1.8v or DDR 3.3v,
     *    we follow that in code too.
     * c) If the values change between multiple revisions of silicon, we add
     *    a revision tag to both the new and old entry. Use 'rev11' for PG 1.1,
     *    'rev20' for PG 2.0 and so on.
     * d) The node name and node label should be the exact same string. This is
     *    to curb naming creativity and achieve consistency.
     *
     * Datamanual Revisions:
     *
     * AM572x Silicon Revision 2.0: SPRS953F, Revised May 2019
     * AM572x Silicon Revision 1.1: SPRS915R, Revised November 2016
     *
     */
    
    &dra7_pmx_core {
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
                DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
    			DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
    			DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
    			DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
    			DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
    			DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    			DRA7XX_CORE_IOPAD(0x376c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_sdcd.mmc1_sdcd */
    		>;
    	};
    
    	mmc1_pins_sdr12: mmc1_pins_sdr12 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
                DRA7XX_CORE_IOPAD(0x376c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_sdcd.mmc1_sdcd */
    		>;
    	};
    
    	mmc1_pins_hs: mmc1_pins_hs {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_sdr25: mmc1_pins_sdr25 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    >;
    	};
    
    	mmc1_pins_sdr50: mmc1_pins_sdr50 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_ddr50: mmc1_pins_ddr50 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_sdr104: mmc1_pins_sdr104 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_3_3v_rev11: mmc2_pins_ddr_3_3v_rev11 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v_rev11: mmc2_pins_ddr_1_8v_rev11 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_rev20: mmc2_pins_ddr_rev20 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs200: mmc2_pins_hs200 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc3_pins_default: mmc3_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_hs: mmc3_pins_hs {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr12: mmc3_pins_sdr12 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr25: mmc3_pins_sdr25 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr50: mmc3_pins_sdr50 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
    	mmc4_pins_default: mmc4_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_hs: mmc4_pins_hs {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_sdr12: mmc4_pins_sdr12 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_sdr25: mmc4_pins_sdr25 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
    
    
        spi1_pins_default: spi1_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37a4, PIN_INPUT | MUX_MODE0) /* A25 spi1_sclk.spi1_sclk */
        			DRA7XX_CORE_IOPAD(0x37ac, PIN_OUTPUT | MUX_MODE0) /* B25 spi1_d0.spi1_d0 */
        			DRA7XX_CORE_IOPAD(0x37a8, PIN_INPUT | MUX_MODE0) /*  F16 spi1_d1.spi1_d1 */
        			DRA7XX_CORE_IOPAD(0x37b0, PIN_OUTPUT | MUX_MODE0) /* A24 spi1_cs0.spi1_cs0 */
        		>;
        	};
    
    };
    
    &dra7_iodelay_core {
    
    	/* Corresponds to MMC1_DDR_MANUAL1 in datamanual */
    	mmc1_iodelay_ddr_rev11_conf: mmc1_iodelay_ddr_rev11_conf {
    		pinctrl-pin-array = <
    			0x618 A_DELAY_PS(572) G_DELAY_PS(540)	/* CFG_MMC1_CLK_IN */
    			0x620 A_DELAY_PS(1525) G_DELAY_PS(0)	/* CFG_MMC1_CLK_OUT */
    			0x624 A_DELAY_PS(0) G_DELAY_PS(600)	/* CFG_MMC1_CMD_IN */
    			0x628 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OEN */
    			0x62c A_DELAY_PS(55) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OUT */
    			0x630 A_DELAY_PS(403) G_DELAY_PS(120)	/* CFG_MMC1_DAT0_IN */
    			0x634 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OEN */
    			0x638 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OUT */
    			0x63c A_DELAY_PS(23) G_DELAY_PS(60)	/* CFG_MMC1_DAT1_IN */
    			0x640 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OEN */
    			0x644 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OUT */
    			0x648 A_DELAY_PS(25) G_DELAY_PS(60)	/* CFG_MMC1_DAT2_IN */
    			0x64c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OEN */
    			0x650 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OUT */
    			0x654 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_IN */
    			0x658 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OEN */
    			0x65c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_DDR_MANUAL1 in datamanual */
    	mmc1_iodelay_ddr_rev20_conf: mmc1_iodelay_ddr50_rev20_conf {
    		pinctrl-pin-array = <
                0x618 A_DELAY_PS(1076) G_DELAY_PS(330) 	/* CFG_MMC1_CLK_IN */
                0x620 A_DELAY_PS(1271) G_DELAY_PS(0) 	/* CFG_MMC1_CLK_OUT */
                0x624 A_DELAY_PS(722) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_IN */
                0x628 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OEN */
                0x62C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OUT */
                0x630 A_DELAY_PS(751) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_IN */
                0x634 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OEN */
                0x638 A_DELAY_PS(20) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OUT */
                0x63C A_DELAY_PS(256) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_IN */
                0x640 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OEN */
                0x644 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OUT */
                0x648 A_DELAY_PS(263) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_IN */
                0x64C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OEN */
                0x650 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OUT */
                0x654 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_IN */
                0x658 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OEN */
                0x65C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_SDR104_MANUAL1 in datamanual */
    	mmc1_iodelay_sdr104_rev11_conf: mmc1_iodelay_sdr104_rev11_conf {
    		pinctrl-pin-array = <
    			0x620 A_DELAY_PS(1063) G_DELAY_PS(17)	/* CFG_MMC1_CLK_OUT */
    			0x628 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OEN */
    			0x62c A_DELAY_PS(23) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OUT */
    			0x634 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OEN */
    			0x638 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OUT */
    			0x640 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OEN */
    			0x644 A_DELAY_PS(2) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OUT */
    			0x64c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OEN */
    			0x650 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OUT */
    			0x658 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OEN */
    			0x65c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_SDR104_MANUAL1 in datamanual */
    	mmc1_iodelay_sdr104_rev20_conf: mmc1_iodelay_sdr104_rev20_conf {
    		pinctrl-pin-array = <
    			0x620 A_DELAY_PS(600) G_DELAY_PS(400) 	/* CFG_MMC1_CLK_OUT */
                0x628 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OEN */
                0x62C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OUT */
                0x634 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OEN */
                0x638 A_DELAY_PS(30) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OUT */
                0x640 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OEN */
                0x644 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OUT */
                0x64C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OEN */
                0x650 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OUT */
                0x658 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OEN */
                0x65C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC2_HS200_MANUAL1 in datamanual */
    	mmc2_iodelay_hs200_rev11_conf: mmc2_iodelay_hs200_rev11_conf {
    		pinctrl-pin-array = <
    			0x190 A_DELAY_PS(621) G_DELAY_PS(600)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(300) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a8 A_DELAY_PS(739) G_DELAY_PS(600)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(240) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b4 A_DELAY_PS(812) G_DELAY_PS(600)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(240) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1c0 A_DELAY_PS(954) G_DELAY_PS(600)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(60)  G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1d0 A_DELAY_PS(1340) G_DELAY_PS(420)	/* CFG_GPMC_A23_OUT */
    			0x1d8 A_DELAY_PS(935) G_DELAY_PS(600)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e4 A_DELAY_PS(525) G_DELAY_PS(600)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1f0 A_DELAY_PS(767) G_DELAY_PS(600)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(225) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1fc A_DELAY_PS(565) G_DELAY_PS(600)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(60) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x364 A_DELAY_PS(969) G_DELAY_PS(600)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(180) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    	      >;
    	};
    
    	/* Corresponds to MMC2_HS200_MANUAL1 in datamanual */
    	mmc2_iodelay_hs200_rev20_conf: mmc2_iodelay_hs200_rev20_conf {
    		pinctrl-pin-array = <
    			0x1D0 A_DELAY_PS(935) G_DELAY_PS(280) 	/* CFG_GPMC_A23_OUT */
                0x364 A_DELAY_PS(684) G_DELAY_PS(0) 	/* CFG_GPMC_CS1_OEN */
                0x368 A_DELAY_PS(76) G_DELAY_PS(0) 	/* CFG_GPMC_CS1_OUT */
                0x1D8 A_DELAY_PS(621) G_DELAY_PS(0) 	/* CFG_GPMC_A24_OEN */
                0x1DC A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A24_OUT */
                0x1E4 A_DELAY_PS(183) G_DELAY_PS(0) 	/* CFG_GPMC_A25_OEN */
                0x1E8 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A25_OUT */
                0x1F0 A_DELAY_PS(467) G_DELAY_PS(0) 	/* CFG_GPMC_A26_OEN */
                0x1F4 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A26_OUT */
                0x1FC A_DELAY_PS(262) G_DELAY_PS(0) 	/* CFG_GPMC_A27_OEN */
                0x200 A_DELAY_PS(46) G_DELAY_PS(0) 	/* CFG_GPMC_A27_OUT */
                0x190 A_DELAY_PS(274) G_DELAY_PS(0) 	/* CFG_GPMC_A19_OEN */
                0x194 A_DELAY_PS(162) G_DELAY_PS(0) 	/* CFG_GPMC_A19_OUT */
                0x1A8 A_DELAY_PS(401) G_DELAY_PS(0) 	/* CFG_GPMC_A20_OEN */
                0x1AC A_DELAY_PS(73) G_DELAY_PS(0) 	/* CFG_GPMC_A20_OUT */
                0x1B4 A_DELAY_PS(465) G_DELAY_PS(0) 	/* CFG_GPMC_A21_OEN */
                0x1B8 A_DELAY_PS(115) G_DELAY_PS(0) 	/* CFG_GPMC_A21_OUT */
                0x1C0 A_DELAY_PS(633) G_DELAY_PS(0) 	/* CFG_GPMC_A22_OEN */
                0x1C4 A_DELAY_PS(47) G_DELAY_PS(0) 	/* CFG_GPMC_A22_OUT */
    	      >;
    	};
    
    	/* Correspnds to MMC2_DDR_3V3_MANUAL1 in datamanual */
    	mmc2_iodelay_ddr_3_3v_rev11_conf: mmc2_iodelay_ddr_3_3v_rev11_conf {
    		pinctrl-pin-array = <
    			0x18c A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A19_IN */
    			0x190 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(174) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a4 A_DELAY_PS(265) G_DELAY_PS(360)	/* CFG_GPMC_A20_IN */
    			0x1a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(168) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b0 A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A21_IN */
    			0x1b4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(136) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1bc A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A22_IN */
    			0x1c0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1c8 A_DELAY_PS(287) G_DELAY_PS(420)	/* CFG_GPMC_A23_IN */
    			0x1d0 A_DELAY_PS(879) G_DELAY_PS(0)	/* CFG_GPMC_A23_OUT */
    			0x1d4 A_DELAY_PS(144) G_DELAY_PS(240)	/* CFG_GPMC_A24_IN */
    			0x1d8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_IN */
    			0x1e4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(34) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1ec A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A26_IN */
    			0x1f0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1f8 A_DELAY_PS(120) G_DELAY_PS(180)	/* CFG_GPMC_A27_IN */
    			0x1fc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x360 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_IN */
    			0x364 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(11) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC2_DDR_1V8_MANUAL1 in datamanual */
    	mmc2_iodelay_ddr_1_8v_rev11_conf: mmc2_iodelay_ddr_1_8v_rev11_conf {
    		pinctrl-pin-array = <
    			0x18c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_IN */
    			0x190 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(174) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a4 A_DELAY_PS(274) G_DELAY_PS(240)	/* CFG_GPMC_A20_IN */
    			0x1a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(168) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b0 A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A21_IN */
    			0x1b4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(136) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1bc A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A22_IN */
    			0x1c0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1c8 A_DELAY_PS(514) G_DELAY_PS(360)	/* CFG_GPMC_A23_IN */
    			0x1d0 A_DELAY_PS(879) G_DELAY_PS(0)	/* CFG_GPMC_A23_OUT */
    			0x1d4 A_DELAY_PS(187) G_DELAY_PS(120)	/* CFG_GPMC_A24_IN */
    			0x1d8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_IN */
    			0x1e4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(34) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1ec A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A26_IN */
    			0x1f0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1f8 A_DELAY_PS(121) G_DELAY_PS(60)	/* CFG_GPMC_A27_IN */
    			0x1fc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x360 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_IN */
    			0x364 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(11) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC3_MANUAL1 in datamanual */
    	mmc3_iodelay_manual1_rev20_conf: mmc3_iodelay_manual1_conf {
    		pinctrl-pin-array = <
    			0x678 A_DELAY_PS(0) G_DELAY_PS(386)	/* CFG_MMC3_CLK_IN */
    			0x680 A_DELAY_PS(605) G_DELAY_PS(0)	/* CFG_MMC3_CLK_OUT */
    			0x684 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_IN */
    			0x688 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OEN */
    			0x68c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OUT */
    			0x690 A_DELAY_PS(171) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_IN */
    			0x694 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OEN */
    			0x698 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OUT */
    			0x69c A_DELAY_PS(221) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_IN */
    			0x6a0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OEN */
    			0x6a4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OUT */
    			0x6a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_IN */
    			0x6ac A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OEN */
    			0x6b0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OUT */
    			0x6b4 A_DELAY_PS(474) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_IN */
    			0x6b8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OEN */
    			0x6bc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC3_MANUAL1 in datamanual */
    	mmc3_iodelay_manual1_rev11_conf: mmc3_iodelay_manual1_conf {
    		pinctrl-pin-array = <
    			0x678 A_DELAY_PS(406) G_DELAY_PS(0)	/* CFG_MMC3_CLK_IN */
    			0x680 A_DELAY_PS(659) G_DELAY_PS(0)	/* CFG_MMC3_CLK_OUT */
    			0x684 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_IN */
    			0x688 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OEN */
    			0x68c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OUT */
    			0x690 A_DELAY_PS(130) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_IN */
    			0x694 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OEN */
    			0x698 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OUT */
    			0x69c A_DELAY_PS(169) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_IN */
    			0x6a0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OEN */
    			0x6a4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OUT */
    			0x6a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_IN */
    			0x6ac A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OEN */
    			0x6b0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OUT */
    			0x6b4 A_DELAY_PS(457) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_IN */
    			0x6b8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OEN */
    			0x6bc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC4_DS_MANUAL1 in datamanual */
        mmc4_iodelay_ds_rev11_conf: mmc4_iodelay_ds_rev11_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(96) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(582) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(391) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(561) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(588) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_DS_MANUAL1 in datamanual */
        mmc4_iodelay_ds_rev20_conf: mmc4_iodelay_ds_rev20_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(307) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(785) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(613) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(683) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(835) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_MANUAL1 in datamanual */
        mmc4_iodelay_sdr12_hs_sdr25_rev11_conf: mmc4_iodelay_sdr12_hs_sdr25_rev11_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(2651) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(1572) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(1913) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(1721) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(1891) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(1919) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_MANUAL1 in datamanual */
        mmc4_iodelay_sdr12_hs_sdr25_rev20_conf: mmc4_iodelay_sdr12_hs_sdr25_rev20_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(1147) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(1834) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(2165) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(1929) G_DELAY_PS(64)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(1935) G_DELAY_PS(128)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(2172) G_DELAY_PS(44)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    };
     

    You can check whether the camera is on/probe-able by scanning the i2c lines with i2cdetect.

    root@am57xx-evm:~# i2cdetect -y -r 2
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
    70: -- -- -- -- -- -- -- --

    So, yeah after fixing it is getting detected at 0x3c. 

    Here is the dmesg output below:-

    Again only 1 printk of yours is showing.

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00010-gd9f3c4d3b93d-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #46 SMP PREEMPT Thu Jul 24 09:21:02 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757948K/4174848K available (12288K kernel code, 1467K rwdata, 3304K rodata, 2048K init, 305K bss, 220292K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001403] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003143] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003326] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004486] Console: colour dummy device 80x30
    [    0.004516] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062042] CPU: Testing write buffer coherency: ok
    [    0.062072] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062072] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062072] pid_max: default: 32768 minimum: 301
    [    0.062225] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062225] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062866] /cpus/cpu@0 missing clock-frequency property
    [    0.062896] /cpus/cpu@1 missing clock-frequency property
    [    0.062927] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063568] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063568] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063659] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063751] rcu: Hierarchical SRCU implementation.
    [    0.063781] rcu: 	Max phase no-delay instances is 1000.
    [    0.066131] EFI services will not be available.
    [    0.066680] smp: Bringing up secondary CPUs ...
    [    0.126892] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126922] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127014] smp: Brought up 1 node, 2 CPUs
    [    0.127044] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127044] CPU: All CPU(s) started in HYP mode.
    [    0.127044] CPU: Virtualization extensions available.
    [    0.127471] devtmpfs: initialized
    [    0.153137] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153289] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153320] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.157775] pinctrl core: initialized pinctrl subsystem
    [    0.158416] DMI not present or invalid.
    [    0.158843] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160552] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161499] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161529] cpuidle: using governor menu
    [    0.189086] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.189147] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.193084] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.193206] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193267] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193603] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.195159] No ATAGs?
    [    0.195220] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195220] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.219726] iommu: Default domain type: Translated 
    [    0.219757] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221099] SCSI subsystem initialized
    [    0.221252] libata version 3.00 loaded.
    [    0.221435] usbcore: registered new interface driver usbfs
    [    0.221466] usbcore: registered new interface driver hub
    [    0.221496] usbcore: registered new device driver usb
    [    0.221893] mc: Linux media interface: v0.10
    [    0.221954] pps_core: LinuxPPS API ver. 1 registered
    [    0.221954] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.221954] PTP clock support registered
    [    0.222106] EDAC MC: Ver: 3.0.0
    [    0.223937] clocksource: Switched to clocksource 32k_counter
    [    0.231658] NET: Registered PF_INET protocol family
    [    0.231811] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.244445] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.244476] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.244476] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.244537] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.244781] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.244842] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244873] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244995] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.245422] RPC: Registered named UNIX socket transport module.
    [    0.245422] RPC: Registered udp transport module.
    [    0.245422] RPC: Registered tcp transport module.
    [    0.245422] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.245452] PCI: CLS 0 bytes, default 64
    [    0.245819] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.246002] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.246826] Initialise system trusted keyrings
    [    0.247039] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.252349] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.252960] NFS: Registering the id_resolver key type
    [    0.252990] Key type id_resolver registered
    [    0.252990] Key type id_legacy registered
    [    0.253082] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.253082] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.253112] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.253570] Key type asymmetric registered
    [    0.253601] Asymmetric key parser 'x509' registered
    [    0.253723] bounce: pool size: 64 pages
    [    0.253814] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.253814] io scheduler mq-deadline registered
    [    0.253814] io scheduler kyber registered
    [    0.257110] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.303070] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.305053] STMicroelectronics ASC driver initialized
    [    0.305725] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.307159] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.307159] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.307159] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.307189] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.314208] brd: module loaded
    [    0.318786] loop: module loaded
    [    0.323181] CAN device driver interface
    [    0.323577] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.323577] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.323638] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.323638] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.324554] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.324615] usbcore: registered new interface driver pegasus
    [    0.324645] usbcore: registered new interface driver asix
    [    0.324676] usbcore: registered new interface driver ax88179_178a
    [    0.324707] usbcore: registered new interface driver cdc_ether
    [    0.324737] usbcore: registered new interface driver smsc75xx
    [    0.324768] usbcore: registered new interface driver smsc95xx
    [    0.324798] usbcore: registered new interface driver net1080
    [    0.324829] usbcore: registered new interface driver cdc_subset
    [    0.324859] usbcore: registered new interface driver zaurus
    [    0.324890] usbcore: registered new interface driver cdc_ncm
    [    0.325622] usbcore: registered new interface driver usb-storage
    [    0.326171] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
    [    0.326171] omap4-keypad 4ae1c00000000100.keypad: no base address specified
    [    0.326202] omap4-keypad: probe of 4ae1c00000000100.keypad failed with error -22
    [    0.326599] i2c_dev: i2c /dev entries driver
    [    0.329071] sdhci: Secure Digital Host Controller Interface driver
    [    0.329071] sdhci: Copyright(c) Pierre Ossman
    [    0.329284] Synopsys Designware Multimedia Card Interface Driver
    [    0.329498] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.330139] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.330444] usbcore: registered new interface driver usbhid
    [    0.330444] usbhid: USB HID core driver
    [    0.333099] NET: Registered PF_INET6 protocol family
    [    0.334045] Segment Routing with IPv6
    [    0.334106] In-situ OAM (IOAM) with IPv6
    [    0.334167] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.334655] NET: Registered PF_PACKET protocol family
    [    0.334655] can: controller area network core
    [    0.334716] NET: Registered PF_CAN protocol family
    [    0.334716] can: raw protocol
    [    0.334716] can: broadcast manager protocol
    [    0.334716] can: netlink gateway - max_hops=1
    [    0.334899] Key type dns_resolver registered
    [    0.334960] ThumbEE CPU extension supported.
    [    0.334960] Registering SWP/SWPB emulation handler
    [    0.335388] omap_voltage_late_init: Voltage driver support not added
    [    0.335418] Power Management for TI OMAP4+ devices.
    [    0.336151] Loading compiled-in X.509 certificates
    [    0.369873] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.375793] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.397735] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.413909] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.414306] OMAP GPIO hardware version 0.1
    [    0.416595] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.423583] printk: console [ttyS2] disabled
    [    0.423675] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.788299] printk: console [ttyS2] enabled
    [    1.800140] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.810058] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.820007] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.829833] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.839721] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.849792] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.859710] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.896026] rtc-ds1307 2-006f: registered as rtc0
    [    1.901062] rtc-ds1307 2-006f: setting system clock to 2025-07-30T19:27:57 UTC (1753903677)
    [    1.909729] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.919860] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.931823] palmas 0-0058: Irq flag is 0x00000008
    [    1.967315] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    1.999938] at24 0-0050: supply vcc not found, using dummy regulator
    [    2.006805] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    2.013610] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    2.024047] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    2.031066] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    2.038208] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    2.047912] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.054260] random: crng init done
    [    2.066101] input: 4-0038 generic ft5x06 (8d) as /devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/4807c000.target-module/4807c000.i2c/i2c-4/4-0038/input/input0
    [    2.143981] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.152923] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.159667] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.168304] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.175140] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.180877] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.188507] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.199645] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:10
    [    2.206665] cpsw-switch 48484000.switch: Detected MACID = 64:8c:bb:60:7d:11
    [    2.215393] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.237945] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.245635] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.256500] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.263702] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.279022] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.289001] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.305847] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.314941] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.323089] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.331481] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.337036] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    3.345306] dra7-pcie 51000000.pcie: Phy link never came up
    [    3.351043] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    3.357360] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    3.362884] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    3.369110] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    3.376068] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    3.382110] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    3.388427] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    3.394805] pci 0000:00:00.0: supports D1
    [    3.398834] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    3.412292] PCI: bus0: Fast back to back transfers disabled
    [    3.418273] PCI: bus1: Fast back to back transfers enabled
    [    3.423797] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    3.430633] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    3.437469] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    3.443084] pcieport 0000:00:00.0: PME: Signaling with IRQ 136
    [    3.455017] edma 43300000.dma: memcpy is disabled
    [    3.463012] edma 43300000.dma: TI EDMA DMA engine driver
    [    3.474731] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    3.482513] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    3.489196] platform 40800000.dsp: Adding to iommu group 0
    [    3.496215] platform 58820000.ipu: Adding to iommu group 1
    [    3.501892] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    3.509765] platform 55020000.ipu: Adding to iommu group 2
    [    3.515319] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    3.527526] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    3.536346] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    3.552276] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    3.559570] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    3.566406] platform 41000000.dsp: Adding to iommu group 3
    [    3.574462] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    3.592834] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    3.602081] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    3.602386] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    3.610961] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    3.624206] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    3.637268] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    3.637298] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    3.656982] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    3.671020] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.684417] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.696350] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.697784] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.718170] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.718261] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.731994] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.744842] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.758392] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.759613] mmc0: new high speed SDHC card at address 5048
    [    3.772399] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.791931] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.792114] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    3.812103] clk: Disabling unused clocks
    [    3.813476]  mmcblk0: p1 p2
    [    3.877990] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.886962] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.900543] devtmpfs: mounted
    [    3.904571] Freeing unused kernel image (initmem) memory: 2048K
    [    3.910644] Run /sbin/init as init process
    [    3.914794]   with arguments:
    [    3.914794]     /sbin/init
    [    3.914794]   with environment:
    [    3.914794]     HOME=/
    [    3.914794]     TERM=linux
    [    3.952850] mmc1: new DDR MMC card at address 0001
    [    3.958618] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.965576]  mmcblk1: p1 p2
    [    3.968902] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.974884] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.980895] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    4.322906] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    4.354919] systemd[1]: Detected architecture arm.
    [    4.395263] systemd[1]: Hostname set to <am57xx-evm>.
    [    4.529815] systemd-sysv-generator[98]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.554779] systemd-sysv-generator[98]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.820404] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.885620] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.907989] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.988372] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.997772] systemd[1]: Created slice Slice /system/getty.
    [    5.034912] systemd[1]: Created slice Slice /system/modprobe.
    [    5.075012] systemd[1]: Created slice Slice /system/serial-getty.
    [    5.114410] systemd[1]: Created slice User and Session Slice.
    [    5.154296] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.194458] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.234466] systemd[1]: Reached target Path Units.
    [    5.264099] systemd[1]: Reached target Remote File Systems.
    [    5.304107] systemd[1]: Reached target Slice Units.
    [    5.334320] systemd[1]: Reached target Swaps.
    [    5.376464] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.414245] systemd[1]: Reached target RPC Port Mapper.
    [    5.463714] systemd[1]: Listening on Process Core Dump Socket.
    [    5.504516] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.592803] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    5.604339] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.644500] systemd[1]: Listening on Journal Socket.
    [    5.675018] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.714508] systemd[1]: Listening on udev Control Socket.
    [    5.754425] systemd[1]: Listening on udev Kernel Socket.
    [    5.794769] systemd[1]: Listening on User Database Manager Socket.
    [    5.834442] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.894378] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.936309] systemd[1]: Mounting Kernel Debug File System...
    [    5.966979] systemd[1]: Mounting Kernel Trace File System...
    [    6.005310] systemd[1]: Mounting Temporary Directory /tmp...
    [    6.037506] systemd[1]: Starting Create List of Static Device Nodes...
    [    6.077453] systemd[1]: Starting Load Kernel Module configfs...
    [    6.106842] systemd[1]: Starting Load Kernel Module drm...
    [    6.136749] systemd[1]: Starting Load Kernel Module fuse...
    [    6.178741] systemd[1]: Starting Start psplash boot splash screen...
    [    6.218261] systemd[1]: Starting RPC Bind...
    [    6.244415] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    6.257751] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    6.270812] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    6.314910] systemd[1]: Starting Journal Service...
    [    6.351501] systemd[1]: Starting Load Kernel Modules...
    [    6.386352] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.426269] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.458251] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.467285] systemd[1]: Starting Coldplug All udev Devices...
    [    6.501892] systemd[1]: Started RPC Bind.
    [    6.534362] systemd[1]: Started Journal Service.
    [    7.088409] systemd-journald[110]: Received client request to flush runtime journal.
    [    7.872131] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    7.888305] remoteproc remoteproc0: 58820000.ipu is available
    [    7.899993] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    7.919860] remoteproc remoteproc1: 55020000.ipu is available
    [    7.933074] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    7.977172] remoteproc remoteproc2: 40800000.dsp is available
    [    8.066406] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    8.075134] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    8.091247] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    8.142303] remoteproc remoteproc3: 41000000.dsp is available
    [    8.189392] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    8.211120] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    8.347930] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.355651] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.393829] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.406402] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.421936] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.460632] omap-iommu 58882000.mmu: no fck found
    [    8.465454] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.473236] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    8.529388] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu1-memory@9d000000
    [    8.550598] pwm-backlight backlight: supply power not found, using dummy regulator
    [    8.578704] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    8.584289] rproc-virtio rproc-virtio.2.auto: registered virtio0 (type 7)
    [    8.600006] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    8.611938] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [    8.614318] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    8.619873] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [    8.656616] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [    8.680938] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu2-memory@95800000
    [    8.690338] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    8.704986] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.705078] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    8.710510] rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
    [    8.732910] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    8.740814] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    8.761535] omap_rtc 48838000.rtc: registered as rtc2
    [    8.768554] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    8.783477] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    8.791198] panel-simple display: supply power not found, using dummy regulator
    [    8.823242] videodev: Linux video capture interface: v2.00
    [    8.854309] panel-simple display: Specify missing connector_type
    [    8.885864] remoteproc remoteproc2: powering up 40800000.dsp
    [    8.891571] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    8.899963] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    8.905883] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    8.949859] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    8.961486] remoteproc remoteproc3: powering up 41000000.dsp
    [    8.969543] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    8.977813] omap-des 480a5000.des: will run requests pump with realtime priority
    [    8.989288] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    8.995208] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    9.049285] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    9.050018] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [    9.093414] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    9.111602] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    9.127014] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [    9.143096] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    9.143280] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    9.149932] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [    9.162445] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    9.170623] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    9.171539] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    9.179016] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    9.192718] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    9.200531] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    9.204498] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    9.213806] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    9.237976] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    9.252563] vip 48990000.vip: VPDMA firmware loaded
    [    9.266937] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.272552] vpe 489d0000.vpe: Device registered as /dev/video0
    [    9.272857] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    9.292755] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    9.302246] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    9.310974] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    9.328796] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    9.336914] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    9.533386] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    9.563781] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    9.598876] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    9.628997] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    9.660034] DSS: OMAP DSS rev 6.1
    [    9.669006] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    9.711395] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    9.751953] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    9.771759] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.772705] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [    9.845672] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [    9.848327] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    9.915344] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    9.939392] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    9.961700] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    9.978668] dmm 4e000000.dmm: workaround for errata i878 in use
    [    9.980529] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [   10.064147] scsi host0: ahci-dwc
    [   10.067657] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 167
    [   10.077209] dmm 4e000000.dmm: initialized all PAT entries
    [   10.108184] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.145111] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [   10.260894] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.262725] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.441864] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   10.506622] ata1: SATA link down (SStatus 0 SControl 300)
    [   10.541290] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.562683] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.603454] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.624053] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   10.728271] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.795135] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.871490] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.902252] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.920318] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.951385] EDID block 0 is all zeroes
    [   10.957763] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957763] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957763] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957763] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957794] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957794] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957794] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.957794] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.974456] [drm] Enabling DMM ywrap scrolling
    [   10.977447] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.991973] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   11.010681] **** vip: create_stream: V4L2_MBUS_BT656 ****
    [   11.089874] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   11.089904] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.089904] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   11.089904] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   11.215850] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   11.215881] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.311218] Console: switching to colour frame buffer device 128x37
    [   11.496612] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   11.534210] ------------[ cut here ]------------
    [   11.538879] WARNING: CPU: 0 PID: 138 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   11.548553] Hot plug detection already enabled
    [   11.553070] Modules linked in: rpmsg_char snd_soc_simple_card snd_soc_simple_card_utils omapdrm(+) omap_aes_driver cec libaes pruss omap_wdt ahci_dwc omap_hwspinlock snd_soc_tlv320aic3x_i2c snd_soc_tlv320aic3x snd_soc_davinci_mcasp snd_soc_ti_udma snd_soc_ti_edma snd_soc_ti_sdma snd_soc_core snd_pcm_dmaengine ac97_bus ti_vip snd_pcm ti_vpe ti_sc ti_csc ti_vpdma v4l2_mem2mem ov5640 videobuf2_dma_contig snd_timer videobuf2_memops v4l2_fwnode videobuf2_v4l2 snd videobuf2_common v4l2_async omap_des soundcore omap_crypto videodev libdes dwc3_omap rtc_omap pwm_tiehrpwm extcon_palmas omap_sham crypto_engine omap_remoteproc virtio_rpmsg_bus rpmsg_ns rpmsg_core display_connector ti_tpd12s015
    [   11.614349] CPU: 0 PID: 138 Comm: systemd-udevd Not tainted 6.1.119-00010-gd9f3c4d3b93d-dirty #46
    [   11.623260] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   11.629394]  unwind_backtrace from show_stack+0x10/0x14
    [   11.634674]  show_stack from dump_stack_lvl+0x40/0x4c
    [   11.639770]  dump_stack_lvl from __warn+0x7c/0x158
    [   11.644592]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   11.649749]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   11.656066]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   11.662902]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   11.668945]  platform_probe from really_probe+0xc8/0x2ec
    [   11.674285]  really_probe from __driver_probe_device+0x88/0x1a0
    [   11.680267]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   11.686828]  driver_probe_device from __driver_attach+0x90/0x174
    [   11.692901]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   11.698608]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   11.704376]  bus_add_driver from driver_register+0x88/0x11c
    [   11.709991]  driver_register from __platform_register_drivers+0x38/0x88
    [   11.716644]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   11.724090]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   11.730590]  do_one_initcall from do_init_module+0x44/0x1d4
    [   11.736206]  do_init_module from sys_finit_module+0xc0/0x110
    [   11.741882]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   11.747741] Exception stack(0xf1fe9fa8 to 0xf1fe9ff0)
    [   11.752838] 9fa0:                   00000000 00000000 0000000f b6cfa8a0 00000000 00020000
    [   11.761047] 9fc0: 00000000 00000000 00000000 0000017b 00000000 0008b9e0 00000007 00000000
    [   11.769256] 9fe0: beb02710 beb02700 b6cf5d4f b6c2b052
    [   11.774444] ---[ end trace 0000000000000000 ]---
    [   11.786804] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   11.844390] remoteproc remoteproc4: 4b234000.pru is available
    [   11.857452] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   11.863006] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   11.901885] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   11.928710] xhci-hcd xhci-hcd.6.auto: irq 186, io mem 0x48890000
    [   11.944274] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   11.955688] remoteproc remoteproc5: 4b238000.pru is available
    [   11.961608] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   11.961791] remoteproc remoteproc6: 4b2b4000.pru is available
    [   11.973510] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   11.987304] remoteproc remoteproc7: 4b2b8000.pru is available
    [   11.995269] hub 1-0:1.0: USB hub found
    [   12.002349] hub 1-0:1.0: 1 port detected
    [   12.020263] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   12.043395] hub 2-0:1.0: USB hub found
    [   12.050811] hub 2-0:1.0: 1 port detected
    [   12.303985] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   12.526306] hub 1-1:1.0: USB hub found
    [   12.530212] hub 1-1:1.0: 4 ports detected
    [   12.644256] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   12.652496] usbcore: registered new device driver onboard-usb-hub
    [   12.718322] hub 2-1:1.0: USB hub found
    [   12.722198] hub 2-1:1.0: 4 ports detected
    [   12.766357] hub 2-1:1.0: USB hub found
    [   12.770202] hub 2-1:1.0: 4 ports detected
    [   13.006500] hub 1-1:1.0: USB hub found
    [   13.010345] hub 1-1:1.0: 4 ports detected
    [   13.166595] hub 1-1:1.0: USB hub found
    [   13.174133] hub 1-1:1.0: 4 ports detected
    [   13.326690] hub 2-1:1.0: USB hub found
    [   13.330535] hub 2-1:1.0: 4 ports detected
    [   14.075042] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   14.911895] Bluetooth: Core ver 2.22
    [   14.942291] NET: Registered PF_BLUETOOTH protocol family
    [   14.950134] Bluetooth: HCI device and connection manager initialized
    [   14.969024] Bluetooth: HCI socket layer initialized
    [   14.980468] Bluetooth: L2CAP socket layer initialized
    [   14.992126] Bluetooth: SCO socket layer initialized
    [   15.093749] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   15.242126] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   15.254364] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   15.419952] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.448547] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   15.471954] Initializing XFRM netlink socket
    [   15.493011] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.537414] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   22.415191] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   22.444000] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   22.473937] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   22.503997] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   22.670104] EDID block 0 is all zeroes


    Please help in debugging pinmux changes or if any changes are needed to be done in the device driver !

    Thanks!

  • Hi Vishal,

    It looks like a new property was added to the driver's device-tree node. The ti,vip-channels property.

    Can you set the value in the device-tree node?

    You may have to add prints to the 6.3 release to see how many channels are used/what to set the value to.

    Best,
    Jared

  • Hi Jared,

    My camera is connected to VIP2, Port A  (vin3a).

    I tried with ti,vip-channels  value <0>, <1> and <2> (cause it supports 3 channels so I tried all three) still  I can't see camera working. Here are the DTS changes below:-

    clk_ov5640_fixed: clk_ov5640_fixed {
                            compatible = "fixed-clock";
                            #clock-cells = <0>;
                            clock-frequency = <24000000>;
                    };
    clk_ov5640: clk_ov5640 {
                            compatible = "gpio-gate-clock";
                            #clock-cells = <0>;
                            clocks = <&clk_ov5640_fixed>;
                            enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
                    };
    
    
    &vin3a {
    
            ti,vip-instance = <1>;       // VIP2 = instance 1
            ti,vip-port = <0>;           // Port A
            ti,vip-channels = <0>;       // Channel 0
            status = "okay";
            vin3a_ep: endpoint {
                    remote-endpoint = <&cam>;
                    slave-mode;
            };
    };
    
    &vip2 {
            status = "okay";
    };
    
    &i2c3 {
            status = "okay";
            clock-frequency = <400000>;
    
            mcp_rtc: rtc@6f {
                    compatible = "microchip,mcp7941x";
                    reg = <0x6f>;
                    interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
                                          <&dra7_pmx_core 0x424>;
                    interrupt-names = "irq", "wakeup";
            };
    
            ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clock-names = "xclk";
                    clocks = <&clk_ov5640>;
                    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <2>;
                                    hsync-active = <1>;
                                    vsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };
    };

    Also we are not doing any multi channel capture.

    Here is the dmesg output when channel is set to <0>.  (I didn't find any change in dmesg logs when I tried with channel set to <1> / <2>)

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00010-gd9f3c4d3b93d-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #46 SMP PREEMPT Thu Jul 24 09:21:02 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757948K/4174848K available (12288K kernel code, 1467K rwdata, 3304K rodata, 2048K init, 305K bss, 220292K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001403] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003143] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003326] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004486] Console: colour dummy device 80x30
    [    0.004516] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062042] CPU: Testing write buffer coherency: ok
    [    0.062072] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062072] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062072] pid_max: default: 32768 minimum: 301
    [    0.062225] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062225] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062866] /cpus/cpu@0 missing clock-frequency property
    [    0.062896] /cpus/cpu@1 missing clock-frequency property
    [    0.062896] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063537] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063568] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063659] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063751] rcu: Hierarchical SRCU implementation.
    [    0.063751] rcu: 	Max phase no-delay instances is 1000.
    [    0.066131] EFI services will not be available.
    [    0.066680] smp: Bringing up secondary CPUs ...
    [    0.126892] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126922] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127014] smp: Brought up 1 node, 2 CPUs
    [    0.127044] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127044] CPU: All CPU(s) started in HYP mode.
    [    0.127044] CPU: Virtualization extensions available.
    [    0.127471] devtmpfs: initialized
    [    0.153137] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153320] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153320] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.157806] pinctrl core: initialized pinctrl subsystem
    [    0.158447] DMI not present or invalid.
    [    0.158874] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160583] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161499] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161560] cpuidle: using governor menu
    [    0.188995] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.189056] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.192993] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.193084] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193176] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193511] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.195068] No ATAGs?
    [    0.195129] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195129] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.219726] iommu: Default domain type: Translated 
    [    0.219757] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221099] SCSI subsystem initialized
    [    0.221252] libata version 3.00 loaded.
    [    0.221435] usbcore: registered new interface driver usbfs
    [    0.221466] usbcore: registered new interface driver hub
    [    0.221496] usbcore: registered new device driver usb
    [    0.221923] mc: Linux media interface: v0.10
    [    0.221954] pps_core: LinuxPPS API ver. 1 registered
    [    0.221984] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.221984] PTP clock support registered
    [    0.222106] EDAC MC: Ver: 3.0.0
    [    0.223968] clocksource: Switched to clocksource 32k_counter
    [    0.231719] NET: Registered PF_INET protocol family
    [    0.231903] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.244537] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.244567] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.244567] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.244628] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.244842] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.244934] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.244964] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.245086] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.245513] RPC: Registered named UNIX socket transport module.
    [    0.245513] RPC: Registered udp transport module.
    [    0.245513] RPC: Registered tcp transport module.
    [    0.245513] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.245513] PCI: CLS 0 bytes, default 64
    [    0.245910] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.246063] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.246917] Initialise system trusted keyrings
    [    0.247222] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.252471] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.253051] NFS: Registering the id_resolver key type
    [    0.253112] Key type id_resolver registered
    [    0.253112] Key type id_legacy registered
    [    0.253173] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.253204] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.253234] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.253692] Key type asymmetric registered
    [    0.253692] Asymmetric key parser 'x509' registered
    [    0.253814] bounce: pool size: 64 pages
    [    0.253906] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.253936] io scheduler mq-deadline registered
    [    0.253936] io scheduler kyber registered
    [    0.257232] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.303436] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.305480] STMicroelectronics ASC driver initialized
    [    0.306121] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.307556] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.307556] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.307586] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.307586] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.314544] brd: module loaded
    [    0.319122] loop: module loaded
    [    0.323547] CAN device driver interface
    [    0.324005] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.324005] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.324066] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.324066] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.324951] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.324981] usbcore: registered new interface driver pegasus
    [    0.325012] usbcore: registered new interface driver asix
    [    0.325042] usbcore: registered new interface driver ax88179_178a
    [    0.325073] usbcore: registered new interface driver cdc_ether
    [    0.325103] usbcore: registered new interface driver smsc75xx
    [    0.325134] usbcore: registered new interface driver smsc95xx
    [    0.325164] usbcore: registered new interface driver net1080
    [    0.325195] usbcore: registered new interface driver cdc_subset
    [    0.325225] usbcore: registered new interface driver zaurus
    [    0.325256] usbcore: registered new interface driver cdc_ncm
    [    0.325988] usbcore: registered new interface driver usb-storage
    [    0.326538] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
    [    0.326538] omap4-keypad 4ae1c00000000100.keypad: no base address specified
    [    0.326538] omap4-keypad: probe of 4ae1c00000000100.keypad failed with error -22
    [    0.326965] i2c_dev: i2c /dev entries driver
    [    0.329437] sdhci: Secure Digital Host Controller Interface driver
    [    0.329437] sdhci: Copyright(c) Pierre Ossman
    [    0.329650] Synopsys Designware Multimedia Card Interface Driver
    [    0.329864] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.330505] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.330810] usbcore: registered new interface driver usbhid
    [    0.330810] usbhid: USB HID core driver
    [    0.333465] NET: Registered PF_INET6 protocol family
    [    0.334411] Segment Routing with IPv6
    [    0.334442] In-situ OAM (IOAM) with IPv6
    [    0.334503] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.334991] NET: Registered PF_PACKET protocol family
    [    0.334991] can: controller area network core
    [    0.335052] NET: Registered PF_CAN protocol family
    [    0.335052] can: raw protocol
    [    0.335052] can: broadcast manager protocol
    [    0.335083] can: netlink gateway - max_hops=1
    [    0.335235] Key type dns_resolver registered
    [    0.335296] ThumbEE CPU extension supported.
    [    0.335296] Registering SWP/SWPB emulation handler
    [    0.335754] omap_voltage_late_init: Voltage driver support not added
    [    0.335754] Power Management for TI OMAP4+ devices.
    [    0.336486] Loading compiled-in X.509 certificates
    [    0.369964] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.375854] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.398040] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.414276] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.414459] OMAP GPIO hardware version 0.1
    [    0.416717] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.423706] printk: console [ttyS2] disabled
    [    0.423767] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.788330] printk: console [ttyS2] enabled
    [    1.800231] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.810241] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.820068] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.829864] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.839721] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.849761] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.859649] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.895965] rtc-ds1307 2-006f: registered as rtc0
    [    1.901031] rtc-ds1307 2-006f: setting system clock to 2025-08-05T10:22:40 UTC (1754389360)
    [    1.909698] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.919830] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.931701] palmas 0-0058: Irq flag is 0x00000008
    [    1.966735] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    2.000335] at24 0-0050: supply vcc not found, using dummy regulator
    [    2.007202] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    2.014038] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    2.024047] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    2.030090] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    2.038574] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    2.048309] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.054626] random: crng init done
    [    2.076110] input: 4-0038 generic ft5x06 (8d) as /devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/4807c000.target-module/4807c000.i2c/i2c-4/4-0038/input/input0
    [    2.153991] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.162933] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.169738] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.178375] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.185241] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.190948] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.198608] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.209747] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:16
    [    2.216796] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:17
    [    2.225524] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.248107] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.255767] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.266632] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.273803] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.289123] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.299102] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.315948] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.325042] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.333221] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.341583] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.347137] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    2.454895] dra7-pcie 51000000.pcie: PCIe Gen.2 x1 link up
    [    2.460510] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    2.466857] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    2.472381] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    2.478607] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    2.485534] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    2.491607] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    2.497924] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    2.504302] pci 0000:00:00.0: supports D1
    [    2.508331] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    2.521789] PCI: bus0: Fast back to back transfers disabled
    [    2.527587] pci 0000:01:00.0: [8086:2526] type 00 class 0x028000
    [    2.533691] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
    [    2.540893] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
    [    2.734100] PCI: bus1: Fast back to back transfers disabled
    [    2.739715] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    2.746582] pci 0000:00:00.0: BAR 8: assigned [mem 0x20200000-0x202fffff]
    [    2.753417] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    2.760253] pci 0000:01:00.0: BAR 0: assigned [mem 0x20200000-0x20203fff 64bit]
    [    2.767639] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    2.772888] pci 0000:00:00.0:   bridge window [mem 0x20200000-0x202fffff]
    [    2.780090] pcieport 0000:00:00.0: PME: Signaling with IRQ 136
    [    2.791992] edma 43300000.dma: memcpy is disabled
    [    2.800048] edma 43300000.dma: TI EDMA DMA engine driver
    [    2.811737] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    2.819549] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    2.826263] platform 40800000.dsp: Adding to iommu group 0
    [    2.833251] platform 58820000.ipu: Adding to iommu group 1
    [    2.838958] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    2.846893] platform 55020000.ipu: Adding to iommu group 2
    [    2.852447] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    2.864624] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    2.873413] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    2.889312] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    2.896636] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    2.903472] platform 41000000.dsp: Adding to iommu group 3
    [    2.911499] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    2.929901] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    2.939117] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    2.939453] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    2.947998] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    2.961181] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    2.974609] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    2.987701] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    2.994384] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    2.999755] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.008483] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.028900] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.042297] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.055816] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.062561] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.075408] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.081146] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.088989] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.110137] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.124237] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.139770] clk: Disabling unused clocks
    [    3.148834] l3init-clkctrl:0030:0: failed to disable
    [    3.154876] Waiting for root device PARTUUID=5c496148-02...
    [    3.188110] mmc0: new high speed SDHC card at address 5048
    [    3.194030] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    3.201049]  mmcblk0: p1 p2
    [    3.222900] mmc1: new DDR MMC card at address 0001
    [    3.228271] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.236022]  mmcblk1: p1 p2
    [    3.239562] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.246185] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.252014] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    3.271240] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.280181] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.293670] devtmpfs: mounted
    [    3.297698] Freeing unused kernel image (initmem) memory: 2048K
    [    3.303771] Run /sbin/init as init process
    [    3.308013]   with arguments:
    [    3.308013]     /sbin/init
    [    3.308044]   with environment:
    [    3.308044]     HOME=/
    [    3.308044]     TERM=linux
    [    3.697692] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    3.729705] systemd[1]: Detected architecture arm.
    [    3.765289] systemd[1]: Hostname set to <am57xx-evm>.
    [    3.933746] systemd-sysv-generator[111]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    3.958740] systemd-sysv-generator[111]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.225067] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.290344] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.312744] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.393188] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.402587] systemd[1]: Created slice Slice /system/getty.
    [    4.445465] systemd[1]: Created slice Slice /system/modprobe.
    [    4.484863] systemd[1]: Created slice Slice /system/serial-getty.
    [    4.524536] systemd[1]: Created slice User and Session Slice.
    [    4.564300] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.604492] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.644500] systemd[1]: Reached target Path Units.
    [    4.674316] systemd[1]: Reached target Remote File Systems.
    [    4.714111] systemd[1]: Reached target Slice Units.
    [    4.744171] systemd[1]: Reached target Swaps.
    [    4.786560] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    4.824279] systemd[1]: Reached target RPC Port Mapper.
    [    4.874542] systemd[1]: Listening on Process Core Dump Socket.
    [    4.914489] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.002563] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    5.014160] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.055175] systemd[1]: Listening on Journal Socket.
    [    5.094635] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.134796] systemd[1]: Listening on udev Control Socket.
    [    5.174407] systemd[1]: Listening on udev Kernel Socket.
    [    5.214782] systemd[1]: Listening on User Database Manager Socket.
    [    5.254516] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.334442] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.376525] systemd[1]: Mounting Kernel Debug File System...
    [    5.416992] systemd[1]: Mounting Kernel Trace File System...
    [    5.524444] systemd[1]: Mounting Temporary Directory /tmp...
    [    5.567504] systemd[1]: Starting Create List of Static Device Nodes...
    [    5.607879] systemd[1]: Starting Load Kernel Module configfs...
    [    5.647857] systemd[1]: Starting Load Kernel Module drm...
    [    5.686889] systemd[1]: Starting Load Kernel Module fuse...
    [    5.739379] systemd[1]: Starting Start psplash boot splash screen...
    [    5.777832] systemd[1]: Starting RPC Bind...
    [    5.814453] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    5.827789] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    5.840820] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    5.884674] systemd[1]: Starting Journal Service...
    [    5.929992] systemd[1]: Starting Load Kernel Modules...
    [    5.966125] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.006347] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.030456] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.046661] systemd[1]: Starting Coldplug All udev Devices...
    [    6.092407] systemd[1]: Started RPC Bind.
    [    6.124450] systemd[1]: Started Journal Service.
    [    6.716796] systemd-journald[124]: Received client request to flush runtime journal.
    [    7.554779] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    7.564758] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    7.584106] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    7.598297] remoteproc remoteproc0: 58820000.ipu is available
    [    7.627258] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    7.646728] remoteproc remoteproc1: 55020000.ipu is available
    [    7.674896] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    7.762756] remoteproc remoteproc2: 40800000.dsp is available
    [    7.807922] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    7.822082] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    7.898498] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    8.007446] remoteproc remoteproc3: 41000000.dsp is available
    [    8.019287] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.028411] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.038208] omap-iommu 58882000.mmu: no fck found
    [    8.042968] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.050781] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    8.061645] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu1-memory@9d000000
    [    8.070831] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.072692] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    8.077819] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.083679] rproc-virtio rproc-virtio.1.auto: registered virtio0 (type 7)
    [    8.097076] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    8.104736] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [    8.112670] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [    8.123870] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [    8.130920] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    8.149017] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.149505] pwm-backlight backlight: supply power not found, using dummy regulator
    [    8.163177] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    8.171081] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    8.186462] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    8.200195] panel-simple display: supply power not found, using dummy regulator
    [    8.226989] panel-simple display: Specify missing connector_type
    [    8.302001] videodev: Linux video capture interface: v2.00
    [    8.337097] omap_rtc 48838000.rtc: registered as rtc2
    [    8.367004] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    8.399414] omap-des 480a5000.des: will run requests pump with realtime priority
    [    8.421783] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu2-memory@95800000
    [    8.481658] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.485076] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    8.508209] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    8.514923] rproc-virtio rproc-virtio.2.auto: registered virtio1 (type 7)
    [    8.559265] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    8.730651] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    8.754180] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    8.790893] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    8.808532] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    8.819213] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    8.820465] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    8.837646] remoteproc remoteproc2: powering up 40800000.dsp
    [    8.843353] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    8.858154] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    8.873992] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    8.884277] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    8.890197] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    8.901611] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    8.908416] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    8.918090] remoteproc remoteproc3: powering up 41000000.dsp
    [    8.923767] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    8.933441] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    8.938873] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    8.940673] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    8.957916] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    8.966400] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    8.992156] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    8.998107] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    9.063293] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    9.069610] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    9.085205] scsi host0: ahci-dwc
    [    9.093109] DSS: OMAP DSS rev 6.1
    [    9.097747] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 161
    [    9.111267] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [    9.130798] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [    9.165100] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    9.171264] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    9.172576] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    9.184967] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.200714] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [    9.204162] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    9.208068] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    9.217803] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    9.228302] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.231628] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    9.234497] vpe 489d0000.vpe: Device registered as /dev/video0
    [    9.242126] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    9.254119] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [    9.257873] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    9.272369] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    9.282745] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    9.290985] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    9.335754] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    9.359252] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    9.380737] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [    9.433380] dmm 4e000000.dmm: workaround for errata i878 in use
    [    9.437957] ata1: SATA link down (SStatus 0 SControl 300)
    [    9.453369] dmm 4e000000.dmm: initialized all PAT entries
    [    9.474029] vip 48990000.vip: VPDMA firmware loaded
    [    9.494049] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [    9.500213] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [    9.576263] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [    9.600830] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [    9.729797] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [    9.779693] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [    9.836151] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [    9.957885] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [    9.976043] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.119628] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.145324] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.266845] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   10.285736] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.360809] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.442382] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.557098] EDID block 0 is all zeroes
    [   10.562011] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562011] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562042] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562042] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562042] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562042] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562042] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.562072] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.586914] [drm] Enabling DMM ywrap scrolling
    [   10.629058] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.644195] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   10.644195] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.644226] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   10.644226] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   10.766113] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   10.766113] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.793457] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.793457] **** vip: create_stream: V4L2_MBUS_BT656 ****
    [   10.807220] remoteproc remoteproc4: 4b234000.pru is available
    [   10.820068] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   10.820098] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   10.822509] remoteproc remoteproc5: 4b238000.pru is available
    [   10.823730] remoteproc remoteproc6: 4b2b4000.pru is available
    [   10.832763] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   10.832855] xhci-hcd xhci-hcd.6.auto: irq 186, io mem 0x48890000
    [   10.833038] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   10.833038] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   10.833068] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   10.836578] hub 1-0:1.0: USB hub found
    [   10.836639] hub 1-0:1.0: 1 port detected
    [   10.837341] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   10.837768] remoteproc remoteproc7: 4b2b8000.pru is available
    [   10.846252] hub 2-0:1.0: USB hub found
    [   10.846313] hub 2-0:1.0: 1 port detected
    [   10.851928] Console: switching to colour frame buffer device 128x37
    [   11.207427] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   11.264678] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   11.304016] ------------[ cut here ]------------
    [   11.309143] WARNING: CPU: 0 PID: 154 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   11.323059] Hot plug detection already enabled
    [   11.327575] Modules linked in: pru_rproc icss_iep dwc3 irq_pruss_intc rpmsg_ctrl rpmsg_char snd_soc_davinci_mcasp snd_soc_tlv320aic3x_i2c ti_vip ti_vpe snd_soc_ti_udma snd_soc_tlv320aic3x snd_soc_simple_card ti_sc snd_soc_ti_edma snd_soc_simple_card_utils omapdrm(+) snd_soc_ti_sdma ti_csc v4l2_mem2mem ti_vpdma snd_soc_core videobuf2_dma_contig cec videobuf2_memops videobuf2_v4l2 snd_pcm_dmaengine omap_aes_driver ac97_bus videobuf2_common pruss ov5640 snd_pcm omap_wdt libaes ahci_dwc omap_hwspinlock snd_timer v4l2_fwnode dwc3_omap snd v4l2_async omap_des rtc_omap videodev omap_crypto soundcore libdes extcon_palmas pwm_tiehrpwm omap_sham crypto_engine omap_remoteproc virtio_rpmsg_bus rpmsg_ns rpmsg_core display_connector ti_tpd12s015
    [   11.393005] CPU: 0 PID: 154 Comm: systemd-udevd Not tainted 6.1.119-00010-gd9f3c4d3b93d-dirty #46
    [   11.401916] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   11.408020]  unwind_backtrace from show_stack+0x10/0x14
    [   11.413299]  show_stack from dump_stack_lvl+0x40/0x4c
    [   11.418365]  dump_stack_lvl from __warn+0x7c/0x158
    [   11.423187]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   11.428375]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   11.434661]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   11.441528]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   11.447570]  platform_probe from really_probe+0xc8/0x2ec
    [   11.452911]  really_probe from __driver_probe_device+0x88/0x1a0
    [   11.458862]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   11.465423]  driver_probe_device from __driver_attach+0x90/0x174
    [   11.471466]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   11.477172]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   11.482940]  bus_add_driver from driver_register+0x88/0x11c
    [   11.488555]  driver_register from __platform_register_drivers+0x38/0x88
    [   11.495208]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   11.502655]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   11.509124]  do_one_initcall from do_init_module+0x44/0x1d4
    [   11.514709]  do_init_module from sys_finit_module+0xc0/0x110
    [   11.520416]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   11.526275] Exception stack(0xf2051fa8 to 0xf2051ff0)
    [   11.531372] 1fa0:                   00000000 00000000 0000000f b6cda8a0 00000000 00020000
    [   11.539581] 1fc0: 00000000 00000000 00000000 0000017b 00000000 0009b628 00000007 00000000
    [   11.547790] 1fe0: becc1710 becc1700 b6cd5d4f b6c0b052
    [   11.552886] ---[ end trace 0000000000000000 ]---
    [   11.559814] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   11.633789] hub 1-1:1.0: USB hub found
    [   11.638916] hub 1-1:1.0: 4 ports detected
    [   11.734374] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   11.793884] hub 2-1:1.0: USB hub found
    [   11.798645] hub 2-1:1.0: 4 ports detected
    [   11.891418] usbcore: registered new device driver onboard-usb-hub
    [   12.178100] hub 1-1:1.0: USB hub found
    [   12.183105] hub 1-1:1.0: 4 ports detected
    [   12.338226] hub 1-1:1.0: USB hub found
    [   12.342224] hub 1-1:1.0: 4 ports detected
    [   12.434539] hub 2-1:1.0: USB hub found
    [   12.438415] hub 2-1:1.0: 4 ports detected
    [   12.482208] hub 2-1:1.0: USB hub found
    [   12.486083] hub 2-1:1.0: 4 ports detected
    [   12.744018] usb 1-1.3: new full-speed USB device number 3 using xhci-hcd
    [   13.550201] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   14.405334] Bluetooth: Core ver 2.22
    [   14.421966] NET: Registered PF_BLUETOOTH protocol family
    [   14.440582] Bluetooth: HCI device and connection manager initialized
    [   14.465148] Bluetooth: HCI socket layer initialized
    [   14.470916] Bluetooth: L2CAP socket layer initialized
    [   14.484161] Bluetooth: SCO socket layer initialized
    [   14.636810] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   14.855346] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   14.866668] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   14.990081] Initializing XFRM netlink socket
    [   15.045623] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.102264] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   15.171569] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.214202] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   21.842773] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   21.874145] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   21.903991] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   21.933990] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   22.089538] EDID block 0 is all zeroes

    Also I am using the following entries in DTS:-

    enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;

    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;

    For 6.03 SDK see the ouput of the command below:-

    root@am57xx-evm:~# cat /sys/kernel/debug/gpio
    gpiochip0: GPIOs 0-31, parent: platform/4ae10000.gpio, gpio-0-31:
    gpio-14 ( |HOOK_INT ) in lo IRQ
    
    gpiochip1: GPIOs 32-63, parent: platform/48055000.gpio, gpio-32-63:
    gpio-38 ( |KEYL_INT ) in hi IRQ
    
    gpiochip2: GPIOs 64-95, parent: platform/48057000.gpio, gpio-64-95:
    gpio-65 ( |sysfs ) out hi
    
    gpiochip3: GPIOs 96-127, parent: platform/48059000.gpio, gpio-96-127:
    gpio-97 ( |sysfs ) out lo
    gpio-105 ( |sysfs ) in lo
    gpio-117 ( |vbus ) in lo IRQ
    
    gpiochip4: GPIOs 128-159, parent: platform/4805b000.gpio, gpio-128-159:
    gpio-129 ( |HEADSET_INT ) in lo IRQ
    gpio-140 ( |enable ) out hi
    gpio-145 ( |powerdown ) out lo
    gpio-146 ( |enable ) out hi
    
    gpiochip5: GPIOs 160-191, parent: platform/4805d000.gpio, gpio-160-191:
    gpio-187 ( |cd ) in lo IRQ
    
    gpiochip6: GPIOs 192-223, parent: platform/48051000.gpio, gpio-192-223:
    gpio-203 ( |vtt_fixed ) out hi
    gpio-206 ( |attr ) out hi
    
    gpiochip7: GPIOs 224-255, parent: platform/48053000.gpio, gpio-224-255:
    
    gpiochip8: GPIOs 504-511, parent: platform/48070000.i2c:tps659038@58:tps659038_gpio, 48070000.i2c:tps659038@58:tps659038_gpio, can sleep:
    gpio-506 ( |gpio_fan ) out lo
    root@am57xx-evm:~#

    For 9.03 SDK the ouput is as below:-

    root@am57xx-evm:~# cat /sys/kernel/debug/gpio
    gpiochip0: GPIOs 0-31, parent: platform/4ae10000.gpio, gpio-0-31:
    gpio-14 ( |HOOK_INT ) in hi IRQ
    
    gpiochip1: GPIOs 32-63, parent: platform/48051000.gpio, gpio-32-63:
    gpio-42 ( |encoder ) out hi
    gpio-43 ( |fixedregulator-vtt ) out hi
    gpio-44 ( |encoder ) in hi IRQ
    
    gpiochip2: GPIOs 64-95, parent: platform/48053000.gpio, gpio-64-95:
    
    gpiochip3: GPIOs 96-127, parent: platform/48055000.gpio, gpio-96-127:
    gpio-102 ( |KEYL_INT ) in hi IRQ ACTIVE LOW
    gpio-104 ( |51000000.pcie ) out lo ACTIVE LOW
    gpio-126 ( |encoder ) out hi
    
    gpiochip4: GPIOs 128-159, parent: platform/48057000.gpio, gpio-128-159:
    
    gpiochip5: GPIOs 160-191, parent: platform/48059000.gpio, gpio-160-191:
    gpio-181 ( |vbus ) in lo IRQ
    
    gpiochip6: GPIOs 192-223, parent: platform/4805b000.gpio, gpio-192-223:
    gpio-193 ( |HEADSET_INT ) in lo IRQ
    gpio-204 ( |enable ) out hi
    gpio-209 ( |powerdown ) out lo
    gpio-210 ( |enable ) out hi
    
    gpiochip7: GPIOs 224-255, parent: platform/4805d000.gpio, gpio-224-255:
    gpio-251 ( |cd ) in lo IRQ ACTIVE LOW
    
    gpiochip8: GPIOs 504-511, parent: platform/48070000.i2c:tps659038@58:tps659038_gpio, 48070000.i2c:tps659038@58:tps659038_gpio, can sleep:

    Clearly the gpio5_17(powerdown-gpios) and gpio_18(enable-gpios)

    (gpio-145 ( |powerdown ) out lo
    gpio-146 ( |enable ) out hi)


    are correctly working in 6.03 SDK but not in 9.03 SDK which might also be the reason for camera driver not being able to work as expected

    Now isn't it related to some pinmuxing issue or any other issue that I might be missing?

    Please help resolve!
    Thanks!

  • Hi Vishal,

    Yes, you should set the pinmuxing for the GPIOS.

    The following should be correct macros for gpio5_17 and gpio5_18:

    DRA7XX_CORE_IOPAD(0x1644, PIN_OUTPUT | MUX_MODE14)
    DRA7XX_CORE_IOPAD(0x1648, PIN_OUTPUT | MUX_MODE14)
    

    You will likely also have to add the pinctrl-0 and pinctrl-names properties to the nodes.

    Best,
    Jared

  • Jared,

    The following should be correct macros for gpio5_17 and gpio5_18:

    Where exactly do i need to put these changes ? Do I do it in arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi ?

    You will likely also have to add the pinctrl-0 and pinctrl-names properties to the nodes.

    Again, are these to be done in DTS? What exactly is the entry to be done ? 

    I am really not sure as to what the entries are supposed to be along with their location. 

    This is currently my arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi 

    /*
     * MMC IOdelay values for TI's DRA74x, DRA75x and AM572x SoCs.
     *
     * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License as
     * published by the Free Software Foundation version 2.
     *
     * This program is distributed "as is" WITHOUT ANY WARRANTY of any
     * kind, whether express or implied; without even the implied warranty
     * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     */
    
    /*
     * Rules for modifying this file:
     * a) Update of this file should typically correspond to a datamanual revision.
     *    Datamanual revision that was used should be updated in comment below.
     *    If there is no update to datamanual, do not update the values. If you
     *    need to use values different from that recommended by the datamanual
     *    for your design, then you should consider adding values to the device-
     *    -tree file for your board directly.
     * b) We keep the mode names as close to the datamanual as possible. So
     *    if the manual calls a mode, DDR50, or DDR or DDR 1.8v or DDR 3.3v,
     *    we follow that in code too.
     * c) If the values change between multiple revisions of silicon, we add
     *    a revision tag to both the new and old entry. Use 'rev11' for PG 1.1,
     *    'rev20' for PG 2.0 and so on.
     * d) The node name and node label should be the exact same string. This is
     *    to curb naming creativity and achieve consistency.
     *
     * Datamanual Revisions:
     *
     * AM572x Silicon Revision 2.0: SPRS953F, Revised May 2019
     * AM572x Silicon Revision 1.1: SPRS915R, Revised November 2016
     *
     */
    
    &dra7_pmx_core {
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
                DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
    			DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
    			DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
    			DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
    			DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
    			DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    			DRA7XX_CORE_IOPAD(0x376c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_sdcd.mmc1_sdcd */
    		>;
    	};
    
    	mmc1_pins_sdr12: mmc1_pins_sdr12 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
                DRA7XX_CORE_IOPAD(0x376c, PIN_INPUT_PULLUP | MUX_MODE0) 	/* mmc1_sdcd.mmc1_sdcd */
    		>;
    	};
    
    	mmc1_pins_hs: mmc1_pins_hs {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_sdr25: mmc1_pins_sdr25 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    >;
    	};
    
    	mmc1_pins_sdr50: mmc1_pins_sdr50 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE10 | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_ddr50: mmc1_pins_ddr50 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc1_pins_sdr104: mmc1_pins_sdr104 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_clk.mmc1_clk */
                DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_cmd.mmc1_cmd */
                DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat0.mmc1_dat0 */
                DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat1.mmc1_dat1 */
                DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat2.mmc1_dat2 */
                DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0) 	/* mmc1_dat3.mmc1_dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_3_3v_rev11: mmc2_pins_ddr_3_3v_rev11 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v_rev11: mmc2_pins_ddr_1_8v_rev11 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_rev20: mmc2_pins_ddr_rev20 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs200: mmc2_pins_hs200 {
    		pinctrl-single,pins = <
    			DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a23.mmc2_clk */
                DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_cs1.mmc2_cmd */
                DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a24.mmc2_dat0 */
                DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a25.mmc2_dat1 */
                DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a26.mmc2_dat2 */
                DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a27.mmc2_dat3 */
                DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a19.mmc2_dat4 */
                DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a20.mmc2_dat5 */
                DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a21.mmc2_dat6 */
                DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE1) 	/* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc3_pins_default: mmc3_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_hs: mmc3_pins_hs {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr12: mmc3_pins_sdr12 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr25: mmc3_pins_sdr25 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
        	mmc3_pins_sdr50: mmc3_pins_sdr50 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x377c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_clk.mmc3_clk */
        			DRA7XX_CORE_IOPAD(0x3780, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_cmd.mmc3_cmd */
        			DRA7XX_CORE_IOPAD(0x3784, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat0.mmc3_dat0 */
        			DRA7XX_CORE_IOPAD(0x3788, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat1.mmc3_dat1 */
        			DRA7XX_CORE_IOPAD(0x378c, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat2.mmc3_dat2 */
        			DRA7XX_CORE_IOPAD(0x3790, (PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE0)) /* mmc3_dat3.mmc3_dat3 */
        		>;
        	};
    
    	mmc4_pins_default: mmc4_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_hs: mmc4_pins_hs {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_sdr12: mmc4_pins_sdr12 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
        mmc4_pins_sdr25: mmc4_pins_sdr25 {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37e8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_ctsn.mmc4_clk */
        			DRA7XX_CORE_IOPAD(0x37ec, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart1_rtsn.mmc4_cmd */
        			DRA7XX_CORE_IOPAD(0x37f0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd.mmc4_dat0 */
        			DRA7XX_CORE_IOPAD(0x37f4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd.mmc4_dat1 */
        			DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_ctsn.mmc4_dat2 */
        			DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rtsn.mmc4_dat3 */
        		>;
        	};
    
    
    
        spi1_pins_default: spi1_pins_default {
        		pinctrl-single,pins = <
        			DRA7XX_CORE_IOPAD(0x37a4, PIN_INPUT | MUX_MODE0) /* A25 spi1_sclk.spi1_sclk */
        			DRA7XX_CORE_IOPAD(0x37ac, PIN_OUTPUT | MUX_MODE0) /* B25 spi1_d0.spi1_d0 */
        			DRA7XX_CORE_IOPAD(0x37a8, PIN_INPUT | MUX_MODE0) /*  F16 spi1_d1.spi1_d1 */
        			DRA7XX_CORE_IOPAD(0x37b0, PIN_OUTPUT | MUX_MODE0) /* A24 spi1_cs0.spi1_cs0 */
        		>;
        	};
    
    };
    
    &dra7_iodelay_core {
    
    	/* Corresponds to MMC1_DDR_MANUAL1 in datamanual */
    	mmc1_iodelay_ddr_rev11_conf: mmc1_iodelay_ddr_rev11_conf {
    		pinctrl-pin-array = <
    			0x618 A_DELAY_PS(572) G_DELAY_PS(540)	/* CFG_MMC1_CLK_IN */
    			0x620 A_DELAY_PS(1525) G_DELAY_PS(0)	/* CFG_MMC1_CLK_OUT */
    			0x624 A_DELAY_PS(0) G_DELAY_PS(600)	/* CFG_MMC1_CMD_IN */
    			0x628 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OEN */
    			0x62c A_DELAY_PS(55) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OUT */
    			0x630 A_DELAY_PS(403) G_DELAY_PS(120)	/* CFG_MMC1_DAT0_IN */
    			0x634 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OEN */
    			0x638 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OUT */
    			0x63c A_DELAY_PS(23) G_DELAY_PS(60)	/* CFG_MMC1_DAT1_IN */
    			0x640 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OEN */
    			0x644 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OUT */
    			0x648 A_DELAY_PS(25) G_DELAY_PS(60)	/* CFG_MMC1_DAT2_IN */
    			0x64c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OEN */
    			0x650 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OUT */
    			0x654 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_IN */
    			0x658 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OEN */
    			0x65c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_DDR_MANUAL1 in datamanual */
    	mmc1_iodelay_ddr_rev20_conf: mmc1_iodelay_ddr50_rev20_conf {
    		pinctrl-pin-array = <
                0x618 A_DELAY_PS(1076) G_DELAY_PS(330) 	/* CFG_MMC1_CLK_IN */
                0x620 A_DELAY_PS(1271) G_DELAY_PS(0) 	/* CFG_MMC1_CLK_OUT */
                0x624 A_DELAY_PS(722) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_IN */
                0x628 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OEN */
                0x62C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OUT */
                0x630 A_DELAY_PS(751) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_IN */
                0x634 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OEN */
                0x638 A_DELAY_PS(20) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OUT */
                0x63C A_DELAY_PS(256) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_IN */
                0x640 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OEN */
                0x644 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OUT */
                0x648 A_DELAY_PS(263) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_IN */
                0x64C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OEN */
                0x650 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OUT */
                0x654 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_IN */
                0x658 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OEN */
                0x65C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_SDR104_MANUAL1 in datamanual */
    	mmc1_iodelay_sdr104_rev11_conf: mmc1_iodelay_sdr104_rev11_conf {
    		pinctrl-pin-array = <
    			0x620 A_DELAY_PS(1063) G_DELAY_PS(17)	/* CFG_MMC1_CLK_OUT */
    			0x628 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OEN */
    			0x62c A_DELAY_PS(23) G_DELAY_PS(0)	/* CFG_MMC1_CMD_OUT */
    			0x634 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OEN */
    			0x638 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT0_OUT */
    			0x640 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OEN */
    			0x644 A_DELAY_PS(2) G_DELAY_PS(0)	/* CFG_MMC1_DAT1_OUT */
    			0x64c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OEN */
    			0x650 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT2_OUT */
    			0x658 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OEN */
    			0x65c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC1_SDR104_MANUAL1 in datamanual */
    	mmc1_iodelay_sdr104_rev20_conf: mmc1_iodelay_sdr104_rev20_conf {
    		pinctrl-pin-array = <
    			0x620 A_DELAY_PS(600) G_DELAY_PS(400) 	/* CFG_MMC1_CLK_OUT */
                0x628 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OEN */
                0x62C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_CMD_OUT */
                0x634 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OEN */
                0x638 A_DELAY_PS(30) G_DELAY_PS(0) 	/* CFG_MMC1_DAT0_OUT */
                0x640 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OEN */
                0x644 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT1_OUT */
                0x64C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OEN */
                0x650 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT2_OUT */
                0x658 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OEN */
                0x65C A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_MMC1_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC2_HS200_MANUAL1 in datamanual */
    	mmc2_iodelay_hs200_rev11_conf: mmc2_iodelay_hs200_rev11_conf {
    		pinctrl-pin-array = <
    			0x190 A_DELAY_PS(621) G_DELAY_PS(600)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(300) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a8 A_DELAY_PS(739) G_DELAY_PS(600)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(240) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b4 A_DELAY_PS(812) G_DELAY_PS(600)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(240) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1c0 A_DELAY_PS(954) G_DELAY_PS(600)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(60)  G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1d0 A_DELAY_PS(1340) G_DELAY_PS(420)	/* CFG_GPMC_A23_OUT */
    			0x1d8 A_DELAY_PS(935) G_DELAY_PS(600)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e4 A_DELAY_PS(525) G_DELAY_PS(600)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1f0 A_DELAY_PS(767) G_DELAY_PS(600)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(225) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1fc A_DELAY_PS(565) G_DELAY_PS(600)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(60) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x364 A_DELAY_PS(969) G_DELAY_PS(600)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(180) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    	      >;
    	};
    
    	/* Corresponds to MMC2_HS200_MANUAL1 in datamanual */
    	mmc2_iodelay_hs200_rev20_conf: mmc2_iodelay_hs200_rev20_conf {
    		pinctrl-pin-array = <
    			0x1D0 A_DELAY_PS(935) G_DELAY_PS(280) 	/* CFG_GPMC_A23_OUT */
                0x364 A_DELAY_PS(684) G_DELAY_PS(0) 	/* CFG_GPMC_CS1_OEN */
                0x368 A_DELAY_PS(76) G_DELAY_PS(0) 	/* CFG_GPMC_CS1_OUT */
                0x1D8 A_DELAY_PS(621) G_DELAY_PS(0) 	/* CFG_GPMC_A24_OEN */
                0x1DC A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A24_OUT */
                0x1E4 A_DELAY_PS(183) G_DELAY_PS(0) 	/* CFG_GPMC_A25_OEN */
                0x1E8 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A25_OUT */
                0x1F0 A_DELAY_PS(467) G_DELAY_PS(0) 	/* CFG_GPMC_A26_OEN */
                0x1F4 A_DELAY_PS(0) G_DELAY_PS(0) 	/* CFG_GPMC_A26_OUT */
                0x1FC A_DELAY_PS(262) G_DELAY_PS(0) 	/* CFG_GPMC_A27_OEN */
                0x200 A_DELAY_PS(46) G_DELAY_PS(0) 	/* CFG_GPMC_A27_OUT */
                0x190 A_DELAY_PS(274) G_DELAY_PS(0) 	/* CFG_GPMC_A19_OEN */
                0x194 A_DELAY_PS(162) G_DELAY_PS(0) 	/* CFG_GPMC_A19_OUT */
                0x1A8 A_DELAY_PS(401) G_DELAY_PS(0) 	/* CFG_GPMC_A20_OEN */
                0x1AC A_DELAY_PS(73) G_DELAY_PS(0) 	/* CFG_GPMC_A20_OUT */
                0x1B4 A_DELAY_PS(465) G_DELAY_PS(0) 	/* CFG_GPMC_A21_OEN */
                0x1B8 A_DELAY_PS(115) G_DELAY_PS(0) 	/* CFG_GPMC_A21_OUT */
                0x1C0 A_DELAY_PS(633) G_DELAY_PS(0) 	/* CFG_GPMC_A22_OEN */
                0x1C4 A_DELAY_PS(47) G_DELAY_PS(0) 	/* CFG_GPMC_A22_OUT */
    	      >;
    	};
    
    	/* Correspnds to MMC2_DDR_3V3_MANUAL1 in datamanual */
    	mmc2_iodelay_ddr_3_3v_rev11_conf: mmc2_iodelay_ddr_3_3v_rev11_conf {
    		pinctrl-pin-array = <
    			0x18c A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A19_IN */
    			0x190 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(174) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a4 A_DELAY_PS(265) G_DELAY_PS(360)	/* CFG_GPMC_A20_IN */
    			0x1a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(168) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b0 A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A21_IN */
    			0x1b4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(136) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1bc A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A22_IN */
    			0x1c0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1c8 A_DELAY_PS(287) G_DELAY_PS(420)	/* CFG_GPMC_A23_IN */
    			0x1d0 A_DELAY_PS(879) G_DELAY_PS(0)	/* CFG_GPMC_A23_OUT */
    			0x1d4 A_DELAY_PS(144) G_DELAY_PS(240)	/* CFG_GPMC_A24_IN */
    			0x1d8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_IN */
    			0x1e4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(34) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1ec A_DELAY_PS(0) G_DELAY_PS(120)	/* CFG_GPMC_A26_IN */
    			0x1f0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1f8 A_DELAY_PS(120) G_DELAY_PS(180)	/* CFG_GPMC_A27_IN */
    			0x1fc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x360 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_IN */
    			0x364 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(11) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC2_DDR_1V8_MANUAL1 in datamanual */
    	mmc2_iodelay_ddr_1_8v_rev11_conf: mmc2_iodelay_ddr_1_8v_rev11_conf {
    		pinctrl-pin-array = <
    			0x18c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_IN */
    			0x190 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A19_OEN */
    			0x194 A_DELAY_PS(174) G_DELAY_PS(0)	/* CFG_GPMC_A19_OUT */
    			0x1a4 A_DELAY_PS(274) G_DELAY_PS(240)	/* CFG_GPMC_A20_IN */
    			0x1a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A20_OEN */
    			0x1ac A_DELAY_PS(168) G_DELAY_PS(0)	/* CFG_GPMC_A20_OUT */
    			0x1b0 A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A21_IN */
    			0x1b4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A21_OEN */
    			0x1b8 A_DELAY_PS(136) G_DELAY_PS(0)	/* CFG_GPMC_A21_OUT */
    			0x1bc A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A22_IN */
    			0x1c0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OEN */
    			0x1c4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A22_OUT */
    			0x1c8 A_DELAY_PS(514) G_DELAY_PS(360)	/* CFG_GPMC_A23_IN */
    			0x1d0 A_DELAY_PS(879) G_DELAY_PS(0)	/* CFG_GPMC_A23_OUT */
    			0x1d4 A_DELAY_PS(187) G_DELAY_PS(120)	/* CFG_GPMC_A24_IN */
    			0x1d8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OEN */
    			0x1dc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A24_OUT */
    			0x1e0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_IN */
    			0x1e4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A25_OEN */
    			0x1e8 A_DELAY_PS(34) G_DELAY_PS(0)	/* CFG_GPMC_A25_OUT */
    			0x1ec A_DELAY_PS(0) G_DELAY_PS(60)	/* CFG_GPMC_A26_IN */
    			0x1f0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A26_OEN */
    			0x1f4 A_DELAY_PS(120) G_DELAY_PS(0)	/* CFG_GPMC_A26_OUT */
    			0x1f8 A_DELAY_PS(121) G_DELAY_PS(60)	/* CFG_GPMC_A27_IN */
    			0x1fc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OEN */
    			0x200 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_A27_OUT */
    			0x360 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_IN */
    			0x364 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OEN */
    			0x368 A_DELAY_PS(11) G_DELAY_PS(0)	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC3_MANUAL1 in datamanual */
    	mmc3_iodelay_manual1_rev20_conf: mmc3_iodelay_manual1_conf {
    		pinctrl-pin-array = <
    			0x678 A_DELAY_PS(0) G_DELAY_PS(386)	/* CFG_MMC3_CLK_IN */
    			0x680 A_DELAY_PS(605) G_DELAY_PS(0)	/* CFG_MMC3_CLK_OUT */
    			0x684 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_IN */
    			0x688 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OEN */
    			0x68c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OUT */
    			0x690 A_DELAY_PS(171) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_IN */
    			0x694 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OEN */
    			0x698 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OUT */
    			0x69c A_DELAY_PS(221) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_IN */
    			0x6a0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OEN */
    			0x6a4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OUT */
    			0x6a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_IN */
    			0x6ac A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OEN */
    			0x6b0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OUT */
    			0x6b4 A_DELAY_PS(474) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_IN */
    			0x6b8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OEN */
    			0x6bc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC3_MANUAL1 in datamanual */
    	mmc3_iodelay_manual1_rev11_conf: mmc3_iodelay_manual1_conf {
    		pinctrl-pin-array = <
    			0x678 A_DELAY_PS(406) G_DELAY_PS(0)	/* CFG_MMC3_CLK_IN */
    			0x680 A_DELAY_PS(659) G_DELAY_PS(0)	/* CFG_MMC3_CLK_OUT */
    			0x684 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_IN */
    			0x688 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OEN */
    			0x68c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_CMD_OUT */
    			0x690 A_DELAY_PS(130) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_IN */
    			0x694 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OEN */
    			0x698 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT0_OUT */
    			0x69c A_DELAY_PS(169) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_IN */
    			0x6a0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OEN */
    			0x6a4 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT1_OUT */
    			0x6a8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_IN */
    			0x6ac A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OEN */
    			0x6b0 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT2_OUT */
    			0x6b4 A_DELAY_PS(457) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_IN */
    			0x6b8 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OEN */
    			0x6bc A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_MMC3_DAT3_OUT */
    		>;
    	};
    
    	/* Corresponds to MMC4_DS_MANUAL1 in datamanual */
        mmc4_iodelay_ds_rev11_conf: mmc4_iodelay_ds_rev11_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(96) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(582) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(391) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(561) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(588) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_DS_MANUAL1 in datamanual */
        mmc4_iodelay_ds_rev20_conf: mmc4_iodelay_ds_rev20_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(307) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(785) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(613) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(683) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(835) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_MANUAL1 in datamanual */
        mmc4_iodelay_sdr12_hs_sdr25_rev11_conf: mmc4_iodelay_sdr12_hs_sdr25_rev11_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(2651) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(1572) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(1913) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(1721) G_DELAY_PS(0)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(1891) G_DELAY_PS(0)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(1919) G_DELAY_PS(0)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    
        	/* Corresponds to MMC4_MANUAL1 in datamanual */
        mmc4_iodelay_sdr12_hs_sdr25_rev20_conf: mmc4_iodelay_sdr12_hs_sdr25_rev20_conf {
        	pinctrl-pin-array = <
        			0x840 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_CTSN_IN */
        			0x848 A_DELAY_PS(1147) G_DELAY_PS(0)	/* CFG_UART1_CTSN_OUT */
        			0x84c A_DELAY_PS(1834) G_DELAY_PS(0)	/* CFG_UART1_RTSN_IN */
        			0x850 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OEN */
        			0x854 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART1_RTSN_OUT */
        			0x870 A_DELAY_PS(2165) G_DELAY_PS(0)	/* CFG_UART2_CTSN_IN */
        			0x874 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OEN */
        			0x878 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_CTSN_OUT */
        			0x87c A_DELAY_PS(1929) G_DELAY_PS(64)	/* CFG_UART2_RTSN_IN */
        			0x880 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OEN */
        			0x884 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RTSN_OUT */
        			0x888 A_DELAY_PS(1935) G_DELAY_PS(128)	/* CFG_UART2_RXD_IN */
        			0x88c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OEN */
        			0x890 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_RXD_OUT */
        			0x894 A_DELAY_PS(2172) G_DELAY_PS(44)	/* CFG_UART2_TXD_IN */
        			0x898 A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OEN */
        			0x89c A_DELAY_PS(0) G_DELAY_PS(0)	/* CFG_UART2_TXD_OUT */
        		>;
        	};
    };

    and this is my arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi

    // SPDX-License-Identifier: GPL-2.0-only
    /*
     * Copyright (C) 2014-2016 Texas Instruments Incorporated - https://www.ti.com/
     */
    /dts-v1/;
    
    #include "am5728.dtsi"
    #include "am57xx-commercial-grade.dtsi"
    #include "dra74x-mmc-iodelay.dtsi"
    #include "dra74-ipu-dsp-common.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc1 = &tps659038_rtc;
    		rtc2 = &rtc;
    		//display0 = &hdmi0;
    		display0 = "/display";
    	};
    
    	gpio-keys {
                    compatible = "gpio-keys";
    
                    button-user1 {
                            gpios = <&gpio1 14 0>;
                            label = "HOOK_INT";
    			linux,code = <103>;
                    };
    
                    button-user2 {
    			gpios = <&gpio2 6 1>;
                            label = "KEYL_INT";
    			linux,code = <102>;
                    };
    
                    button-user3 {
    			gpios = <&gpio5 1 0>;
                            label = "HEADSET_INT";
    			linux,code = <108>;
                    };
    
            };
    		
    	keypad: keypad@4ae1c000 {
                            compatible = "ti,omap4-keypad";
    			reg = <0x4ae1c000 0x100>;
                            //reg = <0x4ae1c000 0x80>;
                            interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
                            keypad,num-rows = <4>;
                            keypad,num-columns = <4>;
                            linux,input-no-autorepeat;
                            linux,keymap = <
                                    0x00000041 0x00010042 0x00020043 0x00030044
                                    0x01000045 0x01010046 0x01020047 0x01030048
                                    0x02000049 0x0201004a 0x0202004b 0x0203004c
                                    0x0300004d 0x0301004e 0x0302004f 0x03030050
                                    >;
    			status = "okay";
                    };
    
    
    	chosen {
    		stdout-path = &uart3;
    	};
    
    	memory@0 {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    
    	main_12v0: fixedregulator-main_12v0 {
    		/* main supply */
    		compatible = "regulator-fixed";
    		regulator-name = "main_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	evm_5v0: fixedregulator-evm_5v0 {
    		/* Output of TPS54531D */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&main_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		ipu2_memory_region: ipu2-memory@95800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x95800000 0x0 0x3800000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp1_memory_region: dsp1-memory@99000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x99000000 0x0 0x4000000>;
    			reusable;
    			status = "okay";
    		};
    
    		ipu1_memory_region: ipu1-memory@9d000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9d000000 0x0 0x2000000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp2_memory_region: dsp2-memory@9f000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9f000000 0x0 0x800000>;
    			reusable;
    			status = "okay";
    		};
    	};
    
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	/*leds {
    		compatible = "gpio-leds";
    
    		led0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio7 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio7 15 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "disk-activity";
    			default-state = "off";
    		};
    	};*/
    
    	gpio_fan: gpio_fan {
    		/* Based on 5v 500mA AFB02505HHB */
    		compatible = "gpio-fan";
    		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
    		gpio-fan,speed-map = <0     0>,
    				     <13000 1>;
    		#cooling-cells = <2>;
    	};
    
    	hdmi0: connector {
    		compatible = "hdmi-connector";
    		label = "hdmi";
    
    		type = "a";
    
    		port {
    			hdmi_connector_in: endpoint {
    				remote-endpoint = <&tpd12s015_out>;
    			};
    		};
    	};
    	
    	
    	
    	clk_ov5640_fixed: clk_ov5640_fixed {
                            compatible = "fixed-clock";
                            #clock-cells = <0>;
                            clock-frequency = <24000000>;
                    };
    	clk_ov5640: clk_ov5640 {
                            compatible = "gpio-gate-clock";
                            #clock-cells = <0>;
                            clocks = <&clk_ov5640_fixed>;
                            enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
                    };
    
    	
    	tpd12s015: encoder {
    		compatible = "ti,tpd12s015";
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				tpd12s015_in: endpoint {
    					remote-endpoint = <&hdmi_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    
    				tpd12s015_out: endpoint {
    					remote-endpoint = <&hdmi_connector_in>;
    				};
    			};
    		};
    	};
    
    	lcd0: display {
                  compatible = "bolymin,btz070f-chc" ,"panel-dpi";
                  //compatible = "osddisplays,osd070t1718-19ts" ,"panel-dpi";
                  backlight = <&lcd_bl>;
                  enable-gpios = <&gpio5 12 GPIO_ACTIVE_HIGH>;
                  attr-gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>; //LCD GPIO [AKSHI] changed in VIC2
                  label = "lcd";
    
    
                  port {
                       lcd_in: endpoint {
                               remote-endpoint = <&dpi_out>;
                               };
                  };
             };
    
             lcd_bl: backlight {
                     compatible = "pwm-backlight";
                     brightness-levels = <0 32 64 96 128 160 192 255>;
                     default-brightness-level = <8>;
                     pwms = <&ehrpwm0 0 50000 0>;
             };
    
    	sound0: sound0 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "BeagleBoard-X15";
    		simple-audio-card,widgets =
    			"Line", "Line Out",
    			"Line", "Line In";
    		simple-audio-card,routing =
    			"Line Out",	"LLOUT",
    			"Line Out",	"RLOUT",
    			"MIC2L",	"Line In",
    			"MIC2R",	"Line In";
    		simple-audio-card,format = "dsp_b";
    		simple-audio-card,bitclock-master = <&sound0_master>;
    		simple-audio-card,frame-master = <&sound0_master>;
    		simple-audio-card,bitclock-inversion;
    
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp3>;
    		};
    
    		sound0_master: simple-audio-card,codec {
    			sound-dai = <&tlv320aic3104>;
    			clocks = <&clkout2_clk>;
    		};
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,palmas-override-powerhold;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			vbus-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
    		};
    
    	};
    
    	tmp102: tmp102@48 {
    		compatible = "ti,tmp102";
    		reg = <0x48>;
    		interrupt-parent = <&gpio7>;
    		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
    		#thermal-sensor-cells = <1>;
    	};
    
    	tlv320aic3104: tlv320aic3104@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3104";
    		reg = <0x18>;
    		assigned-clocks = <&clkoutmux2_clk_mux>;
    		assigned-clock-parents = <&sys_clk2_dclk_div>;
    
    		status = "okay";
    		adc-settle-ms = <40>;
    
    		AVDD-supply = <&vdd_3v3>;
    		IOVDD-supply = <&vdd_3v3>;
    		DRVDD-supply = <&vdd_3v3>;
    		DVDD-supply = <&aic_dvdd>;
    	};
    
    	eeprom: eeprom@50 {
    		compatible = "atmel,24c32";
    		reg = <0x50>;
    	};
    };
    
    &vin3a {
    	
    	ti,vip-instance = <1>;       // VIP2 = instance 1
    	ti,vip-port = <0>;           // Port A
    	ti,vip-channels = <0>;       // Channel 0
    	status = "okay";
            vin3a_ep: endpoint {
                    remote-endpoint = <&cam>;
                    slave-mode;
            };
    };
    
    &vip2 {
            status = "okay";
    };
    
    &i2c3 {
            status = "okay";
            clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    		interrupt-names = "irq", "wakeup";
    	};
    
            ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clock-names = "xclk";
                    clocks = <&clk_ov5640>;
                    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <2>;
                                    hsync-active = <1>;
                                    vsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };
    
    };
    
    
    &ehrpwm0 {
            status = "okay";
    };
    
    &epwmss0 {
            status = "okay";
    };
    
    
    /* [00] ::  Added Touch panel entries */
    &i2c5 {
            status = "okay";
            clock-frequency = <400000>;
    
            polytouch: edt-ft5x06@38 {
                    compatible = "edt,edt-ft5x06";
                    reg = <0x38>;
                    attb-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
                    interrupt-parent = <&gpio5>;
                    interrupts = <9 0>;
            //reset-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
            //wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
    /* AKSHI*/
                    threshold = <20>;
                    touchscreen-size-x = <1024>;
                    touchscreen-size-y = <600>;
                    wakeup-source;
        };
    
    };
    
    
    &gpio7_target {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &cpu0 {
    	vdd-supply = <&smps12_reg>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &davinci_mdio_sw {
    	phy0: ethernet-phy@1 {
    		reg = <1>;
    	};
    
    	phy1: ethernet-phy@2 {
    		reg = <2>;
    	};
    };
    
    &mac_sw {
    	status = "okay";
    };
    
    &cpsw_port1 {
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <1>;
    };
    
    &cpsw_port2 {
    	phy-handle = <&phy1>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc1_pins_default>;
    
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
    	no-1-8-v;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc2_pins_default>;
    
    	vmmc-supply = <&vdd_3v3>;
    	vqmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	non-removable;
    	no-1-8-v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "peripheral";
    };
    
    &cpu_trips {
    	cpu_alert1: cpu_alert1 {
    		temperature = <50000>; /* millicelsius */
    		hysteresis = <2000>; /* millicelsius */
    		type = "active";
    	};
    };
    
    &cpu_cooling_maps {
    	map1 {
    		trip = <&cpu_alert1>;
    		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    	};
    };
    
    &thermal_zones {
    	board_thermal: board_thermal {
    		polling-delay-passive = <1250>; /* milliseconds */
    		polling-delay = <1500>; /* milliseconds */
    
    				/* sensor       ID */
    		thermal-sensors = <&tmp102     0>;
    
    		board_trips: trips {
    			board_alert0: board_alert {
    				temperature = <40000>; /* millicelsius */
    				hysteresis = <2000>; /* millicelsius */
    				type = "active";
    			};
    
    			board_crit: board_crit {
    				temperature = <105000>; /* millicelsius */
    				hysteresis = <0>; /* millicelsius */
    				type = "critical";
    			};
    		};
    
    		board_cooling_maps: cooling-maps {
    			map0 {
    				trip = <&board_alert0>;
    				cooling-device =
    				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    			};
    		};
           };
    };
    
    &dss {
            status = "okay";
            vdda_video-supply = <&ldoln_reg>;
            ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    port {
                            reg = <0>;
                            dpi_out: endpoint {
                                    data-lines = <24>;
                                    remote-endpoint = <&lcd_in>;
                            };
                    };
            };
    };
    
    
    &hdmi {
    	status = "okay";
    	vdda-supply = <&ldo4_reg>;
    
    	port {
    		hdmi_out: endpoint {
    			remote-endpoint = <&tpd12s015_in>;
    		};
    	};
    };
    
    &pcie1_rc {
    	status = "okay";
    	gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
    };
    
    &mcasp3 {
    	#sound-dai-cells = <0>;
    	assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
    	assigned-clock-parents = <&sys_clkin2>;
    	status = "okay";
    
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 4 serializers */
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    		1 2 0 0
    	>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    &ipu2 {
    	status = "okay";
    	memory-region = <&ipu2_memory_region>;
    };
    
    &ipu1 {
    	status = "okay";
    	memory-region = <&ipu1_memory_region>;
    };
    
    &dsp1 {
    	status = "okay";
    	memory-region = <&dsp1_memory_region>;
    };
    
    &dsp2 {
    	status = "okay";
    	memory-region = <&dsp2_memory_region>;
    };
    
    &pruss1_mdio {
    	status = "disabled";
    };
    
    &pruss2_mdio {
    	status = "disabled";
    };
    
    #include "dra7-ipu-common-early-boot.dtsi"

    Please help in adding into these files or elsewhere if not in these! I am kinda clueless right now.  
    Could you please share updated files ?

    Thanks!

    -Vishal

  • Hi Vishal,

    You can add the pinmux settings to the dra7_pmx_core node. This can be done in the dtsi or dts:

    &dra7_pmx_core {
        camera_gpio: camera-gpio {
            DRA7XX_CORE_IOPAD(0x1644, PIN_OUTPUT | MUX_MODE14)
            DRA7XX_CORE_IOPAD(0x1648, PIN_OUTPUT | MUX_MODE14)
        };
    };

    The pinctrl-0 and pinctrl-names properties should be added to the ov5640 node:

            ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clock-names = "xclk";
                    clocks = <&clk_ov5640>;
                    pinctrl-names = "default";
                    pinctrl-0 = <&camera_gpio>;
                    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <2>;
                                    hsync-active = <1>;
                                    vsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };

    Best,
    Jared

  • Jared,

    Still not working. Following are the changes done:-

    Modified the .config as below:-

    git diff .config
    diff --git a/.config b/.config
    index 68f1827b1..cf0d02cd3 100644
    --- a/.config
    +++ b/.config
    @@ -2608,7 +2608,7 @@ CONFIG_INPUT_MISC=y
     # CONFIG_INPUT_E3X0_BUTTON is not set
     # CONFIG_INPUT_MMA8450 is not set
     # CONFIG_INPUT_GPIO_BEEPER is not set
    -# CONFIG_INPUT_GPIO_DECODER is not set
    +CONFIG_INPUT_GPIO_DECODER=m
     # CONFIG_INPUT_GPIO_VIBRA is not set
     CONFIG_INPUT_CPCAP_PWRBUTTON=m
     # CONFIG_INPUT_ATI_REMOTE2 is not set
    @@ -2984,8 +2984,8 @@ CONFIG_GPIOLIB=y
     CONFIG_GPIOLIB_FASTPATH_LIMIT=512
     CONFIG_OF_GPIO=y
     CONFIG_GPIOLIB_IRQCHIP=y
    -# CONFIG_DEBUG_GPIO is not set
    -# CONFIG_GPIO_SYSFS is not set
    +CONFIG_DEBUG_GPIO=y
    +CONFIG_GPIO_SYSFS=y
     CONFIG_GPIO_CDEV=y
     CONFIG_GPIO_CDEV_V1=y
     CONFIG_GPIO_GENERIC=y
    @@ -3025,7 +3025,7 @@ CONFIG_GPIO_PCA953X=y
     CONFIG_GPIO_PCA953X_IRQ=y
     # CONFIG_GPIO_PCA9570 is not set
     CONFIG_GPIO_PCF857X=y
    -# CONFIG_GPIO_TPIC2810 is not set
    +CONFIG_GPIO_TPIC2810=m
     # end of I2C GPIO expanders
     
     #
    

    Added the following in arch/arm/boot/dts/dra7-l4.dtsi

    #include <dt-bindings/pinctrl/dra.h>
    
    camera_gpio: camera-gpio {
    					        pinctrl-single,pins = <
    					        	DRA7XX_CORE_IOPAD(0x1644, PIN_OUTPUT | MUX_MODE14)
    						        DRA7XX_CORE_IOPAD(0x1648, PIN_OUTPUT | MUX_MODE14)
    							>;
       					 };

    as shown below in  arch/arm/boot/dts/dra7-l4.dtsi

    #include <dt-bindings/pinctrl/dra.h>
    
    &l4_cfg {						/* 0x4a000000 */
    	compatible = "ti,dra7-l4-cfg", "simple-pm-bus";
    	power-domains = <&prm_coreaon>;
    	clocks = <&l4cfg_clkctrl DRA7_L4CFG_L4_CFG_CLKCTRL 0>;
    	clock-names = "fck";
    	reg = <0x4a000000 0x800>,
    	      <0x4a000800 0x800>,
    	      <0x4a001000 0x1000>;
    	reg-names = "ap", "la", "ia0";
    	#address-cells = <1>;
    	#size-cells = <1>;
    	ranges = <0x00000000 0x4a000000 0x100000>,	/* segment 0 */
    		 <0x00100000 0x4a100000 0x100000>,	/* segment 1 */
    		 <0x00200000 0x4a200000 0x100000>;	/* segment 2 */
    
    	segment@0 {					/* 0x4a000000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
    			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
    			 <0x00001000 0x00001000 0x001000>,	/* ap 2 */
    			 <0x00002000 0x00002000 0x002000>,	/* ap 3 */
    			 <0x00004000 0x00004000 0x001000>,	/* ap 4 */
    			 <0x00005000 0x00005000 0x001000>,	/* ap 5 */
    			 <0x00006000 0x00006000 0x001000>,	/* ap 6 */
    			 <0x00008000 0x00008000 0x002000>,	/* ap 7 */
    			 <0x0000a000 0x0000a000 0x001000>,	/* ap 8 */
    			 <0x00056000 0x00056000 0x001000>,	/* ap 9 */
    			 <0x00057000 0x00057000 0x001000>,	/* ap 10 */
    			 <0x0005e000 0x0005e000 0x002000>,	/* ap 11 */
    			 <0x00060000 0x00060000 0x001000>,	/* ap 12 */
    			 <0x00080000 0x00080000 0x008000>,	/* ap 13 */
    			 <0x00088000 0x00088000 0x001000>,	/* ap 14 */
    			 <0x000a0000 0x000a0000 0x008000>,	/* ap 15 */
    			 <0x000a8000 0x000a8000 0x001000>,	/* ap 16 */
    			 <0x000d9000 0x000d9000 0x001000>,	/* ap 17 */
    			 <0x000da000 0x000da000 0x001000>,	/* ap 18 */
    			 <0x000dd000 0x000dd000 0x001000>,	/* ap 19 */
    			 <0x000de000 0x000de000 0x001000>,	/* ap 20 */
    			 <0x000e0000 0x000e0000 0x001000>,	/* ap 21 */
    			 <0x000e1000 0x000e1000 0x001000>,	/* ap 22 */
    			 <0x000f4000 0x000f4000 0x001000>,	/* ap 23 */
    			 <0x000f5000 0x000f5000 0x001000>,	/* ap 24 */
    			 <0x000f6000 0x000f6000 0x001000>,	/* ap 25 */
    			 <0x000f7000 0x000f7000 0x001000>,	/* ap 26 */
    			 <0x00090000 0x00090000 0x008000>,	/* ap 59 */
    			 <0x00098000 0x00098000 0x001000>;	/* ap 60 */
    
    		target-module@2000 {			/* 0x4a002000, ap 3 08.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x2000 0x4>;
    			reg-names = "rev";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2000 0x2000>;
    
    			scm: scm@0 {
    				compatible = "ti,dra7-scm-core", "simple-bus";
    				reg = <0 0x2000>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				ranges = <0 0 0x2000>;
    
    				scm_conf: scm_conf@0 {
    					compatible = "syscon", "simple-bus";
    					reg = <0x0 0x1400>;
    					#address-cells = <1>;
    					#size-cells = <1>;
    					ranges = <0 0x0 0x1400>;
    
    					pbias_regulator: pbias_regulator@e00 {
    						compatible = "ti,pbias-dra7", "ti,pbias-omap";
    						reg = <0xe00 0x4>;
    						syscon = <&scm_conf>;
    						pbias_mmc_reg: pbias_mmc_omap5 {
    							regulator-name = "pbias_mmc_omap5";
    							regulator-min-microvolt = <1800000>;
    							regulator-max-microvolt = <3300000>;
    						};
    					};
    
    					phy_gmii_sel: phy-gmii-sel {
    						compatible = "ti,dra7xx-phy-gmii-sel";
    						reg = <0x554 0x4>;
    						#phy-cells = <1>;
    					};
    
    					scm_conf_clocks: clocks {
    						#address-cells = <1>;
    						#size-cells = <0>;
    					};
    				};
    
    				dra7_pmx_core: pinmux@1400 {
    					compatible = "ti,dra7-padconf",
    						     "pinctrl-single";
    					reg = <0x1400 0x0468>;
    					#address-cells = <1>;
    					#size-cells = <0>;
    					#pinctrl-cells = <1>;
    					#interrupt-cells = <1>;
    					interrupt-controller;
    					pinctrl-single,register-width = <32>;
    					pinctrl-single,function-mask = <0x3fffffff>;
    					camera_gpio: camera-gpio {
    					        pinctrl-single,pins = <
    					        	DRA7XX_CORE_IOPAD(0x1644, PIN_OUTPUT | MUX_MODE14)
    						        DRA7XX_CORE_IOPAD(0x1648, PIN_OUTPUT | MUX_MODE14)
    							>;
       					 };
    				};
    
    				scm_conf1: scm_conf@1c04 {
    					compatible = "syscon";
    					reg = <0x1c04 0x0020>;
    					#syscon-cells = <2>;
    				};
    
    				scm_conf_pcie: scm_conf@1c24 {
    					compatible = "syscon";
    					reg = <0x1c24 0x0024>;
    				};
    
    				sdma_xbar: dma-router@b78 {
    					compatible = "ti,dra7-dma-crossbar";
    					reg = <0xb78 0xfc>;
    					#dma-cells = <1>;
    					dma-requests = <205>;
    					ti,dma-safe-map = <0>;
    					dma-masters = <&sdma>;
    				};
    
    				edma_xbar: dma-router@c78 {
    					compatible = "ti,dra7-dma-crossbar";
    					reg = <0xc78 0x7c>;
    					#dma-cells = <2>;
    					dma-requests = <204>;
    					ti,dma-safe-map = <0>;
    					dma-masters = <&edma>;
    				};
    			};
    		};
    
    		target-module@5000 {			/* 0x4a005000, ap 5 10.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x5000 0x4>;
    			reg-names = "rev";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5000 0x1000>;
    
    			cm_core_aon: cm_core_aon@0 {
    				compatible = "ti,dra7-cm-core-aon",
    					      "simple-bus";
    				#address-cells = <1>;
    				#size-cells = <1>;
    				reg = <0 0x2000>;
    				ranges = <0 0 0x2000>;
    
    				cm_core_aon_clocks: clocks {
    					#address-cells = <1>;
    					#size-cells = <0>;
    				};
    
    				cm_core_aon_clockdomains: clockdomains {
    				};
    			};
    		};
    
    		target-module@8000 {			/* 0x4a008000, ap 7 0e.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x8000 0x4>;
    			reg-names = "rev";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x8000 0x2000>;
    
    			cm_core: cm_core@0 {
    				compatible = "ti,dra7-cm-core", "simple-bus";
    				#address-cells = <1>;
    				#size-cells = <1>;
    				reg = <0 0x3000>;
    				ranges = <0 0 0x3000>;
    
    				cm_core_clocks: clocks {
    					#address-cells = <1>;
    					#size-cells = <0>;
    				};
    
    				cm_core_clockdomains: clockdomains {
    				};
    			};
    		};
    
    		target-module@56000 {			/* 0x4a056000, ap 9 02.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x56000 0x4>,
    			      <0x5602c 0x4>,
    			      <0x56028 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_EMUFREE |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): core_pwrdm, dma_clkdm */
    			clocks = <&dma_clkctrl DRA7_DMA_DMA_SYSTEM_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x56000 0x1000>;
    
    			sdma: dma-controller@0 {
    				compatible = "ti,omap4430-sdma", "ti,omap-sdma";
    				reg = <0x0 0x1000>;
    				interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
    				#dma-cells = <1>;
    				dma-channels = <32>;
    				dma-requests = <127>;
    			};
    		};
    
    		target-module@5e000 {			/* 0x4a05e000, ap 11 1a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5e000 0x2000>;
    		};
    
    		target-module@80000 {			/* 0x4a080000, ap 13 20.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x80000 0x4>,
    			      <0x80010 0x4>,
    			      <0x80014 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_OCP2SCP1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x80000 0x8000>;
    
    			ocp2scp@0 {
    				compatible = "ti,omap-ocp2scp";
    				#address-cells = <1>;
    				#size-cells = <1>;
    				ranges = <0 0 0x8000>;
    				reg = <0x0 0x20>;
    
    				usb2_phy1: phy@4000 {
    					compatible = "ti,dra7x-usb2", "ti,omap-usb2";
    					reg = <0x4000 0x400>;
    					syscon-phy-power = <&scm_conf 0x300>;
    					clocks = <&usb_phy1_always_on_clk32k>,
    						 <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS1_CLKCTRL 8>;
    					clock-names =	"wkupclk",
    							"refclk";
    					#phy-cells = <0>;
    				};
    
    				usb2_phy2: phy@5000 {
    					compatible = "ti,dra7x-usb2-phy2",
    						     "ti,omap-usb2";
    					reg = <0x5000 0x400>;
    					syscon-phy-power = <&scm_conf 0xe74>;
    					clocks = <&usb_phy2_always_on_clk32k>,
    						 <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS2_CLKCTRL 8>;
    					clock-names =	"wkupclk",
    							"refclk";
    					#phy-cells = <0>;
    				};
    
    				usb3_phy1: phy@4400 {
    					compatible = "ti,omap-usb3";
    					reg = <0x4400 0x80>,
    					      <0x4800 0x64>,
    					      <0x4c00 0x40>;
    					reg-names = "phy_rx", "phy_tx", "pll_ctrl";
    					syscon-phy-power = <&scm_conf 0x370>;
    					clocks = <&usb_phy3_always_on_clk32k>,
    						 <&sys_clkin1>,
    						 <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS1_CLKCTRL 8>;
    					clock-names =	"wkupclk",
    							"sysclk",
    							"refclk";
    					#phy-cells = <0>;
    				};
    			};
    		};
    
    		target-module@90000 {			/* 0x4a090000, ap 59 42.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x90000 0x4>,
    			      <0x90010 0x4>,
    			      <0x90014 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_OCP2SCP3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x90000 0x8000>;
    
    			ocp2scp@0 {
    				compatible = "ti,omap-ocp2scp";
    				#address-cells = <1>;
    				#size-cells = <1>;
    				ranges = <0 0 0x8000>;
    				reg = <0x0 0x20>;
    
    				pcie1_phy: pciephy@4000 {
    					compatible = "ti,phy-pipe3-pcie";
    					reg = <0x4000 0x80>, /* phy_rx */
    					      <0x4400 0x64>; /* phy_tx */
    					reg-names = "phy_rx", "phy_tx";
    					syscon-phy-power = <&scm_conf_pcie 0x1c>;
    					syscon-pcs = <&scm_conf_pcie 0x10>;
    					clocks = <&dpll_pcie_ref_ck>,
    						 <&dpll_pcie_ref_m2ldo_ck>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 8>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 9>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 10>,
    						 <&optfclk_pciephy_div>,
    						 <&sys_clkin1>;
    					clock-names = "dpll_ref", "dpll_ref_m2",
    						      "wkupclk", "refclk",
    						      "div-clk", "phy-div", "sysclk";
    					#phy-cells = <0>;
    				};
    
    				pcie2_phy: pciephy@5000 {
    					compatible = "ti,phy-pipe3-pcie";
    					reg = <0x5000 0x80>, /* phy_rx */
    					      <0x5400 0x64>; /* phy_tx */
    					reg-names = "phy_rx", "phy_tx";
    					syscon-phy-power = <&scm_conf_pcie 0x20>;
    					syscon-pcs = <&scm_conf_pcie 0x10>;
    					clocks = <&dpll_pcie_ref_ck>,
    						 <&dpll_pcie_ref_m2ldo_ck>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 8>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 9>,
    						 <&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 10>,
    						 <&optfclk_pciephy_div>,
    						 <&sys_clkin1>;
    					clock-names = "dpll_ref", "dpll_ref_m2",
    						      "wkupclk", "refclk",
    						      "div-clk", "phy-div", "sysclk";
    					#phy-cells = <0>;
    					status = "disabled";
    				};
    
    				sata_phy: phy@6000 {
    					compatible = "ti,phy-pipe3-sata";
    					reg = <0x6000 0x80>, /* phy_rx */
    					      <0x6400 0x64>, /* phy_tx */
    					      <0x6800 0x40>; /* pll_ctrl */
    					reg-names = "phy_rx", "phy_tx", "pll_ctrl";
    					syscon-phy-power = <&scm_conf 0x374>;
    					clocks = <&sys_clkin1>,
    						 <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 8>;
    					clock-names = "sysclk", "refclk";
    					syscon-pllreset = <&scm_conf 0x3fc>;
    					#phy-cells = <0>;
    				};
    			};
    		};
    
    		target-module@a0000 {			/* 0x4a0a0000, ap 15 40.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xa0000 0x8000>;
    		};
    
    		target-module@d9000 {			/* 0x4a0d9000, ap 17 72.0 */
    			compatible = "ti,sysc-omap4-sr", "ti,sysc";
    			reg = <0xd9038 0x4>;
    			reg-names = "sysc";
    			ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): coreaon_pwrdm, coreaon_clkdm */
    			clocks = <&coreaon_clkctrl DRA7_COREAON_SMARTREFLEX_MPU_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xd9000 0x1000>;
    
    			/* SmartReflex child device marked reserved in TRM */
    		};
    
    		target-module@dd000 {			/* 0x4a0dd000, ap 19 18.0 */
    			compatible = "ti,sysc-omap4-sr", "ti,sysc";
    			reg = <0xdd038 0x4>;
    			reg-names = "sysc";
    			ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): coreaon_pwrdm, coreaon_clkdm */
    			clocks = <&coreaon_clkctrl DRA7_COREAON_SMARTREFLEX_CORE_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xdd000 0x1000>;
    
    			/* SmartReflex child device marked reserved in TRM */
    		};
    
    		target-module@e0000 {			/* 0x4a0e0000, ap 21 28.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xe0000 0x1000>;
    		};
    
    		target-module@f4000 {			/* 0x4a0f4000, ap 23 04.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xf4000 0x4>,
    			      <0xf4010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xf4000 0x1000>;
    
    			mailbox1: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <3>;
    				ti,mbox-num-fifos = <8>;
    				status = "disabled";
    			};
    		};
    
    		target-module@f6000 {			/* 0x4a0f6000, ap 25 78.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0xf6000 0x4>,
    			      <0xf6010 0x4>,
    			      <0xf6014 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_SPINLOCK_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xf6000 0x1000>;
    
    			hwspinlock: spinlock@0 {
    				compatible = "ti,omap4-hwspinlock";
    				reg = <0x0 0x1000>;
    				#hwlock-cells = <1>;
    			};
    		};
    	};
    
    	segment@100000 {					/* 0x4a100000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00002000 0x00102000 0x001000>,	/* ap 27 */
    			 <0x00003000 0x00103000 0x001000>,	/* ap 28 */
    			 <0x00008000 0x00108000 0x001000>,	/* ap 29 */
    			 <0x00009000 0x00109000 0x001000>,	/* ap 30 */
    			 <0x00040000 0x00140000 0x010000>,	/* ap 31 */
    			 <0x00050000 0x00150000 0x001000>,	/* ap 32 */
    			 <0x00051000 0x00151000 0x001000>,	/* ap 33 */
    			 <0x00052000 0x00152000 0x001000>,	/* ap 34 */
    			 <0x00053000 0x00153000 0x001000>,	/* ap 35 */
    			 <0x00054000 0x00154000 0x001000>,	/* ap 36 */
    			 <0x00055000 0x00155000 0x001000>,	/* ap 37 */
    			 <0x00056000 0x00156000 0x001000>,	/* ap 38 */
    			 <0x00057000 0x00157000 0x001000>,	/* ap 39 */
    			 <0x00058000 0x00158000 0x001000>,	/* ap 40 */
    			 <0x0005b000 0x0015b000 0x001000>,	/* ap 41 */
    			 <0x0005c000 0x0015c000 0x001000>,	/* ap 42 */
    			 <0x0005d000 0x0015d000 0x001000>,	/* ap 45 */
    			 <0x0005e000 0x0015e000 0x001000>,	/* ap 46 */
    			 <0x0005f000 0x0015f000 0x001000>,	/* ap 47 */
    			 <0x00060000 0x00160000 0x001000>,	/* ap 48 */
    			 <0x00061000 0x00161000 0x001000>,	/* ap 49 */
    			 <0x00062000 0x00162000 0x001000>,	/* ap 50 */
    			 <0x00063000 0x00163000 0x001000>,	/* ap 51 */
    			 <0x00064000 0x00164000 0x001000>,	/* ap 52 */
    			 <0x00065000 0x00165000 0x001000>,	/* ap 53 */
    			 <0x00066000 0x00166000 0x001000>,	/* ap 54 */
    			 <0x00067000 0x00167000 0x001000>,	/* ap 55 */
    			 <0x00068000 0x00168000 0x001000>,	/* ap 56 */
    			 <0x0006d000 0x0016d000 0x001000>,	/* ap 57 */
    			 <0x0006e000 0x0016e000 0x001000>,	/* ap 58 */
    			 <0x00071000 0x00171000 0x001000>,	/* ap 61 */
    			 <0x00072000 0x00172000 0x001000>,	/* ap 62 */
    			 <0x00073000 0x00173000 0x001000>,	/* ap 63 */
    			 <0x00074000 0x00174000 0x001000>,	/* ap 64 */
    			 <0x00075000 0x00175000 0x001000>,	/* ap 65 */
    			 <0x00076000 0x00176000 0x001000>,	/* ap 66 */
    			 <0x00077000 0x00177000 0x001000>,	/* ap 67 */
    			 <0x00078000 0x00178000 0x001000>,	/* ap 68 */
    			 <0x00081000 0x00181000 0x001000>,	/* ap 69 */
    			 <0x00082000 0x00182000 0x001000>,	/* ap 70 */
    			 <0x00083000 0x00183000 0x001000>,	/* ap 71 */
    			 <0x00084000 0x00184000 0x001000>,	/* ap 72 */
    			 <0x00085000 0x00185000 0x001000>,	/* ap 73 */
    			 <0x00086000 0x00186000 0x001000>,	/* ap 74 */
    			 <0x00087000 0x00187000 0x001000>,	/* ap 75 */
    			 <0x00088000 0x00188000 0x001000>,	/* ap 76 */
    			 <0x00069000 0x00169000 0x001000>,	/* ap 103 */
    			 <0x0006a000 0x0016a000 0x001000>,	/* ap 104 */
    			 <0x00079000 0x00179000 0x001000>,	/* ap 105 */
    			 <0x0007a000 0x0017a000 0x001000>,	/* ap 106 */
    			 <0x0006b000 0x0016b000 0x001000>,	/* ap 107 */
    			 <0x0006c000 0x0016c000 0x001000>,	/* ap 108 */
    			 <0x0007b000 0x0017b000 0x001000>,	/* ap 121 */
    			 <0x0007c000 0x0017c000 0x001000>,	/* ap 122 */
    			 <0x0007d000 0x0017d000 0x001000>,	/* ap 123 */
    			 <0x0007e000 0x0017e000 0x001000>,	/* ap 124 */
    			 <0x00059000 0x00159000 0x001000>,	/* ap 125 */
    			 <0x0005a000 0x0015a000 0x001000>;	/* ap 126 */
    
    		target-module@2000 {			/* 0x4a102000, ap 27 3c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2000 0x1000>;
    		};
    
    		target-module@8000 {			/* 0x4a108000, ap 29 1e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x8000 0x1000>;
    		};
    
    		target-module@40000 {			/* 0x4a140000, ap 31 06.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x400fc 4>,
    			      <0x41100 4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			power-domains = <&prm_l3init>;
    			clocks = <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 0>;
    			clock-names = "fck";
    			#size-cells = <1>;
    			#address-cells = <1>;
    			ranges = <0x0 0x40000 0x10000>;
    
    			sata: sata@0 {
    				compatible = "snps,dwc-ahci";
    				reg = <0 0x1100>, <0x1100 0x8>;
    				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
    				phys = <&sata_phy>;
    				phy-names = "sata-phy";
    				clocks = <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 8>;
    				ports-implemented = <0x1>;
    			};
    		};
    
    		target-module@51000 {			/* 0x4a151000, ap 33 50.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x51000 0x1000>;
    		};
    
    		target-module@53000 {			/* 0x4a153000, ap 35 54.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x53000 0x1000>;
    		};
    
    		target-module@55000 {			/* 0x4a155000, ap 37 46.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x55000 0x1000>;
    		};
    
    		target-module@57000 {			/* 0x4a157000, ap 39 58.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x57000 0x1000>;
    		};
    
    		target-module@59000 {			/* 0x4a159000, ap 125 6a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x59000 0x1000>;
    		};
    
    		target-module@5b000 {			/* 0x4a15b000, ap 41 60.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5b000 0x1000>;
    		};
    
    		target-module@5d000 {			/* 0x4a15d000, ap 45 3a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5d000 0x1000>;
    		};
    
    		target-module@5f000 {			/* 0x4a15f000, ap 47 56.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5f000 0x1000>;
    		};
    
    		target-module@61000 {			/* 0x4a161000, ap 49 32.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x61000 0x1000>;
    		};
    
    		target-module@63000 {			/* 0x4a163000, ap 51 5c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x63000 0x1000>;
    		};
    
    		target-module@65000 {			/* 0x4a165000, ap 53 4e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x65000 0x1000>;
    		};
    
    		target-module@67000 {			/* 0x4a167000, ap 55 5e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x67000 0x1000>;
    		};
    
    		target-module@69000 {			/* 0x4a169000, ap 103 4a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x69000 0x1000>;
    		};
    
    		target-module@6b000 {			/* 0x4a16b000, ap 107 52.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6b000 0x1000>;
    		};
    
    		target-module@6d000 {			/* 0x4a16d000, ap 57 68.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6d000 0x1000>;
    		};
    
    		target-module@71000 {			/* 0x4a171000, ap 61 48.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x71000 0x1000>;
    		};
    
    		target-module@73000 {			/* 0x4a173000, ap 63 2a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x73000 0x1000>;
    		};
    
    		target-module@75000 {			/* 0x4a175000, ap 65 64.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x75000 0x1000>;
    		};
    
    		target-module@77000 {			/* 0x4a177000, ap 67 66.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x77000 0x1000>;
    		};
    
    		target-module@79000 {			/* 0x4a179000, ap 105 34.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x79000 0x1000>;
    		};
    
    		target-module@7b000 {			/* 0x4a17b000, ap 121 7c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7b000 0x1000>;
    		};
    
    		target-module@7d000 {			/* 0x4a17d000, ap 123 7e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7d000 0x1000>;
    		};
    
    		target-module@81000 {			/* 0x4a181000, ap 69 26.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x81000 0x1000>;
    		};
    
    		target-module@83000 {			/* 0x4a183000, ap 71 2e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x83000 0x1000>;
    		};
    
    		target-module@85000 {			/* 0x4a185000, ap 73 36.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x85000 0x1000>;
    		};
    
    		target-module@87000 {			/* 0x4a187000, ap 75 74.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x87000 0x1000>;
    		};
    	};
    
    	segment@200000 {					/* 0x4a200000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00018000 0x00218000 0x001000>,	/* ap 43 */
    			 <0x00019000 0x00219000 0x001000>,	/* ap 44 */
    			 <0x00000000 0x00200000 0x001000>,	/* ap 77 */
    			 <0x00001000 0x00201000 0x001000>,	/* ap 78 */
    			 <0x0000a000 0x0020a000 0x001000>,	/* ap 79 */
    			 <0x0000b000 0x0020b000 0x001000>,	/* ap 80 */
    			 <0x0000c000 0x0020c000 0x001000>,	/* ap 81 */
    			 <0x0000d000 0x0020d000 0x001000>,	/* ap 82 */
    			 <0x0000e000 0x0020e000 0x001000>,	/* ap 83 */
    			 <0x0000f000 0x0020f000 0x001000>,	/* ap 84 */
    			 <0x00010000 0x00210000 0x001000>,	/* ap 85 */
    			 <0x00011000 0x00211000 0x001000>,	/* ap 86 */
    			 <0x00012000 0x00212000 0x001000>,	/* ap 87 */
    			 <0x00013000 0x00213000 0x001000>,	/* ap 88 */
    			 <0x00014000 0x00214000 0x001000>,	/* ap 89 */
    			 <0x00015000 0x00215000 0x001000>,	/* ap 90 */
    			 <0x0002a000 0x0022a000 0x001000>,	/* ap 91 */
    			 <0x0002b000 0x0022b000 0x001000>,	/* ap 92 */
    			 <0x0001c000 0x0021c000 0x001000>,	/* ap 93 */
    			 <0x0001d000 0x0021d000 0x001000>,	/* ap 94 */
    			 <0x0001e000 0x0021e000 0x001000>,	/* ap 95 */
    			 <0x0001f000 0x0021f000 0x001000>,	/* ap 96 */
    			 <0x00020000 0x00220000 0x001000>,	/* ap 97 */
    			 <0x00021000 0x00221000 0x001000>,	/* ap 98 */
    			 <0x00024000 0x00224000 0x001000>,	/* ap 99 */
    			 <0x00025000 0x00225000 0x001000>,	/* ap 100 */
    			 <0x00026000 0x00226000 0x001000>,	/* ap 101 */
    			 <0x00027000 0x00227000 0x001000>,	/* ap 102 */
    			 <0x0002c000 0x0022c000 0x001000>,	/* ap 109 */
    			 <0x0002d000 0x0022d000 0x001000>,	/* ap 110 */
    			 <0x0002e000 0x0022e000 0x001000>,	/* ap 111 */
    			 <0x0002f000 0x0022f000 0x001000>,	/* ap 112 */
    			 <0x00030000 0x00230000 0x001000>,	/* ap 113 */
    			 <0x00031000 0x00231000 0x001000>,	/* ap 114 */
    			 <0x00032000 0x00232000 0x001000>,	/* ap 115 */
    			 <0x00033000 0x00233000 0x001000>,	/* ap 116 */
    			 <0x00034000 0x00234000 0x001000>,	/* ap 117 */
    			 <0x00035000 0x00235000 0x001000>,	/* ap 118 */
    			 <0x00036000 0x00236000 0x001000>,	/* ap 119 */
    			 <0x00037000 0x00237000 0x001000>,	/* ap 120 */
    			 <0x0001a000 0x0021a000 0x001000>,	/* ap 127 */
    			 <0x0001b000 0x0021b000 0x001000>;	/* ap 128 */
    
    		target-module@0 {			/* 0x4a200000, ap 77 3e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x0 0x1000>;
    		};
    
    		target-module@a000 {			/* 0x4a20a000, ap 79 30.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xa000 0x1000>;
    		};
    
    		target-module@c000 {			/* 0x4a20c000, ap 81 0c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xc000 0x1000>;
    		};
    
    		target-module@e000 {			/* 0x4a20e000, ap 83 22.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xe000 0x1000>;
    		};
    
    		target-module@10000 {			/* 0x4a210000, ap 85 14.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x10000 0x1000>;
    		};
    
    		target-module@12000 {			/* 0x4a212000, ap 87 16.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x12000 0x1000>;
    		};
    
    		target-module@14000 {			/* 0x4a214000, ap 89 1c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x14000 0x1000>;
    		};
    
    		target-module@18000 {			/* 0x4a218000, ap 43 12.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x18000 0x1000>;
    		};
    
    		target-module@1a000 {			/* 0x4a21a000, ap 127 7a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1a000 0x1000>;
    		};
    
    		target-module@1c000 {			/* 0x4a21c000, ap 93 38.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1c000 0x1000>;
    		};
    
    		target-module@1e000 {			/* 0x4a21e000, ap 95 0a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1e000 0x1000>;
    		};
    
    		target-module@20000 {			/* 0x4a220000, ap 97 24.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x20000 0x1000>;
    		};
    
    		target-module@24000 {			/* 0x4a224000, ap 99 44.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x24000 0x1000>;
    		};
    
    		target-module@26000 {			/* 0x4a226000, ap 101 2c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x26000 0x1000>;
    		};
    
    		target-module@2a000 {			/* 0x4a22a000, ap 91 4c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2a000 0x1000>;
    		};
    
    		target-module@2c000 {			/* 0x4a22c000, ap 109 6c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2c000 0x1000>;
    		};
    
    		target-module@2e000 {			/* 0x4a22e000, ap 111 6e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2e000 0x1000>;
    		};
    
    		target-module@30000 {			/* 0x4a230000, ap 113 70.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x30000 0x1000>;
    		};
    
    		target-module@32000 {			/* 0x4a232000, ap 115 5a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x32000 0x1000>;
    		};
    
    		target-module@34000 {			/* 0x4a234000, ap 117 76.1 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x34000 0x1000>;
    		};
    
    		target-module@36000 {			/* 0x4a236000, ap 119 62.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x36000 0x1000>;
    		};
    	};
    };
    
    &l4_per1 {						/* 0x48000000 */
    	compatible = "ti,dra7-l4-per1", "simple-pm-bus";
    	power-domains = <&prm_l4per>;
    	clocks = <&l4per_clkctrl DRA7_L4PER_L4_PER1_CLKCTRL 0>;
    	clock-names = "fck";
    	reg = <0x48000000 0x800>,
    	      <0x48000800 0x800>,
    	      <0x48001000 0x400>,
    	      <0x48001400 0x400>,
    	      <0x48001800 0x400>,
    	      <0x48001c00 0x400>;
    	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
    	#address-cells = <1>;
    	#size-cells = <1>;
    	ranges = <0x00000000 0x48000000 0x200000>,	/* segment 0 */
    		 <0x00200000 0x48200000 0x200000>;	/* segment 1 */
    
    	segment@0 {					/* 0x48000000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
    			 <0x00001000 0x00001000 0x000400>,	/* ap 1 */
    			 <0x00000800 0x00000800 0x000800>,	/* ap 2 */
    			 <0x00020000 0x00020000 0x001000>,	/* ap 3 */
    			 <0x00021000 0x00021000 0x001000>,	/* ap 4 */
    			 <0x00032000 0x00032000 0x001000>,	/* ap 5 */
    			 <0x00033000 0x00033000 0x001000>,	/* ap 6 */
    			 <0x00034000 0x00034000 0x001000>,	/* ap 7 */
    			 <0x00035000 0x00035000 0x001000>,	/* ap 8 */
    			 <0x00036000 0x00036000 0x001000>,	/* ap 9 */
    			 <0x00037000 0x00037000 0x001000>,	/* ap 10 */
    			 <0x0003e000 0x0003e000 0x001000>,	/* ap 11 */
    			 <0x0003f000 0x0003f000 0x001000>,	/* ap 12 */
    			 <0x00055000 0x00055000 0x001000>,	/* ap 13 */
    			 <0x00056000 0x00056000 0x001000>,	/* ap 14 */
    			 <0x00057000 0x00057000 0x001000>,	/* ap 15 */
    			 <0x00058000 0x00058000 0x001000>,	/* ap 16 */
    			 <0x00059000 0x00059000 0x001000>,	/* ap 17 */
    			 <0x0005a000 0x0005a000 0x001000>,	/* ap 18 */
    			 <0x0005b000 0x0005b000 0x001000>,	/* ap 19 */
    			 <0x0005c000 0x0005c000 0x001000>,	/* ap 20 */
    			 <0x0005d000 0x0005d000 0x001000>,	/* ap 21 */
    			 <0x0005e000 0x0005e000 0x001000>,	/* ap 22 */
    			 <0x00060000 0x00060000 0x001000>,	/* ap 23 */
    			 <0x0006a000 0x0006a000 0x001000>,	/* ap 24 */
    			 <0x0006b000 0x0006b000 0x001000>,	/* ap 25 */
    			 <0x0006c000 0x0006c000 0x001000>,	/* ap 26 */
    			 <0x0006d000 0x0006d000 0x001000>,	/* ap 27 */
    			 <0x0006e000 0x0006e000 0x001000>,	/* ap 28 */
    			 <0x0006f000 0x0006f000 0x001000>,	/* ap 29 */
    			 <0x00070000 0x00070000 0x001000>,	/* ap 30 */
    			 <0x00071000 0x00071000 0x001000>,	/* ap 31 */
    			 <0x00072000 0x00072000 0x001000>,	/* ap 32 */
    			 <0x00073000 0x00073000 0x001000>,	/* ap 33 */
    			 <0x00061000 0x00061000 0x001000>,	/* ap 34 */
    			 <0x00053000 0x00053000 0x001000>,	/* ap 35 */
    			 <0x00054000 0x00054000 0x001000>,	/* ap 36 */
    			 <0x000b2000 0x000b2000 0x001000>,	/* ap 37 */
    			 <0x000b3000 0x000b3000 0x001000>,	/* ap 38 */
    			 <0x00078000 0x00078000 0x001000>,	/* ap 39 */
    			 <0x00079000 0x00079000 0x001000>,	/* ap 40 */
    			 <0x00086000 0x00086000 0x001000>,	/* ap 41 */
    			 <0x00087000 0x00087000 0x001000>,	/* ap 42 */
    			 <0x00088000 0x00088000 0x001000>,	/* ap 43 */
    			 <0x00089000 0x00089000 0x001000>,	/* ap 44 */
    			 <0x00051000 0x00051000 0x001000>,	/* ap 45 */
    			 <0x00052000 0x00052000 0x001000>,	/* ap 46 */
    			 <0x00098000 0x00098000 0x001000>,	/* ap 47 */
    			 <0x00099000 0x00099000 0x001000>,	/* ap 48 */
    			 <0x0009a000 0x0009a000 0x001000>,	/* ap 49 */
    			 <0x0009b000 0x0009b000 0x001000>,	/* ap 50 */
    			 <0x0009c000 0x0009c000 0x001000>,	/* ap 51 */
    			 <0x0009d000 0x0009d000 0x001000>,	/* ap 52 */
    			 <0x00068000 0x00068000 0x001000>,	/* ap 53 */
    			 <0x00069000 0x00069000 0x001000>,	/* ap 54 */
    			 <0x00090000 0x00090000 0x002000>,	/* ap 55 */
    			 <0x00092000 0x00092000 0x001000>,	/* ap 56 */
    			 <0x000a4000 0x000a4000 0x001000>,	/* ap 57 */
    			 <0x000a6000 0x000a6000 0x001000>,	/* ap 58 */
    			 <0x000a8000 0x000a8000 0x004000>,	/* ap 59 */
    			 <0x000ac000 0x000ac000 0x001000>,	/* ap 60 */
    			 <0x000ad000 0x000ad000 0x001000>,	/* ap 61 */
    			 <0x000ae000 0x000ae000 0x001000>,	/* ap 62 */
    			 <0x00066000 0x00066000 0x001000>,	/* ap 63 */
    			 <0x00067000 0x00067000 0x001000>,	/* ap 64 */
    			 <0x000b4000 0x000b4000 0x001000>,	/* ap 65 */
    			 <0x000b5000 0x000b5000 0x001000>,	/* ap 66 */
    			 <0x000b8000 0x000b8000 0x001000>,	/* ap 67 */
    			 <0x000b9000 0x000b9000 0x001000>,	/* ap 68 */
    			 <0x000ba000 0x000ba000 0x001000>,	/* ap 69 */
    			 <0x000bb000 0x000bb000 0x001000>,	/* ap 70 */
    			 <0x000d1000 0x000d1000 0x001000>,	/* ap 71 */
    			 <0x000d2000 0x000d2000 0x001000>,	/* ap 72 */
    			 <0x000d5000 0x000d5000 0x001000>,	/* ap 73 */
    			 <0x000d6000 0x000d6000 0x001000>,	/* ap 74 */
    			 <0x000a2000 0x000a2000 0x001000>,	/* ap 75 */
    			 <0x000a3000 0x000a3000 0x001000>,	/* ap 76 */
    			 <0x00001400 0x00001400 0x000400>,	/* ap 77 */
    			 <0x00001800 0x00001800 0x000400>,	/* ap 78 */
    			 <0x00001c00 0x00001c00 0x000400>,	/* ap 79 */
    			 <0x000a5000 0x000a5000 0x001000>,	/* ap 80 */
    			 <0x0007a000 0x0007a000 0x001000>,	/* ap 81 */
    			 <0x0007b000 0x0007b000 0x001000>,	/* ap 82 */
    			 <0x0007c000 0x0007c000 0x001000>,	/* ap 83 */
    			 <0x0007d000 0x0007d000 0x001000>;	/* ap 84 */
    
    		target-module@20000 {			/* 0x48020000, ap 3 04.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x20050 0x4>,
    			      <0x20054 0x4>,
    			      <0x20058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_UART3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x20000 0x1000>;
    
    			uart3: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    				dmas = <&sdma_xbar 53>, <&sdma_xbar 54>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@32000 {			/* 0x48032000, ap 5 3e.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x32000 0x4>,
    			      <0x32010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x32000 0x1000>;
    
    			timer2: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER2_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		timer3_target: target-module@34000 {	/* 0x48034000, ap 7 46.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x34000 0x4>,
    			      <0x34010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x34000 0x1000>;
    
    			timer3: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER3_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		timer4_target: target-module@36000 {	/* 0x48036000, ap 9 4e.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x36000 0x4>,
    			      <0x36010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x36000 0x1000>;
    
    			timer4: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target-module@3e000 {			/* 0x4803e000, ap 11 56.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x3e000 0x4>,
    			      <0x3e010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER9_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3e000 0x1000>;
    
    			timer9: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER9_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		gpio7_target: target-module@51000 {		/* 0x48051000, ap 45 2e.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x51000 0x4>,
    			      <0x51010 0x4>,
    			      <0x51114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO7_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO7_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x51000 0x1000>;
    
    			gpio7: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@53000 {			/* 0x48053000, ap 35 36.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x53000 0x4>,
    			      <0x53010 0x4>,
    			      <0x53114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO8_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO8_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x53000 0x1000>;
    
    			gpio8: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		gpio2_target: target-module@55000 {		/* 0x48055000, ap 13 0e.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x55000 0x4>,
    			      <0x55010 0x4>,
    			      <0x55114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO2_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO2_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x55000 0x1000>;
    
    			gpio2: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		gpio3_target: target-module@57000 {		/* 0x48057000, ap 15 06.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x57000 0x4>,
    			      <0x57010 0x4>,
    			      <0x57114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO3_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO3_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x57000 0x1000>;
    
    			gpio3: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@59000 {			/* 0x48059000, ap 17 16.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x59000 0x4>,
    			      <0x59010 0x4>,
    			      <0x59114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO4_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO4_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x59000 0x1000>;
    
    			gpio4: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@5b000 {			/* 0x4805b000, ap 19 1e.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x5b000 0x4>,
    			      <0x5b010 0x4>,
    			      <0x5b114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO5_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO5_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5b000 0x1000>;
    
    			gpio5: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@5d000 {			/* 0x4805d000, ap 21 26.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x5d000 0x4>,
    			      <0x5d010 0x4>,
    			      <0x5d114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_GPIO6_CLKCTRL 0>,
    				 <&l4per_clkctrl DRA7_L4PER_GPIO6_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5d000 0x1000>;
    
    			gpio6: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@60000 {			/* 0x48060000, ap 23 32.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x60000 0x8>,
    			      <0x60010 0x8>,
    			      <0x60090 0x8>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_I2C3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x60000 0x1000>;
    
    			i2c3: i2c@0 {
    				compatible = "ti,omap4-i2c";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				status = "disabled";
    			};
    		};
    
    		target-module@66000 {			/* 0x48066000, ap 63 14.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x66050 0x4>,
    			      <0x66054 0x4>,
    			      <0x66058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_UART5_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x66000 0x1000>;
    
    			uart5: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    				dmas = <&sdma_xbar 63>, <&sdma_xbar 64>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@68000 {			/* 0x48068000, ap 53 1c.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x68050 0x4>,
    			      <0x68054 0x4>,
    			      <0x68058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_UART6_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x68000 0x1000>;
    
    			uart6: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    				dmas = <&sdma_xbar 79>, <&sdma_xbar 80>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@6a000 {			/* 0x4806a000, ap 24 24.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x6a050 0x4>,
    			      <0x6a054 0x4>,
    			      <0x6a058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_UART1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6a000 0x1000>;
    
    			uart1: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    				dmas = <&sdma_xbar 49>, <&sdma_xbar 50>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@6c000 {			/* 0x4806c000, ap 26 2c.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x6c050 0x4>,
    			      <0x6c054 0x4>,
    			      <0x6c058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_UART2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6c000 0x1000>;
    
    			uart2: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    				dmas = <&sdma_xbar 51>, <&sdma_xbar 52>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@6e000 {			/* 0x4806e000, ap 28 0c.1 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x6e050 0x4>,
    			      <0x6e054 0x4>,
    			      <0x6e058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_UART4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6e000 0x1000>;
    
    			uart4: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    			                        status = "disabled";
    				dmas = <&sdma_xbar 55>, <&sdma_xbar 56>;
    				dma-names = "tx", "rx";
    			};
    		};
    
    		target-module@70000 {			/* 0x48070000, ap 30 22.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x70000 0x8>,
    			      <0x70010 0x8>,
    			      <0x70090 0x8>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_I2C1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x70000 0x1000>;
    
    			i2c1: i2c@0 {
    				compatible = "ti,omap4-i2c";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				status = "disabled";
    			};
    		};
    
    		target-module@72000 {			/* 0x48072000, ap 32 2a.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x72000 0x8>,
    			      <0x72010 0x8>,
    			      <0x72090 0x8>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_I2C2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x72000 0x1000>;
    
    			i2c2: i2c@0 {
    				compatible = "ti,omap4-i2c";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				status = "disabled";
    			};
    		};
    
    		target-module@78000 {			/* 0x48078000, ap 39 0a.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x78000 0x4>,
    			      <0x78010 0x4>,
    			      <0x78014 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_ELM_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x78000 0x1000>;
    
    			elm: elm@0 {
    				compatible = "ti,am3352-elm";
    				reg = <0x0 0xfc0>;      /* device IO registers */
    				interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
    				status = "disabled";
    			};
    		};
    
    		target-module@7a000 {			/* 0x4807a000, ap 81 3a.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x7a000 0x8>,
    			      <0x7a010 0x8>,
    			      <0x7a090 0x8>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_I2C4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7a000 0x1000>;
    
    			i2c4: i2c@0 {
    				compatible = "ti,omap4-i2c";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				status = "disabled";
    			};
    		};
    
    		target-module@7c000 {			/* 0x4807c000, ap 83 4a.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x7c000 0x8>,
    			      <0x7c010 0x8>,
    			      <0x7c090 0x8>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
    					 SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_I2C5_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7c000 0x1000>;
    
    			i2c5: i2c@0 {
    				compatible = "ti,omap4-i2c";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				status = "disabled";
    			};
    		};
    
    		target-module@86000 {			/* 0x48086000, ap 41 5e.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x86000 0x4>,
    			      <0x86010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER10_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x86000 0x1000>;
    
    			timer10: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER10_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target_module_timer11: target-module@88000 {			/* 0x48088000, ap 43 66.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x88000 0x4>,
    			      <0x88010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_TIMER11_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x88000 0x1000>;
    
    			timer11: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per_clkctrl DRA7_L4PER_TIMER11_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target-module@90000 {			/* 0x48090000, ap 55 12.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x91fe0 0x4>,
    			      <0x91fe4 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>;
    			/* Domains (P, C): l4per_pwrdm, l4sec_clkdm */
    			clocks = <&l4sec_clkctrl DRA7_L4SEC_RNG_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x90000 0x2000>;
    
    			rng: rng@0 {
    				compatible = "ti,omap4-rng";
    				reg = <0x0 0x2000>;
    				interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
    				clocks = <&l3_iclk_div>;
    				clock-names = "fck";
    			};
    		};
    
    		target-module@98000 {			/* 0x48098000, ap 47 08.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x98000 0x4>,
    			      <0x98010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MCSPI1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x98000 0x1000>;
    
    			mcspi1: spi@0 {
    				compatible = "ti,omap4-mcspi";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				ti,spi-num-cs = <4>;
    				dmas = <&sdma_xbar 35>,
    				       <&sdma_xbar 36>,
    				       <&sdma_xbar 37>,
    				       <&sdma_xbar 38>,
    				       <&sdma_xbar 39>,
    				       <&sdma_xbar 40>,
    				       <&sdma_xbar 41>,
    				       <&sdma_xbar 42>;
    				dma-names = "tx0", "rx0", "tx1", "rx1",
    					    "tx2", "rx2", "tx3", "rx3";
    				status = "disabled";
    			};
    		};
    
    		target-module@9a000 {			/* 0x4809a000, ap 49 10.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x9a000 0x4>,
    			      <0x9a010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MCSPI2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x9a000 0x1000>;
    
    			mcspi2: spi@0 {
    				compatible = "ti,omap4-mcspi";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				ti,spi-num-cs = <2>;
    				dmas = <&sdma_xbar 43>,
    				       <&sdma_xbar 44>,
    				       <&sdma_xbar 45>,
    				       <&sdma_xbar 46>;
    				dma-names = "tx0", "rx0", "tx1", "rx1";
    				status = "disabled";
    			};
    		};
    
    		target-module@9c000 {			/* 0x4809c000, ap 51 38.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x9c000 0x4>,
    			      <0x9c010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_MMC1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x9c000 0x1000>;
    
    			mmc1: mmc@0 {
    				compatible = "ti,dra7-sdhci";
    				reg = <0x0 0x400>;
    				interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
    				status = "disabled";
    				pbias-supply = <&pbias_mmc_reg>;
    				max-frequency = <192000000>;
    				mmc-ddr-1_8v;
    				mmc-ddr-3_3v;
    			};
    		};
    
    		target-module@a2000 {			/* 0x480a2000, ap 75 02.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xa2000 0x1000>;
    		};
    
    		target-module@a4000 {			/* 0x480a4000, ap 57 42.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x00000000 0x000a4000 0x00001000>,
    				 <0x00001000 0x000a5000 0x00001000>;
    		};
    
    		des_target: target-module@a5000 {	/* 0x480a5000 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0xa5030 0x4>,
    			      <0xa5034 0x4>,
    			      <0xa5038 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4sec_clkdm */
    			clocks = <&l4sec_clkctrl DRA7_L4SEC_DES_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0 0xa5000 0x00001000>;
    
    			des: des@0 {
    				compatible = "ti,omap4-des";
    				reg = <0 0xa0>;
    				interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
    				dmas = <&sdma_xbar 117>, <&sdma_xbar 116>;
    				dma-names = "tx", "rx";
    				clocks = <&l3_iclk_div>;
    				clock-names = "fck";
    			};
    		};
    
    		target-module@a8000 {			/* 0x480a8000, ap 59 1a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xa8000 0x4000>;
    		};
    
    		target-module@ad000 {			/* 0x480ad000, ap 61 20.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xad000 0x4>,
    			      <0xad010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MMC3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xad000 0x1000>;
    
    			mmc3: mmc@0 {
    				compatible = "ti,dra7-sdhci";
    				reg = <0x0 0x400>;
    				interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
    				status = "disabled";
    				/* Errata i887 limits max-frequency of MMC3 to 64 MHz */
    				max-frequency = <64000000>;
    				/* SDMA is not supported */
    				sdhci-caps-mask = <0x0 0x400000>;
    			};
    		};
    
    		target-module@b2000 {			/* 0x480b2000, ap 37 52.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0xb2000 0x4>,
    			      <0xb2014 0x4>,
    			      <0xb2018 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,syss-mask = <1>;
    			ti,no-reset-on-init;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_HDQ1W_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xb2000 0x1000>;
    
    			hdqw1w: 1w@0 {
    				compatible = "ti,omap3-1w";
    				reg = <0x0 0x1000>;
    				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target-module@b4000 {			/* 0x480b4000, ap 65 40.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xb4000 0x4>,
    			      <0xb4010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_MMC2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xb4000 0x1000>;
    
    			mmc2: mmc@0 {
    				compatible = "ti,dra7-sdhci";
    				reg = <0x0 0x400>;
    				interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
    				status = "disabled";
    				max-frequency = <192000000>;
    				/* SDR104/DDR50/SDR50 bits in CAPA2 is not supported */
    				sdhci-caps-mask = <0x7 0x0>;
    				mmc-hs200-1_8v;
    				mmc-ddr-1_8v;
    				mmc-ddr-3_3v;
    			};
    		};
    
    		target-module@b8000 {			/* 0x480b8000, ap 67 48.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xb8000 0x4>,
    			      <0xb8010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MCSPI3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xb8000 0x1000>;
    
    			mcspi3: spi@0 {
    				compatible = "ti,omap4-mcspi";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				ti,spi-num-cs = <2>;
    				dmas = <&sdma_xbar 15>, <&sdma_xbar 16>;
    				dma-names = "tx0", "rx0";
    				status = "disabled";
    			};
    		};
    
    		target-module@ba000 {			/* 0x480ba000, ap 69 18.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xba000 0x4>,
    			      <0xba010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MCSPI4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xba000 0x1000>;
    
    			mcspi4: spi@0 {
    				compatible = "ti,omap4-mcspi";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <0>;
    				ti,spi-num-cs = <1>;
    				dmas = <&sdma_xbar 70>, <&sdma_xbar 71>;
    				dma-names = "tx0", "rx0";
    				status = "disabled";
    			};
    		};
    
    		target-module@d1000 {			/* 0x480d1000, ap 71 28.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xd1000 0x4>,
    			      <0xd1010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per_clkdm */
    			clocks = <&l4per_clkctrl DRA7_L4PER_MMC4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xd1000 0x1000>;
    
    			mmc4: mmc@0 {
    				compatible = "ti,dra7-sdhci";
    				reg = <0x0 0x400>;
    				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
    				status = "disabled";
    				max-frequency = <192000000>;
    				/* SDMA is not supported */
    				sdhci-caps-mask = <0x0 0x400000>;
    			};
    		};
    
    		target-module@d5000 {			/* 0x480d5000, ap 73 30.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xd5000 0x1000>;
    		};
    	};
    
    	segment@200000 {					/* 0x48200000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &l4_per2 {						/* 0x48400000 */
    	compatible = "ti,dra7-l4-per2", "simple-pm-bus";
    	power-domains = <&prm_l4per>;
    	clocks = <&l4per2_clkctrl DRA7_L4PER2_L4_PER2_CLKCTRL 0>;
    	clock-names = "fck";
    	reg = <0x48400000 0x800>,
    	      <0x48400800 0x800>,
    	      <0x48401000 0x400>,
    	      <0x48401400 0x400>,
    	      <0x48401800 0x400>;
    	reg-names = "ap", "la", "ia0", "ia1", "ia2";
    	#address-cells = <1>;
    	#size-cells = <1>;
    	ranges = <0x00000000 0x48400000 0x400000>,	/* segment 0 */
    		 <0x45800000 0x45800000 0x400000>,	/* L3 data port */
    		 <0x45c00000 0x45c00000 0x400000>,	/* L3 data port */
    		 <0x46000000 0x46000000 0x400000>,	/* L3 data port */
    		 <0x48436000 0x48436000 0x400000>,	/* L3 data port */
    		 <0x4843a000 0x4843a000 0x400000>,	/* L3 data port */
    		 <0x4844c000 0x4844c000 0x400000>,	/* L3 data port */
    		 <0x48450000 0x48450000 0x400000>,	/* L3 data port */
    		 <0x48454000 0x48454000 0x400000>;	/* L3 data port */
    
    	segment@0 {					/* 0x48400000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
    			 <0x00001000 0x00001000 0x000400>,	/* ap 1 */
    			 <0x00000800 0x00000800 0x000800>,	/* ap 2 */
    			 <0x00084000 0x00084000 0x004000>,	/* ap 3 */
    			 <0x00001400 0x00001400 0x000400>,	/* ap 4 */
    			 <0x00001800 0x00001800 0x000400>,	/* ap 5 */
    			 <0x00088000 0x00088000 0x001000>,	/* ap 6 */
    			 <0x0002c000 0x0002c000 0x001000>,	/* ap 7 */
    			 <0x0002d000 0x0002d000 0x001000>,	/* ap 8 */
    			 <0x00060000 0x00060000 0x002000>,	/* ap 9 */
    			 <0x00062000 0x00062000 0x001000>,	/* ap 10 */
    			 <0x00064000 0x00064000 0x002000>,	/* ap 11 */
    			 <0x00066000 0x00066000 0x001000>,	/* ap 12 */
    			 <0x00068000 0x00068000 0x002000>,	/* ap 13 */
    			 <0x0006a000 0x0006a000 0x001000>,	/* ap 14 */
    			 <0x0006c000 0x0006c000 0x002000>,	/* ap 15 */
    			 <0x0006e000 0x0006e000 0x001000>,	/* ap 16 */
    			 <0x00036000 0x00036000 0x001000>,	/* ap 17 */
    			 <0x00037000 0x00037000 0x001000>,	/* ap 18 */
    			 <0x00070000 0x00070000 0x002000>,	/* ap 19 */
    			 <0x00072000 0x00072000 0x001000>,	/* ap 20 */
    			 <0x0003a000 0x0003a000 0x001000>,	/* ap 21 */
    			 <0x0003b000 0x0003b000 0x001000>,	/* ap 22 */
    			 <0x0003c000 0x0003c000 0x001000>,	/* ap 23 */
    			 <0x0003d000 0x0003d000 0x001000>,	/* ap 24 */
    			 <0x0003e000 0x0003e000 0x001000>,	/* ap 25 */
    			 <0x0003f000 0x0003f000 0x001000>,	/* ap 26 */
    			 <0x00040000 0x00040000 0x001000>,	/* ap 27 */
    			 <0x00041000 0x00041000 0x001000>,	/* ap 28 */
    			 <0x00042000 0x00042000 0x001000>,	/* ap 29 */
    			 <0x00043000 0x00043000 0x001000>,	/* ap 30 */
    			 <0x00080000 0x00080000 0x002000>,	/* ap 31 */
    			 <0x00082000 0x00082000 0x001000>,	/* ap 32 */
    			 <0x0004a000 0x0004a000 0x001000>,	/* ap 33 */
    			 <0x0004b000 0x0004b000 0x001000>,	/* ap 34 */
    			 <0x00074000 0x00074000 0x002000>,	/* ap 35 */
    			 <0x00076000 0x00076000 0x001000>,	/* ap 36 */
    			 <0x00050000 0x00050000 0x001000>,	/* ap 37 */
    			 <0x00051000 0x00051000 0x001000>,	/* ap 38 */
    			 <0x00078000 0x00078000 0x002000>,	/* ap 39 */
    			 <0x0007a000 0x0007a000 0x001000>,	/* ap 40 */
    			 <0x00054000 0x00054000 0x001000>,	/* ap 41 */
    			 <0x00055000 0x00055000 0x001000>,	/* ap 42 */
    			 <0x0007c000 0x0007c000 0x002000>,	/* ap 43 */
    			 <0x0007e000 0x0007e000 0x001000>,	/* ap 44 */
    			 <0x0004c000 0x0004c000 0x001000>,	/* ap 45 */
    			 <0x0004d000 0x0004d000 0x001000>,	/* ap 46 */
    			 <0x00020000 0x00020000 0x001000>,	/* ap 47 */
    			 <0x00021000 0x00021000 0x001000>,	/* ap 48 */
    			 <0x00022000 0x00022000 0x001000>,	/* ap 49 */
    			 <0x00023000 0x00023000 0x001000>,	/* ap 50 */
    			 <0x00024000 0x00024000 0x001000>,	/* ap 51 */
    			 <0x00025000 0x00025000 0x001000>,	/* ap 52 */
    			 <0x00046000 0x00046000 0x001000>,	/* ap 53 */
    			 <0x00047000 0x00047000 0x001000>,	/* ap 54 */
    			 <0x00048000 0x00048000 0x001000>,	/* ap 55 */
    			 <0x00049000 0x00049000 0x001000>,	/* ap 56 */
    			 <0x00058000 0x00058000 0x002000>,	/* ap 57 */
    			 <0x0005a000 0x0005a000 0x001000>,	/* ap 58 */
    			 <0x0005b000 0x0005b000 0x001000>,	/* ap 59 */
    			 <0x0005c000 0x0005c000 0x001000>,	/* ap 60 */
    			 <0x0005d000 0x0005d000 0x001000>,	/* ap 61 */
    			 <0x0005e000 0x0005e000 0x001000>,	/* ap 62 */
    			 <0x45800000 0x45800000 0x400000>,	/* L3 data port */
    			 <0x45c00000 0x45c00000 0x400000>,	/* L3 data port */
    			 <0x46000000 0x46000000 0x400000>,	/* L3 data port */
    			 <0x48436000 0x48436000 0x400000>,	/* L3 data port */
    			 <0x4843a000 0x4843a000 0x400000>,	/* L3 data port */
    			 <0x4844c000 0x4844c000 0x400000>,	/* L3 data port */
    			 <0x48450000 0x48450000 0x400000>,	/* L3 data port */
    			 <0x48454000 0x48454000 0x400000>;	/* L3 data port */
    
    		target-module@20000 {			/* 0x48420000, ap 47 02.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x20050 0x4>,
    			      <0x20054 0x4>,
    			      <0x20058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_UART7_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x20000 0x1000>;
    
    			uart7: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    			};
    		};
    
    		target-module@22000 {			/* 0x48422000, ap 49 0a.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x22050 0x4>,
    			      <0x22054 0x4>,
    			      <0x22058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_UART8_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x22000 0x1000>;
    
    			uart8: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    			};
    		};
    
    		target-module@24000 {			/* 0x48424000, ap 51 12.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x24050 0x4>,
    			      <0x24054 0x4>,
    			      <0x24058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_UART9_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x24000 0x1000>;
    
    			uart9: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    			};
    		};
    
    		target-module@2c000 {			/* 0x4842c000, ap 7 18.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2c000 0x1000>;
    		};
    
    		target-module@36000 {			/* 0x48436000, ap 17 06.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x36000 0x1000>;
    		};
    
    		target-module@3a000 {			/* 0x4843a000, ap 21 3e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3a000 0x1000>;
    		};
    
    		atl_tm: target-module@3c000 {		/* 0x4843c000, ap 23 08.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x3c000 0x4>;
    			reg-names = "rev";
    			clocks = <&atl_clkctrl DRA7_ATL_ATL_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3c000 0x1000>;
    
    			atl: atl@0 {
    				compatible = "ti,dra7-atl";
    				reg = <0x0 0x3ff>;
    				ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>,
    						     <&atl_clkin2_ck>, <&atl_clkin3_ck>;
    				clocks = <&atl_clkctrl DRA7_ATL_ATL_CLKCTRL 26>;
    				clock-names = "fck";
    				status = "disabled";
    			};
    		};
    
    		target-module@3e000 {			/* 0x4843e000, ap 25 30.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x3e000 0x4>,
    			      <0x3e004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_EPWMSS0_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3e000 0x1000>;
    
    			epwmss0: epwmss@0 {
    				compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
    				reg = <0x0 0x30>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				status = "disabled";
    				ranges = <0 0 0x1000>;
    
    				ecap0: pwm@100 {
    					compatible = "ti,dra746-ecap",
    						     "ti,am3352-ecap";
    					#pwm-cells = <3>;
    					reg = <0x100 0x80>;
    					clocks = <&l4_root_clk_div>;
    					clock-names = "fck";
    					status = "disabled";
    				};
    
    				ehrpwm0: pwm@200 {
    					compatible = "ti,dra746-ehrpwm",
    						     "ti,am3352-ehrpwm";
    					#pwm-cells = <3>;
    					reg = <0x200 0x80>;
    					clocks = <&ehrpwm0_tbclk>, <&l4_root_clk_div>;
    					clock-names = "tbclk", "fck";
    					status = "disabled";
    				};
    			};
    		};
    
    		target-module@40000 {			/* 0x48440000, ap 27 38.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x40000 0x4>,
    			      <0x40004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_EPWMSS1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x40000 0x1000>;
    
    			epwmss1: epwmss@0 {
    				compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
    				reg = <0x0 0x30>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				status = "disabled";
    				ranges = <0 0 0x1000>;
    
    				ecap1: pwm@100 {
    					compatible = "ti,dra746-ecap",
    						     "ti,am3352-ecap";
    					#pwm-cells = <3>;
    					reg = <0x100 0x80>;
    					clocks = <&l4_root_clk_div>;
    					clock-names = "fck";
    					status = "disabled";
    				};
    
    				ehrpwm1: pwm@200 {
    					compatible = "ti,dra746-ehrpwm",
    						     "ti,am3352-ehrpwm";
    					#pwm-cells = <3>;
    					reg = <0x200 0x80>;
    					clocks = <&ehrpwm1_tbclk>, <&l4_root_clk_div>;
    					clock-names = "tbclk", "fck";
    					status = "disabled";
    				};
    			};
    		};
    
    		target-module@42000 {			/* 0x48442000, ap 29 20.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x42000 0x4>,
    			      <0x42004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_EPWMSS2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x42000 0x1000>;
    
    			epwmss2: epwmss@0 {
    				compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
    				reg = <0x0 0x30>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				status = "disabled";
    				ranges = <0 0 0x1000>;
    
    				ecap2: pwm@100 {
    					compatible = "ti,dra746-ecap",
    						     "ti,am3352-ecap";
    					#pwm-cells = <3>;
    					reg = <0x100 0x80>;
    					clocks = <&l4_root_clk_div>;
    					clock-names = "fck";
    					status = "disabled";
    				};
    
    				ehrpwm2: pwm@200 {
    					compatible = "ti,dra746-ehrpwm",
    						     "ti,am3352-ehrpwm";
    					#pwm-cells = <3>;
    					reg = <0x200 0x80>;
    					clocks = <&ehrpwm2_tbclk>, <&l4_root_clk_div>;
    					clock-names = "tbclk", "fck";
    					status = "disabled";
    				};
    			};
    		};
    
    		target-module@46000 {			/* 0x48446000, ap 53 40.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x46000 0x1000>;
    		};
    
    		target-module@48000 {			/* 0x48448000, ap 55 48.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x48000 0x1000>;
    		};
    
    		target-module@4a000 {			/* 0x4844a000, ap 33 1a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4a000 0x1000>;
    		};
    
    		target-module@4c000 {			/* 0x4844c000, ap 45 1c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4c000 0x1000>;
    		};
    
    		target-module@50000 {			/* 0x48450000, ap 37 24.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x50000 0x1000>;
    		};
    
    		target-module@54000 {			/* 0x48454000, ap 41 2c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x54000 0x1000>;
    		};
    
    		target-module@58000 {			/* 0x48458000, ap 57 28.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x58000 0x2000>;
    		};
    
    		target-module@5b000 {			/* 0x4845b000, ap 59 46.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5b000 0x1000>;
    		};
    
    		target-module@5d000 {			/* 0x4845d000, ap 61 22.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5d000 0x1000>;
    		};
    
    		target-module@60000 {			/* 0x48460000, ap 9 0e.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x60000 0x4>,
    			      <0x60004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 0>,
    				 <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 24>,
    				 <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 28>;
    			clock-names = "fck", "ahclkx", "ahclkr";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x60000 0x2000>,
    				 <0x45800000 0x45800000 0x400000>;
    
    			mcasp1: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x45800000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 129 1>, <&edma_xbar 128 1>;
    				dma-names = "tx", "rx";
    				clocks = <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 0>,
    					 <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 24>,
    					 <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 28>;
    				clock-names = "fck", "ahclkx", "ahclkr";
    				status = "disabled";
    			};
    		};
    
    		target-module@64000 {			/* 0x48464000, ap 11 1e.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x64000 0x4>,
    			      <0x64004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP2_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP2_CLKCTRL 24>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP2_CLKCTRL 28>;
    			clock-names = "fck", "ahclkx", "ahclkr";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x64000 0x2000>,
    				 <0x45c00000 0x45c00000 0x400000>;
    
    			mcasp2: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x45c00000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 131 1>, <&edma_xbar 130 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP2_CLKCTRL 0>,
    					 <&ipu_clkctrl DRA7_IPU_MCASP1_CLKCTRL 24>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP2_CLKCTRL 28>;
    				clock-names = "fck", "ahclkx", "ahclkr";
    				status = "disabled";
    			};
    		};
    
    		target-module@68000 {			/* 0x48468000, ap 13 26.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x68000 0x4>,
    			      <0x68004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x68000 0x2000>,
    				 <0x46000000 0x46000000 0x400000>;
    
    			mcasp3: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x46000000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 133 1>, <&edma_xbar 132 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@6c000 {			/* 0x4846c000, ap 15 2e.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x6c000 0x4>,
    			      <0x6c004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP4_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP4_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6c000 0x2000>,
    				 <0x48436000 0x48436000 0x400000>;
    
    			mcasp4: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x48436000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 135 1>, <&edma_xbar 134 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP4_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP4_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@70000 {			/* 0x48470000, ap 19 36.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x70000 0x4>,
    			      <0x70004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP5_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP5_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x70000 0x2000>,
    				 <0x4843a000 0x4843a000 0x400000>;
    
    			mcasp5: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x4843a000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 137 1>, <&edma_xbar 136 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP5_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP5_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@74000 {			/* 0x48474000, ap 35 14.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x74000 0x4>,
    			      <0x74004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP6_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP6_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x74000 0x2000>,
    				 <0x4844c000 0x4844c000 0x400000>;
    
    			mcasp6: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x4844c000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 139 1>, <&edma_xbar 138 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP6_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP6_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@78000 {			/* 0x48478000, ap 39 0c.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x78000 0x4>,
    			      <0x78004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP7_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP7_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x78000 0x2000>,
    				 <0x48450000 0x48450000 0x400000>;
    
    			mcasp7: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x48450000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 141 1>, <&edma_xbar 140 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP7_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP7_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@7c000 {			/* 0x4847c000, ap 43 04.0 */
    			compatible = "ti,sysc-dra7-mcasp", "ti,sysc";
    			reg = <0x7c000 0x4>,
    			      <0x7c004 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): l4per_pwrdm, l4per2_clkdm */
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP8_CLKCTRL 0>,
    				 <&l4per2_clkctrl DRA7_L4PER2_MCASP8_CLKCTRL 24>;
    			clock-names = "fck", "ahclkx";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7c000 0x2000>,
    				 <0x48454000 0x48454000 0x400000>;
    
    			mcasp8: mcasp@0 {
    				compatible = "ti,dra7-mcasp-audio";
    				reg = <0x0 0x2000>,
    				      <0x48454000 0x1000>;	/* L3 data port */
    				reg-names = "mpu","dat";
    				interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "tx", "rx";
    				dmas = <&edma_xbar 143 1>, <&edma_xbar 142 1>;
    				dma-names = "tx", "rx";
    				clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP8_CLKCTRL 0>,
    					 <&l4per2_clkctrl DRA7_L4PER2_MCASP8_CLKCTRL 24>;
    				clock-names = "fck", "ahclkx";
    				status = "disabled";
    			};
    		};
    
    		target-module@80000 {			/* 0x48480000, ap 31 16.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x80020 0x4>;
    			reg-names = "rev";
    			clocks = <&l4per2_clkctrl DRA7_L4PER2_DCAN2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x80000 0x2000>;
    
    			dcan2: can@0 {
    				compatible = "ti,dra7-d_can";
    				reg = <0x0 0x2000>;
    				syscon-raminit = <&scm_conf 0x558 1>;
    				interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
    				clocks = <&sys_clkin1>;
    				status = "disabled";
    			};
    		};
    
    		target-module@84000 {			/* 0x48484000, ap 3 10.0 */
    			compatible = "ti,sysc-omap4-simple", "ti,sysc";
    			reg = <0x85200 0x4>,
    			      <0x85208 0x4>,
    			      <0x85204 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <0>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>;
    			ti,syss-mask = <1>;
    			clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x84000 0x4000>;
    			/*
    			 * Do not allow gating of cpsw clock as workaround
    			 * for errata i877. Keeping internal clock disabled
    			 * causes the device switching characteristics
    			 * to degrade over time and eventually fail to meet
    			 * the data manual delay time/skew specs.
    			 */
    			ti,no-idle;
    
    			mac_sw: switch@0 {
    				compatible = "ti,dra7-cpsw-switch","ti,cpsw-switch";
    				reg = <0x0 0x4000>;
    				ranges = <0 0 0x4000>;
    				clocks = <&gmac_main_clk>;
    				clock-names = "fck";
    				#address-cells = <1>;
    				#size-cells = <1>;
    				syscon = <&scm_conf>;
    				status = "disabled";
    
    				interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
    				interrupt-names = "rx_thresh", "rx", "tx", "misc";
    
    				ethernet-ports {
    					#address-cells = <1>;
    					#size-cells = <0>;
    
    					cpsw_port1: port@1 {
    						reg = <1>;
    						label = "port1";
    						mac-address = [ 00 00 00 00 00 00 ];
    						phys = <&phy_gmii_sel 1>;
    					};
    
    					cpsw_port2: port@2 {
    						reg = <2>;
    						label = "port2";
    						mac-address = [ 00 00 00 00 00 00 ];
    						phys = <&phy_gmii_sel 2>;
    					};
    				};
    
    				davinci_mdio_sw: mdio@1000 {
    					compatible = "ti,cpsw-mdio","ti,davinci_mdio";
    					clocks = <&gmac_main_clk>;
    					clock-names = "fck";
    					#address-cells = <1>;
    					#size-cells = <0>;
    					bus_freq = <1000000>;
    					reg = <0x1000 0x100>;
    				};
    
    				cpts {
    					clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 25>;
    					clock-names = "cpts";
    				};
    			};
    		};
    	};
    };
    
    &l4_per3 {						/* 0x48800000 */
    	compatible = "ti,dra7-l4-per3", "simple-pm-bus";
    	power-domains = <&prm_l4per>;
    	clocks = <&l4per3_clkctrl DRA7_L4PER3_L4_PER3_CLKCTRL 0>;
    	clock-names = "fck";
    	reg = <0x48800000 0x800>,
    	      <0x48800800 0x800>,
    	      <0x48801000 0x400>,
    	      <0x48801400 0x400>,
    	      <0x48801800 0x400>;
    	reg-names = "ap", "la", "ia0", "ia1", "ia2";
    	#address-cells = <1>;
    	#size-cells = <1>;
    	ranges = <0x00000000 0x48800000 0x200000>;	/* segment 0 */
    
    	segment@0 {					/* 0x48800000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
    			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
    			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
    			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
    			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
    			 <0x00020000 0x00020000 0x001000>,	/* ap 5 */
    			 <0x00021000 0x00021000 0x001000>,	/* ap 6 */
    			 <0x00022000 0x00022000 0x001000>,	/* ap 7 */
    			 <0x00023000 0x00023000 0x001000>,	/* ap 8 */
    			 <0x00024000 0x00024000 0x001000>,	/* ap 9 */
    			 <0x00025000 0x00025000 0x001000>,	/* ap 10 */
    			 <0x00026000 0x00026000 0x001000>,	/* ap 11 */
    			 <0x00027000 0x00027000 0x001000>,	/* ap 12 */
    			 <0x00028000 0x00028000 0x001000>,	/* ap 13 */
    			 <0x00029000 0x00029000 0x001000>,	/* ap 14 */
    			 <0x0002a000 0x0002a000 0x001000>,	/* ap 15 */
    			 <0x0002b000 0x0002b000 0x001000>,	/* ap 16 */
    			 <0x0002c000 0x0002c000 0x001000>,	/* ap 17 */
    			 <0x0002d000 0x0002d000 0x001000>,	/* ap 18 */
    			 <0x0002e000 0x0002e000 0x001000>,	/* ap 19 */
    			 <0x0002f000 0x0002f000 0x001000>,	/* ap 20 */
    			 <0x00170000 0x00170000 0x010000>,	/* ap 21 */
    			 <0x00180000 0x00180000 0x001000>,	/* ap 22 */
    			 <0x00190000 0x00190000 0x010000>,	/* ap 23 */
    			 <0x001a0000 0x001a0000 0x001000>,	/* ap 24 */
    			 <0x001b0000 0x001b0000 0x010000>,	/* ap 25 */
    			 <0x001c0000 0x001c0000 0x001000>,	/* ap 26 */
    			 <0x001d0000 0x001d0000 0x010000>,	/* ap 27 */
    			 <0x001e0000 0x001e0000 0x001000>,	/* ap 28 */
    			 <0x00038000 0x00038000 0x001000>,	/* ap 29 */
    			 <0x00039000 0x00039000 0x001000>,	/* ap 30 */
    			 <0x0005c000 0x0005c000 0x001000>,	/* ap 31 */
    			 <0x0005d000 0x0005d000 0x001000>,	/* ap 32 */
    			 <0x0003a000 0x0003a000 0x001000>,	/* ap 33 */
    			 <0x0003b000 0x0003b000 0x001000>,	/* ap 34 */
    			 <0x0003c000 0x0003c000 0x001000>,	/* ap 35 */
    			 <0x0003d000 0x0003d000 0x001000>,	/* ap 36 */
    			 <0x0003e000 0x0003e000 0x001000>,	/* ap 37 */
    			 <0x0003f000 0x0003f000 0x001000>,	/* ap 38 */
    			 <0x00040000 0x00040000 0x001000>,	/* ap 39 */
    			 <0x00041000 0x00041000 0x001000>,	/* ap 40 */
    			 <0x00042000 0x00042000 0x001000>,	/* ap 41 */
    			 <0x00043000 0x00043000 0x001000>,	/* ap 42 */
    			 <0x00044000 0x00044000 0x001000>,	/* ap 43 */
    			 <0x00045000 0x00045000 0x001000>,	/* ap 44 */
    			 <0x00046000 0x00046000 0x001000>,	/* ap 45 */
    			 <0x00047000 0x00047000 0x001000>,	/* ap 46 */
    			 <0x00048000 0x00048000 0x001000>,	/* ap 47 */
    			 <0x00049000 0x00049000 0x001000>,	/* ap 48 */
    			 <0x0004a000 0x0004a000 0x001000>,	/* ap 49 */
    			 <0x0004b000 0x0004b000 0x001000>,	/* ap 50 */
    			 <0x0004c000 0x0004c000 0x001000>,	/* ap 51 */
    			 <0x0004d000 0x0004d000 0x001000>,	/* ap 52 */
    			 <0x0004e000 0x0004e000 0x001000>,	/* ap 53 */
    			 <0x0004f000 0x0004f000 0x001000>,	/* ap 54 */
    			 <0x00050000 0x00050000 0x001000>,	/* ap 55 */
    			 <0x00051000 0x00051000 0x001000>,	/* ap 56 */
    			 <0x00052000 0x00052000 0x001000>,	/* ap 57 */
    			 <0x00053000 0x00053000 0x001000>,	/* ap 58 */
    			 <0x00054000 0x00054000 0x001000>,	/* ap 59 */
    			 <0x00055000 0x00055000 0x001000>,	/* ap 60 */
    			 <0x00056000 0x00056000 0x001000>,	/* ap 61 */
    			 <0x00057000 0x00057000 0x001000>,	/* ap 62 */
    			 <0x00058000 0x00058000 0x001000>,	/* ap 63 */
    			 <0x00059000 0x00059000 0x001000>,	/* ap 64 */
    			 <0x0005a000 0x0005a000 0x001000>,	/* ap 65 */
    			 <0x0005b000 0x0005b000 0x001000>,	/* ap 66 */
    			 <0x00064000 0x00064000 0x001000>,	/* ap 67 */
    			 <0x00065000 0x00065000 0x001000>,	/* ap 68 */
    			 <0x0005e000 0x0005e000 0x001000>,	/* ap 69 */
    			 <0x0005f000 0x0005f000 0x001000>,	/* ap 70 */
    			 <0x00060000 0x00060000 0x001000>,	/* ap 71 */
    			 <0x00061000 0x00061000 0x001000>,	/* ap 72 */
    			 <0x00062000 0x00062000 0x001000>,	/* ap 73 */
    			 <0x00063000 0x00063000 0x001000>,	/* ap 74 */
    			 <0x00140000 0x00140000 0x020000>,	/* ap 75 */
    			 <0x00160000 0x00160000 0x001000>,	/* ap 76 */
    			 <0x00016000 0x00016000 0x001000>,	/* ap 77 */
    			 <0x00017000 0x00017000 0x001000>,	/* ap 78 */
    			 <0x000c0000 0x000c0000 0x020000>,	/* ap 79 */
    			 <0x000e0000 0x000e0000 0x001000>,	/* ap 80 */
    			 <0x00004000 0x00004000 0x001000>,	/* ap 81 */
    			 <0x00005000 0x00005000 0x001000>,	/* ap 82 */
    			 <0x00080000 0x00080000 0x020000>,	/* ap 83 */
    			 <0x000a0000 0x000a0000 0x001000>,	/* ap 84 */
    			 <0x00100000 0x00100000 0x020000>,	/* ap 85 */
    			 <0x00120000 0x00120000 0x001000>,	/* ap 86 */
    			 <0x00010000 0x00010000 0x001000>,	/* ap 87 */
    			 <0x00011000 0x00011000 0x001000>,	/* ap 88 */
    			 <0x0000a000 0x0000a000 0x001000>,	/* ap 89 */
    			 <0x0000b000 0x0000b000 0x001000>,	/* ap 90 */
    			 <0x0001c000 0x0001c000 0x001000>,	/* ap 91 */
    			 <0x0001d000 0x0001d000 0x001000>,	/* ap 92 */
    			 <0x0001e000 0x0001e000 0x001000>,	/* ap 93 */
    			 <0x0001f000 0x0001f000 0x001000>,	/* ap 94 */
    			 <0x00002000 0x00002000 0x001000>,	/* ap 95 */
    			 <0x00003000 0x00003000 0x001000>;	/* ap 96 */
    
    		target-module@2000 {			/* 0x48802000, ap 95 7c.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x2000 0x4>,
    			      <0x2010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX13_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2000 0x1000>;
    
    			mailbox13: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@4000 {			/* 0x48804000, ap 81 20.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4000 0x1000>;
    		};
    
    		target-module@a000 {			/* 0x4880a000, ap 89 18.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xa000 0x1000>;
    		};
    
    		target-module@10000 {			/* 0x48810000, ap 87 28.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x10000 0x1000>;
    		};
    
    		target-module@16000 {			/* 0x48816000, ap 77 1e.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x16000 0x1000>;
    		};
    
    		target-module@1c000 {			/* 0x4881c000, ap 91 1c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1c000 0x1000>;
    		};
    
    		target-module@1e000 {			/* 0x4881e000, ap 93 2c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1e000 0x1000>;
    		};
    
    		target-module@20000 {			/* 0x48820000, ap 5 08.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x20000 0x4>,
    			      <0x20010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x20000 0x1000>;
    
    			timer5: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target-module@22000 {			/* 0x48822000, ap 7 24.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x22000 0x4>,
    			      <0x22010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x22000 0x1000>;
    
    			timer6: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target_module_timer7: target-module@24000 {			/* 0x48824000, ap 9 26.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x24000 0x4>,
    			      <0x24010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_TIMER7_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x24000 0x1000>;
    
    			timer7: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&ipu_clkctrl DRA7_IPU_TIMER7_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target_module_timer8: target-module@26000 {			/* 0x48826000, ap 11 0c.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x26000 0x4>,
    			      <0x26010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): ipu_pwrdm, ipu_clkdm */
    			clocks = <&ipu_clkctrl DRA7_IPU_TIMER8_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x26000 0x1000>;
    
    			timer8: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&ipu_clkctrl DRA7_IPU_TIMER8_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		target-module@28000 {			/* 0x48828000, ap 13 16.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x28000 0x4>,
    			      <0x28010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per3_clkdm */
    			clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER13_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x28000 0x1000>;
    
    			timer13: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER13_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-pwm;
    			};
    		};
    
    		target-module@2a000 {			/* 0x4882a000, ap 15 10.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x2a000 0x4>,
    			      <0x2a010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per3_clkdm */
    			clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER14_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2a000 0x1000>;
    
    			timer14: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER14_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-pwm;
    			};
    		};
    		timer15_target: target-module@2c000 {	/* 0x4882c000, ap 17 02.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x2c000 0x4>,
    			      <0x2c010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per3_clkdm */
    			clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2c000 0x1000>;
    
    			timer15: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-pwm;
    			};
    		};
    
    		timer16_target: target-module@2e000 {	/* 0x4882e000, ap 19 14.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x2e000 0x4>,
    			      <0x2e010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l4per_pwrdm, l4per3_clkdm */
    			clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2e000 0x1000>;
    
    			timer16: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 24>, <&timer_sys_clk_div>;
    				clock-names = "fck", "timer_sys_ck";
    				interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-pwm;
    			};
    		};
    
    		rtctarget: target-module@38000 {			/* 0x48838000, ap 29 12.0 */
    			compatible = "ti,sysc-omap4-simple", "ti,sysc";
    			reg = <0x38074 0x4>,
    			      <0x38078 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): rtc_pwrdm, rtc_clkdm */
    			clocks = <&rtc_clkctrl DRA7_RTC_RTCSS_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x38000 0x1000>;
    
    			rtc: rtc@0 {
    				compatible = "ti,am3352-rtc";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
    				clocks = <&sys_32k_ck>;
    			};
    		};
    
    		target-module@3a000 {			/* 0x4883a000, ap 33 3e.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x3a000 0x4>,
    			      <0x3a010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3a000 0x1000>;
    
    			mailbox2: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@3c000 {			/* 0x4883c000, ap 35 3a.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x3c000 0x4>,
    			      <0x3c010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3c000 0x1000>;
    
    			mailbox3: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@3e000 {			/* 0x4883e000, ap 37 46.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x3e000 0x4>,
    			      <0x3e010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX4_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3e000 0x1000>;
    
    			mailbox4: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@40000 {			/* 0x48840000, ap 39 64.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x40000 0x4>,
    			      <0x40010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX5_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x40000 0x1000>;
    
    			mailbox5: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@42000 {			/* 0x48842000, ap 41 4e.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x42000 0x4>,
    			      <0x42010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX6_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x42000 0x1000>;
    
    			mailbox6: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@44000 {			/* 0x48844000, ap 43 42.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x44000 0x4>,
    			      <0x44010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX7_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x44000 0x1000>;
    
    			mailbox7: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@46000 {			/* 0x48846000, ap 45 48.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x46000 0x4>,
    			      <0x46010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX8_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x46000 0x1000>;
    
    			mailbox8: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@48000 {			/* 0x48848000, ap 47 36.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x48000 0x1000>;
    		};
    
    		target-module@4a000 {			/* 0x4884a000, ap 49 38.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4a000 0x1000>;
    		};
    
    		target-module@4c000 {			/* 0x4884c000, ap 51 44.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4c000 0x1000>;
    		};
    
    		target-module@4e000 {			/* 0x4884e000, ap 53 4c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4e000 0x1000>;
    		};
    
    		target-module@50000 {			/* 0x48850000, ap 55 40.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x50000 0x1000>;
    		};
    
    		target-module@52000 {			/* 0x48852000, ap 57 54.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x52000 0x1000>;
    		};
    
    		target-module@54000 {			/* 0x48854000, ap 59 1a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x54000 0x1000>;
    		};
    
    		target-module@56000 {			/* 0x48856000, ap 61 22.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x56000 0x1000>;
    		};
    
    		target-module@58000 {			/* 0x48858000, ap 63 2a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x58000 0x1000>;
    		};
    
    		target-module@5a000 {			/* 0x4885a000, ap 65 5c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5a000 0x1000>;
    		};
    
    		target-module@5c000 {			/* 0x4885c000, ap 31 32.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5c000 0x1000>;
    		};
    
    		target-module@5e000 {			/* 0x4885e000, ap 69 6c.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x5e000 0x4>,
    			      <0x5e010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX9_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5e000 0x1000>;
    
    			mailbox9: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@60000 {			/* 0x48860000, ap 71 4a.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x60000 0x4>,
    			      <0x60010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX10_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x60000 0x1000>;
    
    			mailbox10: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@62000 {			/* 0x48862000, ap 73 74.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x62000 0x4>,
    			      <0x62010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX11_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x62000 0x1000>;
    
    			mailbox11: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 275 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@64000 {			/* 0x48864000, ap 67 52.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x64000 0x4>,
    			      <0x64010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			/* Domains (P, C): core_pwrdm, l4cfg_clkdm */
    			clocks = <&l4cfg_clkctrl DRA7_L4CFG_MAILBOX12_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x64000 0x1000>;
    
    			mailbox12: mailbox@0 {
    				compatible = "ti,omap4-mailbox";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
    					     <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>;
    				#mbox-cells = <1>;
    				ti,mbox-num-users = <4>;
    				ti,mbox-num-fifos = <12>;
    				status = "disabled";
    			};
    		};
    
    		target-module@80000 {			/* 0x48880000, ap 83 0e.1 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x80000 0x4>,
    			      <0x80010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x80000 0x20000>;
    
    			omap_dwc3_1: omap_dwc3_1@0 {
    				compatible = "ti,dwc3";
    				reg = <0x0 0x10000>;
    				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				utmi-mode = <2>;
    				ranges = <0 0 0x20000>;
    
    				usb1: usb@10000 {
    					compatible = "snps,dwc3";
    					reg = <0x10000 0x17000>;
    					interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
    					interrupt-names = "peripheral",
    							  "host",
    							  "otg";
    					phys = <&usb2_phy1>, <&usb3_phy1>;
    					phy-names = "usb2-phy", "usb3-phy";
    					maximum-speed = "super-speed";
    					dr_mode = "otg";
    					snps,dis_u3_susphy_quirk;
    					snps,dis_u2_susphy_quirk;
    				};
    			};
    		};
    
    		target-module@c0000 {			/* 0x488c0000, ap 79 06.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xc0000 0x4>,
    			      <0xc0010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xc0000 0x20000>;
    
    			omap_dwc3_2: omap_dwc3_2@0 {
    				compatible = "ti,dwc3";
    				reg = <0x0 0x10000>;
    				interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				utmi-mode = <2>;
    				ranges = <0 0 0x20000>;
    
    				usb2: usb@10000 {
    					compatible = "snps,dwc3";
    					reg = <0x10000 0x17000>;
    					interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
    					interrupt-names = "peripheral",
    							  "host",
    							  "otg";
    					phys = <&usb2_phy2>;
    					phy-names = "usb2-phy";
    					maximum-speed = "high-speed";
    					dr_mode = "otg";
    					snps,dis_u3_susphy_quirk;
    					snps,dis_u2_susphy_quirk;
    					snps,dis_metastability_quirk;
    				};
    			};
    		};
    
    		usb3_tm: target-module@100000 {		/* 0x48900000, ap 85 04.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x100000 0x4>,
    			      <0x100010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): l3init_pwrdm, l3init_clkdm */
    			clocks = <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x100000 0x20000>;
    
    			omap_dwc3_3: omap_dwc3_3@0 {
    				compatible = "ti,dwc3";
    				reg = <0x0 0x10000>;
    				interrupts = <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				utmi-mode = <2>;
    				ranges = <0 0 0x20000>;
    				status = "disabled";
    
    				usb3: usb@10000 {
    					compatible = "snps,dwc3";
    					reg = <0x10000 0x17000>;
    					interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
    						     <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>;
    					interrupt-names = "peripheral",
    							  "host",
    							  "otg";
    					maximum-speed = "high-speed";
    					dr_mode = "otg";
    					snps,dis_u3_susphy_quirk;
    					snps,dis_u2_susphy_quirk;
    				};
    			};
    		};
    
    		target-module@170000 {			/* 0x48970000, ap 21 0a.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x170010 0x4>;
    			reg-names = "sysc";
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			clocks = <&cam_clkctrl DRA7_CAM_VIP1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x170000 0x10000>;
    			status = "disabled";
    		};
    
    		target-module@190000 {			/* 0x48990000, ap 23 2e.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x190010 0x4>;
    			reg-names = "sysc";
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			clocks = <&cam_clkctrl DRA7_CAM_VIP2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x190000 0x10000>;
    			status = "disabled";
    		};
    
    		target-module@1b0000 {			/* 0x489b0000, ap 25 34.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x1b0000 0x4>,
    			      <0x1b0010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			clocks = <&cam_clkctrl DRA7_CAM_VIP3_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1b0000 0x10000>;
    			status = "disabled";
    		};
    
    		target-module@1d0010 {			/* 0x489d0000, ap 27 30.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x1d0010 0x4>;
    			reg-names = "sysc";
    			ti,sysc-midle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>;
    			power-domains = <&prm_vpe>;
    			clocks = <&vpe_clkctrl DRA7_VPE_VPE_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1d0000 0x10000>;
    
    			vpe: vpe@0 {
    				compatible = "ti,dra7-vpe";
    				reg = <0x0000 0x120>,
    				      <0x0700 0x80>,
    				      <0x5700 0x18>,
    				      <0xd000 0x400>;
    				reg-names = "vpe_top",
    					    "sc",
    					    "csc",
    					    "vpdma";
    				interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    	};
    };
    
    &l4_wkup {						/* 0x4ae00000 */
    	compatible = "ti,dra7-l4-wkup", "simple-pm-bus";
    	power-domains = <&prm_wkupaon>;
    	clocks = <&wkupaon_clkctrl DRA7_WKUPAON_L4_WKUP_CLKCTRL 0>;
    	clock-names = "fck";
    	reg = <0x4ae00000 0x800>,
    	      <0x4ae00800 0x800>,
    	      <0x4ae01000 0x1000>;
    	reg-names = "ap", "la", "ia0";
    	#address-cells = <1>;
    	#size-cells = <1>;
    	ranges = <0x00000000 0x4ae00000 0x010000>,	/* segment 0 */
    		 <0x00010000 0x4ae10000 0x010000>,	/* segment 1 */
    		 <0x00020000 0x4ae20000 0x010000>,	/* segment 2 */
    		 <0x00030000 0x4ae30000 0x010000>;	/* segment 3 */
    
    	segment@0 {					/* 0x4ae00000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
    			 <0x00001000 0x00001000 0x001000>,	/* ap 1 */
    			 <0x00000800 0x00000800 0x000800>,	/* ap 2 */
    			 <0x00006000 0x00006000 0x002000>,	/* ap 3 */
    			 <0x00008000 0x00008000 0x001000>,	/* ap 4 */
    			 <0x00004000 0x00004000 0x001000>,	/* ap 15 */
    			 <0x00005000 0x00005000 0x001000>,	/* ap 16 */
    			 <0x0000c000 0x0000c000 0x001000>,	/* ap 17 */
    			 <0x0000d000 0x0000d000 0x001000>;	/* ap 18 */
    
    		target-module@4000 {			/* 0x4ae04000, ap 15 40.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x4000 0x4>,
    			      <0x4010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_COUNTER_32K_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4000 0x1000>;
    
    			counter32k: counter@0 {
    				compatible = "ti,omap-counter32k";
    				reg = <0x0 0x40>;
    			};
    		};
    
    		target-module@6000 {			/* 0x4ae06000, ap 3 10.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0x6000 0x4>;
    			reg-names = "rev";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x6000 0x2000>;
    
    			prm: prm@0 {
    				compatible = "ti,dra7-prm", "simple-bus";
    				reg = <0 0x3000>;
    				interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
    				#address-cells = <1>;
    				#size-cells = <1>;
    				ranges = <0 0 0x3000>;
    
    				prm_clocks: clocks {
    					#address-cells = <1>;
    					#size-cells = <0>;
    				};
    
    				prm_clockdomains: clockdomains {
    				};
    			};
    		};
    
    		target-module@c000 {			/* 0x4ae0c000, ap 17 50.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xc000 0x4>;
    			reg-names = "rev";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xc000 0x1000>;
    
    			scm_wkup: scm_conf@0 {
    				compatible = "syscon";
    				reg = <0 0x1000>;
    			};
    		};
    	};
    
    	segment@10000 {					/* 0x4ae10000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00000000 0x00010000 0x001000>,	/* ap 5 */
    			 <0x00001000 0x00011000 0x001000>,	/* ap 6 */
    			 <0x00004000 0x00014000 0x001000>,	/* ap 7 */
    			 <0x00005000 0x00015000 0x001000>,	/* ap 8 */
    			 <0x00008000 0x00018000 0x001000>,	/* ap 9 */
    			 <0x00009000 0x00019000 0x001000>,	/* ap 10 */
    			 <0x0000c000 0x0001c000 0x001000>,	/* ap 11 */
    			 <0x0000d000 0x0001d000 0x001000>;	/* ap 12 */
    
    		target-module@0 {			/* 0x4ae10000, ap 5 20.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x0 0x4>,
    			      <0x10 0x4>,
    			      <0x114 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_GPIO1_CLKCTRL 0>,
    				 <&wkupaon_clkctrl DRA7_WKUPAON_GPIO1_CLKCTRL 8>;
    			clock-names = "fck", "dbclk";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x0 0x1000>;
    
    			gpio1: gpio@0 {
    				compatible = "ti,omap4-gpio";
    				reg = <0x0 0x200>;
    				interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
    				gpio-controller;
    				#gpio-cells = <2>;
    				interrupt-controller;
    				#interrupt-cells = <2>;
    			};
    		};
    
    		target-module@4000 {			/* 0x4ae14000, ap 7 28.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0x4000 0x4>,
    			      <0x4010 0x4>,
    			      <0x4014 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
    					 SYSC_OMAP2_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_WD_TIMER2_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x4000 0x1000>;
    
    			wdt2: wdt@0 {
    				compatible = "ti,omap3-wdt";
    				reg = <0x0 0x80>;
    				interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
    			};
    		};
    
    		timer1_target: target-module@8000 {	/* 0x4ae18000, ap 9 30.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x8000 0x4>,
    			      <0x8010 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_TIMER1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x8000 0x1000>;
    
    			timer1: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				clocks = <&wkupaon_clkctrl DRA7_WKUPAON_TIMER1_CLKCTRL 24>;
    				clock-names = "fck";
    				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-alwon;
    			};
    		};
    
    		target-module@c000 {			/* 0x4ae1c000, ap 11 38.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xc000 0x1000>;
    		};
    	};
    
    	segment@20000 {					/* 0x4ae20000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x00006000 0x00026000 0x001000>,	/* ap 13 */
    			 <0x0000a000 0x0002a000 0x001000>,	/* ap 14 */
    			 <0x00000000 0x00020000 0x001000>,	/* ap 19 */
    			 <0x00001000 0x00021000 0x001000>,	/* ap 20 */
    			 <0x00002000 0x00022000 0x001000>,	/* ap 21 */
    			 <0x00003000 0x00023000 0x001000>,	/* ap 22 */
    			 <0x00007000 0x00027000 0x000400>,	/* ap 23 */
    			 <0x00008000 0x00028000 0x000800>,	/* ap 24 */
    			 <0x00009000 0x00029000 0x000100>,	/* ap 25 */
    			 <0x00008800 0x00028800 0x000200>,	/* ap 26 */
    			 <0x00008a00 0x00028a00 0x000100>,	/* ap 27 */
    			 <0x0000b000 0x0002b000 0x001000>,	/* ap 28 */
    			 <0x0000c000 0x0002c000 0x001000>,	/* ap 29 */
    			 <0x0000f000 0x0002f000 0x001000>;	/* ap 32 */
    
    		target-module@0 {			/* 0x4ae20000, ap 19 08.0 */
    			compatible = "ti,sysc-omap4-timer", "ti,sysc";
    			reg = <0x0 0x4>,
    			      <0x10 0x4>;
    			reg-names = "rev", "sysc";
    			ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
    					 SYSC_OMAP4_SOFTRESET)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_TIMER12_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x0 0x1000>;
    
    			timer12: timer@0 {
    				compatible = "ti,omap5430-timer";
    				reg = <0x0 0x80>;
    				interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
    				ti,timer-alwon;
    				ti,timer-secure;
    			};
    		};
    
    		target-module@2000 {			/* 0x4ae22000, ap 21 18.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x2000 0x1000>;
    		};
    
    		target-module@6000 {			/* 0x4ae26000, ap 13 48.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x00000000 0x00006000 0x00001000>,
    				 <0x00001000 0x00007000 0x00000400>,
    				 <0x00002000 0x00008000 0x00000800>,
    				 <0x00002800 0x00008800 0x00000200>,
    				 <0x00002a00 0x00008a00 0x00000100>,
    				 <0x00003000 0x00009000 0x00000100>;
    		};
    
    		target-module@b000 {			/* 0x4ae2b000, ap 28 02.0 */
    			compatible = "ti,sysc-omap2", "ti,sysc";
    			reg = <0xb050 0x4>,
    			      <0xb054 0x4>,
    			      <0xb058 0x4>;
    			reg-names = "rev", "sysc", "syss";
    			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
    					 SYSC_OMAP2_SOFTRESET |
    					 SYSC_OMAP2_AUTOIDLE)>;
    			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
    					<SYSC_IDLE_NO>,
    					<SYSC_IDLE_SMART>,
    					<SYSC_IDLE_SMART_WKUP>;
    			ti,syss-mask = <1>;
    			/* Domains (P, C): wkupaon_pwrdm, wkupaon_clkdm */
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_UART10_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xb000 0x1000>;
    
    			uart10: serial@0 {
    				compatible = "ti,dra742-uart";
    				reg = <0x0 0x100>;
    				interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
    				clock-frequency = <48000000>;
    				status = "disabled";
    			};
    		};
    
    		target-module@f000 {			/* 0x4ae2f000, ap 32 58.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xf000 0x1000>;
    		};
    	};
    
    	segment@30000 {					/* 0x4ae30000 */
    		compatible = "simple-pm-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x0000c000 0x0003c000 0x002000>,	/* ap 30 */
    			 <0x0000e000 0x0003e000 0x001000>,	/* ap 31 */
    			 <0x00000000 0x00030000 0x001000>,	/* ap 33 */
    			 <0x00001000 0x00031000 0x001000>,	/* ap 34 */
    			 <0x00002000 0x00032000 0x001000>,	/* ap 35 */
    			 <0x00003000 0x00033000 0x001000>,	/* ap 36 */
    			 <0x00004000 0x00034000 0x001000>,	/* ap 37 */
    			 <0x00005000 0x00035000 0x001000>,	/* ap 38 */
    			 <0x00006000 0x00036000 0x001000>,	/* ap 39 */
    			 <0x00007000 0x00037000 0x001000>,	/* ap 40 */
    			 <0x00008000 0x00038000 0x001000>,	/* ap 41 */
    			 <0x00009000 0x00039000 0x001000>,	/* ap 42 */
    			 <0x0000a000 0x0003a000 0x001000>;	/* ap 43 */
    
    		target-module@1000 {			/* 0x4ae31000, ap 34 60.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x1000 0x1000>;
    		};
    
    		target-module@3000 {			/* 0x4ae33000, ap 36 0a.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x3000 0x1000>;
    		};
    
    		target-module@5000 {			/* 0x4ae35000, ap 38 0c.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x5000 0x1000>;
    		};
    
    		target-module@7000 {			/* 0x4ae37000, ap 40 68.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x7000 0x1000>;
    		};
    
    		target-module@9000 {			/* 0x4ae39000, ap 42 70.0 */
    			compatible = "ti,sysc";
    			status = "disabled";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0x9000 0x1000>;
    		};
    
    		target-module@c000 {			/* 0x4ae3c000, ap 30 04.0 */
    			compatible = "ti,sysc-omap4", "ti,sysc";
    			reg = <0xc020 0x4>;
    			reg-names = "rev";
    			clocks = <&wkupaon_clkctrl DRA7_WKUPAON_DCAN1_CLKCTRL 0>;
    			clock-names = "fck";
    			#address-cells = <1>;
    			#size-cells = <1>;
    			ranges = <0x0 0xc000 0x2000>;
    
    			dcan1: can@0 {
    				compatible = "ti,dra7-d_can";
    				reg = <0x0 0x2000>;
    				syscon-raminit = <&scm_conf 0x558 0>;
    				interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
    				clocks = <&wkupaon_clkctrl DRA7_WKUPAON_DCAN1_CLKCTRL 24>;
    				status = "disabled";
    			};
    		};
    	};
    };
    

    This is the updated arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi

    // SPDX-License-Identifier: GPL-2.0-only
    /*
     * Copyright (C) 2014-2016 Texas Instruments Incorporated - https://www.ti.com/
     */
    /dts-v1/;
    
    #include "am5728.dtsi"
    #include "am57xx-commercial-grade.dtsi"
    #include "dra74x-mmc-iodelay.dtsi"
    #include "dra74-ipu-dsp-common.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc1 = &tps659038_rtc;
    		rtc2 = &rtc;
    		//display0 = &hdmi0;
    		display0 = "/display";
    	};
    
    	gpio-keys {
                    compatible = "gpio-keys";
    
                    button-user1 {
                            gpios = <&gpio1 14 0>;
                            label = "HOOK_INT";
    			linux,code = <103>;
                    };
    
                    button-user2 {
    			gpios = <&gpio2 6 1>;
                            label = "KEYL_INT";
    			linux,code = <102>;
                    };
    
                    button-user3 {
    			gpios = <&gpio5 1 0>;
                            label = "HEADSET_INT";
    			linux,code = <108>;
                    };
    
            };
    		
    	chosen {
    		stdout-path = &uart3;
    	};
    
    	memory@0 {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    
    	main_12v0: fixedregulator-main_12v0 {
    		/* main supply */
    		compatible = "regulator-fixed";
    		regulator-name = "main_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	evm_5v0: fixedregulator-evm_5v0 {
    		/* Output of TPS54531D */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&main_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		ipu2_memory_region: ipu2-memory@95800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x95800000 0x0 0x3800000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp1_memory_region: dsp1-memory@99000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x99000000 0x0 0x4000000>;
    			reusable;
    			status = "okay";
    		};
    
    		ipu1_memory_region: ipu1-memory@9d000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9d000000 0x0 0x2000000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp2_memory_region: dsp2-memory@9f000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9f000000 0x0 0x800000>;
    			reusable;
    			status = "okay";
    		};
    	};
    
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	/*leds {
    		compatible = "gpio-leds";
    
    		led0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio7 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio7 15 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "disk-activity";
    			default-state = "off";
    		};
    	};*/
    
    	gpio_fan: gpio_fan {
    		/* Based on 5v 500mA AFB02505HHB */
    		compatible = "gpio-fan";
    		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
    		gpio-fan,speed-map = <0     0>,
    				     <13000 1>;
    		#cooling-cells = <2>;
    	};
    
    	hdmi0: connector {
    		compatible = "hdmi-connector";
    		label = "hdmi";
    
    		type = "a";
    
    		port {
    			hdmi_connector_in: endpoint {
    				remote-endpoint = <&tpd12s015_out>;
    			};
    		};
    	};
    	
    	
    	
    	clk_ov5640_fixed: clk_ov5640_fixed {
                            compatible = "fixed-clock";
                            #clock-cells = <0>;
                            clock-frequency = <24000000>;
                    };
    	clk_ov5640: clk_ov5640 {
                            compatible = "gpio-gate-clock";
                            #clock-cells = <0>;
                            clocks = <&clk_ov5640_fixed>;
                            enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
                    };
    
    	
    	tpd12s015: encoder {
    		compatible = "ti,tpd12s015";
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				tpd12s015_in: endpoint {
    					remote-endpoint = <&hdmi_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    
    				tpd12s015_out: endpoint {
    					remote-endpoint = <&hdmi_connector_in>;
    				};
    			};
    		};
    	};
    
    	lcd0: display {
                  compatible = "bolymin,btz070f-chc" ,"panel-dpi";
                  //compatible = "osddisplays,osd070t1718-19ts" ,"panel-dpi";
                  backlight = <&lcd_bl>;
                  enable-gpios = <&gpio5 12 GPIO_ACTIVE_HIGH>;
                  attr-gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>; //LCD GPIO [AKSHI] changed in VIC2
                  label = "lcd";
    
    
                  port {
                       lcd_in: endpoint {
                               remote-endpoint = <&dpi_out>;
                               };
                  };
             };
    
             lcd_bl: backlight {
                     compatible = "pwm-backlight";
                     brightness-levels = <0 32 64 96 128 160 192 255>;
                     default-brightness-level = <8>;
                     pwms = <&ehrpwm0 0 50000 0>;
             };
    
    	sound0: sound0 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "BeagleBoard-X15";
    		simple-audio-card,widgets =
    			"Line", "Line Out",
    			"Line", "Line In";
    		simple-audio-card,routing =
    			"Line Out",	"LLOUT",
    			"Line Out",	"RLOUT",
    			"MIC2L",	"Line In",
    			"MIC2R",	"Line In";
    		simple-audio-card,format = "dsp_b";
    		simple-audio-card,bitclock-master = <&sound0_master>;
    		simple-audio-card,frame-master = <&sound0_master>;
    		simple-audio-card,bitclock-inversion;
    
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp3>;
    		};
    
    		sound0_master: simple-audio-card,codec {
    			sound-dai = <&tlv320aic3104>;
    			clocks = <&clkout2_clk>;
    		};
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,palmas-override-powerhold;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			vbus-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
    		};
    
    	};
    
    	tmp102: tmp102@48 {
    		compatible = "ti,tmp102";
    		reg = <0x48>;
    		interrupt-parent = <&gpio7>;
    		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
    		#thermal-sensor-cells = <1>;
    	};
    
    	tlv320aic3104: tlv320aic3104@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3104";
    		reg = <0x18>;
    		assigned-clocks = <&clkoutmux2_clk_mux>;
    		assigned-clock-parents = <&sys_clk2_dclk_div>;
    
    		status = "okay";
    		adc-settle-ms = <40>;
    
    		AVDD-supply = <&vdd_3v3>;
    		IOVDD-supply = <&vdd_3v3>;
    		DRVDD-supply = <&vdd_3v3>;
    		DVDD-supply = <&aic_dvdd>;
    	};
    
    	eeprom: eeprom@50 {
    		compatible = "atmel,24c32";
    		reg = <0x50>;
    	};
    };
    
    &vin3a {
    	
    	ti,vip-instance = <1>;       // VIP2 = instance 1
    	ti,vip-port = <0>;           // Port A
    	ti,vip-channels = <0>;       // Channel 0
    	status = "okay";
            vin3a_ep: endpoint {
                    remote-endpoint = <&cam>;
                    slave-mode;
            };
    };
    
    &vip2 {
            status = "okay";
    };
    
    &i2c3 {
            status = "okay";
            clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    		interrupt-names = "irq", "wakeup";
    	};
    
    
            ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clock-names = "xclk";
                    clocks = <&clk_ov5640>;
    		pinctrl-names = "default";
                    pinctrl-0 = <&camera_gpio>;
    		powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <2>;
                                    hsync-active = <1>;
                                    vsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };
    
    };
    
    &ehrpwm0 {
            status = "okay";
    };
    
    &epwmss0 {
            status = "okay";
    };
    
    
    /* [00] ::  Added Touch panel entries */
    &i2c5 {
            status = "okay";
            clock-frequency = <400000>;
    
            polytouch: edt-ft5x06@38 {
                    compatible = "edt,edt-ft5x06";
                    reg = <0x38>;
                    attb-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
                    interrupt-parent = <&gpio5>;
                    interrupts = <9 0>;
            //reset-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
            //wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
    /* AKSHI*/
                    threshold = <20>;
                    touchscreen-size-x = <1024>;
                    touchscreen-size-y = <600>;
                    wakeup-source;
        };
    
    };
    
    
    &gpio7_target {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &cpu0 {
    	vdd-supply = <&smps12_reg>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &davinci_mdio_sw {
    	phy0: ethernet-phy@1 {
    		reg = <1>;
    	};
    
    	phy1: ethernet-phy@2 {
    		reg = <2>;
    	};
    };
    
    &mac_sw {
    	status = "okay";
    };
    
    &cpsw_port1 {
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <1>;
    };
    
    &cpsw_port2 {
    	phy-handle = <&phy1>;
    	phy-mode = "rgmii-rxid";
    	ti,dual-emac-pvid = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc1_pins_default>;
    
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
    	no-1-8-v;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc2_pins_default>;
    
    	vmmc-supply = <&vdd_3v3>;
    	vqmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	non-removable;
    	no-1-8-v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "peripheral";
    };
    
    &cpu_trips {
    	cpu_alert1: cpu_alert1 {
    		temperature = <50000>; /* millicelsius */
    		hysteresis = <2000>; /* millicelsius */
    		type = "active";
    	};
    };
    
    &cpu_cooling_maps {
    	map1 {
    		trip = <&cpu_alert1>;
    		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    	};
    };
    
    &thermal_zones {
    	board_thermal: board_thermal {
    		polling-delay-passive = <1250>; /* milliseconds */
    		polling-delay = <1500>; /* milliseconds */
    
    				/* sensor       ID */
    		thermal-sensors = <&tmp102     0>;
    
    		board_trips: trips {
    			board_alert0: board_alert {
    				temperature = <40000>; /* millicelsius */
    				hysteresis = <2000>; /* millicelsius */
    				type = "active";
    			};
    
    			board_crit: board_crit {
    				temperature = <105000>; /* millicelsius */
    				hysteresis = <0>; /* millicelsius */
    				type = "critical";
    			};
    		};
    
    		board_cooling_maps: cooling-maps {
    			map0 {
    				trip = <&board_alert0>;
    				cooling-device =
    				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    			};
    		};
           };
    };
    
    &dss {
            status = "okay";
            vdda_video-supply = <&ldoln_reg>;
            ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    port {
                            reg = <0>;
                            dpi_out: endpoint {
                                    data-lines = <24>;
                                    remote-endpoint = <&lcd_in>;
                            };
                    };
            };
    };
    
    
    &hdmi {
    	status = "okay";
    	vdda-supply = <&ldo4_reg>;
    
    	port {
    		hdmi_out: endpoint {
    			remote-endpoint = <&tpd12s015_in>;
    		};
    	};
    };
    
    &pcie1_rc {
    	status = "okay";
    	gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
    };
    
    &mcasp3 {
    	#sound-dai-cells = <0>;
    	assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
    	assigned-clock-parents = <&sys_clkin2>;
    	status = "okay";
    
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 4 serializers */
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    		1 2 0 0
    	>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    &ipu2 {
    	status = "okay";
    	memory-region = <&ipu2_memory_region>;
    };
    
    &ipu1 {
    	status = "okay";
    	memory-region = <&ipu1_memory_region>;
    };
    
    &dsp1 {
    	status = "okay";
    	memory-region = <&dsp1_memory_region>;
    };
    
    &dsp2 {
    	status = "okay";
    	memory-region = <&dsp2_memory_region>;
    };
    
    &pruss1_mdio {
    	status = "disabled";
    };
    
    &pruss2_mdio {
    	status = "disabled";
    };
    
    #include "dra7-ipu-common-early-boot.dtsi"

    Still the GPIOs aren't getting detected as shown below (see gpiochip4)

    cat /sys/kernel/debug/gpio
    gpiochip0: GPIOs 0-31, parent: platform/4ae10000.gpio, gpio-0-31:
     gpio-14  (                    |HOOK_INT            ) in  hi IRQ 
    
    gpiochip1: GPIOs 32-63, parent: platform/48051000.gpio, gpio-32-63:
     gpio-42  (                    |encoder             ) out hi 
     gpio-43  (                    |fixedregulator-vtt  ) out hi 
     gpio-44  (                    |encoder             ) in  hi IRQ 
    
    gpiochip2: GPIOs 64-95, parent: platform/48053000.gpio, gpio-64-95:
    
    gpiochip3: GPIOs 96-127, parent: platform/48055000.gpio, gpio-96-127:
     gpio-102 (                    |KEYL_INT            ) in  hi IRQ ACTIVE LOW
     gpio-104 (                    |51000000.pcie       ) out lo ACTIVE LOW
     gpio-126 (                    |encoder             ) out hi 
    
    gpiochip4: GPIOs 128-159, parent: platform/48057000.gpio, gpio-128-159:
    
    gpiochip5: GPIOs 160-191, parent: platform/48059000.gpio, gpio-160-191:
     gpio-181 (                    |vbus                ) in  lo IRQ 
    
    gpiochip6: GPIOs 192-223, parent: platform/4805b000.gpio, gpio-192-223:
     gpio-193 (                    |HEADSET_INT         ) in  lo IRQ 
     gpio-204 (                    |enable              ) out hi 
     gpio-209 (                    |powerdown           ) out lo 
     gpio-210 (                    |enable              ) out hi 
    
    gpiochip7: GPIOs 224-255, parent: platform/4805d000.gpio, gpio-224-255:
     gpio-251 (                    |cd                  ) in  lo IRQ ACTIVE LOW
    
    gpiochip8: GPIOs 504-511, parent: platform/48070000.i2c:tps659038@58:tps659038_gpio, 48070000.i2c:tps659038@58:tps659038_gpio, can sleep:
    

    Please see the dmesg output below:-

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00010-gd9f3c4d3b93d-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #48 SMP PREEMPT Mon Jul 28 14:14:51 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3757944K/4174848K available (12288K kernel code, 1468K rwdata, 3304K rodata, 2048K init, 309K bss, 220296K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001434] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003173] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003326] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004455] Console: colour dummy device 80x30
    [    0.004486] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062072] CPU: Testing write buffer coherency: ok
    [    0.062103] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062103] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062103] pid_max: default: 32768 minimum: 301
    [    0.062255] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062255] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062896] /cpus/cpu@0 missing clock-frequency property
    [    0.062927] /cpus/cpu@1 missing clock-frequency property
    [    0.062957] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063598] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063598] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063690] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063781] rcu: Hierarchical SRCU implementation.
    [    0.063781] rcu: 	Max phase no-delay instances is 1000.
    [    0.066131] EFI services will not be available.
    [    0.066680] smp: Bringing up secondary CPUs ...
    [    0.126892] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126922] CPU1: Spectre v2: using ICIALLU workaround
    [    0.127014] smp: Brought up 1 node, 2 CPUs
    [    0.127044] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.127044] CPU: All CPU(s) started in HYP mode.
    [    0.127044] CPU: Virtualization extensions available.
    [    0.127471] devtmpfs: initialized
    [    0.153533] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.153717] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.153717] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.158203] pinctrl core: initialized pinctrl subsystem
    [    0.158843] DMI not present or invalid.
    [    0.159271] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.160980] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.161956] thermal_sys: Registered thermal governor 'step_wise'
    [    0.161987] cpuidle: using governor menu
    [    0.189483] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.189544] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.193328] platform connector: Fixed dependency cycle(s) with /encoder
    [    0.193420] platform encoder: Fixed dependency cycle(s) with /connector
    [    0.193481] platform encoder: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0/target-module@40000/encoder@0
    [    0.193847] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.195373] No ATAGs?
    [    0.195465] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.195465] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.218841] reg-fixed-voltage fixedregulator-main_12v0: GPIO lookup for consumer (null)
    [    0.218841] reg-fixed-voltage fixedregulator-main_12v0: using device tree for GPIO lookup
    [    0.218872] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-main_12v0[0]'
    [    0.218872] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-main_12v0[0]'
    [    0.218902] reg-fixed-voltage fixedregulator-main_12v0: using lookup tables for GPIO lookup
    [    0.218902] reg-fixed-voltage fixedregulator-main_12v0: No GPIO consumer (null) found
    [    0.219146] reg-fixed-voltage fixedregulator-evm_5v0: GPIO lookup for consumer (null)
    [    0.219146] reg-fixed-voltage fixedregulator-evm_5v0: using device tree for GPIO lookup
    [    0.219177] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-evm_5v0[0]'
    [    0.219177] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_5v0[0]'
    [    0.219207] reg-fixed-voltage fixedregulator-evm_5v0: using lookup tables for GPIO lookup
    [    0.219207] reg-fixed-voltage fixedregulator-evm_5v0: No GPIO consumer (null) found
    [    0.219848] iommu: Default domain type: Translated 
    [    0.219848] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.221191] SCSI subsystem initialized
    [    0.221343] libata version 3.00 loaded.
    [    0.221527] usbcore: registered new interface driver usbfs
    [    0.221557] usbcore: registered new interface driver hub
    [    0.221588] usbcore: registered new device driver usb
    [    0.221984] mc: Linux media interface: v0.10
    [    0.222045] pps_core: LinuxPPS API ver. 1 registered
    [    0.222045] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.222045] PTP clock support registered
    [    0.222167] EDAC MC: Ver: 3.0.0
    [    0.224029] clocksource: Switched to clocksource 32k_counter
    [    0.231750] NET: Registered PF_INET protocol family
    [    0.231903] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.233245] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.233245] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.233276] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.233337] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.233551] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.233612] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.233673] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.233795] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.244323] RPC: Registered named UNIX socket transport module.
    [    0.244354] RPC: Registered udp transport module.
    [    0.244354] RPC: Registered tcp transport module.
    [    0.244354] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.244354] PCI: CLS 0 bytes, default 64
    [    0.244750] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.244964] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.245819] Initialise system trusted keyrings
    [    0.246185] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.251525] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.252136] NFS: Registering the id_resolver key type
    [    0.252166] Key type id_resolver registered
    [    0.252166] Key type id_legacy registered
    [    0.252258] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.252258] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.252288] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.252746] Key type asymmetric registered
    [    0.252746] Asymmetric key parser 'x509' registered
    [    0.252868] bounce: pool size: 64 pages
    [    0.252960] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.252960] io scheduler mq-deadline registered
    [    0.252990] io scheduler kyber registered
    [    0.256195] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.302062] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.303985] STMicroelectronics ASC driver initialized
    [    0.304656] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.306091] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.306091] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.306091] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.306121] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.313110] brd: module loaded
    [    0.317779] loop: module loaded
    [    0.321014] mdio_bus fixed-0: GPIO lookup for consumer reset
    [    0.321014] mdio_bus fixed-0: using lookup tables for GPIO lookup
    [    0.321014] mdio_bus fixed-0: No GPIO consumer reset found
    [    0.322235] CAN device driver interface
    [    0.322631] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.322631] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.322692] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.322692] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.323547] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.323577] usbcore: registered new interface driver pegasus
    [    0.323608] usbcore: registered new interface driver asix
    [    0.323638] usbcore: registered new interface driver ax88179_178a
    [    0.323669] usbcore: registered new interface driver cdc_ether
    [    0.323699] usbcore: registered new interface driver smsc75xx
    [    0.323730] usbcore: registered new interface driver smsc95xx
    [    0.323760] usbcore: registered new interface driver net1080
    [    0.323791] usbcore: registered new interface driver cdc_subset
    [    0.323822] usbcore: registered new interface driver zaurus
    [    0.323852] usbcore: registered new interface driver cdc_ncm
    [    0.324615] usbcore: registered new interface driver usb-storage
    [    0.325500] i2c_dev: i2c /dev entries driver
    [    0.327972] sdhci: Secure Digital Host Controller Interface driver
    [    0.327972] sdhci: Copyright(c) Pierre Ossman
    [    0.328155] Synopsys Designware Multimedia Card Interface Driver
    [    0.328369] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.328979] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.329284] usbcore: registered new interface driver usbhid
    [    0.329284] usbhid: USB HID core driver
    [    0.331939] NET: Registered PF_INET6 protocol family
    [    0.332855] Segment Routing with IPv6
    [    0.332885] In-situ OAM (IOAM) with IPv6
    [    0.332946] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.333435] NET: Registered PF_PACKET protocol family
    [    0.333435] can: controller area network core
    [    0.333496] NET: Registered PF_CAN protocol family
    [    0.333496] can: raw protocol
    [    0.333496] can: broadcast manager protocol
    [    0.333496] can: netlink gateway - max_hops=1
    [    0.333679] Key type dns_resolver registered
    [    0.333709] ThumbEE CPU extension supported.
    [    0.333740] Registering SWP/SWPB emulation handler
    [    0.334228] omap_voltage_late_init: Voltage driver support not added
    [    0.334228] Power Management for TI OMAP4+ devices.
    [    0.334960] Loading compiled-in X.509 certificates
    [    0.368713] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.374694] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.396789] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.412841] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.413085] gpio gpiochip0: (gpio-0-31): added GPIO chardev (254:0)
    [    0.413177] gpio gpiochip0: registered GPIOs 0 to 31 on gpio-0-31
    [    0.413208] OMAP GPIO hardware version 0.1
    [    0.415496] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.422485] printk: console [ttyS2] disabled
    [    0.422485] omap8250 48020000.serial: GPIO lookup for consumer rs485-term
    [    0.422485] omap8250 48020000.serial: using device tree for GPIO lookup
    [    0.422515] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
    [    0.422546] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
    [    0.422576] omap8250 48020000.serial: using lookup tables for GPIO lookup
    [    0.422607] omap8250 48020000.serial: No GPIO consumer rs485-term found
    [    0.422607] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.760498] printk: console [ttyS2] enabled
    [    1.772399] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.781219] gpio gpiochip1: (gpio-32-63): added GPIO chardev (254:1)
    [    1.781311] gpio gpiochip1: registered GPIOs 32 to 63 on gpio-32-63
    [    1.782501] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.791198] gpio gpiochip2: (gpio-64-95): added GPIO chardev (254:2)
    [    1.791259] gpio gpiochip2: registered GPIOs 64 to 95 on gpio-64-95
    [    1.792572] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.801208] gpio gpiochip3: (gpio-96-127): added GPIO chardev (254:3)
    [    1.801269] gpio gpiochip3: registered GPIOs 96 to 127 on gpio-96-127
    [    1.802490] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.811187] gpio gpiochip4: (gpio-128-159): added GPIO chardev (254:4)
    [    1.811248] gpio gpiochip4: registered GPIOs 128 to 159 on gpio-128-159
    [    1.812408] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.821136] gpio gpiochip5: (gpio-160-191): added GPIO chardev (254:5)
    [    1.821197] gpio gpiochip5: registered GPIOs 160 to 191 on gpio-160-191
    [    1.822540] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.831237] gpio gpiochip6: (gpio-192-223): added GPIO chardev (254:6)
    [    1.831298] gpio gpiochip6: registered GPIOs 192 to 223 on gpio-192-223
    [    1.832489] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.841217] gpio gpiochip7: (gpio-224-255): added GPIO chardev (254:7)
    [    1.841278] gpio gpiochip7: registered GPIOs 224 to 255 on gpio-224-255
    [    1.843017] i2c i2c-2: GPIO lookup for consumer scl
    [    1.843048] i2c i2c-2: using device tree for GPIO lookup
    [    1.843048] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.843078] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.843139] i2c i2c-2: using lookup tables for GPIO lookup
    [    1.843139] i2c i2c-2: No GPIO consumer scl found
    [    1.843139] i2c i2c-2: GPIO lookup for consumer sda
    [    1.843170] i2c i2c-2: using device tree for GPIO lookup
    [    1.843170] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.843200] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.843231] i2c i2c-2: using lookup tables for GPIO lookup
    [    1.843261] i2c i2c-2: No GPIO consumer sda found
    [    1.866027] rtc-ds1307 2-006f: registered as rtc0
    [    1.871093] rtc-ds1307 2-006f: setting system clock to 2025-08-12T06:47:42 UTC (1754981262)
    [    1.879516] rtc-ds1307 2-006f: GPIO lookup for consumer wp
    [    1.879547] rtc-ds1307 2-006f: using device tree for GPIO lookup
    [    1.879547] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/rtc@6f[0]'
    [    1.879608] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/rtc@6f[0]'
    [    1.879638] rtc-ds1307 2-006f: using lookup tables for GPIO lookup
    [    1.879638] rtc-ds1307 2-006f: No GPIO consumer wp found
    [    1.879943] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.890075] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.901458] i2c i2c-0: GPIO lookup for consumer scl
    [    1.901458] i2c i2c-0: using device tree for GPIO lookup
    [    1.901489] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.901519] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.901550] i2c i2c-0: using lookup tables for GPIO lookup
    [    1.901580] i2c i2c-0: No GPIO consumer scl found
    [    1.901580] i2c i2c-0: GPIO lookup for consumer sda
    [    1.901580] i2c i2c-0: using device tree for GPIO lookup
    [    1.901611] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.901641] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.901672] i2c i2c-0: using lookup tables for GPIO lookup
    [    1.901672] i2c i2c-0: No GPIO consumer sda found
    [    1.902099] palmas 0-0058: Irq flag is 0x00000008
    [    1.937469] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    1.968841] gpiochip_find_base: found new base at 504
    [    1.968994] gpio gpiochip8: (48070000.i2c:tps659038@58:tps659038_gpio): added GPIO chardev (254:8)
    [    1.969055] gpio gpiochip8: registered GPIOs 504 to 511 on 48070000.i2c:tps659038@58:tps659038_gpio
    [    1.970520] at24 0-0050: supply vcc not found, using dummy regulator
    [    1.977264] at24 0-0050: GPIO lookup for consumer wp
    [    1.977264] at24 0-0050: using device tree for GPIO lookup
    [    1.977294] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/eeprom@50[0]'
    [    1.977325] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/eeprom@50[0]'
    [    1.977386] at24 0-0050: using lookup tables for GPIO lookup
    [    1.977386] at24 0-0050: No GPIO consumer wp found
    [    1.977508] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    1.984344] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.994049] i2c i2c-4: GPIO lookup for consumer scl
    [    1.994049] i2c i2c-4: using device tree for GPIO lookup
    [    1.994079] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.994110] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.994140] i2c i2c-4: using lookup tables for GPIO lookup
    [    1.994140] i2c i2c-4: No GPIO consumer scl found
    [    1.994171] i2c i2c-4: GPIO lookup for consumer sda
    [    1.994171] i2c i2c-4: using device tree for GPIO lookup
    [    1.994201] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.994232] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.994262] i2c i2c-4: using lookup tables for GPIO lookup
    [    1.994262] i2c i2c-4: No GPIO consumer sda found
    [    1.994567] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    2.000610] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    2.007720] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    2.011901] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.014953] random: crng init done
    [    2.024475] edt_ft5x06 4-0038: GPIO lookup for consumer reset
    [    2.024475] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    2.024505] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    2.024566] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    2.024597] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    2.024627] edt_ft5x06 4-0038: No GPIO consumer reset found
    [    2.024627] edt_ft5x06 4-0038: GPIO lookup for consumer wake
    [    2.024627] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    2.024627] of_get_named_gpiod_flags: can't parse 'wake-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    2.024688] of_get_named_gpiod_flags: can't parse 'wake-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    2.024749] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    2.024780] edt_ft5x06 4-0038: No GPIO consumer wake found
    [    2.046600] mdio_bus 48485000.mdio: GPIO lookup for consumer reset
    [    2.046600] mdio_bus 48485000.mdio: using device tree for GPIO lookup
    [    2.046630] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000[0]'
    [    2.046661] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000[0]'
    [    2.046691] mdio_bus 48485000.mdio: using lookup tables for GPIO lookup
    [    2.046722] mdio_bus 48485000.mdio: No GPIO consumer reset found
    [    2.056182] input: 4-0038 generic ft5x06 (8d) as /devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/4807c000.target-module/4807c000.i2c/i2c-4/4-0038/input/input0
    [    2.114044] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.122558] mdio_bus 48485000.mdio:01: GPIO lookup for consumer reset
    [    2.122589] mdio_bus 48485000.mdio:01: using device tree for GPIO lookup
    [    2.122589] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@1[0]'
    [    2.122650] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@1[0]'
    [    2.122711] mdio_bus 48485000.mdio:01: using lookup tables for GPIO lookup
    [    2.122711] mdio_bus 48485000.mdio:01: No GPIO consumer reset found
    [    2.123107] mdio_bus 48485000.mdio: MDIO device at address 2 is missing.
    [    2.129852] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.138488] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.145355] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.151062] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.158691] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.169830] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:16
    [    2.176879] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:17
    [    2.185607] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.208160] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.215881] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.226745] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.233947] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.249267] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.259246] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.275817] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
    [    2.275848] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
    [    2.275848] of_get_named_gpiod_flags: parsed 'gpios' property of node '/ocp/target-module@51000000/pcie@51000000[0]' - status (0)
    [    2.275909] gpio gpiochip3: Persistence not supported for GPIO 8
    [    2.276184] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.285247] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.293426] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.301788] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.307342] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    2.415069] dra7-pcie 51000000.pcie: PCIe Gen.2 x1 link up
    [    2.420684] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    2.427032] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    2.432525] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    2.438751] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    2.445709] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    2.451751] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    2.458099] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    2.464447] pci 0000:00:00.0: supports D1
    [    2.468475] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    2.481933] PCI: bus0: Fast back to back transfers disabled
    [    2.487731] pci 0000:01:00.0: [8086:2526] type 00 class 0x028000
    [    2.493835] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
    [    2.501037] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
    [    2.694152] PCI: bus1: Fast back to back transfers disabled
    [    2.699798] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    2.706634] pci 0000:00:00.0: BAR 8: assigned [mem 0x20200000-0x202fffff]
    [    2.713470] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    2.720306] pci 0000:01:00.0: BAR 0: assigned [mem 0x20200000-0x20203fff 64bit]
    [    2.727691] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    2.732971] pci 0000:00:00.0:   bridge window [mem 0x20200000-0x202fffff]
    [    2.740142] pcieport 0000:00:00.0: PME: Signaling with IRQ 136
    [    2.752136] edma 43300000.dma: memcpy is disabled
    [    2.760162] edma 43300000.dma: TI EDMA DMA engine driver
    [    2.771850] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    2.779632] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    2.786315] platform 40800000.dsp: Adding to iommu group 0
    [    2.793304] platform 58820000.ipu: Adding to iommu group 1
    [    2.798980] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    2.806854] platform 55020000.ipu: Adding to iommu group 2
    [    2.812408] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    2.824615] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    2.833374] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    2.849334] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    2.856628] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    2.863464] platform 41000000.dsp: Adding to iommu group 3
    [    2.871490] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    2.881439] gpio-clk clk_ov5640: GPIO lookup for consumer enable
    [    2.881469] gpio-clk clk_ov5640: using device tree for GPIO lookup
    [    2.881500] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/clk_ov5640[0]' - status (0)
    [    2.881530] gpio gpiochip6: Persistence not supported for GPIO 18
    [    2.885650] reg-fixed-voltage fixedregulator-vdd_3v3: GPIO lookup for consumer (null)
    [    2.885681] reg-fixed-voltage fixedregulator-vdd_3v3: using device tree for GPIO lookup
    [    2.885681] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vdd_3v3[0]'
    [    2.885711] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vdd_3v3[0]'
    [    2.885742] reg-fixed-voltage fixedregulator-vdd_3v3: using lookup tables for GPIO lookup
    [    2.885742] reg-fixed-voltage fixedregulator-vdd_3v3: No GPIO consumer (null) found
    [    2.886169] reg-fixed-voltage fixedregulator-aic_dvdd: GPIO lookup for consumer (null)
    [    2.886169] reg-fixed-voltage fixedregulator-aic_dvdd: using device tree for GPIO lookup
    [    2.886199] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-aic_dvdd[0]'
    [    2.886199] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-aic_dvdd[0]'
    [    2.886230] reg-fixed-voltage fixedregulator-aic_dvdd: using lookup tables for GPIO lookup
    [    2.886230] reg-fixed-voltage fixedregulator-aic_dvdd: No GPIO consumer (null) found
    [    2.886444] reg-fixed-voltage fixedregulator-vtt: GPIO lookup for consumer (null)
    [    2.886444] reg-fixed-voltage fixedregulator-vtt: using device tree for GPIO lookup
    [    2.886474] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vtt[0]'
    [    2.886474] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-vtt[0]' - status (0)
    [    2.886505] gpio gpiochip1: Persistence not supported for GPIO 11
    [    2.890136] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    2.899291] sdhci-omap 4809c000.mmc: GPIO lookup for consumer cd
    [    2.899291] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    2.899322] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]' - status (0)
    [    2.899383] gpio gpiochip7: Persistence not supported for GPIO 27
    [    2.899383] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    2.899536] sdhci-omap 480b4000.mmc: GPIO lookup for consumer wp
    [    2.908264] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    2.909362] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup
    [    2.912902] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
    [    2.912933] sdhci-omap 4809c000.mmc: GPIO lookup for consumer wp
    [    2.912963] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    2.912963] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    2.912963] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]'
    [    2.925933] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]'
    [    2.925994] sdhci-omap 4809c000.mmc: using lookup tables for GPIO lookup
    [    2.925994] sdhci-omap 4809c000.mmc: No GPIO consumer wp found
    [    2.925994] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    2.938964] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    2.938964] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
    [    2.952972] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup
    [    2.952972] sdhci-omap 480b4000.mmc: No GPIO consumer wp found
    [    2.953063] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    2.953430] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    2.966400] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user1[0]' - status (0)
    [    2.973937] gpio gpiochip0: Persistence not supported for GPIO 14
    [    2.974090] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    2.987396] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user2[0]' - status (0)
    [    2.987426] gpio gpiochip3: Persistence not supported for GPIO 6
    [    2.987487] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    2.987487] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    3.007507] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user3[0]' - status (0)
    [    3.007537] gpio gpiochip6: Persistence not supported for GPIO 1
    [    3.007720] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    3.014495] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.027374] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.039886] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.040924] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.060668] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.062072] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.083221] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.098754] clk: Disabling unused clocks
    [    3.107879] l3init-clkctrl:0030:0: failed to disable
    [    3.114318] Waiting for root device PARTUUID=5c496148-02...
    [    3.147125] mmc0: new high speed SDHC card at address 5048
    [    3.153015] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    3.160034]  mmcblk0: p1 p2
    [    3.203063] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.212097] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.226074] devtmpfs: mounted
    [    3.230072] Freeing unused kernel image (initmem) memory: 2048K
    [    3.236175] Run /sbin/init as init process
    [    3.240295]   with arguments:
    [    3.240295]     /sbin/init
    [    3.240295]   with environment:
    [    3.240295]     HOME=/
    [    3.240295]     TERM=linux
    [    3.260620] mmc1: new DDR MMC card at address 0001
    [    3.265899] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.272491]  mmcblk1: p1 p2
    [    3.275878] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.281982] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.287994] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    3.631378] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    3.663269] systemd[1]: Detected architecture arm.
    [    3.695526] systemd[1]: Hostname set to <am57xx-evm>.
    [    3.823638] systemd-sysv-generator[98]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    3.848541] systemd-sysv-generator[98]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.112548] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.177734] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.200073] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.280517] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.289978] systemd[1]: Created slice Slice /system/getty.
    [    4.325012] systemd[1]: Created slice Slice /system/modprobe.
    [    4.365600] systemd[1]: Created slice Slice /system/serial-getty.
    [    4.404541] systemd[1]: Created slice User and Session Slice.
    [    4.444824] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.484313] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.525238] systemd[1]: Reached target Path Units.
    [    4.564208] systemd[1]: Reached target Remote File Systems.
    [    4.604431] systemd[1]: Reached target Slice Units.
    [    4.644561] systemd[1]: Reached target Swaps.
    [    4.696319] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    4.734222] systemd[1]: Reached target RPC Port Mapper.
    [    4.784484] systemd[1]: Listening on Process Core Dump Socket.
    [    4.824829] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    4.914001] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    4.925567] systemd[1]: Listening on Journal Socket (/dev/log).
    [    4.964721] systemd[1]: Listening on Journal Socket.
    [    5.005279] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.044586] systemd[1]: Listening on udev Control Socket.
    [    5.085052] systemd[1]: Listening on udev Kernel Socket.
    [    5.124511] systemd[1]: Listening on User Database Manager Socket.
    [    5.164642] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.224426] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.267364] systemd[1]: Mounting Kernel Debug File System...
    [    5.306304] systemd[1]: Mounting Kernel Trace File System...
    [    5.355224] systemd[1]: Mounting Temporary Directory /tmp...
    [    5.387634] systemd[1]: Starting Create List of Static Device Nodes...
    [    5.427490] systemd[1]: Starting Load Kernel Module configfs...
    [    5.467498] systemd[1]: Starting Load Kernel Module drm...
    [    5.496917] systemd[1]: Starting Load Kernel Module fuse...
    [    5.584625] systemd[1]: Starting Start psplash boot splash screen...
    [    5.636016] systemd[1]: Starting RPC Bind...
    [    5.674560] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    5.687957] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    5.700958] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    5.744781] systemd[1]: Starting Journal Service...
    [    5.796783] systemd[1]: Starting Load Kernel Modules...
    [    5.815704] systemd[1]: Starting Generate network units from Kernel command line...
    [    5.856414] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    5.884796] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    5.896453] systemd[1]: Starting Coldplug All udev Devices...
    [    5.940673] systemd[1]: Started RPC Bind.
    [    5.984619] systemd[1]: Mounted POSIX Message Queue File System.
    [    6.024444] systemd[1]: Started Journal Service.
    [    6.538604] systemd-journald[111]: Received client request to flush runtime journal.
    [    7.320617] display-connector connector: GPIO lookup for consumer hpd
    [    7.320648] display-connector connector: using device tree for GPIO lookup
    [    7.320648] of_get_named_gpiod_flags: can't parse 'hpd-gpios' property of node '/connector[0]'
    [    7.320678] of_get_named_gpiod_flags: can't parse 'hpd-gpio' property of node '/connector[0]'
    [    7.320678] display-connector connector: using lookup tables for GPIO lookup
    [    7.320678] display-connector connector: No GPIO consumer hpd found
    [    7.320709] display-connector connector: GPIO lookup for consumer ddc-en
    [    7.320709] display-connector connector: using device tree for GPIO lookup
    [    7.320709] of_get_named_gpiod_flags: can't parse 'ddc-en-gpios' property of node '/connector[0]'
    [    7.320739] of_get_named_gpiod_flags: can't parse 'ddc-en-gpio' property of node '/connector[0]'
    [    7.320739] display-connector connector: using lookup tables for GPIO lookup
    [    7.320739] display-connector connector: No GPIO consumer ddc-en found
    [    7.321746] tpd12s015 encoder: GPIO lookup for consumer (null)
    [    7.321746] tpd12s015 encoder: using device tree for GPIO lookup
    [    7.321777] of_get_named_gpiod_flags: parsed 'gpios' property of node '/encoder[0]' - status (0)
    [    7.321807] gpio gpiochip1: Persistence not supported for GPIO 10
    [    7.321807] tpd12s015 encoder: GPIO lookup for consumer (null)
    [    7.321807] tpd12s015 encoder: using device tree for GPIO lookup
    [    7.321838] of_get_named_gpiod_flags: parsed 'gpios' property of node '/encoder[1]' - status (0)
    [    7.321838] gpio gpiochip3: Persistence not supported for GPIO 30
    [    7.321838] tpd12s015 encoder: GPIO lookup for consumer (null)
    [    7.321868] tpd12s015 encoder: using device tree for GPIO lookup
    [    7.321868] of_get_named_gpiod_flags: parsed 'gpios' property of node '/encoder[2]' - status (0)
    [    7.321899] gpio gpiochip1: Persistence not supported for GPIO 12
    [    7.359344] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    7.372161] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    7.381652] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    7.388946] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    7.508087] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    7.524261] remoteproc remoteproc0: 58820000.ipu is available
    [    7.544952] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    7.555297] remoteproc remoteproc1: 55020000.ipu is available
    [    7.572418] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    7.594787] remoteproc remoteproc2: 40800000.dsp is available
    [    7.619354] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    7.627502] remoteproc remoteproc3: 41000000.dsp is available
    [    7.888549] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer id
    [    7.888549] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    7.888580] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    7.888610] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    7.888641] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using lookup tables for GPIO lookup
    [    7.888671] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: No GPIO consumer id found
    [    7.888671] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer vbus
    [    7.888671] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    7.888671] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    7.888732] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]' - status (0)
    [    7.888793] gpio gpiochip5: Persistence not supported for GPIO 21
    [    8.101196] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.107177] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.115203] omap-iommu 58882000.mmu: no fck found
    [    8.119934] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.127746] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    8.135559] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu1-memory@9d000000
    [    8.145233] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    8.152404] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [    8.161132] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.166870] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.175598] rproc-virtio rproc-virtio.1.auto: registered virtio0 (type 7)
    [    8.182434] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    8.191955] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [    8.200805] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.207733] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [    8.221252] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    8.242980] pwm-backlight backlight: GPIO lookup for consumer enable
    [    8.243011] pwm-backlight backlight: using device tree for GPIO lookup
    [    8.243011] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
    [    8.243041] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
    [    8.243041] pwm-backlight backlight: using lookup tables for GPIO lookup
    [    8.243072] pwm-backlight backlight: No GPIO consumer enable found
    [    8.243103] pwm-backlight backlight: supply power not found, using dummy regulator
    [    8.269195] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    8.290557] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu2-memory@95800000
    [    8.302978] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.309600] rproc-virtio rproc-virtio.2.auto: registered virtio1 (type 7)
    [    8.316467] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    8.319183] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    8.325714] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    8.345672] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    8.372283] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    8.391479] panel-simple display: supply power not found, using dummy regulator
    [    8.404663] panel-simple display: GPIO lookup for consumer enable
    [    8.404693] panel-simple display: using device tree for GPIO lookup
    [    8.405517] omap_rtc 48838000.rtc: registered as rtc2
    [    8.410766] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/display[0]' - status (0)
    [    8.410797] gpio gpiochip6: Persistence not supported for GPIO 12
    [    8.410797] panel-simple display: Specify missing connector_type
    [    8.417816] omap_rtc 48838000.rtc: GPIO lookup for consumer wp
    [    8.417816] omap_rtc 48838000.rtc: using device tree for GPIO lookup
    [    8.417846] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48800000/segment@0/target-module@38000/rtc@0[0]'
    [    8.421020] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48800000/segment@0/target-module@38000/rtc@0[0]'
    [    8.421081] omap_rtc 48838000.rtc: using lookup tables for GPIO lookup
    [    8.421081] omap_rtc 48838000.rtc: No GPIO consumer wp found
    [    8.427246] videodev: Linux video capture interface: v2.00
    [    8.508666] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    8.522491] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    8.531829] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    8.534790] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    8.551361] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    8.561126] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    8.567230] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    8.576293] omap-des 480a5000.des: will run requests pump with realtime priority
    [    8.577270] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    8.597106] scsi host0: ahci-dwc
    [    8.600585] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 161
    [    8.668853] remoteproc remoteproc2: powering up 40800000.dsp
    [    8.674804] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    8.683471] remoteproc remoteproc3: powering up 41000000.dsp
    [    8.697448] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    8.703369] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    8.711181] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    8.711486] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    8.720367] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    8.730712] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    8.761627] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp1-memory@99000000
    [    8.777923] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp2-memory@9f000000
    [    8.779327] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    8.795135] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    8.800689] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    8.807861] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    8.815826] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    8.823791] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    8.832336] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    8.839477] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    8.847412] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    8.853057] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    8.860015] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    8.868194] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    8.878234] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    8.884704] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    8.886169] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    8.905181] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    8.912322] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    8.937652] ata1: SATA link down (SStatus 0 SControl 300)
    [    8.990631] pinctrl-single 4a003400.pinmux: mux offset out of range: 0xffffe244 (0x468)
    [    9.025115] DSS: OMAP DSS rev 6.1
    [    9.038665] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    9.048889] pinctrl-single 4a003400.pinmux: could not add functions for camera-gpio 4294959684x
    [    9.063690] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [    9.076446] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tlv320aic3104@18[0]'
    [    9.076507] of_get_named_gpiod_flags: can't parse 'gpio-reset' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tlv320aic3104@18[0]'
    [    9.078460] vpe 489d0000.vpe: Device registered as /dev/video0
    [    9.094085] vip 48990000.vip: VPDMA firmware loaded
    [    9.107452] asoc-simple-card sound0: GPIO lookup for consumer simple-audio-card,hp-det
    [    9.107482] asoc-simple-card sound0: using device tree for GPIO lookup
    [    9.107513] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpios' property of node '/sound0[0]'
    [    9.107513] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpio' property of node '/sound0[0]'
    [    9.107543] asoc-simple-card sound0: using lookup tables for GPIO lookup
    [    9.107543] asoc-simple-card sound0: No GPIO consumer simple-audio-card,hp-det found
    [    9.107543] asoc-simple-card sound0: GPIO lookup for consumer simple-audio-card,mic-det
    [    9.107543] asoc-simple-card sound0: using device tree for GPIO lookup
    [    9.107574] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpios' property of node '/sound0[0]'
    [    9.107574] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpio' property of node '/sound0[0]'
    [    9.107604] asoc-simple-card sound0: using lookup tables for GPIO lookup
    [    9.107604] asoc-simple-card sound0: No GPIO consumer simple-audio-card,mic-det found
    [    9.189086] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    9.201690] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.307861] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops [omapdrm])
    [    9.352996] ov5640 2-003c: GPIO lookup for consumer powerdown
    [    9.353027] ov5640 2-003c: using device tree for GPIO lookup
    [    9.353057] of_get_named_gpiod_flags: parsed 'powerdown-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]' - status (0)
    [    9.353118] gpio gpiochip6: Persistence not supported for GPIO 17
    [    9.353118] ov5640 2-003c: GPIO lookup for consumer reset
    [    9.353118] ov5640 2-003c: using device tree for GPIO lookup
    [    9.353149] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.353179] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.353240] ov5640 2-003c: using lookup tables for GPIO lookup
    [    9.353240] ov5640 2-003c: No GPIO consumer reset found
    [    9.353240] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    9.444213] dmm 4e000000.dmm: workaround for errata i878 in use
    [    9.502258] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    9.539520] dmm 4e000000.dmm: initialized all PAT entries
    [    9.617828] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    9.655212] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [    9.726684] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    9.822021] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    9.841888] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [    9.993255] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   10.126800] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.260498] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.344146] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [   10.374633] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   10.432861] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [   10.462402] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.584808] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.606872] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.648376] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   10.650573] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.670410] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 1
    [   10.699584] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.714080] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x0000008002010010
    [   10.730560] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.736602] xhci-hcd xhci-hcd.6.auto: irq 170, io mem 0x48890000
    [   10.749725] remoteproc remoteproc4: 4b234000.pru is available
    [   10.760833] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.764495] remoteproc remoteproc5: 4b238000.pru is available
    [   10.779724] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   10.781158] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.788757] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 2
    [   10.806030] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   10.817199] hub 1-0:1.0: USB hub found
    [   10.819976] remoteproc remoteproc6: 4b2b4000.pru is available
    [   10.821655] hub 1-0:1.0: 1 port detected
    [   10.830169] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.832031] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   10.852508] hub 2-0:1.0: USB hub found
    [   10.856781] hub 2-0:1.0: 1 port detected
    [   10.857086] remoteproc remoteproc7: 4b2b8000.pru is available
    [   10.892700] EDID block 0 is all zeroes
    [   10.897064] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.904663] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.910308] **** vip: create_stream: V4L2_MBUS_BT656 ****
    [   10.950714] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950714] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950744] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950744] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950744] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950744] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.950775] 	[00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   10.962860] [drm] Enabling DMM ywrap scrolling
    [   11.055847] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   11.055877] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.055877] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   11.055877] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   11.134124] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [   11.185485] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   11.185485] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   11.281188] Console: switching to colour frame buffer device 128x37
    [   11.401031] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   11.423736] hub 1-1:1.0: USB hub found
    [   11.429046] hub 1-1:1.0: 4 ports detected
    [   11.444061] ------------[ cut here ]------------
    [   11.448791] WARNING: CPU: 0 PID: 133 at drivers/gpu/drm/drm_bridge.c:1416 drm_bridge_hpd_enable+0x7c/0x80
    [   11.458496] Hot plug detection already enabled
    [   11.462951] Modules linked in: pru_rproc irq_pruss_intc icss_iep rpmsg_ctrl rpmsg_char dwc3 snd_soc_davinci_mcasp snd_soc_simple_card snd_soc_tlv320aic3x_i2c snd_soc_tlv320aic3x ti_vip snd_soc_simple_card_utils snd_soc_ti_udma snd_soc_ti_edma ti_vpe snd_soc_ti_sdma ti_sc v4l2_mem2mem ti_csc ti_vpdma snd_soc_core omapdrm(+) videobuf2_dma_contig ov5640 videobuf2_memops snd_pcm_dmaengine videobuf2_v4l2 ac97_bus snd_pcm cec pruss snd_timer omap_aes_driver videobuf2_common v4l2_fwnode snd libaes omap_des ahci_dwc omap_hwspinlock v4l2_async omap_wdt omap_crypto soundcore videodev libdes dwc3_omap rtc_omap pwm_tiehrpwm extcon_palmas omap_remoteproc virtio_rpmsg_bus omap_sham crypto_engine rpmsg_ns rpmsg_core display_connector ti_tpd12s015
    [   11.528442] CPU: 0 PID: 133 Comm: systemd-udevd Not tainted 6.1.119-00010-gd9f3c4d3b93d-dirty #48
    [   11.537384] Hardware name: Generic DRA74X (Flattened Device Tree)
    [   11.543518]  unwind_backtrace from show_stack+0x10/0x14
    [   11.548767]  show_stack from dump_stack_lvl+0x40/0x4c
    [   11.553863]  dump_stack_lvl from __warn+0x7c/0x158
    [   11.558685]  __warn from warn_slowpath_fmt+0x124/0x1c0
    [   11.563873]  warn_slowpath_fmt from drm_bridge_hpd_enable+0x7c/0x80
    [   11.570159]  drm_bridge_hpd_enable from pdev_probe+0x5e8/0x788 [omapdrm]
    [   11.577056]  pdev_probe [omapdrm] from platform_probe+0x5c/0xbc
    [   11.583129]  platform_probe from really_probe+0xc8/0x2ec
    [   11.588470]  really_probe from __driver_probe_device+0x88/0x1a0
    [   11.594451]  __driver_probe_device from driver_probe_device+0x30/0x104
    [   11.601013]  driver_probe_device from __driver_attach+0x90/0x174
    [   11.607055]  __driver_attach from bus_for_each_dev+0x74/0xc0
    [   11.612762]  bus_for_each_dev from bus_add_driver+0x164/0x1f0
    [   11.618530]  bus_add_driver from driver_register+0x88/0x11c
    [   11.624145]  driver_register from __platform_register_drivers+0x38/0x88
    [   11.630798]  __platform_register_drivers from omap_drm_init+0x3c/0x50 [omapdrm]
    [   11.638275]  omap_drm_init [omapdrm] from do_one_initcall+0x48/0x254
    [   11.644775]  do_one_initcall from do_init_module+0x44/0x1d4
    [   11.650390]  do_init_module from sys_finit_module+0xc0/0x110
    [   11.656097]  sys_finit_module from __sys_trace_return+0x0/0x10
    [   11.661956] Exception stack(0xf1fc5fa8 to 0xf1fc5ff0)
    [   11.667053] 5fa0:                   00000000 00000000 0000000f b6cea8a0 00000000 00020000
    [   11.675262] 5fc0: 00000000 00000000 00000000 0000017b 00000000 00098fe8 00000007 00000000
    [   11.683502] 5fe0: befc0710 befc0700 b6ce5d4f b6c1b052
    [   11.688659] ---[ end trace 0000000000000000 ]---
    [   11.700347] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   11.700378] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   11.792419] hub 2-1:1.0: USB hub found
    [   11.798034] hub 2-1:1.0: 4 ports detected
    [   11.973175] usbcore: registered new device driver onboard-usb-hub
    [   12.074066] usb 1-1.3: new full-speed USB device number 3 using xhci-hcd
    [   12.258331] usb 1-1.3: USB disconnect, device number 3
    [   12.576324] hub 1-1:1.0: USB hub found
    [   12.580139] hub 1-1:1.0: 4 ports detected
    [   12.736450] hub 1-1:1.0: USB hub found
    [   12.740325] hub 1-1:1.0: 4 ports detected
    [   12.896575] hub 2-1:1.0: USB hub found
    [   12.900421] hub 2-1:1.0: 4 ports detected
    [   12.945251] hub 2-1:1.0: USB hub found
    [   12.949768] hub 2-1:1.0: 4 ports detected
    [   13.134094] usb 1-1.3: new full-speed USB device number 4 using xhci-hcd
    [   13.469207] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   14.989501] Bluetooth: Core ver 2.22
    [   15.036926] NET: Registered PF_BLUETOOTH protocol family
    [   15.056793] Bluetooth: HCI device and connection manager initialized
    [   15.082824] Bluetooth: HCI socket layer initialized
    [   15.090454] Bluetooth: L2CAP socket layer initialized
    [   15.100891] Bluetooth: SCO socket layer initialized
    [   15.314483] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   15.542694] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   15.554809] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   15.714630] Initializing XFRM netlink socket
    [   15.738342] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.787872] cpsw-switch 48484000.switch: phy "/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@2" not found on slave 1
    [   15.883697] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.933410] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   22.770782] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   22.804046] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   22.834045] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   22.860046] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   23.029174] EDID block 0 is all zeroes

    What can be missing now ?

    -Vishal 

  • Hi Vishal,

    It looks like the GPIOs are being found. gpiochip6 corresponds to gpio5 (both have HEADSET_INT).

    Looking at a similar device tree (am57xx-evm-ov10635.dtso) and the ov5640 yaml, you may need to set a reset-gpios property.

    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/
     */
    
    /dts-v1/;
    /plugin/;
    #include <dt-bindings/gpio/gpio.h>
    
    &vip1 {
    	status = "okay";
    };
    
    &vip2 {
    	status = "okay";
    };
    
    
    &vip3 {
    	status = "okay";
    };
    
    / {
    	fragment@101 {
    		target-path = "/";
    
    		__overlay__ {
    			clk_ov10635: clock-gate {
    				compatible = "gpio-gate-clock";
    				#clock-cells = <0>;
    				clocks = <&clk_ov10635_fixed>;
    				enable-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>;
    			};
    
    			clk_ov10635_fixed: clock-fixed {
    				compatible = "fixed-clock";
    				#clock-cells = <0>;
    				clock-frequency = <24000000>;
    			};
    		};
    	};
    };
    
    &i2c5 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	ov10635@30 {
    		compatible = "ovti,ov10635";
    		reg = <0x30>;
    		clock-names = "xvclk";
    		clocks = <&clk_ov10635>;
    		powerdown-gpios = <&gpio5 11 GPIO_ACTIVE_HIGH>;
    		reset-gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
    
    		port {
    			cam: endpoint {
    				remote-endpoint = <&vin3a_ep>;
    				hsync-active = <1>;
    				pclk-sample = <1>;
    				vsync-active = <1>;
    				bus-width = <8>;
    			};
    		};
    	};
    };
    
    &vin3a {
    	vin3a_ep: endpoint {
    		remote-endpoint = <&cam>;
    		hsync-active = <1>;
    		pclk-sample = <1>;
    		vsync-active = <1>;
    	};
    };
    
    &gpio6 {
    	p11 {
    		gpio-hog;
    		gpios = <11 GPIO_ACTIVE_LOW>;
    		line-name = "cm-camen-gpio";
    		output-high;
    	};
    };

    You also may need a hog to enable the camera.

    Best,
    Jared

  • We only have two gpios for camera and there is no provision for a reset-gpio. 

    Jared, 

    There is some confusion. Please resolve it.

    I have added the following entry in arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi

       gpio-keys {
                    compatible = "gpio-keys";
    
                    button-user1 {
                            gpios = <&gpio1 14 0>;
                            label = "VM_HOOK_INT";
                            linux,code = <103>;
                    };
    
                    button-user2 {
                            gpios = <&gpio2 6 1>;
                            label = "VM_KEYL_INT";
                            linux,code = <102>;
                    };
    
                    button-user3 {
                            gpios = <&gpio5 1 0>;
                            label = "VM_HEADSET_INT";
                            linux,code = <108>;
                    };
    
            };
    

    Upon booting the kernel and running the command cat /sys/kernel/debug/gpio I am getting the following output:-

    oot@am57xx-evm:~# cat /sys/kernel/debug/gpio
    gpiochip0: GPIOs 0-31, parent: platform/4ae10000.gpio, gpio-0-31:
     gpio-14  (                    |VM_HOOK_INT         ) in  hi IRQ 
    
    gpiochip1: GPIOs 32-63, parent: platform/48051000.gpio, gpio-32-63:
     gpio-43  (                    |fixedregulator-vtt  ) out hi 
     gpio-50  (                    |enable              ) out lo 
    
    gpiochip2: GPIOs 64-95, parent: platform/48053000.gpio, gpio-64-95:
    
    gpiochip3: GPIOs 96-127, parent: platform/48055000.gpio, gpio-96-127:
     gpio-102 (                    |VM_KEYL_INT         ) in  hi IRQ ACTIVE LOW
     gpio-104 (                    |51000000.pcie       ) out lo ACTIVE LOW
     
    
    gpiochip4: GPIOs 128-159, parent: platform/48057000.gpio, gpio-128-159:
    
    gpiochip5: GPIOs 160-191, parent: platform/48059000.gpio, gpio-160-191:
     gpio-181 (                    |vbus                ) in  lo IRQ 
    
    gpiochip6: GPIOs 192-223, parent: platform/4805b000.gpio, gpio-192-223:
     gpio-193 (                    |VM_HEADSET_INT      ) in  lo IRQ 
     gpio-204 (                    |enable              ) out hi
     gpio-209 (                    |powerdown           ) out lo 
     gpio-210 (                    |enable              ) out hi 
    
    gpiochip7: GPIOs 224-255, parent: platform/4805d000.gpio, gpio-224-255:
     gpio-251 (                    |cd                  ) in  lo IRQ ACTIVE LOW
    
    gpiochip8: GPIOs 504-511, parent: platform/48070000.i2c:tps659038@58:tps659038_gpio, 48070000.i2c:tps659038@58:tps659038_gpio, can sleep:

    For the entry gpios = <&gpio1 14 0>the corressponding entry in cat /sys/kernel/debug/gpio output is 

    gpio-14 ( |VM_HOOK_INT ) in hi IRQ which seems fine as per calculation below:-

    gpio1 - bank 1 pin 14 so the corresping gpio pin will be 0*32  + 14 = 14 and hence the entry gpio-14 in the output.

    But, for gpios = <&gpio2 6 1>; it should have been 1*32+6 = 38 and so the entry should have been

     gpio-38 (                    |VM_KEYL_INT         ) in  hi IRQ ACTIVE LOW

    but it is showing entry 

    gpio-102 (                    |VM_KEYL_INT         ) in  hi IRQ ACTIVE LOW

    Similary for gpios = <&gpio5 1 0>; it should have been 4*32+ 1 = 129 and so the entry should have been

     gpio-129 (                    |VM_HEADSET_INT      ) in  lo IRQ 

    but it is showing below:-

     gpio-193 (                    |VM_HEADSET_INT      ) in  lo IRQ 

    similary for 5_17 and 5_18 it should have been gpio-145 and gpio-146 but it is showing gpio-209 and gpio-210 respectively.

    All the entries for gpios are coming fine in 6.03 SDK as I have previously shared with you.

    Please help resolve this confusion.

    Looking at a similar device tree (am57xx-evm-ov10635.dtso) and the ov5640 yaml, you may need to set a reset-gpios property.

    We only have two gpios for camera and there is no provision for a reset-gpio. How to add it then?

    You also may need a hog to enable the camera.

    Didn't get this. PLease be more specific.

    Thanks!

    -Vishal

  • Hi Vishal,

    Please help resolve this confusion.

    gpiochip6 corresponds to address 0x4805b000, there should be no issues or reason to worry. The gpiochips simply enumerate differently, perhaps another gpio subsection was patched and offset the rest.

    We only have two gpios for camera and there is no provision for a reset-gpio. How to add it then?

    What is the schematic/connection for the camera? How many lines are there/what are the lines' functions?

    Didn't get this. PLease be more specific.

    The ov10635 dtso contains a gpio hog to enable the camera:

    &gpio6 {
    	p11 {
    		gpio-hog;
    		gpios = <11 GPIO_ACTIVE_LOW>;
    		line-name = "cm-camen-gpio";
    		output-high;
    	};
    };

    Best,
    Jared

  • Jared,

    What is the schematic/connection for the camera? How many lines are there/what are the lines' functions?

    GPIO5_18 is used to enable / disable power supply to camera module.
    GPIO5_17 is connected to power down pin of camera module.

    System reset is used as reset to camera module as well.

    -Vishal

  • Hi Vishal,

    Can you test whether the camera is powering on?

    You could try to read something from the I2C address.

    Best,
    Jared

  • Jared,

    Can you test whether the camera is powering on?

    Our camera works fine in 6.03 SDK. What other ways can the camera powering up be tested ? 

    You could try to read something from the I2C address.

    i2cdetect command is working fine as can be seen in the output below. The camera device is being held by camera driver and hence at 3c it is showing UU. I guess, this also confirms that camera is powered up.

    i2cdetect -y -r 2
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 
    70: -- -- -- -- -- -- -- --     

    Also, following are the contents of my boot and boot/dtb directories of my rootfs:-

    /media/cdot/rootfs/boot# ls -lart
    total 15684
    drwxr-xr-x 19 root root    4096 Mar  9  2018 ..
    lrwxrwxrwx  1 root root      31 Jul 15 16:57 uImage -> uImage-6.1.119-ti-ge4e8b16e66f5
    -rw-r--r--  1 root root 7930432 Jul 15 16:57 uImage-6.1.119-ti-ge4e8b16e66f5
    lrwxrwxrwx  1 root root      31 Jul 15 16:57 zImage -> zImage-6.1.119-ti-ge4e8b16e66f5
    -rw-r--r--  1 root root 8016384 Aug  5 12:45 zImage-6.1.119-ti-ge4e8b16e66f5
    drwxr-xr-x  2 root root   65536 Aug  5 12:45 dtb
     drwxr-xr-x  4 root root    4096 Aug  5 12:46 .
     
    /media/cdot/rootfs/boot/dtb# ls -lart
    total 228
    -rw-r--r-- 1 root root 154639 Aug  5 12:45 am57xx-beagle-x15-revc.dtb
    drwxr-xr-x 2 root root  65536 Aug  5 12:45 .
    drwxr-xr-x 4 root root   4096 Aug  5 12:46 ..

    Are there any other changes that need to be done in the ov5640.c driver so that video1 device file appears?

    -Vishal

  • Hi Vishal,

    This dmesg log worries me:

    [    9.353057] of_get_named_gpiod_flags: parsed 'powerdown-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]' - status (0)
    [    9.353118] gpio gpiochip6: Persistence not supported for GPIO 17
    [    9.353118] ov5640 2-003c: GPIO lookup for consumer reset
    [    9.353118] ov5640 2-003c: using device tree for GPIO lookup
    [    9.353149] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.353179] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.353240] ov5640 2-003c: using lookup tables for GPIO lookup
    [    9.353240] ov5640 2-003c: No GPIO consumer reset found

    Best,
    Jared

  • Jared,

    What exactly worries you? Please be more specific.

    I can share code all my code changes with you.

    But please help me resolve the issue!

    -Vishal

  • Hi Vishal,

    The dmesg log states the ov5640 is requesting a reset-gpio.

    You likely need to signify the reset-gpio with the reset-gpios property in the device tree.

    Best,
    Jared

  • Jared,

    e reset-gpio with the reset-gpios property in the device tree.

    Please see the log of 6.03 SDK 's dmesg. In it too you will see reset-gpio related logs but the camera is working fine in it. 

    dmesg
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 4.19.94-gbe5389fd85 (root@cdot-TAL) (gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) #44 SMP PREEMPT Tue Jul 30 16:06:39 IST 2024
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 24 MiB at 0x00000000fd800000
    [    0.000000] OMAP4: Map 0x000000027fd00000 to (ptrval) for dram barrier
    [    0.000000] On node 0 totalpages: 986112
    [    0.000000]   DMA zone: 1728 pages used for memmap
    [    0.000000]   DMA zone: 0 pages reserved
    [    0.000000]   DMA zone: 139008 pages, LIFO batch:31
    [    0.000000]   HighMem zone: 847104 pages, LIFO batch:63
    [    0.000000] DRA752 ES2.0
    [    0.000000] random: get_random_bytes called from start_kernel+0xb4/0x470 with crng_init=0
    [    0.000000] percpu: Embedded 15 pages/cpu s32396 r8192 d20852 u61440
    [    0.000000] pcpu-alloc: s32396 r8192 d20852 u61440 alloc=15*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 984384
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=382609cd-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 3735828K/3944448K available (10240K kernel code, 336K rwdata, 2900K rodata, 2048K init, 278K bss, 52972K reserved, 155648K cma-reserved, 3363840K highmem)
    [    0.000000] Virtual kernel memory layout:
                       vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                       fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                       vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
                       lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
                       pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                       modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                         .text : 0x(ptrval) - 0x(ptrval)   (12256 kB)
                         .init : 0x(ptrval) - 0x(ptrval)   (2048 kB)
                         .data : 0x(ptrval) - 0x(ptrval)   ( 337 kB)
                          .bss : 0x(ptrval) - 0x(ptrval)   ( 279 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] 	Tasks RCU enabled.
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] OMAP clockevent source: timer1 at 32786 Hz
    [    0.000000] arch_timer: cp15 timer(s) running at 6.14MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16af5adb9, max_idle_ns: 440795202250 ns
    [    0.000005] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511023ns
    [    0.000019] Switching to timer-based delay loop, resolution 162ns
    [    0.000301] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000311] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000812] Console: colour dummy device 80x30
    [    0.000854] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.29 BogoMIPS (lpj=61475)
    [    0.000868] pid_max: default: 32768 minimum: 301
    [    0.000994] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.001007] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.001561] CPU: Testing write buffer coherency: ok
    [    0.001596] CPU0: Spectre v2: using ICIALLU workaround
    [    0.001810] /cpus/cpu@0 missing clock-frequency property
    [    0.001829] /cpus/cpu@1 missing clock-frequency property
    [    0.001842] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.059900] Setting up static identity map for 0x80200000 - 0x80200060
    [    0.079912] rcu: Hierarchical SRCU implementation.
    [    0.100107] EFI services will not be available.
    [    0.119972] smp: Bringing up secondary CPUs ...
    [    0.200358] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.200364] CPU1: Spectre v2: using ICIALLU workaround
    [    0.200486] smp: Brought up 1 node, 2 CPUs
    [    0.200498] SMP: Total of 2 processors activated (24.59 BogoMIPS).
    [    0.200506] CPU: All CPU(s) started in HYP mode.
    [    0.200514] CPU: Virtualization extensions available.
    [    0.201087] devtmpfs: initialized
    [    0.220917] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.221175] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.221194] futex hash table entries: 512 (order: 3, 32768 bytes)
    [    0.223808] pinctrl core: initialized pinctrl subsystem
    [    0.224325] DMI not present or invalid.
    [    0.224594] NET: Registered protocol family 16
    [    0.225745] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.226695] omap_hwmod: l3_main_2 using broken dt data from ocp
    [    0.420340] cpuidle: using governor ladder
    [    0.420393] cpuidle: using governor menu
    [    0.430707] gpio gpiochip0: (gpio-0-31): added GPIO chardev (254:0)
    [    0.430775] gpiochip_setup_dev: registered GPIOs 0 to 31 on device: gpiochip0 (gpio-0-31)
    [    0.430819] OMAP GPIO hardware version 0.1
    [    0.431440] gpio gpiochip1: (gpio-32-63): added GPIO chardev (254:1)
    [    0.431509] gpiochip_setup_dev: registered GPIOs 32 to 63 on device: gpiochip1 (gpio-32-63)
    [    0.432149] gpio gpiochip2: (gpio-64-95): added GPIO chardev (254:2)
    [    0.432214] gpiochip_setup_dev: registered GPIOs 64 to 95 on device: gpiochip2 (gpio-64-95)
    [    0.432846] gpio gpiochip3: (gpio-96-127): added GPIO chardev (254:3)
    [    0.432912] gpiochip_setup_dev: registered GPIOs 96 to 127 on device: gpiochip3 (gpio-96-127)
    [    0.433545] gpio gpiochip4: (gpio-128-159): added GPIO chardev (254:4)
    [    0.433611] gpiochip_setup_dev: registered GPIOs 128 to 159 on device: gpiochip4 (gpio-128-159)
    [    0.434247] gpio gpiochip5: (gpio-160-191): added GPIO chardev (254:5)
    [    0.434325] gpiochip_setup_dev: registered GPIOs 160 to 191 on device: gpiochip5 (gpio-160-191)
    [    0.434946] gpio gpiochip6: (gpio-192-223): added GPIO chardev (254:6)
    [    0.435016] gpiochip_setup_dev: registered GPIOs 192 to 223 on device: gpiochip6 (gpio-192-223)
    [    0.435656] gpio gpiochip7: (gpio-224-255): added GPIO chardev (254:7)
    [    0.435722] gpiochip_setup_dev: registered GPIOs 224 to 255 on device: gpiochip7 (gpio-224-255)
    [    0.457485] No ATAGs?
    [    0.457559] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.457575] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.458427] OMAP DMA hardware revision 0.0
    [    0.470242] edma 43300000.edma: memcpy is disabled
    [    0.473577] edma 43300000.edma: TI EDMA DMA engine driver
    [    0.480687] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.481263] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-main_12v0[0]'
    [    0.481519] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_5v0[0]'
    [    0.481542] evm_5v0: supplied by main_12v0
    [    0.481803] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vdd_3v3[0]'
    [    0.482030] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-aic_dvdd[0]'
    [    0.482292] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-vtt[0]' - status (0)
    [    0.485016] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    0.485195] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    0.485436] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    0.485686] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    0.486068] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    0.486247] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    0.486533] iommu: Adding device 58820000.ipu to group 1
    [    0.486618] iommu: Adding device 55020000.ipu to group 2
    [    0.486754] iommu: Adding device 40800000.dsp to group 0
    [    0.487004] iommu: Adding device 41000000.dsp to group 3
    [    0.488191] SCSI subsystem initialized
    [    0.489240] palmas 0-0058: Irq flag is 0x00000008
    [    0.512205] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    0.513800] SMPS12: supplied by regulator-dummy
    [    0.515472] SMPS3: supplied by regulator-dummy
    [    0.517117] SMPS45: supplied by regulator-dummy
    [    0.518927] SMPS6: supplied by regulator-dummy
    [    0.520334] SMPS7: supplied by regulator-dummy
    [    0.521736] SMPS8: supplied by regulator-dummy
    [    0.522997] SMPS9: supplied by regulator-dummy
    [    0.523667] LDO1: supplied by regulator-dummy
    [    0.531335] LDO2: supplied by regulator-dummy
    [    0.540924] random: fast init done
    [    0.541198] LDO3: supplied by regulator-dummy
    [    0.551219] LDO4: supplied by regulator-dummy
    [    0.561240] LDO5: supplied by regulator-dummy
    [    0.561931] LDO6: supplied by regulator-dummy
    [    0.562629] LDO7: supplied by regulator-dummy
    [    0.563317] LDO8: supplied by regulator-dummy
    [    0.564007] LDO9: supplied by regulator-dummy
    [    0.571259] LDOLN: supplied by regulator-dummy
    [    0.581278] LDOUSB: supplied by regulator-dummy
    [    0.592916] gpiochip_find_base: found new base at 504
    [    0.593060] gpio gpiochip8: (48070000.i2c:tps659038@58:tps659038_gpio): added GPIO chardev (254:8)
    [    0.593134] gpiochip_setup_dev: registered GPIOs 504 to 511 on device: gpiochip8 (48070000.i2c:tps659038@58:tps659038_gpio)
    [    0.593596] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    0.594271] omap_i2c 48072000.i2c: bus 1 rev0.12 at 400 kHz
    [    0.594890] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    0.595393] omap_i2c 4807a000.i2c: bus 3 rev0.12 at 400 kHz
    [    0.595908] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    0.596135] media: Linux media interface: v0.10
    [    0.596175] videodev: Linux video capture interface: v2.00
    [    0.596252] pps_core: LinuxPPS API ver. 1 registered
    [    0.596261] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.596281] PTP clock support registered
    [    0.596311] EDAC MC: Ver: 3.0.0
    [    0.597095] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    0.597349] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    0.597875] Advanced Linux Sound Architecture Driver Initialized.
    [    0.598312] Bluetooth: Core ver 2.22
    [    0.598351] NET: Registered protocol family 31
    [    0.598360] Bluetooth: HCI device and connection manager initialized
    [    0.598374] Bluetooth: HCI socket layer initialized
    [    0.598387] Bluetooth: L2CAP socket layer initialized
    [    0.598423] Bluetooth: SCO socket layer initialized
    [    0.598776] clocksource: Switched to clocksource arch_sys_counter
    [    0.607006] NET: Registered protocol family 2
    [    0.607585] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
    [    0.607614] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.607652] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
    [    0.607721] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.607793] UDP hash table entries: 256 (order: 1, 8192 bytes)
    [    0.607817] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
    [    0.607935] NET: Registered protocol family 1
    [    0.628381] RPC: Registered named UNIX socket transport module.
    [    0.628392] RPC: Registered udp transport module.
    [    0.628400] RPC: Registered tcp transport module.
    [    0.628408] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.628420] PCI: CLS 0 bytes, default 64
    [    0.629508] hw perfevents: no interrupt-affinity property for /pmu, guessing.
    [    0.629722] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.630715] Initialise system trusted keyrings
    [    0.630853] workingset: timestamp_bits=14 max_order=20 bucket_order=6
    [    0.635831] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.646324] NFS: Registering the id_resolver key type
    [    0.646348] Key type id_resolver registered
    [    0.646357] Key type id_legacy registered
    [    0.646397] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.649840] Key type asymmetric registered
    [    0.649853] Asymmetric key parser 'x509' registered
    [    0.649905] bounce: pool size: 64 pages
    [    0.649939] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
    [    0.649950] io scheduler noop registered
    [    0.649959] io scheduler deadline registered
    [    0.650061] io scheduler cfq registered (default)
    [    0.650071] io scheduler mq-deadline registered
    [    0.650081] io scheduler kyber registered
    [    0.655949] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.660834] dra7-pcie 51000000.pcie: Linked as a consumer to phy-4a094000.pciephy.1
    [    0.661006] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
    [    0.661014] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
    [    0.661033] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/ocp/axi@0/pcie@51000000[0]'
    [    0.661048] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/ocp/axi@0/pcie@51000000[0]'
    [    0.661057] dra7-pcie 51000000.pcie: using lookup tables for GPIO lookup
    [    0.661065] dra7-pcie 51000000.pcie: No GPIO consumer (null) found
    [    0.661239] dra7-pcie 51000000.pcie: host bridge /ocp/axi@0/pcie@51000000 ranges:
    [    0.661257] dra7-pcie 51000000.pcie: Parsing ranges property...
    [    0.661289] dra7-pcie 51000000.pcie:    IO 0x20003000..0x20012fff -> 0x00000000
    [    0.661317] dra7-pcie 51000000.pcie:   MEM 0x20013000..0x2fffffff -> 0x20013000
    [    0.761407] dra7-pcie 51000000.pcie: Link up
    [    0.761543] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    0.761558] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    0.761569] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    0.761581] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    0.761591] pci_bus 0000:00: scanning bus
    [    0.761622] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    0.761655] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
    [    0.761717] pci 0000:00:00.0: supports D1
    [    0.761726] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    0.761735] pci 0000:00:00.0: PME# disabled
    [    0.767963] pci_bus 0000:00: fixups for bus
    [    0.767976] PCI: bus0: Fast back to back transfers disabled
    [    0.767991] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 0
    [    0.768088] pci_bus 0000:01: scanning bus
    [    0.768165] pci 0000:01:00.0: [8086:2526] type 00 class 0x028000
    [    0.768297] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
    [    0.768750] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
    [    0.768800] pci 0000:01:00.0: PME# disabled
    [    0.804767] pci_bus 0000:01: fixups for bus
    [    0.804797] PCI: bus1: Fast back to back transfers disabled
    [    0.804809] pci_bus 0000:01: bus scan returning with max=01
    [    0.804822] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 1
    [    0.804833] pci_bus 0000:00: bus scan returning with max=ff
    [    0.804864] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff 64bit]
    [    0.804884] pci 0000:00:00.0: BAR 8: assigned [mem 0x20200000-0x202fffff]
    [    0.804901] pci 0000:01:00.0: BAR 0: assigned [mem 0x20200000-0x20203fff 64bit]
    [    0.804953] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    0.804967] pci 0000:00:00.0:   bridge window [mem 0x20200000-0x202fffff]
    [    0.805097] pcieport 0000:00:00.0: assign IRQ: got 177
    [    0.805302] pcieport 0000:00:00.0: Signaling PME with IRQ 178
    [    0.805434] pcieport 0000:00:00.0: AER enabled with IRQ 178
    [    0.806534] pwm-backlight backlight: GPIO lookup for consumer enable
    [    0.806542] pwm-backlight backlight: using device tree for GPIO lookup
    [    0.806558] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
    [    0.806571] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
    [    0.806580] pwm-backlight backlight: using lookup tables for GPIO lookup
    [    0.806588] pwm-backlight backlight: No GPIO consumer enable found
    [    0.806626] pwm-backlight backlight: backlight supply power not found, using dummy regulator
    [    0.806703] pwm-backlight backlight: Linked as a consumer to regulator.0
    [    0.806856] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    0.807939] gpio-clk clk_ov5640: GPIO lookup for consumer enable
    [    0.807946] gpio-clk clk_ov5640: using device tree for GPIO lookup
    [    0.807973] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/clk_ov5640[0]' - status (0)
    [    0.808007] gpio gpiochip4: Persistence not supported for GPIO 18
    [    0.810181] vdd_3v3: supplied by regen1
    [    0.810414] aic_dvdd_fixed: supplied by vdd_3v3
    [    0.810485] vtt_fixed: supplied by smps3
    [    0.855459] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.859084] 4806a000.serial: ttyS0 at MMIO 0x4806a000 (irq = 45, base_baud = 3000000) is a 8250
    [    0.860040] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 46, base_baud = 3000000) is a 8250
    [    2.031876] console [ttyS2] enabled
    [    2.037603] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    2.038119] random: crng init done
    [    2.044784] omapdss_dss 58000000.dss: Linked as a consumer to regulator.22
    [    2.054388] omapdss_dss 58000000.dss: Dropping the link to regulator.22
    [    2.066521] panel-simple display: display supply power not found, using dummy regulator
    [    2.074638] panel-simple display: Linked as a consumer to regulator.0
    [    2.081235] panel-simple display: GPIO lookup for consumer enable
    [    2.081242] panel-simple display: using device tree for GPIO lookup
    [    2.081272] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/display[0]' - status (0)
    [    2.081288] gpio gpiochip4: Persistence not supported for GPIO 12
    [    2.081299] panel-simple display: GPIO lookup for consumer attr
    [    2.081306] panel-simple display: using device tree for GPIO lookup
    [    2.081330] of_get_named_gpiod_flags: parsed 'attr-gpios' property of node '/display[0]' - status (0)
    [    2.081343] gpio gpiochip6: Persistence not supported for GPIO 14
    [    2.089619] brd: module loaded
    [    2.099006] loop: module loaded
    [    2.106523] omap2_mcspi 48098000.spi: registered master spi1
    [    2.106671] spi spi1.0: setup: speed 500000, sample leading edge, clk normal
    [    2.106683] spi spi1.0: setup mode 0, 8 bits/w, 500000 Hz max --> 0
    [    2.114236] tpm_tis_spi spi1.0: 2.0 TPM (device-id 0x1B, rev-id 22)
    [    2.127103] tpm tpm0: A TPM error (256) occurred attempting the self test
    [    2.133959] tpm tpm0: starting up the TPM manually
    [    2.757315] omap2_mcspi 48098000.spi: registered child spi1.0
    [    2.757715] mdio_bus fixed-0: GPIO lookup for consumer reset
    [    2.757723] mdio_bus fixed-0: using lookup tables for GPIO lookup
    [    2.757731] mdio_bus fixed-0: No GPIO consumer reset found
    [    2.757755] libphy: Fixed MDIO Bus: probed
    [    2.764902] mdio_bus 48485000.mdio: GPIO lookup for consumer reset
    [    2.764909] mdio_bus 48485000.mdio: using device tree for GPIO lookup
    [    2.764927] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/ethernet@48484000/mdio@48485000[0]'
    [    2.764942] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/ethernet@48484000/mdio@48485000[0]'
    [    2.764951] mdio_bus 48485000.mdio: using lookup tables for GPIO lookup
    [    2.764959] mdio_bus 48485000.mdio: No GPIO consumer reset found
    [    2.818815] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.826509] libphy: 48485000.mdio: probed
    [    2.832768] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/ethernet@48484000/mdio@48485000/ethernet-phy@0[0]'
    [    2.834822] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/ethernet@48484000/mdio@48485000/ethernet-phy@1[0]'
    [    2.834945] davinci_mdio 48485000.mdio: phy[0]: device 48485000.mdio:00, driver Microsemi GE VSC8502 SyncE
    [    2.844668] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver Microsemi GE VSC8502 SyncE
    [    2.854921] cpsw 48484000.ethernet: Detected MACID = d0:03:eb:6c:3f:16
    [    2.861556] cpsw 48484000.ethernet: initialized cpsw ale version 1.4
    [    2.867942] cpsw 48484000.ethernet: ALE Table size 1024
    [    2.873254] cpsw 48484000.ethernet: cpts: overflow check period 500 (jiffies)
    [    2.881269] cpsw 48484000.ethernet: cpsw: Detected MACID = d0:03:eb:6c:3f:17
    [    2.889700]  DEBUG: keypad irq = 103
    [    2.893299] 
                   DEBUG: Autorepeat disabled 
    [    2.898984] input: 4ae1c000.keypad as /devices/platform/44000000.ocp/4ae1c000.keypad/input/input0
    [    2.908739] edt_ft5x06 4-0038: GPIO lookup for consumer reset
    [    2.908747] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    2.908792] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/i2c@4807c000/edt-ft5x06@38[0]'
    [    2.908808] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/i2c@4807c000/edt-ft5x06@38[0]'
    [    2.908817] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    2.908825] edt_ft5x06 4-0038: No GPIO consumer reset found
    [    2.908833] edt_ft5x06 4-0038: GPIO lookup for consumer wake
    [    2.908839] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    2.908854] of_get_named_gpiod_flags: can't parse 'wake-gpios' property of node '/ocp/i2c@4807c000/edt-ft5x06@38[0]'
    [    2.908867] of_get_named_gpiod_flags: can't parse 'wake-gpio' property of node '/ocp/i2c@4807c000/edt-ft5x06@38[0]'
    [    2.908875] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    2.908883] edt_ft5x06 4-0038: No GPIO consumer wake found
    [    2.940809] input: generic ft5x06 (8d) as /devices/platform/44000000.ocp/4807c000.i2c/i2c-4/4-0038/input/input1
    [    2.979256] rtc-ds1307 2-006f: got IRQ 181
    [    2.979581] rtc-ds1307 2-006f: read: c7 57 12 29 24 08 25
    [    2.979591] rtc-ds1307 2-006f: read secs=47, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [    2.979969] rtc-ds1307 2-006f: mcp794xx_read_alarm, sec=44 min=26 hour=5 wday=3 mday=6 mon=7 enabled=0 polarity=0 irq=0 match=7
    [    2.980275] rtc-ds1307 2-006f: read: c7 57 12 29 24 08 25
    [    2.980285] rtc-ds1307 2-006f: read secs=47, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [    2.980294] rtc rtc0: alarm rollover: year
    [    2.980599] rtc-ds1307 2-006f: read: c7 57 12 29 24 08 25
    [    2.980610] rtc-ds1307 2-006f: read secs=47, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [    2.980749] rtc-ds1307 2-006f: char device (252:0)
    [    2.980762] rtc-ds1307 2-006f: registered as rtc0
    [    2.988398] rtc rtc1: 48070000.i2c:tps659038@58:tps659038_rtc: dev (252:1)
    [    2.988408] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: rtc core: registered 48070000.i2c:tps659038@58:tps659038_rtc as rtc1
    [    3.001493] i2c /dev entries driver
    [    3.007182] gpio-fan gpio_fan: GPIO lookup for consumer alarm
    [    3.007189] gpio-fan gpio_fan: using device tree for GPIO lookup
    [    3.007205] of_get_named_gpiod_flags: can't parse 'alarm-gpios' property of node '/gpio_fan[0]'
    [    3.007219] of_get_named_gpiod_flags: can't parse 'alarm-gpio' property of node '/gpio_fan[0]'
    [    3.007228] gpio-fan gpio_fan: using lookup tables for GPIO lookup
    [    3.007236] gpio-fan gpio_fan: No GPIO consumer alarm found
    [    3.007249] gpio-fan gpio_fan: GPIO lookup for consumer (null)
    [    3.007256] gpio-fan gpio_fan: using device tree for GPIO lookup
    [    3.007280] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio_fan[0]' - status (0)
    [    3.007288] no flags found for (null)
    [    3.008513] gpio-fan gpio_fan: GPIO fan initialized
    [    3.017027] cpu cpu0: Linked as a consumer to regulator.6
    [    3.022553] cpu cpu0: Linked as a consumer to regulator.29
    [    3.029775] sdhci: Secure Digital Host Controller Interface driver
    [    3.035984] sdhci: Copyright(c) Pierre Ossman
    [    3.041827] sdhci-pltfm: SDHCI platform and OF driver helper
    [    3.048116] sdhci-omap 4809c000.mmc: GPIO lookup for consumer cd
    [    3.048122] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    3.048140] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@4809c000[0]' - status (0)
    [    3.048169] gpio gpiochip5: Persistence not supported for GPIO 27
    [    3.048177] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    3.057014] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    3.061682] sdhci-omap 4809c000.mmc: GPIO lookup for consumer wp
    [    3.061686] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    3.061697] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@4809c000[0]'
    [    3.061707] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@4809c000[0]'
    [    3.061713] sdhci-omap 4809c000.mmc: using lookup tables for GPIO lookup
    [    3.061718] sdhci-omap 4809c000.mmc: No GPIO consumer wp found
    [    3.061847] sdhci-omap 4809c000.mmc: Linked as a consumer to regulator.28
    [    3.068876] sdhci-omap 4809c000.mmc: Linked as a consumer to regulator.13
    [    3.075745] sdhci-omap 4809c000.mmc: Dropping the link to regulator.13
    [    3.082390] sdhci-omap 4809c000.mmc: Linked as a consumer to regulator.3
    [    3.089316] sdhci-omap 4809c000.mmc: Linked as a consumer to regulator.13
    [    3.096249] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    3.129426] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.137195] sdhci-omap 480b4000.mmc: GPIO lookup for consumer wp
    [    3.137203] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup
    [    3.137220] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@480b4000[0]'
    [    3.137235] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@480b4000[0]'
    [    3.137244] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup
    [    3.137251] sdhci-omap 480b4000.mmc: No GPIO consumer wp found
    [    3.137446] sdhci-omap 480b4000.mmc: Linked as a consumer to regulator.3
    [    3.144282] sdhci-omap 480b4000.mmc: Dropping the link to regulator.3
    [    3.151006] sdhci-omap 480b4000.mmc: Linked as a consumer to regulator.3
    [    3.181562] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.189551] ledtrig-cpu: registered to indicate activity on CPUs
    [    3.203373] NET: Registered protocol family 10
    [    3.208536] Segment Routing with IPv6
    [    3.212298] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    3.218615] NET: Registered protocol family 17
    [    3.223260] Key type dns_resolver registered
    [    3.227638] Registering SWP/SWPB emulation handler
    [    3.232484] omap_voltage_late_init: Voltage driver support not added
    [    3.238899] Power Management for TI OMAP4+ devices.
    [    3.244309] Loading compiled-in X.509 certificates
    [    3.265650] mmc1: new DDR MMC card at address 0001
    [    3.272536] dmm 4e000000.dmm: workaround for errata i878 in use
    [    3.279840] dmm 4e000000.dmm: initialized all PAT entries
    [    3.281155] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.289988] omapdss_dss 58000000.dss: Linked as a consumer to regulator.22
    [    3.290266] mmcblk1boot0: mmc1:0001 032GB4 partition 1 8.00 MiB
    [    3.297108] DSS: OMAP DSS rev 6.1
    [    3.303234] mmcblk1boot1: mmc1:0001 032GB4 partition 2 8.00 MiB
    [    3.307167] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops)
    [    3.312253] mmcblk1rpmb: mmc1:0001 032GB4 partition 3 4.00 MiB, chardev (243:0)
    [    3.338698]  mmcblk1: p1 p2
    [    3.349281] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [    3.355924] [drm] No driver support for vblank timestamp query.
    [    3.365424] [drm] Enabling DMM ywrap scrolling
    [    3.373196] Console: switching to colour frame buffer device 128x37
    [    3.382449] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
    [    3.389004] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [    3.396593] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpio' property of node '/sound0[0]'
    [    3.396604] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpio' property of node '/sound0[0]'
    [    3.428296] #reg_def_conf: Done..
    [    3.431647] #aic3262_probe: I2C IRQ Configuration is Wrong. 			Please check it..
    [    3.439099] #aic3262_asi_default_config: Invoked. Will Config ASI Registers to Defaults..
    [    3.448198] aic3262-codec 3-0018: Control not supported for path IN1L -> [IN1L Route] -> Left ADC
    [    3.457239] aic3262-codec 3-0018: ASoC: no dapm match for IN1L --> IN1L Route --> Left ADC
    [    3.465553] aic3262-codec 3-0018: ASoC: Failed to add route IN1L -> IN1L Route -> Left ADC
    [    3.473863] aic3262-codec 3-0018: Control not supported for path IN2L -> [IN2L Route] -> Left ADC
    [    3.482782] aic3262-codec 3-0018: ASoC: no dapm match for IN2L --> IN2L Route --> Left ADC
    [    3.491091] aic3262-codec 3-0018: ASoC: Failed to add route IN2L -> IN2L Route -> Left ADC
    [    3.499406] aic3262-codec 3-0018: Control not supported for path IN3L -> [IN3L Route] -> Left ADC
    [    3.508315] aic3262-codec 3-0018: ASoC: no dapm match for IN3L --> IN3L Route --> Left ADC
    [    3.516623] aic3262-codec 3-0018: ASoC: Failed to add route IN3L -> IN3L Route -> Left ADC
    [    3.524929] aic3262-codec 3-0018: Control not supported for path IN4L -> [IN4L Route] -> Left ADC
    [    3.533845] aic3262-codec 3-0018: ASoC: no dapm match for IN4L --> IN4L Route --> Left ADC
    [    3.542152] aic3262-codec 3-0018: ASoC: Failed to add route IN4L -> IN4L Route -> Left ADC
    [    3.550463] aic3262-codec 3-0018: Control not supported for path IN1R -> [IN1R Route] -> Right ADC
    [    3.559468] aic3262-codec 3-0018: ASoC: no dapm match for IN1R --> IN1R Route --> Right ADC
    [    3.567854] aic3262-codec 3-0018: ASoC: Failed to add route IN1R -> IN1R Route -> Right ADC
    [    3.576249] aic3262-codec 3-0018: Control not supported for path IN2R -> [IN2R Route] -> Right ADC
    [    3.585256] aic3262-codec 3-0018: ASoC: no dapm match for IN2R --> IN2R Route --> Right ADC
    [    3.593653] aic3262-codec 3-0018: ASoC: Failed to add route IN2R -> IN2R Route -> Right ADC
    [    3.602049] aic3262-codec 3-0018: Control not supported for path IN3R -> [IN3R Route] -> Right ADC
    [    3.611053] aic3262-codec 3-0018: ASoC: no dapm match for IN3R --> IN3R Route --> Right ADC
    [    3.619448] aic3262-codec 3-0018: ASoC: Failed to add route IN3R -> IN3R Route -> Right ADC
    [    3.627832] aic3262-codec 3-0018: Control not supported for path IN4R -> [IN4R Route] -> Right ADC
    [    3.636838] aic3262-codec 3-0018: ASoC: no dapm match for IN4R --> IN4R Route --> Right ADC
    [    3.645234] aic3262-codec 3-0018: ASoC: Failed to add route IN4R -> IN4R Route -> Right ADC
    [    3.653837] #aic3262_probe: done..
    [    3.657277] #aic3262_multi_i2s_set_dai_sysclk: DAI ID 1 Freq 22579200 Direction 0
    [    3.664842] aic3262_multi_i2s_asi1_set_dai_fmt: DAI_ID 1 fmt 4097
    [    3.671219] #aic3262_multi_i2s_asi1_set_dai_fmt: Configuring ASI1 as Frame Master..
    [    3.678926] #aic3262_multi_i2s_asi1_set_dai_fmt: Configuring ASI1 for I2s Mode..
    [    3.687232] asoc-simple-card sound0: aic3262-asi1 <-> 48468000.mcasp mapping ok
    [    3.694601] asoc-simple-card sound0: ASoC: no DMI vendor name!
    [    3.702026] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio_keys/USER1[0]' - status (0)
    [    3.702040] gpio gpiochip0: Persistence not supported for GPIO 14
    [    3.702156] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio_keys/USER2[0]' - status (0)
    [    3.702192] gpio gpiochip1: Persistence not supported for GPIO 6
    [    3.702267] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio_keys/USER3[0]' - status (0)
    [    3.702276] gpio gpiochip4: Persistence not supported for GPIO 1
    [    3.702430] input: gpio_keys as /devices/platform/gpio_keys/input/input2
    [    3.709662] rtc-ds1307 2-006f: read: c8 57 12 29 24 08 25
    [    3.709669] rtc-ds1307 2-006f: read secs=48, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [    3.709688] rtc-ds1307 2-006f: setting system clock to 2025-08-24 12:57:48 UTC (1756040268)
    [    3.718676] ALSA device list:
    [    3.721696]   #0: BeagleBoard-X15
    [    3.731509] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.739710] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.748072] devtmpfs: mounted
    [    3.751966] Freeing unused kernel memory: 2048K
    [    3.756613] Run /sbin/init as init process
    [    3.888151] systemd[1]: systemd 239 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
    [    3.910399] systemd[1]: Detected architecture arm.
    [    3.949936] systemd[1]: Set hostname to <am57xx-evm>.
    [    4.058745] systemd[1]: File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
    [    4.076151] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
    [    4.243759] systemd[1]: Listening on Journal Socket.
    [    4.279218] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.321448] systemd[1]: Created slice User and Session Slice.
    [    4.348884] systemd[1]: Reached target Slices.
    [    4.378879] systemd[1]: Reached target Remote File Systems.
    [    4.777987] cmemk: loading out-of-tree module taints kernel.
    [    4.784784] CMEMK module: reference Linux version 4.19.94
    [    4.790934] allocated heap buffer 0x40500000 of size 0x100000
    [    4.801841] cmemk initialized
    [    4.812827] cryptodev: driver 1.9 loaded.
    [    4.818128] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [    4.873687] usbcore: registered new interface driver usbfs
    [    4.879487] usbcore: registered new interface driver hub
    [    4.884930] usbcore: registered new device driver usb
    [    4.898524] usbcore: registered new interface driver ftdi_sio
    [    4.904419] usbserial: USB Serial support registered for FTDI USB Serial Device
    [    5.703722] systemd-journald[118]: Received request to flush runtime journal from PID 1
    [    5.827270] omap-rproc 58820000.ipu: ignoring dependency for device, assuming no driver
    [    5.878464] omap-rproc 58820000.ipu: ignoring dependency for device, assuming no driver
    [    5.901099] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    5.939189] remoteproc remoteproc0: 58820000.ipu is available
    [    5.968190] omap-rproc 55020000.ipu: ignoring dependency for device, assuming no driver
    [    5.980974] omap-rproc 55020000.ipu: ignoring dependency for device, assuming no driver
    [    5.992649] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    6.004941] remoteproc remoteproc1: 55020000.ipu is available
    [    6.017060] omap-rproc 40800000.dsp: ignoring dependency for device, assuming no driver
    [    6.031178] omap-rproc 40800000.dsp: ignoring dependency for device, assuming no driver
    [    6.059683] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    6.116463] remoteproc remoteproc0: powering up 58820000.ipu
    [    6.122375] remoteproc remoteproc1: powering up 55020000.ipu
    [    6.128068] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747220
    [    6.141224] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 6887428
    [    6.150220] remoteproc remoteproc2: 40800000.dsp is available
    [    6.163971] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    6.207565] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    6.236672] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [    6.241612] remoteproc remoteproc0: registered virtio0 (type 7)
    [    6.260192] omap-rproc 41000000.dsp: ignoring dependency for device, assuming no driver
    [    6.286722] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    6.332824] omap-rproc 41000000.dsp: ignoring dependency for device, assuming no driver
    [    6.388938] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    6.402484] remoteproc remoteproc3: 41000000.dsp is available
    [    6.481057] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [    6.487969] ov5640 2-003c: GPIO lookup for consumer powerdown
    [    6.487976] ov5640 2-003c: using device tree for GPIO lookup
    [    6.488002] of_get_named_gpiod_flags: parsed 'powerdown-gpios' property of node '/ocp/i2c@48060000/ov5640@3c[0]' - status (0)
    [    6.488017] gpio gpiochip4: Persistence not supported for GPIO 17
    [    6.488025] ov5640 2-003c: GPIO lookup for consumer reset
    [    6.488030] ov5640 2-003c: using device tree for GPIO lookup
    [    6.488041] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/i2c@48060000/ov5640@3c[0]'
    [    6.488052] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/i2c@48060000/ov5640@3c[0]'
    [    6.488060] ov5640 2-003c: using lookup tables for GPIO lookup
    [    6.488066] ov5640 2-003c: No GPIO consumer reset found
    [    6.488111] ov5640 2-003c: 2-003c supply DOVDD not found, using dummy regulator
    [    6.516724] Error: Driver 'rtc-ds1307' is already registered, aborting...
    [    6.532739] Driver for 1-wire Dallas network protocol.
    [    6.538460] at24 0-0050: GPIO lookup for consumer wp
    [    6.538467] at24 0-0050: using device tree for GPIO lookup
    [    6.538485] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/i2c@48070000/eeprom@50[0]'
    [    6.538496] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/i2c@48070000/eeprom@50[0]'
    [    6.538503] at24 0-0050: using lookup tables for GPIO lookup
    [    6.538509] at24 0-0050: No GPIO consumer wp found
    [    6.539005] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
    [    6.561174] ov5640 2-003c: Linked as a consumer to regulator.0
    [    6.575451] Intel(R) Wireless WiFi driver for Linux
    [    6.576238] remoteproc remoteproc2: powering up 40800000.dsp
    [    6.599826] ov5640 2-003c: 2-003c supply DVDD not found, using dummy regulator
    [    6.607198] ov5640 2-003c: 2-003c supply AVDD not found, using dummy regulator
    [    6.618234] Error: Driver 'palmas-rtc' is already registered, aborting...
    [    6.643497] Error: Driver 'rtc-ds1307' is already registered, aborting...
    [    6.643993] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer id
    [    6.650488] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 20482288
    [    6.652292] Copyright(c) 2003- 2015 Intel Corporation
    [    6.658547] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    6.665899] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    6.669390] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    6.673819] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]'
    [    6.675254] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]'
    [    6.675262] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using lookup tables for GPIO lookup
    [    6.675270] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: No GPIO consumer id found
    [    6.675277] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer vbus
    [    6.675282] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    6.675378] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]'
    [    6.675401] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]' - status (0)
    [    6.675449] gpio gpiochip3: Persistence not supported for GPIO 21
    [    6.675736] iwlwifi 0000:01:00.0: assign IRQ: got 177
    [    6.675789] iwlwifi 0000:01:00.0: enabling device (0140 -> 0142)
    [    6.691552] omap_hdq 480b2000.1w: OMAP HDQ Hardware Rev 0.:. Driver in Interrupt mode
    [    6.699770] 
                   Inside ov5640_init_slave_id 673 
    [    6.704922] iwlwifi 0000:01:00.0: enabling bus mastering
    [    6.765969] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    6.769094] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    6.778550] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    6.790042] remoteproc remoteproc1: registered virtio1 (type 7)
    [    6.805546] iwlwifi 0000:01:00.0: loaded firmware version 38.755cfdd8.0 op_mode iwlmvm
    [    6.827693] Error: Driver 'palmas-rtc' is already registered, aborting...
    [    6.878809] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    6.902374] omap_rtc 48838000.rtc: char device (252:2)
    [    6.902386] omap_rtc 48838000.rtc: registered as rtc2
    [    6.927564] w1_master_driver w1_bus_master1: Attaching one wire slave 01.000000000000 crc 3d
    [    6.959609] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    6.984571] remoteproc remoteproc2: registered virtio2 (type 7)
    [    7.016869] remoteproc remoteproc3: powering up 41000000.dsp
    [    7.033211] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    7.038354] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    7.047370] iwlwifi 0000:01:00.0: Detected Intel(R) Dual Band Wireless AC 9260, REV=0x324
    [    7.079572] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 20482288
    [    7.125014] w1_master_driver w1_bus_master1: Family 1 for 01.000000000000.3d is not registered.
    [    7.154792] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    7.160746] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    7.178485] virtio_rpmsg_bus virtio2: creating channel rpmsg-proto addr 0x3d
    [    7.212593] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [    7.218559] net eth0: initializing cpsw version 1.15 (0)
    [    7.241626] libata version 3.00 loaded.
    [    7.249046] vpe 489d0000.vpe: Device registered as /dev/video0
    [    7.255324] [drm] Initialized pvr 1.17.4948957 20110701 for 56000000.gpu on minor 1
    [    7.263177] vip 48990000.vip: VPDMA firmware loaded
    [    7.269004] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [    7.284191] ahci 4a140000.sata: controller can't do 64bit DMA, forcing 32bit
    [    7.284199] ahci 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    7.284235] ahci 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    7.284241] ahci 4a140000.sata: flags: ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    7.296079] vin3a: subdev ov5640 2-003c: code: 4001 idx: 0
    [    7.296083] vin3a: subdev ov5640 2-003c: code: 2006 idx: 1
    [    7.296088] vin3a: matched fourcc: NV12: code: 2006 idx: 0
    [    7.296091] vin3a: matched fourcc: UYVY: code: 2006 idx: 1
    [    7.296094] vin3a: matched fourcc: YUYV: code: 2006 idx: 2
    [    7.296098] vin3a: matched fourcc: VYUY: code: 2006 idx: 3
    [    7.296101] vin3a: matched fourcc: YVYU: code: 2006 idx: 4
    [    7.296104] vin3a: matched fourcc: RGB3: code: 2006 idx: 5
    [    7.296107] vin3a: matched fourcc: RGB4: code: 2006 idx: 6
    [    7.296110] vin3a: matched fourcc: BGR3: code: 2006 idx: 7
    [    7.296113] vin3a: matched fourcc: BGR4: code: 2006 idx: 8
    [    7.296116] vin3a: subdev ov5640 2-003c: code: 2008 idx: 2
    [    7.296119] vin3a: subdev ov5640 2-003c: code: 1008 idx: 3
    [    7.296122] vin3a: subdev ov5640 2-003c: code: 1007 idx: 4
    [    7.296262] vin3a-0: device registered as video1
    [    7.367786] PVR_K: UM DDK-(4948957) and KM DDK-(4948957) match. [ OK ]
    [    7.376815] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    7.382117] virtio_rpmsg_bus virtio3: creating channel rpmsg-proto addr 0x3d
    [    7.388502] remoteproc remoteproc3: registered virtio3 (type 7)
    [    7.469602] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    7.469709] scsi host0: ahci
    [    7.470056] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 85
    [    7.572018] iwlwifi 0000:01:00.0: base HW address: f4:26:79:63:58:d5
    [    7.589443] Microsemi GE VSC8502 SyncE 48485000.mdio:00: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=48485000.mdio:00, irq=POLL)
    [    7.626775] phy phy-4a084000.phy.3: Linked as a consumer to regulator.23
    [    7.646139] phy phy-4a085000.phy.4: Linked as a consumer to regulator.23
    [    7.685883] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [    7.719911] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    7.782125] net eth1: initializing cpsw version 1.15 (0)
    [    7.812727] ata1: SATA link down (SStatus 0 SControl 300)
    [    8.028764] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_dai_set_tdm_slot
    [    8.053111] Microsemi GE VSC8502 SyncE 48485000.mdio:01: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [    8.087982] snd_soc_simple_card_utils: Unknown symbol snd_soc_dai_set_tdm_slot (err -22)
    [    8.113296] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
    [    8.161721] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
    [    8.162696] thermal thermal_zone6: failed to read out thermal zone (-61)
    [    8.187628] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_jack_add_gpios
    [    8.267548] snd_soc_simple_card_utils: Unknown symbol snd_soc_jack_add_gpios (err -22)
    [    8.327453] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_card_jack_new
    [    8.403855] snd_soc_simple_card_utils: Unknown symbol snd_soc_card_jack_new (err -22)
    [    8.474386] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_audio_routing
    [    8.560040] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_audio_routing (err -22)
    [    8.637426] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_dai_set_sysclk
    [    8.710709] snd_soc_simple_card_utils: Unknown symbol snd_soc_dai_set_sysclk (err -22)
    [    8.791073] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_audio_simple_widgets
    [    8.826561] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_audio_simple_widgets (err -22)
    [    8.856319] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_card_name
    [    8.880808] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_card_name (err -22)
    [    8.935922] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_dai_set_tdm_slot
    [    8.959150] snd_soc_simple_card_utils: Unknown symbol snd_soc_dai_set_tdm_slot (err -22)
    [    8.979229] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_jack_add_gpios
    [    8.987971] snd_soc_simple_card_utils: Unknown symbol snd_soc_jack_add_gpios (err -22)
    [    9.018813] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_card_jack_new
    [    9.027469] snd_soc_simple_card_utils: Unknown symbol snd_soc_card_jack_new (err -22)
    [    9.052762] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_audio_routing
    [    9.082084] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_audio_routing (err -22)
    [    9.098846] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_dai_set_sysclk
    [    9.118828] snd_soc_simple_card_utils: Unknown symbol snd_soc_dai_set_sysclk (err -22)
    [    9.126824] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_audio_simple_widgets
    [    9.159041] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_audio_simple_widgets (err -22)
    [    9.187874] snd_soc_simple_card_utils: disagrees about version of symbol snd_soc_of_parse_card_name
    [    9.214619] snd_soc_simple_card_utils: Unknown symbol snd_soc_of_parse_card_name (err -22)
    [    9.343179] 
                   Setting Default Audio Device to Handsfree
    [    9.549987] rpmsg_rpc virtio1.rpmsg-rpc.-1.101: probing service dce-callback with src 1024 dst 101
    [    9.604517] NET: Registered protocol family 45
    [    9.656792] rpmsg_rpc virtio1.rpmsg-rpc.-1.102: probing service rpmsg-dce with src 1025 dst 102
    [    9.665786] rpmsg_rpc virtio1.rpmsg-rpc.-1.101: published functions = 4
    [    9.694684] iwlwifi 0000:01:00.0 wlp1s0: renamed from wlan0
    [    9.706035] remoteproc remoteproc4: 4b234000.pru is available
    [    9.721390] pru-rproc 4b234000.pru: PRU rproc node pru@4b234000 probed successfully
    [    9.729817] rpmsg_rpc virtio1.rpmsg-rpc.-1.102: published functions = 9
    [    9.767354] remoteproc remoteproc5: 4b238000.pru is available
    [    9.791904] pru-rproc 4b238000.pru: PRU rproc node pru@4b238000 probed successfully
    [    9.800575] remoteproc remoteproc6: 4b2b4000.pru is available
    [    9.811776] pru-rproc 4b2b4000.pru: PRU rproc node pru@4b2b4000 probed successfully
    [    9.825633] remoteproc remoteproc7: 4b2b8000.pru is available
    [    9.838317] pru-rproc 4b2b8000.pru: PRU rproc node pru@4b2b8000 probed successfully
    [   10.806561] cpsw 48484000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
    [   10.815682] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [   12.600573] 
                   Setting Default Audio Device to Handsfree
    [   13.284862] rtc-ds1307 2-006f: read: d7 57 12 29 24 08 25
    [   13.284873] rtc-ds1307 2-006f: read secs=57, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [   13.670868] rtc-ds1307 2-006f: write secs=57, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [   13.670879] rtc-ds1307 2-006f: write: d7 57 12 09 24 08 25
    [   13.672124] rtc-ds1307 2-006f: read: d7 57 12 29 24 08 25
    [   13.672142] rtc-ds1307 2-006f: read secs=57, mins=57, hours=12, mday=24, mon=7, year=125, wday=0
    [   14.001343] NET: Registered protocol family 38
    [   14.019986] cryptd: max_cpu_qlen set to 1000
    [   14.206543] gpio gpiochip3: Persistence not supported for GPIO 9
    [   14.206820] gpio gpiochip2: Persistence not supported for GPIO 1
    [   33.758839] aic_dvdd_fixed: disabling
    [   33.762731] ldousb: disabling
    

    You likely need to signify the reset-gpio with the reset-gpios property in the device tree.

    Like I had informed previously, there is no reset-gpio as input to the camera.

    What else is the issue now ??

    -Vishal

  • Hi Vishal,

    Can you set the ti,vip-channels = <1>?

    Also add a print statement within the alloc_stream function of drivers/media/platform/ti/vpe/vip.c

    Remove:

    ti,vip-instance = <1>; // VIP2 = instance 1
    ti,vip-port = <0>; // Port A

    Add to vin3_ep:

            hsync-active = <1>;
            pclk-sample = <1>;
            vsync-active = <1>;

    Best,
    Jared

  • Jared,

    Thank you!

    After doing these changes the /dev/video1 file is appearing. So it was not working due to missing entry in vin3a_ep  because irrespective of channel= 0 / 1 it is getting registered as video1 (I have experimented with both channel = 0 and 1) , although the following entries:-

    hsync-active = <1>;
    vsync-active = <1>;
    pclk-sample = <1>;

    were already present in dtsi as shown below:-

     ov5640@3c {
                    compatible = "ovti,ov5640";
                    reg = <0x3c>;
                    clock-names = "xclk";
                    clocks = <&clk_ov5640>;
                    pinctrl-names = "default";
                    pinctrl-0 = <&camera_gpio>;
                    powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    bus-width = <8>;
                                    data-shift = <2>;
                                    hsync-active = <1>;
                                    vsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                            };
                    };
            };
    

    Here is the updated vin3a entry

    &vin3a {
    
            ti,vip-channels = <1>;       // Channel 1
            status = "okay";
            vin3a_ep: endpoint {
                    remote-endpoint = <&cam>;
                    slave-mode;
                    hsync-active = <1>;
                    pclk-sample = <1>;
                    vsync-active = <1>;
            };
    };
    

    How is it channel independent and how is already present entry not coming to use ?

    Here is the dmesg output below:-

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.119-00012-ga6ec8c289b8f-dirty (root@cdot-VirtualBox) (arm-oe-linux-gnueabi-gcc (GCC) 11.5.0, GNU ld (GNU Binutils) 2.38.20220708) #52 SMP PREEMPT Wed Aug 13 11:39:06 IST 2025
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM5728 BeagleBoard-X15 rev C
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
    [    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
    [    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009d000000, size 32 MiB
    [    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
    [    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
    [    0.000000] cma: Reserved 64 MiB at 0x00000000ab800000
    [    0.000000] OMAP4: Map 0x00000000afd00000 to (ptrval) for dram barrier
    [    0.000000] Hit pending asynchronous external abort (FSR=0x00001211) during first unmask, this is most likely caused by a firmware/bootloader bug.
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000afcfffff]
    [    0.000000]   Normal   empty
    [    0.000000]   HighMem  [mem 0x00000000afd00000-0x000000027fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000956fffff]
    [    0.000000]   node   0: [mem 0x0000000095700000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009cffffff]
    [    0.000000]   node   0: [mem 0x000000009d000000-0x000000009effffff]
    [    0.000000]   node   0: [mem 0x000000009f000000-0x00000000afcfffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000feffffff]
    [    0.000000]   node   0: [mem 0x0000000200000000-0x000000027fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000027fffffff]
    [    0.000000] On node 0, zone HighMem: 768 pages in unavailable ranges
    [    0.000000] DRA752 ES2.0
    [    0.000000] clockdomain: ipu1_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] clockdomain: ipu_clkdm: powerdomain ipu_pwrdm does not exist
    [    0.000000] percpu: Embedded 16 pages/cpu s34324 r8192 d23020 u65536
    [    0.000000] pcpu-alloc: s34324 r8192 d23020 u65536 alloc=16*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1042182
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=5c496148-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000a3800000-0x00000000a7800000] (64MB)
    [    0.000000] Memory: 3758060K/4174848K available (12288K kernel code, 1468K rwdata, 3304K rodata, 2048K init, 309K bss, 220180K reserved, 196608K cma-reserved, 3325952K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 33kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.001403] TI gptimer clockevent: always-on 32786 Hz at /ocp/interconnect@4ae00000/segment@10000/target-module@8000
    [    0.003173] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2c000
    [    0.003326] TI gptimer percpu-dmtimer: 20000000 Hz at /ocp/interconnect@48800000/segment@0/target-module@2e000
    [    0.004241] Console: colour dummy device 80x30
    [    0.004272] Calibrating delay loop... 1993.93 BogoMIPS (lpj=9969664)
    [    0.062072] CPU: Testing write buffer coherency: ok
    [    0.062103] CPU0: Spectre v2: using ICIALLU workaround
    [    0.062103] CPU0: Spectre BHB: enabling loop workaround for all CPUs
    [    0.062103] pid_max: default: 32768 minimum: 301
    [    0.062255] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062255] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.062896] /cpus/cpu@0 missing clock-frequency property
    [    0.062927] /cpus/cpu@1 missing clock-frequency property
    [    0.062957] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.063598] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.063598] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.063690] Setting up static identity map for 0x80200000 - 0x80200138
    [    0.063781] rcu: Hierarchical SRCU implementation.
    [    0.063812] rcu: 	Max phase no-delay instances is 1000.
    [    0.065979] EFI services will not be available.
    [    0.066497] smp: Bringing up secondary CPUs ...
    [    0.126708] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.126739] CPU1: Spectre v2: using ICIALLU workaround
    [    0.126831] smp: Brought up 1 node, 2 CPUs
    [    0.126831] SMP: Total of 2 processors activated (3994.41 BogoMIPS).
    [    0.126861] CPU: All CPU(s) started in HYP mode.
    [    0.126861] CPU: Virtualization extensions available.
    [    0.127288] devtmpfs: initialized
    [    0.150207] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.150360] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.150390] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.154846] pinctrl core: initialized pinctrl subsystem
    [    0.155487] DMI not present or invalid.
    [    0.155914] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.157714] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.158660] thermal_sys: Registered thermal governor 'step_wise'
    [    0.158721] cpuidle: using governor menu
    [    0.184997] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@e00/clock@20
    [    0.185058] platform ocp: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@700/clock@20
    [    0.188659] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    0.190185] No ATAGs?
    [    0.190246] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.190277] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.208587] reg-fixed-voltage fixedregulator-main_12v0: GPIO lookup for consumer (null)
    [    0.208618] reg-fixed-voltage fixedregulator-main_12v0: using device tree for GPIO lookup
    [    0.208618] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-main_12v0[0]'
    [    0.208648] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-main_12v0[0]'
    [    0.208648] reg-fixed-voltage fixedregulator-main_12v0: using lookup tables for GPIO lookup
    [    0.208679] reg-fixed-voltage fixedregulator-main_12v0: No GPIO consumer (null) found
    [    0.208892] reg-fixed-voltage fixedregulator-evm_5v0: GPIO lookup for consumer (null)
    [    0.208923] reg-fixed-voltage fixedregulator-evm_5v0: using device tree for GPIO lookup
    [    0.208923] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-evm_5v0[0]'
    [    0.208953] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_5v0[0]'
    [    0.208953] reg-fixed-voltage fixedregulator-evm_5v0: using lookup tables for GPIO lookup
    [    0.208953] reg-fixed-voltage fixedregulator-evm_5v0: No GPIO consumer (null) found
    [    0.209564] iommu: Default domain type: Translated 
    [    0.209564] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.210906] SCSI subsystem initialized
    [    0.211059] libata version 3.00 loaded.
    [    0.211242] usbcore: registered new interface driver usbfs
    [    0.211273] usbcore: registered new interface driver hub
    [    0.211303] usbcore: registered new device driver usb
    [    0.211700] mc: Linux media interface: v0.10
    [    0.211761] pps_core: LinuxPPS API ver. 1 registered
    [    0.211761] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.211761] PTP clock support registered
    [    0.211883] EDAC MC: Ver: 3.0.0
    [    0.213745] clocksource: Switched to clocksource 32k_counter
    [    0.221557] NET: Registered PF_INET protocol family
    [    0.221740] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.234313] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.234344] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.234344] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.234405] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    [    0.234649] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.234710] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.234741] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    [    0.234863] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.235290] RPC: Registered named UNIX socket transport module.
    [    0.235290] RPC: Registered udp transport module.
    [    0.235290] RPC: Registered tcp transport module.
    [    0.235321] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.235321] PCI: CLS 0 bytes, default 64
    [    0.235687] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
    [    0.235839] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.236694] Initialise system trusted keyrings
    [    0.237030] workingset: timestamp_bits=30 max_order=20 bucket_order=0
    [    0.242309] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.242889] NFS: Registering the id_resolver key type
    [    0.242950] Key type id_resolver registered
    [    0.242950] Key type id_legacy registered
    [    0.243011] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.243041] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.243072] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.243530] Key type asymmetric registered
    [    0.243530] Asymmetric key parser 'x509' registered
    [    0.243652] bounce: pool size: 64 pages
    [    0.243774] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.243804] io scheduler mq-deadline registered
    [    0.243804] io scheduler kyber registered
    [    0.246917] omap_prm: probe of 4ae06500.prm failed with error -22
    [    0.292877] Serial: 8250/16550 driver, 5 ports, IRQ sharing enabled
    [    0.294860] STMicroelectronics ASC driver initialized
    [    0.295471] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4913, Function: panel_simple_init ****************************
    [    0.296844] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4918, Function: panel_simple_init ****************************
    [    0.296844] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4921, Function: panel_simple_init ****************************
    [    0.296844] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4924, Function: panel_simple_init ****************************
    [    0.296874] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4929, Function: panel_simple_init ****************************
    [    0.303894] brd: module loaded
    [    0.308502] loop: module loaded
    [    0.311706] mdio_bus fixed-0: GPIO lookup for consumer reset
    [    0.311706] mdio_bus fixed-0: using lookup tables for GPIO lookup
    [    0.311706] mdio_bus fixed-0: No GPIO consumer reset found
    [    0.312927] CAN device driver interface
    [    0.313293] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.313293] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.313354] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.313354] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.314239] pegasus: Pegasus/Pegasus II USB Ethernet driver
    [    0.314270] usbcore: registered new interface driver pegasus
    [    0.314300] usbcore: registered new interface driver asix
    [    0.314331] usbcore: registered new interface driver ax88179_178a
    [    0.314361] usbcore: registered new interface driver cdc_ether
    [    0.314422] usbcore: registered new interface driver smsc75xx
    [    0.314453] usbcore: registered new interface driver smsc95xx
    [    0.314483] usbcore: registered new interface driver net1080
    [    0.314514] usbcore: registered new interface driver cdc_subset
    [    0.314544] usbcore: registered new interface driver zaurus
    [    0.314575] usbcore: registered new interface driver cdc_ncm
    [    0.315277] usbcore: registered new interface driver usb-storage
    [    0.316131] i2c_dev: i2c /dev entries driver
    [    0.318542] sdhci: Secure Digital Host Controller Interface driver
    [    0.318542] sdhci: Copyright(c) Pierre Ossman
    [    0.318725] Synopsys Designware Multimedia Card Interface Driver
    [    0.318939] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.319519] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.319824] usbcore: registered new interface driver usbhid
    [    0.319824] usbhid: USB HID core driver
    [    0.322357] NET: Registered PF_INET6 protocol family
    [    0.323272] Segment Routing with IPv6
    [    0.323333] In-situ OAM (IOAM) with IPv6
    [    0.323394] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    0.323913] NET: Registered PF_PACKET protocol family
    [    0.323913] can: controller area network core
    [    0.323974] NET: Registered PF_CAN protocol family
    [    0.323974] can: raw protocol
    [    0.323974] can: broadcast manager protocol
    [    0.324005] can: netlink gateway - max_hops=1
    [    0.324157] Key type dns_resolver registered
    [    0.324218] ThumbEE CPU extension supported.
    [    0.324218] Registering SWP/SWPB emulation handler
    [    0.324645] omap_voltage_late_init: Voltage driver support not added
    [    0.324645] Power Management for TI OMAP4+ devices.
    [    0.325378] Loading compiled-in X.509 certificates
    [    0.359039] platform 4a000000.interconnect: Fixed dependency cycle(s) with /ocp/interconnect@4a000000/segment@0/target-module@8000/cm_core@0/clock@d00/clock@20
    [    0.365081] pinctrl-single 4a003400.pinmux: 282 pins, size 1128
    [    0.387145] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
    [    0.403167] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
    [    0.403320] gpio gpiochip0: (gpio-0-31): added GPIO chardev (254:0)
    [    0.403411] gpio gpiochip0: registered GPIOs 0 to 31 on gpio-0-31
    [    0.403442] OMAP GPIO hardware version 0.1
    [    0.405914] ti-sysc: probe of 4ae18000.target-module failed with error -16
    [    0.412963] printk: console [ttyS2] disabled
    [    0.412994] omap8250 48020000.serial: GPIO lookup for consumer rs485-term
    [    0.413024] omap8250 48020000.serial: using device tree for GPIO lookup
    [    0.413024] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
    [    0.413055] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
    [    0.413116] omap8250 48020000.serial: using lookup tables for GPIO lookup
    [    0.413116] omap8250 48020000.serial: No GPIO consumer rs485-term found
    [    0.413146] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 100, base_baud = 3000000) is a 8250
    [    1.718749] printk: console [ttyS2] enabled
    [    1.730621] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
    [    1.739349] gpio gpiochip1: (gpio-32-63): added GPIO chardev (254:1)
    [    1.739410] gpio gpiochip1: registered GPIOs 32 to 63 on gpio-32-63
    [    1.740570] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
    [    1.749237] gpio gpiochip2: (gpio-64-95): added GPIO chardev (254:2)
    [    1.749328] gpio gpiochip2: registered GPIOs 64 to 95 on gpio-64-95
    [    1.750610] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
    [    1.759277] gpio gpiochip3: (gpio-96-127): added GPIO chardev (254:3)
    [    1.759368] gpio gpiochip3: registered GPIOs 96 to 127 on gpio-96-127
    [    1.760559] gpio gpiochip4: (gpio-128-159): not an immutable chip, please consider fixing it!
    [    1.769287] gpio gpiochip4: (gpio-128-159): added GPIO chardev (254:4)
    [    1.769348] gpio gpiochip4: registered GPIOs 128 to 159 on gpio-128-159
    [    1.770538] gpio gpiochip5: (gpio-160-191): not an immutable chip, please consider fixing it!
    [    1.779266] gpio gpiochip5: (gpio-160-191): added GPIO chardev (254:5)
    [    1.779327] gpio gpiochip5: registered GPIOs 160 to 191 on gpio-160-191
    [    1.780761] gpio gpiochip6: (gpio-192-223): not an immutable chip, please consider fixing it!
    [    1.789520] gpio gpiochip6: (gpio-192-223): added GPIO chardev (254:6)
    [    1.789581] gpio gpiochip6: registered GPIOs 192 to 223 on gpio-192-223
    [    1.790863] gpio gpiochip7: (gpio-224-255): not an immutable chip, please consider fixing it!
    [    1.799621] gpio gpiochip7: (gpio-224-255): added GPIO chardev (254:7)
    [    1.799682] gpio gpiochip7: registered GPIOs 224 to 255 on gpio-224-255
    [    1.801574] i2c i2c-2: GPIO lookup for consumer scl
    [    1.801574] i2c i2c-2: using device tree for GPIO lookup
    [    1.801605] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.801635] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.801666] i2c i2c-2: using lookup tables for GPIO lookup
    [    1.801696] i2c i2c-2: No GPIO consumer scl found
    [    1.801696] i2c i2c-2: GPIO lookup for consumer sda
    [    1.801727] i2c i2c-2: using device tree for GPIO lookup
    [    1.801727] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.801757] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
    [    1.801788] i2c i2c-2: using lookup tables for GPIO lookup
    [    1.801818] i2c i2c-2: No GPIO consumer sda found
    [    1.802276] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    1.812408] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    1.821807] omap8250 4806a000.serial: GPIO lookup for consumer rs485-term
    [    1.821807] omap8250 4806a000.serial: using device tree for GPIO lookup
    [    1.821838] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
    [    1.821868] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
    [    1.821899] omap8250 4806a000.serial: using lookup tables for GPIO lookup
    [    1.821929] omap8250 4806a000.serial: No GPIO consumer rs485-term found
    [    1.821929] 4806a000.serial: ttyS0 at MMIO 0x4806a000 (irq = 114, base_baud = 3000000) is a 8250
    [    1.834259] i2c i2c-0: GPIO lookup for consumer scl
    [    1.834259] i2c i2c-0: using device tree for GPIO lookup
    [    1.834259] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.834320] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.834350] i2c i2c-0: using lookup tables for GPIO lookup
    [    1.834350] i2c i2c-0: No GPIO consumer scl found
    [    1.834381] i2c i2c-0: GPIO lookup for consumer sda
    [    1.834381] i2c i2c-0: using device tree for GPIO lookup
    [    1.834381] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.834442] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
    [    1.834472] i2c i2c-0: using lookup tables for GPIO lookup
    [    1.834472] i2c i2c-0: No GPIO consumer sda found
    [    1.834930] palmas 0-0058: Irq flag is 0x00000008
    [    1.867187] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
    [    1.898254] gpiochip_find_base: found new base at 504
    [    1.898437] gpio gpiochip8: (48070000.i2c:tps659038@58:tps659038_gpio): added GPIO chardev (254:8)
    [    1.898498] gpio gpiochip8: registered GPIOs 504 to 511 on 48070000.i2c:tps659038@58:tps659038_gpio
    [    1.899749] at24 0-0050: supply vcc not found, using dummy regulator
    [    1.906494] at24 0-0050: GPIO lookup for consumer wp
    [    1.906494] at24 0-0050: using device tree for GPIO lookup
    [    1.906524] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/eeprom@50[0]'
    [    1.906555] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/eeprom@50[0]'
    [    1.906616] at24 0-0050: using lookup tables for GPIO lookup
    [    1.906616] at24 0-0050: No GPIO consumer wp found
    [    1.906738] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
    [    1.913696] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.921600] i2c i2c-1: GPIO lookup for consumer scl
    [    1.921630] i2c i2c-1: using device tree for GPIO lookup
    [    1.921630] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
    [    1.921661] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
    [    1.921691] i2c i2c-1: using lookup tables for GPIO lookup
    [    1.921722] i2c i2c-1: No GPIO consumer scl found
    [    1.921722] i2c i2c-1: GPIO lookup for consumer sda
    [    1.921752] i2c i2c-1: using device tree for GPIO lookup
    [    1.921752] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
    [    1.921783] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
    [    1.921813] i2c i2c-1: using lookup tables for GPIO lookup
    [    1.921813] i2c i2c-1: No GPIO consumer sda found
    [    1.922302] omap_i2c 48072000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.930786] i2c i2c-4: GPIO lookup for consumer scl
    [    1.930786] i2c i2c-4: using device tree for GPIO lookup
    [    1.930816] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.930847] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.930877] i2c i2c-4: using lookup tables for GPIO lookup
    [    1.930877] i2c i2c-4: No GPIO consumer scl found
    [    1.930908] i2c i2c-4: GPIO lookup for consumer sda
    [    1.930908] i2c i2c-4: using device tree for GPIO lookup
    [    1.930908] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.930969] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0[0]'
    [    1.930999] i2c i2c-4: using lookup tables for GPIO lookup
    [    1.930999] i2c i2c-4: No GPIO consumer sda found
    [    1.931549] edt_ft5x06 4-0038: supply vcc not found, using dummy regulator
    [    1.938507] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
    [    1.938629] edt_ft5x06 4-0038: supply iovcc not found, using dummy regulator
    [    1.951324] omap_rng 48090000.rng: Random Number Generator ver. 20
    [    1.951477] edt_ft5x06 4-0038: GPIO lookup for consumer reset
    [    1.957580] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    1.957580] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    1.957641] random: crng init done
    [    1.957641] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    1.961090] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    1.961090] edt_ft5x06 4-0038: No GPIO consumer reset found
    [    1.961090] edt_ft5x06 4-0038: GPIO lookup for consumer wake
    [    1.961090] edt_ft5x06 4-0038: using device tree for GPIO lookup
    [    1.961120] of_get_named_gpiod_flags: can't parse 'wake-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    1.961181] of_get_named_gpiod_flags: can't parse 'wake-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@7c000/i2c@0/edt-ft5x06@38[0]'
    [    1.961242] edt_ft5x06 4-0038: using lookup tables for GPIO lookup
    [    1.961242] edt_ft5x06 4-0038: No GPIO consumer wake found
    [    1.985961] input: 4-0038 generic ft5x06 (8d) as /devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/4807c000.target-module/4807c000.i2c/i2c-4/4-0038/input/input0
    [    1.986877] mdio_bus 48485000.mdio: GPIO lookup for consumer reset
    [    2.002685] mdio_bus 48485000.mdio: using device tree for GPIO lookup
    [    2.002716] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000[0]'
    [    2.002838] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000[0]'
    [    2.002899] mdio_bus 48485000.mdio: using lookup tables for GPIO lookup
    [    2.002899] mdio_bus 48485000.mdio: No GPIO consumer reset found
    [    2.053771] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.062286] mdio_bus 48485000.mdio:00: GPIO lookup for consumer reset
    [    2.062286] mdio_bus 48485000.mdio:00: using device tree for GPIO lookup
    [    2.062316] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.062377] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.062408] mdio_bus 48485000.mdio:00: using lookup tables for GPIO lookup
    [    2.062438] mdio_bus 48485000.mdio:00: No GPIO consumer reset found
    [    2.063262] mdio_bus 48485000.mdio:01: GPIO lookup for consumer reset
    [    2.063293] mdio_bus 48485000.mdio:01: using device tree for GPIO lookup
    [    2.063293] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@1[0]'
    [    2.063354] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48400000/segment@0/target-module@84000/switch@0/mdio@1000/ethernet-phy@1[0]'
    [    2.063415] mdio_bus 48485000.mdio:01: using lookup tables for GPIO lookup
    [    2.063415] mdio_bus 48485000.mdio:01: No GPIO consumer reset found
    [    2.063568] davinci_mdio 48485000.mdio: phy[0]: device 48485000.mdio:00, driver unknown
    [    2.071655] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver unknown
    [    2.080291] cpsw-switch 48484000.switch: initialized cpsw ale version 1.4
    [    2.087127] cpsw-switch 48484000.switch: ALE Table size 1024
    [    2.092864] cpsw-switch 48484000.switch: cpts: overflow check period 500 (jiffies)
    [    2.100524] cpsw-switch 48484000.switch: CPTS: ref_clk_freq:266000000 calc_mult:4036623398 calc_shift:30 error:-1 nsec/sec
    [    2.111663] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:16
    [    2.118713] cpsw-switch 48484000.switch: Detected MACID = d0:03:eb:6c:3f:17
    [    2.127441] cpsw-switch 48484000.switch: initialized (regs 0x0000000048484000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.149719] ti-sysc: probe of 4882c000.target-module failed with error -16
    [    2.157440] ti-sysc: probe of 4882e000.target-module failed with error -16
    [    2.168334] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
    [    2.175567] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
    [    2.190124] i2c 2-003c: Fixed dependency cycle(s) with /ocp/interconnect@48800000/target-module@190000/vip@0
    [    2.200103] platform 48990000.vip: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c
    [    2.216430] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
    [    2.216430] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
    [    2.216461] of_get_named_gpiod_flags: parsed 'gpios' property of node '/ocp/target-module@51000000/pcie@51000000[0]' - status (0)
    [    2.216522] gpio gpiochip3: Persistence not supported for GPIO 8
    [    2.216766] dra7-pcie 51000000.pcie: host bridge /ocp/target-module@51000000/pcie@51000000 ranges:
    [    2.225860] dra7-pcie 51000000.pcie:       IO 0x0020003000..0x0020012fff -> 0x0000000000
    [    2.234039] dra7-pcie 51000000.pcie:      MEM 0x0020013000..0x002fffffff -> 0x0020013000
    [    2.242401] dra7-pcie 51000000.pcie: iATU unroll: disabled
    [    2.247924] dra7-pcie 51000000.pcie: iATU regions: 16 ob, 4 ib, align 4K, limit 4G
    [    2.355682] dra7-pcie 51000000.pcie: PCIe Gen.2 x1 link up
    [    2.361328] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    2.367645] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    2.373168] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    [    2.379394] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    2.386322] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
    [    2.392395] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    2.398712] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff]
    [    2.405090] pci 0000:00:00.0: supports D1
    [    2.409118] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    2.422027] PCI: bus0: Fast back to back transfers disabled
    [    2.427795] pci 0000:01:00.0: [8086:2526] type 00 class 0x028000
    [    2.433929] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
    [    2.441101] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
    [    2.633880] PCI: bus1: Fast back to back transfers disabled
    [    2.639495] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    2.646362] pci 0000:00:00.0: BAR 8: assigned [mem 0x20200000-0x202fffff]
    [    2.653167] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    2.660034] pci 0000:01:00.0: BAR 0: assigned [mem 0x20200000-0x20203fff 64bit]
    [    2.667419] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    [    2.672668] pci 0000:00:00.0:   bridge window [mem 0x20200000-0x202fffff]
    [    2.679840] pcieport 0000:00:00.0: PME: Signaling with IRQ 137
    [    2.691772] edma 43300000.dma: memcpy is disabled
    [    2.699890] edma 43300000.dma: TI EDMA DMA engine driver
    [    2.711547] omap-iommu 40d01000.mmu: 40d01000.mmu registered
    [    2.719329] omap-iommu 40d02000.mmu: 40d02000.mmu registered
    [    2.726013] platform 40800000.dsp: Adding to iommu group 0
    [    2.733001] platform 58820000.ipu: Adding to iommu group 1
    [    2.738677] omap-iommu 58882000.mmu: 58882000.mmu registered
    [    2.746551] platform 55020000.ipu: Adding to iommu group 2
    [    2.752105] omap-iommu 55082000.mmu: 55082000.mmu registered
    [    2.764221] platform display: Fixed dependency cycle(s) with /ocp/target-module@58000000/dss@0
    [    2.772979] platform 58000000.dss: Fixed dependency cycle(s) with /display
    [    2.788787] omap-iommu 41501000.mmu: 41501000.mmu registered
    [    2.796081] omap-iommu 41502000.mmu: 41502000.mmu registered
    [    2.802917] platform 41000000.dsp: Adding to iommu group 3
    [    2.810943] ti-sysc 4ae06000.target-module: Failed to create device link (0x180) with ocp
    [    2.820770] gpio-clk clk_ov5640: GPIO lookup for consumer enable
    [    2.820800] gpio-clk clk_ov5640: using device tree for GPIO lookup
    [    2.820831] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/clk_ov5640[0]' - status (0)
    [    2.820861] gpio gpiochip6: Persistence not supported for GPIO 18
    [    2.824951] reg-fixed-voltage fixedregulator-vdd_3v3: GPIO lookup for consumer (null)
    [    2.824951] reg-fixed-voltage fixedregulator-vdd_3v3: using device tree for GPIO lookup
    [    2.824981] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vdd_3v3[0]'
    [    2.824981] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vdd_3v3[0]'
    [    2.825012] reg-fixed-voltage fixedregulator-vdd_3v3: using lookup tables for GPIO lookup
    [    2.825012] reg-fixed-voltage fixedregulator-vdd_3v3: No GPIO consumer (null) found
    [    2.825469] reg-fixed-voltage fixedregulator-aic_dvdd: GPIO lookup for consumer (null)
    [    2.825469] reg-fixed-voltage fixedregulator-aic_dvdd: using device tree for GPIO lookup
    [    2.825469] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-aic_dvdd[0]'
    [    2.825500] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-aic_dvdd[0]'
    [    2.825500] reg-fixed-voltage fixedregulator-aic_dvdd: using lookup tables for GPIO lookup
    [    2.825500] reg-fixed-voltage fixedregulator-aic_dvdd: No GPIO consumer (null) found
    [    2.825775] reg-fixed-voltage fixedregulator-vtt: GPIO lookup for consumer (null)
    [    2.825775] reg-fixed-voltage fixedregulator-vtt: using device tree for GPIO lookup
    [    2.825775] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vtt[0]'
    [    2.825805] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-vtt[0]' - status (0)
    [    2.825836] gpio gpiochip1: Persistence not supported for GPIO 11
    [    2.855651] rtc-ds1307 2-006f: registered as rtc0
    [    2.860687] rtc-ds1307 2-006f: setting system clock to 2025-08-14T15:16:19 UTC (1755184579)
    [    2.869140] rtc-ds1307 2-006f: GPIO lookup for consumer wp
    [    2.869140] rtc-ds1307 2-006f: using device tree for GPIO lookup
    [    2.869140] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/rtc@6f[0]'
    [    2.869201] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/rtc@6f[0]'
    [    2.869232] rtc-ds1307 2-006f: using lookup tables for GPIO lookup
    [    2.869232] rtc-ds1307 2-006f: No GPIO consumer wp found
    [    2.872222] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: registered as rtc1
    [    2.881652] sdhci-omap 4809c000.mmc: GPIO lookup for consumer cd
    [    2.881683] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    2.881683] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]' - status (0)
    [    2.881774] gpio gpiochip7: Persistence not supported for GPIO 27
    [    2.881774] omap_gpio 4805d000.gpio: Could not set line 27 debounce to 200000 microseconds (-22)
    [    2.881958] sdhci-omap 480b4000.mmc: GPIO lookup for consumer wp
    [    2.890686] sdhci-omap 4809c000.mmc: Got CD GPIO
    [    2.890960] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup
    [    2.895324] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
    [    2.895355] sdhci-omap 4809c000.mmc: GPIO lookup for consumer wp
    [    2.895355] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
    [    2.895385] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]'
    [    2.895446] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@9c000/mmc@0[0]'
    [    2.895507] sdhci-omap 4809c000.mmc: using lookup tables for GPIO lookup
    [    2.895507] sdhci-omap 4809c000.mmc: No GPIO consumer wp found
    [    2.895843] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
    [    2.895904] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup
    [    2.895904] sdhci-omap 480b4000.mmc: No GPIO consumer wp found
    [    2.896026] sdhci-omap 480b4000.mmc: supply pbias not found, using dummy regulator
    [    2.903778] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 1147, Function: gpio_keys_init ****************************
    [    2.916870] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 870, Function: gpio_keys_probe ****************************
    [    2.929870] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 788, Function: gpio_keys_get_devtree_pdata ****************************
    [    2.943939] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    2.957244] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user1[0]' - status (0)
    [    2.957275] gpio gpiochip0: Persistence not supported for GPIO 14
    [    2.957336] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_3_3v mode
    [    2.957366] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    2.977386] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user2[0]' - status (0)
    [    2.977539] gpio gpiochip3: Persistence not supported for GPIO 6
    [    2.977600] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 523, Function: gpio_keys_setup_key ****************************
    [    2.990936] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-keys/button-user3[0]' - status (0)
    [    2.990936] gpio gpiochip6: Persistence not supported for GPIO 1
    [    2.991119] input: gpio-keys as /devices/platform/gpio-keys/input/input1
    [    2.997894] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 751, Function: gpio_keys_open ****************************
    [    3.010742] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 737, Function: gpio_keys_report_state ****************************
    [    3.016296] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
    [    3.024291] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.045410] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.045471] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
    [    3.059417] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    3.081817] clk: Disabling unused clocks
    [    3.090881] l3init-clkctrl:0030:0: failed to disable
    [    3.096588] Waiting for root device PARTUUID=5c496148-02...
    [    3.100830] mmc0: new high speed SDHC card at address 5048
    [    3.108062] mmcblk0: mmc0:5048 SD32G 29.7 GiB 
    [    3.114990]  mmcblk0: p1 p2
    [    3.255004] mmc1: new DDR MMC card at address 0001
    [    3.260345] mmcblk1: mmc1:0001 032GB4 29.1 GiB 
    [    3.266967]  mmcblk1: p1 p2
    [    3.270385] mmcblk1boot0: mmc1:0001 032GB4 8.00 MiB 
    [    3.276519] mmcblk1boot1: mmc1:0001 032GB4 8.00 MiB 
    [    3.282440] mmcblk1rpmb: mmc1:0001 032GB4 4.00 MiB, chardev (242:0)
    [    3.300506] EXT4-fs (mmcblk0p2): recovery complete
    [    3.313537] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [    3.322509] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.336242] devtmpfs: mounted
    [    3.340484] Freeing unused kernel image (initmem) memory: 2048K
    [    3.346649] Run /sbin/init as init process
    [    3.350769]   with arguments:
    [    3.350769]     /sbin/init
    [    3.350769]   with environment:
    [    3.350769]     HOME=/
    [    3.350799]     TERM=linux
    [    3.738525] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    3.770538] systemd[1]: Detected architecture arm.
    [    3.805145] systemd[1]: Hostname set to <am57xx-evm>.
    [    3.934234] systemd-sysv-generator[101]: SysV service '/etc/init.d/gdbserverproxy' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    3.959014] systemd-sysv-generator[101]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.222442] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.287628] systemd[1]: /etc/systemd/system/sys-clock-drift.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.309967] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.390472] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.399871] systemd[1]: Created slice Slice /system/getty.
    [    4.434722] systemd[1]: Created slice Slice /system/modprobe.
    [    4.474914] systemd[1]: Created slice Slice /system/serial-getty.
    [    4.514221] systemd[1]: Created slice User and Session Slice.
    [    4.554107] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.594238] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.634307] systemd[1]: Reached target Path Units.
    [    4.663909] systemd[1]: Reached target Remote File Systems.
    [    4.703948] systemd[1]: Reached target Slice Units.
    [    4.733947] systemd[1]: Reached target Swaps.
    [    4.776397] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    4.814086] systemd[1]: Reached target RPC Port Mapper.
    [    4.864318] systemd[1]: Listening on Process Core Dump Socket.
    [    4.904266] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    4.986389] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
    [    4.997924] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.034698] systemd[1]: Listening on Journal Socket.
    [    5.064361] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.104736] systemd[1]: Listening on udev Control Socket.
    [    5.144134] systemd[1]: Listening on udev Kernel Socket.
    [    5.184570] systemd[1]: Listening on User Database Manager Socket.
    [    5.224273] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [    5.284179] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.326263] systemd[1]: Mounting Kernel Debug File System...
    [    5.414154] systemd[1]: Mounting Kernel Trace File System...
    [    5.450622] systemd[1]: Mounting Temporary Directory /tmp...
    [    5.488037] systemd[1]: Starting Create List of Static Device Nodes...
    [    5.527313] systemd[1]: Starting Load Kernel Module configfs...
    [    5.566741] systemd[1]: Starting Load Kernel Module drm...
    [    5.608459] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 430, Function: gpio_keys_gpio_isr ****************************
    [    5.621673] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 419, Function: gpio_keys_debounce_timer ****************************
    [    5.635406] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 401, Function: gpio_keys_debounce_event ****************************
    [    5.649108] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    5.714355] systemd[1]: Starting Load Kernel Module fuse...
    [    5.768829] systemd[1]: Starting Start psplash boot splash screen...
    [    5.807769] systemd[1]: Starting RPC Bind...
    [    5.844268] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    5.856506] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 430, Function: gpio_keys_gpio_isr ****************************
    [    5.856536] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 419, Function: gpio_keys_debounce_timer ****************************
    [    5.856567] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 401, Function: gpio_keys_debounce_event ****************************
    [    5.856567] VM********************* File: drivers/input/keyboard/gpio_keys.c, Line: 376, Function: gpio_keys_gpio_report_event ****************************
    [    5.912841] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    5.925811] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    5.984436] systemd[1]: Starting Journal Service...
    [    6.037017] systemd[1]: Starting Load Kernel Modules...
    [    6.075897] systemd[1]: Starting Generate network units from Kernel command line...
    [    6.116088] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.145751] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [    6.156249] systemd[1]: Starting Coldplug All udev Devices...
    [    6.200103] systemd[1]: Started RPC Bind.
    [    6.244232] systemd[1]: Started Journal Service.
    [    6.816406] systemd-journald[114]: Received client request to flush runtime journal.
    [    7.720428] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    7.729064] omap-sham 4b101000.sham: will run requests pump with realtime priority
    [    7.752838] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [    7.783599] omap-sham 42701000.sham: hw accel on OMAP rev 4.3
    [    7.806976] omap-sham 42701000.sham: will run requests pump with realtime priority
    [    7.837860] remoteproc remoteproc0: 58820000.ipu is available
    [    7.864166] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [    7.877319] remoteproc remoteproc1: 55020000.ipu is available
    [    7.921691] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
    [    7.973968] remoteproc remoteproc2: 40800000.dsp is available
    [    7.980712] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
    [    7.989959] remoteproc remoteproc3: 41000000.dsp is available
    [    8.167144] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer id
    [    8.167175] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    8.167175] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    8.167205] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    8.167266] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using lookup tables for GPIO lookup
    [    8.167266] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: No GPIO consumer id found
    [    8.167266] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer vbus
    [    8.167266] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
    [    8.167297] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]'
    [    8.167327] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tps659038@58/tps659038_usb[0]' - status (0)
    [    8.167388] gpio gpiochip5: Persistence not supported for GPIO 21
    [    8.378570] remoteproc remoteproc0: powering up 58820000.ipu
    [    8.385040] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4855436
    [    8.402984] remoteproc remoteproc1: powering up 55020000.ipu
    [    8.408721] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747228
    [    8.411621] omap-iommu 58882000.mmu: no fck found
    [    8.421264] omap-iommu 58882000.mmu: pwrdm_constraint failed to be set, status = -19
    [    8.429107] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [    8.430816] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [    8.492614] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node ipu1-memory@9d000000
    [    8.529571] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    8.555236] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node ipu2-memory@95800000
    [    8.559631] rproc-virtio rproc-virtio.1.auto: registered virtio0 (type 7)
    [    8.607177] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [    8.615783] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x32
    [    8.627227] virtio_rpmsg_bus virtio0: creating channel rpmsg-client-sample addr 0x33
    [    8.639007] virtio_rpmsg_bus virtio0: creating channel rpmsg-omx addr 0x3c
    [    8.646118] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65
    [    8.654846] pwm-backlight backlight: GPIO lookup for consumer enable
    [    8.654846] pwm-backlight backlight: using device tree for GPIO lookup
    [    8.654876] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
    [    8.654876] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
    [    8.654876] pwm-backlight backlight: using lookup tables for GPIO lookup
    [    8.654907] pwm-backlight backlight: No GPIO consumer enable found
    [    8.654937] pwm-backlight backlight: supply power not found, using dummy regulator
    [    8.670928] videodev: Linux video capture interface: v2.00
    [    8.703002] omap_rtc 48838000.rtc: registered as rtc2
    [    8.703186] pwm-backlight backlight: invalid default brightness level: 8, using 7
    [    8.710937] omap_rtc 48838000.rtc: GPIO lookup for consumer wp
    [    8.716033] omap_rtc 48838000.rtc: using device tree for GPIO lookup
    [    8.716064] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48800000/segment@0/target-module@38000/rtc@0[0]'
    [    8.716125] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48800000/segment@0/target-module@38000/rtc@0[0]'
    [    8.716156] omap_rtc 48838000.rtc: using lookup tables for GPIO lookup
    [    8.716186] omap_rtc 48838000.rtc: No GPIO consumer wp found
    [    8.716400] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.721954] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x65
    [    8.723266] rproc-virtio rproc-virtio.2.auto: registered virtio1 (type 7)
    [    8.736602] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 4571, Function: panel_simple_platform_probe ****************************
    [    8.746826] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [    8.753143] virtio_rpmsg_bus virtio1: creating channel rpmsg-rpc addr 0x66
    [    8.773986] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 591, Function: panel_simple_probe ****************************
    [    8.798309] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    8.817352] panel-simple display: supply power not found, using dummy regulator
    [    8.833038] panel-simple display: GPIO lookup for consumer enable
    [    8.833038] panel-simple display: using device tree for GPIO lookup
    [    8.833068] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/display[0]' - status (0)
    [    8.833099] gpio gpiochip6: Persistence not supported for GPIO 12
    [    8.833099] panel-simple display: Specify missing connector_type
    [    8.833923] omap-des 480a5000.des: will run requests pump with realtime priority
    [    8.921203] remoteproc remoteproc2: powering up 40800000.dsp
    [    8.927978] remoteproc remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 5535952
    [    8.936431] remoteproc remoteproc3: powering up 41000000.dsp
    [    8.950988] ahci-dwc 4a140000.sata: supply ahci not found, using dummy regulator
    [    8.960296] remoteproc remoteproc3: Booting fw image dra7-dsp2-fw.xe66, size 5536080
    [    8.968383] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [    8.973480] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    8.974334] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
    [    8.981384] ahci-dwc 4a140000.sata: supply phy not found, using dummy regulator
    [    8.994537] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [    9.000457] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [    9.037963] pinctrl-single 4a003400.pinmux: mux offset out of range: 0xffffe244 (0x468)
    [    9.049804] pinctrl-single 4a003400.pinmux: could not add functions for camera-gpio 4294959684x
    [    9.065155] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
    [    9.082550] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node dsp2-memory@9f000000
    [    9.106506] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    9.113555] ov5640 2-003c: GPIO lookup for consumer powerdown
    [    9.113586] ov5640 2-003c: using device tree for GPIO lookup
    [    9.113616] of_get_named_gpiod_flags: parsed 'powerdown-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]' - status (0)
    [    9.113647] gpio gpiochip6: Persistence not supported for GPIO 17
    [    9.113677] ov5640 2-003c: GPIO lookup for consumer reset
    [    9.113677] ov5640 2-003c: using device tree for GPIO lookup
    [    9.113677] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.113769] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0/ov5640@3c[0]'
    [    9.114471] ov5640 2-003c: using lookup tables for GPIO lookup
    [    9.114471] ov5640 2-003c: No GPIO consumer reset found
    [    9.114471] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
    [    9.121398] ahci-dwc 4a140000.sata: supply target not found, using dummy regulator
    [    9.131652] ov5640 2-003c: supply DOVDD not found, using dummy regulator
    [    9.146118] omap-aes 4b500000.aes: will run requests pump with realtime priority
    [    9.157989] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node dsp1-memory@99000000
    [    9.169097] ov5640 2-003c: supply AVDD not found, using dummy regulator
    [    9.177642] ov5640 2-003c: supply DVDD not found, using dummy regulator
    [    9.184783] ahci-dwc 4a140000.sata: forcing port_map 0x0 -> 0x1
    [    9.193908] ahci-dwc 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [    9.203643] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.204986] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x32
    [    9.209472] ahci-dwc 4a140000.sata: flags: 64bit ncq sntf pm led clo only pmp pio slum part ccc apst 
    [    9.226440] virtio_rpmsg_bus virtio3: creating channel rpmsg-client-sample addr 0x33
    [    9.226806] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    9.242431] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
    [    9.255645] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    9.264526] virtio_rpmsg_bus virtio3: creating channel rpmsg-omx addr 0x3c
    [    9.276916] remoteproc remoteproc2: remote processor 40800000.dsp is now up
    [    9.304565] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    9.310913] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    9.316802] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    9.323608] vip 48990000.vip: loading firmware vpdma-1b8.bin
    [    9.326019] remoteproc remoteproc3: remote processor 41000000.dsp is now up
    [    9.332672] virtio_rpmsg_bus virtio3: creating channel rpmsg-rpc addr 0x65
    [    9.345855] omap-aes 4b700000.aes: will run requests pump with realtime priority
    [    9.359527] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x32
    [    9.377349] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tlv320aic3104@18[0]'
    [    9.377410] of_get_named_gpiod_flags: can't parse 'gpio-reset' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0/tlv320aic3104@18[0]'
    [    9.384490] virtio_rpmsg_bus virtio2: creating channel rpmsg-client-sample addr 0x33
    [    9.393920] scsi host0: ahci-dwc
    [    9.402252] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 163
    [    9.403900] vip 48990000.vip: VPDMA firmware loaded
    [    9.415527] vpe 489d0000.vpe: Device registered as /dev/video0
    [    9.473724] DSS: OMAP DSS rev 6.1
    [    9.497344] virtio_rpmsg_bus virtio2: creating channel rpmsg-omx addr 0x3c
    [    9.592651] virtio_rpmsg_bus virtio2: creating channel rpmsg-rpc addr 0x65
    [    9.599884] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops [omapdrm])
    [    9.695983] dmm 4e000000.dmm: workaround for errata i878 in use
    [    9.756683] dmm 4e000000.dmm: initialized all PAT entries
    [    9.767272] ata1: SATA link down (SStatus 0 SControl 300)
    [    9.782531] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
    [    9.855926] asoc-simple-card sound0: GPIO lookup for consumer simple-audio-card,hp-det
    [    9.855926] asoc-simple-card sound0: using device tree for GPIO lookup
    [    9.855957] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpios' property of node '/sound0[0]'
    [    9.855957] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpio' property of node '/sound0[0]'
    [    9.855987] asoc-simple-card sound0: using lookup tables for GPIO lookup
    [    9.855987] asoc-simple-card sound0: No GPIO consumer simple-audio-card,hp-det found
    [    9.855987] asoc-simple-card sound0: GPIO lookup for consumer simple-audio-card,mic-det
    [    9.855987] asoc-simple-card sound0: using device tree for GPIO lookup
    [    9.856018] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpios' property of node '/sound0[0]'
    [    9.856018] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpio' property of node '/sound0[0]'
    [    9.856048] asoc-simple-card sound0: using lookup tables for GPIO lookup
    [    9.856048] asoc-simple-card sound0: No GPIO consumer simple-audio-card,mic-det found
    [    9.904144] vin3a: Port A: Using subdev ov5640 2-003c for capture
    [    9.910308] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [    9.923492] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 476, Function: panel_simple_get_orientation ****************************
    [    9.983825] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.080627] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.168731] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   10.211975] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.246093] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.255859] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.286621] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   10.310943] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.323883] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   10.345275] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.376922] [drm] Enabling DMM ywrap scrolling
    [   10.389709] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.416473] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 388, Function: panel_simple_prepare ****************************
    [   10.416473] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.416473] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 364, Function: panel_simple_resume ****************************
    [   10.416503] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 299, Function: panel_simple_wait ****************************
    [   10.440429] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.440429] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.440429] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3689, Function: ov5640_enum_mbus_code ****************************
    [   10.440460] **** vip: create_stream: V4L2_MBUS_PARALLEL ****
    [   10.440460] **** vip: alloc_stream function: Starts  ****
    [   10.440460] **** vip: alloc_stream: kzalloc done ****
    [   10.440460] **** vip: alloc_stream: vpdma_hwlist_alloc done ****
    [   10.440490] **** vip: alloc_stream: queue initializations done ****
    [   10.440490] **** vip: alloc_stream: queues alloced done ****
    [   10.440490] ***** vip: alloc_stream: video dev alloc done ****
    [   10.443969] **** vip: alloc_stream: video dev registered ****
    [   10.444000] vin3a-0: device registered as video1
    [   10.444000] **** vip: create_stream: alloc_stream called ****
    [   10.535064] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 409, Function: panel_simple_enable ****************************
    [   10.535064] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   10.618469] Console: switching to colour frame buffer device 128x37
    [   10.837402] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [   10.884429] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [   11.692779] remoteproc remoteproc4: 4b234000.pru is available
    [   11.743713] remoteproc remoteproc5: 4b238000.pru is available
    [   11.783203] remoteproc remoteproc6: 4b2b4000.pru is available
    [   11.795959] remoteproc remoteproc7: 4b2b8000.pru is available
    [   13.529113] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    [   14.425750] Bluetooth: Core ver 2.22
    [   14.436370] NET: Registered PF_BLUETOOTH protocol family
    [   14.441741] Bluetooth: HCI device and connection manager initialized
    [   14.460937] Bluetooth: HCI socket layer initialized
    [   14.498596] Bluetooth: L2CAP socket layer initialized
    [   14.518615] Bluetooth: SCO socket layer initialized
    [   14.644531] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   14.912414] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   14.919799] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   15.065429] Initializing XFRM netlink socket
    [   15.086547] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.151580] Generic PHY 48485000.mdio:01: attached PHY driver (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)
    [   15.209075] cpsw-switch 48484000.switch: starting ndev. mode: dual_mac
    [   15.248626] Generic PHY 48485000.mdio:00: attached PHY driver (mii_bus:phy_addr=48485000.mdio:00, irq=POLL)
    [   21.794799] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 426, Function: panel_simple_get_modes ****************************
    [   21.823760] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 181, Function: to_panel_simple ****************************
    [   21.843749] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 253, Function: panel_simple_get_non_edid_modes ****************************
    [   21.873779] VM********************* File: drivers/gpu/drm/panel/panel-simple.c, Line: 221, Function: panel_simple_get_display_modes ****************************
    [   33.133941] ldousb: disabling

    But I am not able to test the camera as dmabuftest utility is not present in 9.03 SDK which was present in 6.03 SDK.

    How to test camera then ?!

    -Vishal

  • Hi Vishal,

    How is it channel independent

    The ti,vip-channels property controls the number of channels, not which specific channel. I don't know how/whether it's working with 0 channels.

    How to test camera then ?!

    Do you have any v4l2 or yavta capabilities?

    Best,
    Jared

  • Jared,

    The ti,vip-channels property controls the number of channels, not which specific channel. I don't know how/whether it's working with 0 channels.

    Ok I have set number of channels = 1. 

    Do you have any v4l2 or yavta capabilities?

    root@am57xx-evm:~# v4l2-ctl -d /dev/video1 --set-fmt-video=width=640,height=480,pixelformat=YUYV
    root@am57xx-evm:~# 
    root@am57xx-evm:~# 
    root@am57xx-evm:~# yavta -c20 -Fdefault.yuv -fYUYV -s640x480 /dev/video1
    Device /dev/video1 opened.
    Device `vip' on `platform:vip2:vin3a:stream0' (driver 'vip') supports video, capture, without mplanes.
    Video format set: YUYV (56595559) 640x480 (stride 1280) field none buffer size 614400
    Video format: YUYV (56595559) 640x480 (stride 1280) field none buffer size 614400
    8 buffers requested.
    length: 614400 offset: 0 timestamp type/source: mono/EoF
    Buffer 0/0 mapped at address 0xb6dfa000.
    length: 614400 offset: 614400 timestamp type/source: mono/EoF
    Buffer 1/0 mapped at address 0xb6d64000.
    length: 614400 offset: 1228800 timestamp type/source: mono/EoF
    Buffer 2/0 mapped at address 0xb6cce000.
    length: 614400 offset: 1843200 timestamp type/source: mono/EoF
    Buffer 3/0 mapped at address 0xb6c38000.
    length: 614400 offset: 2457600 timestamp type/source: mono/EoF
    Buffer 4/0 mapped at address 0xb6ba2000.
    length: 614400 offset: 3072000 timestamp type/source: mono/EoF
    Buffer 5/0 mapped at address 0xb6b0c000.
    length: 614400 offset: 3686400 timestamp type/source: mono/EoF
    Buffer 6/0 mapped at address 0xb6a76000.
    length: 614400 offset: 4300800 timestamp type/source: mono/EoF
    Buffer 7/0 mapped at address 0xb69e0000.
    0 (0) [-] top 0 614400 B 0.000904 0.297213 0.000 fps ts /(null)
    Segmentation fault (core dumped)
    

    No commands working as shown above irrespective of whether  weston is running / not running. 

    What to do now ?

    -Vishal

  • Hi Vishal,

    Can you create and share a graph of the media devices?

    https://trac.gateworks.com/wiki/linux/media 

    Best,
    Jared

  • Jared,

    root@am57xx-evm:~# ls -lart /dev/video*
    crw-rw----+ 1 root video 81, 0 Aug 18 03:54 /dev/video0
    crw-rw----+ 1 root video 81, 1 Aug 18 03:54 /dev/video1
    root@am57xx-evm:~# 
    root@am57xx-evm:~# 
    root@am57xx-evm:~# media-ctl --print-topology
    Failed to enumerate /dev/media0 (-2)
    root@am57xx-evm:~# media-ctl --print-dot
    Failed to enumerate /dev/media0 (-2)
    
    

    Command is failing.

    I also tried to open camera using command below.

    gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,format=NV12,width=640,height=480 ! videoconvert ! autovideosink
    Setting pipeline to PAUSED ...
    MESA: info: Loaded libpvr_dri_support.so
    PVR:(Error): OpenServices: PVRDRMOpenRender failed [0, ]
    PVR:(Error): PVRSRVConnect: Unable to open connection. [0, ]
    PVR:(Error): Couldn't connect to services [0, ]
    PVR:(Error): PVRDRIEGLGlobalDataInit: PVR Services initialisation failed [0, ]
    PVR:(Error): PVRDRICreateScreenImpl: Couldn't create EGL global data [0, ]
    MESA: info: Unloaded libpvr_dri_support.so
    libEGL warning: egl: failed to create dri2 screen
    Pipeline is live and does not need PREROLL ...
    Got context from element 'autovideosink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Redistribute latency...
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    ^Chandling interrupt.
    Interrupt: Stopping pipeline ...
    Execution ended after 0:00:15.475585938
    Setting pipeline to NULL ...
    Freeing pipeline ...
    

    But getting this output in green on the LCD

    For command below:-

    gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! autovideosink
    Setting pipeline to PAUSED ...
    MESA: info: Loaded libpvr_dri_support.so
    PVR:(Error): OpenServices: PVRDRMOpenRender failed [0, ]
    PVR:(Error): PVRSRVConnect: Unable to open connection. [0, ]
    PVR:(Error): Couldn't connect to services [0, ]
    PVR:(Error): PVRDRIEGLGlobalDataInit: PVR Services initialisation failed [0, ]
    PVR:(Error): PVRDRICreateScreenImpl: Couldn't create EGL global data [0, ]
    MESA: info: Unloaded libpvr_dri_support.so
    libEGL warning: egl: failed to create dri2 screen
    Pipeline is live and does not need PREROLL ...
    Got context from element 'autovideosink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Redistribute latency...
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    

    Getting this output on LCD.

    -Vishal

  • Hi Vishal,

    If you try capturing an image to a raw file, what do you get?

    Best,
    Jared

  • Jared,

    If you try capturing an image to a raw file, what do you get?

    Please see the commands below.

    v4l2-ctl --device=/dev/video1 \
    >          --set-fmt-video=width=640,height=480,pixelformat=NV12 \
    >          --stream-mmap \
    >          --stream-count=1 \
    >          --stream-to=frame_nv12.raw
    <
    root@am57xx-evm:~# 
    root@am57xx-evm:~# 
    root@am57xx-evm:~# ls -lart frame_nv12.raw 
    -rw-r--r-- 1 root root 460800 Aug 19 04:30 frame_nv12.raw
    root@am57xx-evm:~# 
    root@am57xx-evm:~# ffmpeg -f rawvideo -pix_fmt nv12 -s 640x480 -i frame_nv12.raw -frames:v 1 output.jpg
    ffmpeg vef Copyright (c) 2000-2022 the FFmpeg developers
      built with gcc 11.5.0 (GCC)
      configuration: --cross-prefix=arm-oe-linux-gnueabi- --ld='arm-oe-linux-gnueabi-gcc -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard --sysroot=/recipe-sysroot' --cc='arm-oe-linux-gnueabi-gcc -march=arb
      libavutil      57. 17.100 / 57. 17.100
      libavcodec     59. 18.100 / 59. 18.100
      libavformat    59. 16.100 / 59. 16.100
      libavdevice    59.  4.100 / 59.  4.100
      libavfilter     8. 24.100 /  8. 24.100
      libswscale      6.  4.100 /  6.  4.100
      libswresample   4.  3.100 /  4.  3.100
    [rawvideo @ 0x512d0] Estimating duration from bitrate, this may be inaccurate
    Input #0, rawvideo, from 'frame_nv12.raw':
      Duration: 00:00:00.04, start: 0.000000, bitrate: 92160 kb/s
      Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12, 640x480, 92160 kb/s, 25 tbr, 25 tbn
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> mjpeg (native))
    Press [q] to stop, [?] for help
    [swscaler @ 0x63670] [swscaler @ 0x6cbe0] deprecated pixel format used, make sure you did set range correctly
    [swscaler @ 0x63670] [swscaler @ 0x93570] deprecated pixel format used, make sure you did set range correctly
    [swscaler @ 0x63670] [swscaler @ 0xb9b20] deprecated pixel format used, make sure you did set range correctly
    Output #0, image2, to 'output.jpg':
      Metadata:
        encoder         : Lavf59.16.100
      Stream #0:0: Video: mjpeg, yuvj420p(pc, progressive), 640x480, q=2-31, 200 kb/s, 25 fps, 25 tbn
        Metadata:
          encoder         : Lavc59.18.100 mjpeg
        Side data:
          cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
    frame=    1 fps=0.0 q=2.5 Lsize=N/A time=00:00:00.04 bitrate=N/A speed= 1.4x    
    video:26kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    root@am57xx-evm:~# 
    root@am57xx-evm:~# ls -lart output.jpg 
    -rw-r--r-- 1 root root 27066 Aug 19 04:30 output.jpg
    

    Not able to attach the frame_nv12.raw file.

    Here is the generated output.jpg

  • Hi Vishal,

    Is the resolution of the image correct? Is there no way to attach the raw file?

    Best,
    Jared

  • Hi Jared,

    Got a little busy so couldn't reply. 
    I used the following command to capture the frame. 

    v4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap --stream-count=1 --stream-to=frame_nv12.raw

    and renamed the frame_nv12.raw  file so generated to frame_nv12.txt so as to be able to attach here. 

    frame_nv12.txt

    Now please tell if the issue can be resolved.

    -Vishal

  • Hi Vishal,

    I am currently out of office. Please expect a delay until September 2nd.

    Best,
    Jared

  • Hi Vishal,

    Looking at the driver for the ov5640, the resolution doesn't appear to be 640x480.

    Are you sure that this is the correct resolution?

    Best,
    Jared

  • Jared,

    Looking at the driver for the ov5640, the resolution doesn't appear to be 640x480.

    I just ran the command to capture the frame. 

    Are you sure that this is the correct resolution?

    How can I verify this when I am not able to see a proper captured image ? I haven't done any changes for resolution in the driver, 

    -Vishal

  • Hi Vishal,

    Sorry, I stand corrected, the driver supports 640x480.

    It doesn't look like the driver supports YUV420 (NV12), though. It does appear to support YUV422. Can you try a different format?

    $ grep -in "yuv420" ./drivers/media/i2c/ov5640.c
    $ grep -in "yuv422" ./drivers/media/i2c/ov5640.c
    186:	OV5640_FMT_MUX_YUV422 = 0,
    204:		/* YUV422, YUYV */
    209:		.mux		= OV5640_FMT_MUX_YUV422,
    211:		/* YUV422, UYVY */
    216:		.mux		= OV5640_FMT_MUX_YUV422,
    218:		/* YUV422, YUYV */
    223:		.mux		= OV5640_FMT_MUX_YUV422,
    272:		/* YUV422, YUYV */
    277:		.mux		= OV5640_FMT_MUX_YUV422,
    279:		/* YUV422, UYVY */
    284:		.mux		= OV5640_FMT_MUX_YUV422,
    286:		/* YUV422, YUYV */
    291:		.mux		= OV5640_FMT_MUX_YUV422,
    523:/* YUV422 UYVY VGA@30fps */
    3814:		fd->entry[fd->num_entries].bus.csi2.dt = MIPI_CSI2_DT_YUV422_8B;
    3903:	 * YUV422 UYVY VGA(30FPS in parallel mode, 60 in MIPI CSI-2 mode)

    Best,
    Jared

  • Jared, 

    There was a long weekend break. I took the following formats capture:-

    YUYV → Packed YUV 4:2:2 (YUYV ordering)

    UYVY → Packed YUV 4:2:2 (UYVY ordering)

    I am attaching the files as .txt  files like earlier. 

    frame_yuyv.txt

    frame_uyvy.txt

    These are captured by the commands respectively:-

    v4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=YUYV --stream-mmap --stream-count=1 --stream-to=frame_yuyv.raw
    v4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=frame_uyvy.raw

    -Vishal

  • Hi Vishal,

    It looks marginally better, instead of grey with green streaks, it's all grey now.

    Can you program the camera to send color bars?

    Can you try streaming the camera to a display and viewing what it looks like?

    Best,
    Jared

  • Can you program the camera to send color bars?

    This is not clear. Please give command.

    Can you try streaming the camera to a display and viewing what it looks like?

    This is the command i ran for it to capture in 

    root@am57xx-evm:~# ls /dev/video1 
    /dev/video1
    root@am57xx-evm:~# gst-launch-1.0 v4l2src device=/dev/video1 ! \
    >     video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
    >     videoconvert ! \
    >     autovideosink
    Setting pipeline to PAUSED ...
    MESA: info: Loaded libpvr_dri_support.so
    PVR:(Error): OpenServices: PVRDRMOpenRender failed [0, ]
    PVR:(Error): PVRSRVConnect: Unable to open connection. [0, ]
    PVR:(Error): Couldn't connect to services [0, ]
    PVR:(Error): PVRDRIEGLGlobalDataInit: PVR Services initialisation failed [0, ]
    PVR:(Error): PVRDRICreateScreenImpl: Couldn't create EGL global data [0, ]
    MESA: info: Unloaded libpvr_dri_support.so
    libEGL warning: egl: failed to create dri2 screen
    Pipeline is live and does not need PREROLL ...
    Got context from element 'autovideosink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Redistribute latency...
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImage:
    There may be a timestamping problem, or this computer is too slow.
    ^Chandling interrupt.
    Interrupt: Stopping pipeline ...
    Execution ended after 0:00:36.146453857
    Setting pipeline to NULL ...
    Freeing pipeline ...
    

    Below is the camera output. The white/purple portion is where the camera is capturing tubelight(confirmed because when i cover the camera it disappears). But nothing else is getting captured properly (all green and grey)

  • HI ,

    This is the command i ran for it to capture in 

    Can you try YUYV?

    This is not clear. Please give command.

    Some cameras can send color bars for testing. This is usually controlled by specific I2C registers on the camera that need to be set.

    I don't know what the specific registers are, but I assume they exist.

    An example of color bars:

    Best,
    Jared

  •   ,

    Can you try YUYV?

     I have read that YUY2 is the standard GStreamer name for V4L2 FourCC 'YUYV'.

    So the command gives error as shown below:-

    root@am57xx-evm:~# gst-launch-1.0 v4l2src device=/dev/video1 !     video/x-raw,format=YUYV,width=640,height=480,framerate=30/1 !     videoconvert !     autovideosink
    WARNING: erroneous pipeline: could not link v4l2src0 to videoconvert0, neither element can handle caps video/x-raw, format=(string)YUYV, width=(int)640, height=(int)480, framerate=(fraction)30/1
    

    Some cameras can send color bars for testing. This is usually controlled by specific I2C registers on the camera that need to be set.

    On 6.03 SDK when I do the following the color bar gets displayed. 

    #Ran this command to open camera
    gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! autovideosink
    
    # Ran the following commands to set register values from another terminal:-
    /usr/sbin/i2cset -f -y 2 0x3c 0x50 0x3d 0x80 i
    /usr/sbin/i2cset -f -y 2 0x3c 0x47 0x41 0x00 i
    
    

    On 9.03 SDK when i ran the same commands the color bar does get displayed but it looks as below:-

    So i think some changes in driver are needed to be added to get this working. Please help around them.

    No change is done in device driver from my side.

  • Hi ,

    On 6.03 SDK when I do the following the color bar gets displayed. 

    Do you specify the caps when running on the 06.03 SDK?

    video/x-raw,format=YUYV,width=640,height=480,framerate=30/1

    So i think some changes in driver are needed to be added to get this working. Please help around them.

    Are you able to test whether the ov5640 works on another device? I would like to ensure that the issue is within the ov5640 driver and not something else.

    The difference between the 4.19 and 6.1 drivers is large, and I'd like to verify whether the driver is broken before looking at the driver in depth.


    The video that it outputs still leads me to think that there is an issue somewhere in the resolution or format.

    Best,
    Jared

  • Jared,

    Do you specify the caps when running on the 06.03 SDK?

    Like I told you i ran the same command on both the SDKs so no change.

    Are you able to test whether the ov5640 works on another device? I would like to ensure that the issue is within the ov5640 driver and not something else.

    Already tested another board still the same issue with 9.03 SDK but working with 6.03 SDK on them. 

    The difference between the 4.19 and 6.1 drivers is large, and I'd like to verify whether the driver is broken before looking at the driver in depth.


    The video that it outputs still leads me to think that there is an issue somewhere in the resolution or format.

    Oh. Please look into it as we are stuck with this driver.

    Also our camera is connected on parallel interface. Does it need any specific changes in the DTS/driver code for supporting that ?

    -Vishal

  • Hi ,

    Already tested another board still the same issue with 9.03 SDK but working with 6.03 SDK on them. 

    Sorry, I meant a different device entirely, a non AM57 device.

    Also our camera is connected on parallel interface. Does it need any specific changes in the DTS/driver code for supporting that ?

    What do you mean by parallel interface? CSI is a serial interface.


    A couple things to try with the device tree:

    1. Remove the ti,vip-channels property vin3a.
    2. Remove the data-shift property from the ov5640.
    3. Remove the slave-mode property vin3a.

    Best,
    Jared