This thread has been locked.

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

Need driver source code for TCA9548APWR I2C HUB Switch

Other Parts Discussed in Thread: TCA9548A, TCA9539, PMP

Dear TI Support Team,

In our LS1028A based custom board 5 different devices are connected through  I2C hub switch (TCA9548APWR) in bus-2 as shown in attached file.

I am able to read and write in i2c devices connected through I2C Hub in U-Boot but same thing is not happening in Linux when i am trying to write and read through  i2ctransfer utility and separate application and getting Resource temporarily unavailable(using own app).

In U-Boot 1st i am writing in i2c hub to select devices connected to hub then i am writing in devices and getting correct data as shown below:

-----------------------
#TO check RTC:
i2c probe
i2c dev 2
i2c probe
i2c mw 0x71 0x0 0x1   (0x71 is I2C Hub address)
i2c probe
i2c mw 0x51 0xa2 0xe (0x51 in RTC address
i2c md 0x51 0xa2 0x1
------------------------
#TO check EEPROM2:
i2c mw 0x71 0x0 0x2
i2c probe
i2c mw 0x50 0x0 0xf
i2c md 0x50 0x0 0x1

Below is my Dts file:

i2c-switch@74 {
compatible = "nxp,pca9548";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x74>;

interrupt-parent = <&ipic>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
interrupt-controller;
#interrupt-cells = <2>;

i2c@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;

eeprom@54 {
compatible = "atmel,24c08";
reg = <0x54>;
};
};

i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <4>;

 rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
};

But in linux with below i am using below utility:

i2ctransfer 2 w17@0x71 0x0 0xff-      (to write  0xff in i2c hub address 0x71 to enable all i2c hub                                                                                                                                                   devices)

2ctransfer 2 w1@0x71 0x0 r1              (to read in i2c hub address 0x71)

i2ctransfer 2 w17@0x51 0x0 0x77-    (to write  0x77 in RTC devices of hub address 0x51 )                                                                                                          

2ctransfer 2 w1@0x51 0x0 r1             (to read  RTC hub address 0x51)

But not getting proper data with utility.

For this i contact to NXP Support team and  they said "Please contact TI to require Linux driver for TCA9548APWR device".

So I Just need driver source code for TCA9548APWR  I2C HUB device.

Please help me on this.

Regards,

Amit Kumar Keshri

  • Hi Amit,

    I will respond by noon CST 10/11/22 with a suggestion.

    Regards,

    Tyler

  • Hi @Tyler Townsend,

    Thank you for your quick response.

    Regards,

    Amit Kumar Keshri

  • Hi Amit,

    I am looking through TI support documents and can't find specific driver source code for the TCA9548APWR. Let me contact one of our engineers on our team to see if we have material that can help you. I'll reply within 24 hours. 

    Regards,

    Tyler

  • Hi Amit,

    I found some links online of source code for NXP's PCA954x series. The usage of this code should be similar to that of the TCA9548A. Please let me know if this code will help in your application.

    https://elixir.bootlin.com/linux/v4.5/source/drivers/i2c/muxes/i2c-mux-pca954x.c

    https://github.com/torvalds/linux/blob/master/drivers/i2c/muxes/i2c-mux-pca954x.c

    In the mean time, I will see if TI has made driver source code on our end. 

    Regards,

    Tyler

  • Hi  Tyler Townsend,

    Thank you for yourRelaxedfast response.

    In beginning we are using driver/i2c/muxes/i2c-mux-pca954x.c for TCA9548A I2C HUB switch,but it was not working .

    So we contact to NXP support Team and they suggested to modify TCA9548 driver according to /i2c-mux-pca954x.c file and use it to check i2c hub but still it's not working.

    Please find below link for I2C Hub switch related post to NXP forum for your better understanding .

    https://community.nxp.com/t5/Processor-Expert-Software/LS1028A-How-to-access-devices-which-are-connected-through-I2C/m-p/1520206#M5244

    Regards,

    Amit Keshri

  • Hi Amit,

    I will need a little more time to look into the issue. You can expect a response by tomorrow 2pm CST 10/14/2022. 

    Regards,

    Tyler

  • Hi Tyler Townsend,

    Thank you for response.

    OK ,I will wait.

    Regards,

    Amit Kumar Keshri

  • Hi Amit,

    TI does not offer any I2C linux driver source code for the TCA9548A. So on this end, we can't support you with any working code.

    I do want to look at your code and try to debug it to the best of my ability. FYI, my linux skills are not too superior, so please help me to understand your problem fully.

    Firstly, you check I2C hub devices at U-boot and this turns out to be successful! Then, when you check the I2C HUB devices at Linux it fails. 

    You use the i2ctransfer function call by writing 

    i2ctransfer 0 w17@0x50 0x0 0x77

    on bus 0, write 17 bytes of data (one address, 16 repeated writes?) at address 0x50, at an offset of 0x0 in memory, write 0x77, 0x76... 0x67. 

    Then use same i2ctransfer function call to read

    0 w1@0x50 0x0 r8

    on bus 0, read from address 0x50, at offset 0x0, 8 bytes of read data

    0x77 0x76 0x75 0x74 0x73 0x72 0x71 0x70  

    Further down your code you start to generate "Resource temporarily unavailable" errors. 

    Do you know what the cause of this error is? Please help me understand why the system would through this error. 

    What is the hardcoded address of the TCA9548A? Do you have it set as (A2/A1/A0) = (L/L/H) = 0x71? I assume this because you try to use i2ctransfer again, but this time you try to write/read at address 0x71. 

    Regards,

    Tyler

  • Hi Tyler Townsend,

    Thank you once again for your reply.

    I will send you soon all details of your questions with latest experiment using PCA9548 i2c driver.

    Regards,

    Amit Keshri

  • Amit,

    Thank you. I'll be awaiting your response!

    Regards,

    Tyler

  • Hi Tyler,

    I am using driver/i2c/muxes/i2c-mux-pca954x.c driver source code for TCA9548 I2C Hub switch.

    Below is my dts node for I2C Hub switch:

    &i2c1 {
    status = "okay";
    /* i2c-sda-hold-time-ns = <1000>; */
    /* clock-frequency = <0x186a0>; */

    i2c-mux@71 {
    /*compatible = "ti,tca9548"; */
    compatible = "nxp,pca9548";
    /* compatible = "ti,tca9539"; */
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x71>;

    i2c@1 {
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x1>;

    rtc_dev@51 {
    #sound-dai-cells = <0>;
    compatible = "nxp,pcf2129";
    reg = <0x51>;
    };
    };

    i2c@2 {
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x02>;

    eeprom@50 {
    compatible = "nxp,pca9847";
    /*compatible = "nxp,24lc02"; */
    reg = <0x50>;
    #shunt-resistor = <500>;
    };
    };

    i2c@3 {
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x3>;

    pcie@38 {
    compatible = "nxp,sa56004";
    reg = <0x38>;
    #vcc-supply = <&sb_3v3>;
    };

    };

    i2c@4 {
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x4>;

    temp-sensor@4d {
    compatible = "nxp,sa56004";
    reg = <0x4d>;
    #vcc-supply = <&sb_3v3>;
    };

    };

    i2c@5 {
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0x5>;

    xmc_conn:xmc@4d {
    compatible = "nxp,sa56004";
    reg = <0xd>;
    #vcc-supply = <&sb_3v3>;
    };

    };
    };
    };

    i2c hub devices is getting registered with /dev/i2c-1,but when i am using  i2ctransfer 1 w17@0x71 0x0 0xFF- to enable all devices(0x71 is i2c huib address and writting 0xff to enable all devices at bus 1) which are connected through i2c Hub i am getting below error:
    i2ctransfer: can't set address to 0x71: Device or resource busy

    also i am getting all the device address with command ls -l /sys/bus/i2c/devices  which is connected to HUB as shown below:

    lrwxrwxrwx 1 root root 0 Jan 1 1970 0-0050 -> ../../../devices/platform/soc/2000000.i2c/i2c-0/0-0050
    lrwxrwxrwx 1 root root 0 Jan 1 1970 1-0071 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/1-0071
    lrwxrwxrwx 1 root root 0 Jan 1 1970 3-0051 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-3/3-0051
    lrwxrwxrwx 1 root root 0 Jan 1 1970 4-0050 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-4/4-0050
    lrwxrwxrwx 1 root root 0 Jan 1 1970 5-0038 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-5/5-0038
    lrwxrwxrwx 1 root root 0 Jan 1 1970 6-004d -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-6/6-004d
    lrwxrwxrwx 1 root root 0 Jan 1 1970 7-000d -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-7/7-000d
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-0 -> ../../../devices/platform/soc/2000000.i2c/i2c-0
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-1 -> ../../../devices/platform/soc/2010000.i2c/i2c-1
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-2 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-2
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-3 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-3
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-4 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-4
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-5 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-5
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-6 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-6
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-7 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-7
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-8 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-8
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-9 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-9

    Below is my question:

    Is my dts is correct for i2c Hub switch?.

    Why it is showing "i2ctransfer: can't set address to 0x71: Device or resource busy" .

    where i am doing wrong?.

    Please find below log print for your reference.

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
    [ 0.000000] Linux version 5.4.47-dirty (root@petalinux) (gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)) #131 SMP PREEMPT Tue Oct 18 15:46:55 IST 2022
    [ 0.000000] Machine model: MOOG-CoreEL LS1028a Board
    [ 0.000000] earlycon: uart8250 at MMIO 0x00000000021c0500 (options '')
    [ 0.000000] printk: bootconsole [uart8250] enabled
    [ 0.000000] efi: Getting EFI parameters from FDT:
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] cma: Reserved 256 MiB at 0x00000000ebc00000
    [ 0.000000] NUMA: No NUMA configuration found
    [ 0.000000] NUMA: Faking a node at [mem 0x0000000080000000-0x00000020ffffffff]
    [ 0.000000] NUMA: NODE_DATA [mem 0x20ff800800-0x20ff801fff]
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] Normal [mem 0x0000000100000000-0x00000020ffffffff]
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x00000000fbdfffff]
    [ 0.000000] node 0: [mem 0x0000002080000000-0x00000020ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000020ffffffff]
    [ 0.000000] psci: probing for conduit method from DT.
    [ 0.000000] psci: PSCIv1.1 detected in firmware.
    [ 0.000000] psci: Using standard PSCI v0.2 function IDs
    [ 0.000000] psci: Trusted OS migration not required
    [ 0.000000] psci: SMC Calling Convention v1.1
    [ 0.000000] percpu: Embedded 24 pages/cpu s59928 r8192 d30184 u98304
    [ 0.000000] Detected PIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] CPU features: detected: EL2 vector hardening
    [ 0.000000] CPU features: kernel page table isolation forced ON by KASLR
    [ 0.000000] CPU features: detected: Kernel page table isolation (KPTI)
    [ 0.000000] Speculative Store Bypass Disable mitigation not required
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1015296
    [ 0.000000] Policy zone: Normal
    [ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/ram0 earlycon=uart8250,mmio,0x21c0500 ramdisk_size=0x2000000 default_hugepagesz=2m hugepagesz=2m hugepages=256 video=1920x1080-32@60 cma=256M
    [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] software IO TLB: mapped [mem 0xe7c00000-0xebc00000] (64MB)
    [ 0.000000] Memory: 3638212K/4126720K available (18876K kernel code, 2498K rwdata, 8964K rodata, 28288K init, 999K bss, 226364K reserved, 262144K cma-reserved)
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
    [ 0.000000] Tasks RCU enabled.
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 256 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] GICv3: Distributor has no Range Selector support
    [ 0.000000] GICv3: 16 PPIs implemented
    [ 0.000000] GICv3: no VLPI support, no direct LPI support
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000006040000
    [ 0.000000] ITS [mem 0x06020000-0x0603ffff]
    [ 0.000000] ITS@0x0000000006020000: allocated 65536 Devices @20fa880000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x00000020fa830000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x00000020fa840000
    [ 0.000000] random: get_random_bytes called from start_kernel+0x2b8/0x458 with crng_init=0
    [ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c409fb33, max_idle_ns: 440795203156 ns
    [ 0.000002] sched_clock: 56 bits at 25MHz, resolution 39ns, wraps every 4398046511103ns
    [ 0.008411] Console: colour dummy device 80x25
    [ 0.012932] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=100000)
    [ 0.023384] pid_max: default: 32768 minimum: 301
    [ 0.028100] LSM: Security Framework initializing
    [ 0.032814] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [ 0.040304] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [ 0.072252] ASID allocator initialised with 32768 entries
    [ 0.085713] rcu: Hierarchical SRCU implementation.
    [ 0.098590] Platform MSI: gic-its@6020000 domain created
    [ 0.104018] PCI/MSI: /interrupt-controller@6000000/gic-its@6020000 domain created
    [ 0.111605] fsl-mc MSI: gic-its@6020000 domain created
    [ 0.117288] EFI services will not be available.
    [ 0.129869] smp: Bringing up secondary CPUs ...
    [ 0.166600] Detected PIPT I-cache on CPU1
    [ 0.166618] GICv3: CPU1: found redistributor 1 region 0:0x0000000006060000
    [ 0.166624] GICv3: CPU1: using allocated LPI pending table @0x00000020fa850000
    [ 0.166643] CPU1: Booted secondary processor 0x0000000001 [0x410fd083]
    [ 0.166690] smp: Brought up 1 node, 2 CPUs
    [ 0.195683] SMP: Total of 2 processors activated.
    [ 0.200429] CPU features: detected: 32-bit EL0 Support
    [ 0.205621] CPU features: detected: CRC32 instructions
    [ 0.221109] CPU: All CPU(s) started at EL2
    [ 0.225251] alternatives: patching kernel code
    [ 0.230433] devtmpfs: initialized
    [ 0.236367] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [ 0.246214] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.256274] xor: measuring software checksum speed
    [ 0.301152] 8regs : 6347.000 MB/sec
    [ 0.345391] 32regs : 6509.000 MB/sec
    [ 0.389630] arm64_neon: 6042.000 MB/sec
    [ 0.393849] xor: using function: 32regs (6509.000 MB/sec)
    [ 0.399300] pinctrl core: initialized pinctrl subsystem
    [ 0.405145] DMI not present or invalid.
    [ 0.409211] NET: Registered protocol family 16
    [ 0.414425] DMA: preallocated 256 KiB pool for atomic allocations
    [ 0.420585] audit: initializing netlink subsys (disabled)
    [ 0.426118] audit: type=2000 audit(0.356:1): state=initialized audit_enabled=0 res=1
    [ 0.433957] cpuidle: using governor menu
    [ 0.438163] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [ 0.445553] Serial: AMBA PL011 UART driver
    [ 0.449737] imx mu driver is registered.
    [ 0.453702] imx rpmsg driver is registered.
    [ 0.458981] Machine: MOOG-CoreEL LS1028a Board
    [ 0.463466] SoC family: QorIQ LS1028A
    [ 0.467155] SoC ID: svr:0x870b0010, Revision: 1.0
    [ 0.492706] HugeTLB registered 2.00 MiB page size, pre-allocated 256 pages
    [ 0.499662] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.506426] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.513190] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.520767] cryptd: max_cpu_qlen set to 1000
    [ 0.593136] raid6: neonx8 gen() 3631 MB/s
    [ 0.665496] raid6: neonx8 xor() 3091 MB/s
    [ 0.737868] raid6: neonx4 gen() 3052 MB/s
    [ 0.810227] raid6: neonx4 xor() 2836 MB/s
    [ 0.882602] raid6: neonx2 gen() 2402 MB/s
    [ 0.954967] raid6: neonx2 xor() 2772 MB/s
    [ 1.027021] raid6: neonx1 gen() 1838 MB/s
    [ 1.099028] raid6: neonx1 xor() 2099 MB/s
    [ 1.171067] raid6: int64x8 gen() 1628 MB/s
    [ 1.243103] raid6: int64x8 xor() 1358 MB/s
    [ 1.315154] raid6: int64x4 gen() 1876 MB/s
    [ 1.387161] raid6: int64x4 xor() 1384 MB/s
    [ 1.459240] raid6: int64x2 gen() 1263 MB/s
    [ 1.531226] raid6: int64x2 xor() 1245 MB/s
    [ 1.603301] raid6: int64x1 gen() 922 MB/s
    [ 1.675314] raid6: int64x1 xor() 833 MB/s
    [ 1.679619] raid6: using algorithm neonx8 gen() 3631 MB/s
    [ 1.685065] raid6: .... xor() 3091 MB/s, rmw enabled
    [ 1.690073] raid6: using neon recovery algorithm
    [ 1.695058] ACPI: Interpreter disabled.
    [ 1.700727] iommu: Default domain type: Passthrough
    [ 1.705834] vgaarb: loaded
    [ 1.708724] SCSI subsystem initialized
    [ 1.712699] usbcore: registered new interface driver usbfs
    [ 1.718256] usbcore: registered new interface driver hub
    [ 1.723639] usbcore: registered new device driver usb
    [ 1.728977] imx-i2c 2000000.i2c: can't get pinctrl, bus recovery not supported
    [ 1.736383] i2c i2c-0: IMX I2C adapter registered
    [ 1.741209] imx-i2c 2010000.i2c: can't get pinctrl, bus recovery not supported
    [ 1.748591] i2c i2c-1: IMX I2C adapter registered
    [ 1.753601] mc: Linux media interface: v0.10
    [ 1.757926] videodev: Linux video capture interface: v2.00
    [ 1.763497] pps_core: LinuxPPS API ver. 1 registered
    [ 1.768507] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 1.777732] PTP clock support registered
    [ 1.781745] EDAC MC: Ver: 3.0.0
    [ 1.785433] No BMan portals available!
    [ 1.789458] QMan: Allocated lookup table at (____ptrval____), entry count 65537
    [ 1.796926] No QMan portals available!
    [ 1.800827] No USDPAA memory, no 'fsl,usdpaa-mem' in device-tree
    [ 1.807170] FPGA manager framework
    [ 1.810645] Advanced Linux Sound Architecture Driver Initialized.
    [ 1.817385] clocksource: Switched to clocksource arch_sys_counter
    [ 1.823633] VFS: Disk quotas dquot_6.6.0
    [ 1.827621] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 1.834654] pnp: PnP ACPI: disabled
    [ 1.841316] thermal_sys: Registered thermal governor 'step_wise'
    [ 1.841319] thermal_sys: Registered thermal governor 'power_allocator'
    [ 1.847645] NET: Registered protocol family 2
    [ 1.858907] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
    [ 1.867557] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 1.875689] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
    [ 1.883333] TCP: Hash tables configured (established 32768 bind 32768)
    [ 1.889986] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
    [ 1.896805] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
    [ 1.904155] NET: Registered protocol family 1
    [ 1.908783] RPC: Registered named UNIX socket transport module.
    [ 1.914765] RPC: Registered udp transport module.
    [ 1.919511] RPC: Registered tcp transport module.
    [ 1.924256] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 1.930759] PCI: CLS 0 bytes, default 64
    [ 2.552355] Trying to unpack rootfs image as initramfs...
    [ 3.154075] Freeing initrd memory: 20620K
    [ 3.158539] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available
    [ 3.166913] kvm [1]: IPA Size Limit: 44bits
    [ 3.171621] kvm [1]: GICv3: no GICV resource entry
    [ 3.176458] kvm [1]: disabling GICv2 emulation
    [ 3.180954] kvm [1]: GIC system register CPU interface enabled
    [ 3.186869] kvm [1]: vgic interrupt IRQ1
    [ 3.190881] kvm [1]: Hyp mode initialized successfully
    [ 3.198085] Initialise system trusted keyrings
    [ 3.202632] workingset: timestamp_bits=44 max_order=20 bucket_order=0
    [ 3.209471] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [ 3.215498] NFS: Registering the id_resolver key type
    [ 3.220607] Key type id_resolver registered
    [ 3.224827] Key type id_legacy registered
    [ 3.228875] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [ 3.235648] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    [ 3.241932] fuse: init (API version 7.31)
    [ 3.246057] 9p: Installing v9fs 9p2000 file system support
    [ 3.260860] Key type asymmetric registered
    [ 3.264996] Asymmetric key parser 'x509' registered
    [ 3.269936] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [ 3.277453] io scheduler mq-deadline registered
    [ 3.282028] io scheduler kyber registered
    [ 3.290248] pci-host-generic 1f0000000.pcie: host bridge /soc/pcie@1f0000000 ranges:
    [ 3.298093] pci-host-generic 1f0000000.pcie: MEM 0x1f8000000..0x1f815ffff -> 0x00000000
    [ 3.306362] pci-host-generic 1f0000000.pcie: MEM 0x1f8160000..0x1f81cffff -> 0x00000000
    [ 3.314628] pci-host-generic 1f0000000.pcie: MEM 0x1f81d0000..0x1f81effff -> 0x00000000
    [ 3.322893] pci-host-generic 1f0000000.pcie: MEM 0x1f81f0000..0x1f820ffff -> 0x00000000
    [ 3.331157] pci-host-generic 1f0000000.pcie: MEM 0x1f8210000..0x1f822ffff -> 0x00000000
    [ 3.339422] pci-host-generic 1f0000000.pcie: MEM 0x1f8230000..0x1f824ffff -> 0x00000000
    [ 3.347684] pci-host-generic 1f0000000.pcie: MEM 0x1fc000000..0x1fc3fffff -> 0x00000000
    [ 3.355979] pci-host-generic 1f0000000.pcie: ECAM at [mem 0x1f0000000-0x1f00fffff] for [bus 00]
    [ 3.364828] pci-host-generic 1f0000000.pcie: PCI host bridge to bus 0000:00
    [ 3.371859] pci_bus 0000:00: root bus resource [bus 00]
    [ 3.377134] pci_bus 0000:00: root bus resource [mem 0x1f8000000-0x1f815ffff] (bus address [0x00000000-0x0015ffff])
    [ 3.387586] pci_bus 0000:00: root bus resource [mem 0x1f8160000-0x1f81cffff pref] (bus address [0x00000000-0x0006ffff])
    [ 3.398476] pci_bus 0000:00: root bus resource [mem 0x1f81d0000-0x1f81effff] (bus address [0x00000000-0x0001ffff])
    [ 3.408928] pci_bus 0000:00: root bus resource [mem 0x1f81f0000-0x1f820ffff pref] (bus address [0x00000000-0x0001ffff])
    [ 3.419818] pci_bus 0000:00: root bus resource [mem 0x1f8210000-0x1f822ffff] (bus address [0x00000000-0x0001ffff])
    [ 3.430274] pci_bus 0000:00: root bus resource [mem 0x1f8230000-0x1f824ffff pref] (bus address [0x00000000-0x0001ffff])
    [ 3.441166] pci_bus 0000:00: root bus resource [mem 0x1fc000000-0x1fc3fffff] (bus address [0x00000000-0x003fffff])
    [ 3.451627] pci 0000:00:00.0: [1957:e100] type 00 class 0x020001
    [ 3.457722] pci 0000:00:00.0: BAR 0: [mem 0x1f8000000-0x1f803ffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.468262] pci 0000:00:00.0: BAR 2: [mem 0x1f8160000-0x1f816ffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.479242] pci 0000:00:00.0: VF BAR 0: [mem 0x1f81d0000-0x1f81dffff 64bit] (from Enhanced Allocation, properties 0x4)
    [ 3.490045] pci 0000:00:00.0: VF BAR 2: [mem 0x1f81f0000-0x1f81fffff 64bit pref] (from Enhanced Allocation, properties 0x3)
    [ 3.501300] pci 0000:00:00.0: PME# supported from D0 D3hot
    [ 3.506845] pci 0000:00:00.0: VF(n) BAR0 space: [mem 0x1f81d0000-0x1f81effff 64bit] (contains BAR0 for 2 VFs)
    [ 3.516858] pci 0000:00:00.0: VF(n) BAR2 space: [mem 0x1f81f0000-0x1f820ffff 64bit pref] (contains BAR2 for 2 VFs)
    [ 3.527413] pci 0000:00:00.1: [1957:e100] type 00 class 0x020001
    [ 3.533498] pci 0000:00:00.1: BAR 0: [mem 0x1f8040000-0x1f807ffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.544039] pci 0000:00:00.1: BAR 2: [mem 0x1f8170000-0x1f817ffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.555018] pci 0000:00:00.1: VF BAR 0: [mem 0x1f8210000-0x1f821ffff 64bit] (from Enhanced Allocation, properties 0x4)
    [ 3.565823] pci 0000:00:00.1: VF BAR 2: [mem 0x1f8230000-0x1f823ffff 64bit pref] (from Enhanced Allocation, properties 0x3)
    [ 3.577075] pci 0000:00:00.1: PME# supported from D0 D3hot
    [ 3.582618] pci 0000:00:00.1: VF(n) BAR0 space: [mem 0x1f8210000-0x1f822ffff 64bit] (contains BAR0 for 2 VFs)
    [ 3.592631] pci 0000:00:00.1: VF(n) BAR2 space: [mem 0x1f8230000-0x1f824ffff 64bit pref] (contains BAR2 for 2 VFs)
    [ 3.603183] pci 0000:00:00.2: [1957:e100] type 00 class 0x020001
    [ 3.609271] pci 0000:00:00.2: BAR 0: [mem 0x1f8080000-0x1f80bffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.619811] pci 0000:00:00.2: BAR 2: [mem 0x1f8180000-0x1f818ffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.630800] pci 0000:00:00.2: PME# supported from D0 D3hot
    [ 3.636419] pci 0000:00:00.3: [1957:ee01] type 00 class 0x088001
    [ 3.642506] pci 0000:00:00.3: BAR 0: [mem 0x1f8100000-0x1f811ffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.653047] pci 0000:00:00.3: BAR 2: [mem 0x1f8190000-0x1f819ffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.664035] pci 0000:00:00.3: PME# supported from D0 D3hot
    [ 3.669659] pci 0000:00:00.4: [1957:ee02] type 00 class 0x088001
    [ 3.675743] pci 0000:00:00.4: BAR 0: [mem 0x1f8120000-0x1f813ffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.686284] pci 0000:00:00.4: BAR 2: [mem 0x1f81a0000-0x1f81affff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.697272] pci 0000:00:00.4: PME# supported from D0 D3hot
    [ 3.702890] pci 0000:00:00.5: [1957:eef0] type 00 class 0x020801
    [ 3.708978] pci 0000:00:00.5: BAR 0: [mem 0x1f8140000-0x1f815ffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.719519] pci 0000:00:00.5: BAR 2: [mem 0x1f81b0000-0x1f81bffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.730497] pci 0000:00:00.5: BAR 4: [mem 0x1fc000000-0x1fc3fffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.741046] pci 0000:00:00.5: PME# supported from D0 D3hot
    [ 3.746665] pci 0000:00:00.6: [1957:e100] type 00 class 0x020001
    [ 3.752749] pci 0000:00:00.6: BAR 0: [mem 0x1f80c0000-0x1f80fffff 64bit] (from Enhanced Allocation, properties 0x0)
    [ 3.763289] pci 0000:00:00.6: BAR 2: [mem 0x1f81c0000-0x1f81cffff 64bit pref] (from Enhanced Allocation, properties 0x1)
    [ 3.774279] pci 0000:00:00.6: PME# supported from D0 D3hot
    [ 3.780510] pci 0000:00:1f.0: [1957:e001] type 00 class 0x080700
    [ 3.786610] OF: /soc/pcie@1f0000000: no msi-map translation for id 0xf8 on (null)
    [ 3.794649] layerscape-pcie 3400000.pcie: host bridge /soc/pcie@3400000 ranges:
    [ 3.802044] layerscape-pcie 3400000.pcie: IO 0x8000010000..0x800001ffff -> 0x00000000
    [ 3.810221] layerscape-pcie 3400000.pcie: MEM 0x8040000000..0x807fffffff -> 0x40000000
    [ 3.818472] layerscape-pcie 3400000.pcie: PCI host bridge to bus 0001:00
    [ 3.825240] pci_bus 0001:00: root bus resource [bus 00-ff]
    [ 3.830777] pci_bus 0001:00: root bus resource [io 0x0000-0xffff]
    [ 3.837017] pci_bus 0001:00: root bus resource [mem 0x8040000000-0x807fffffff] (bus address [0x40000000-0x7fffffff])
    [ 3.847653] pci 0001:00:00.0: [1957:82c0] type 01 class 0x060400
    [ 3.853765] pci 0001:00:00.0: supports D1 D2
    [ 3.858074] pci 0001:00:00.0: PME# supported from D0 D1 D2 D3hot
    [ 3.864941] pci 0001:01:00.0: [10b5:8604] type 01 class 0x060400
    [ 3.871191] pci 0001:01:00.0: reg 0x10: [mem 0x8040000000-0x804001ffff]
    [ 3.878561] pci 0001:01:00.0: PME# supported from D0 D3hot D3cold
    [ 3.894420] pci 0001:02:01.0: [10b5:8604] type 01 class 0x060400
    [ 3.901317] pci 0001:02:01.0: PME# supported from D0 D3hot D3cold
    [ 3.907919] pci 0001:02:04.0: [10b5:8604] type 01 class 0x060400
    [ 3.914813] pci 0001:02:04.0: PME# supported from D0 D3hot D3cold
    [ 3.921371] pci 0001:02:05.0: [10b5:8604] type 01 class 0x060400
    [ 3.928265] pci 0001:02:05.0: PME# supported from D0 D3hot D3cold
    [ 3.935839] pci 0001:03:00.0: [10b5:8604] type 01 class 0x060400
    [ 3.942077] pci 0001:03:00.0: reg 0x10: [mem 0x8040100000-0x804011ffff]
    [ 3.949473] pci 0001:03:00.0: PME# supported from D0 D3hot D3cold
    [ 3.957274] pci 0001:04:00.0: [10b5:8604] type 01 class 0x060400
    [ 3.964262] pci 0001:04:00.0: PME# supported from D0 D3hot D3cold
    [ 3.970874] pci 0001:04:01.0: [10b5:8604] type 01 class 0x060400
    [ 3.977823] pci 0001:04:01.0: PME# supported from D0 D3hot D3cold
    [ 3.984451] pci 0001:04:04.0: [10b5:8604] type 01 class 0x060400
    [ 3.991395] pci 0001:04:04.0: PME# supported from D0 D3hot D3cold
    [ 3.999046] pci 0001:05:00.0: [1957:82c0] type 00 class 0x0b2000
    [ 4.005263] pci 0001:05:00.0: reg 0x10: [mem 0x8040200000-0x8040200fff]
    [ 4.011996] pci 0001:05:00.0: reg 0x14: [mem 0x8040202000-0x8040203fff]
    [ 4.018761] pci 0001:05:00.0: reg 0x18: [mem 0x8040204000-0x8040204fff 64bit pref]
    [ 4.026491] pci 0001:05:00.0: reg 0x20: [mem 0x8040300000-0x80403fffff 64bit pref]
    [ 4.034189] pci 0001:05:00.0: reg 0x30: [mem 0x8041000000-0x8041ffffff pref]
    [ 4.041701] pci 0001:05:00.0: supports D1 D2
    [ 4.046009] pci 0001:05:00.0: PME# supported from D0 D1 D2 D3hot
    [ 4.052327] pci 0001:05:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5 GT/s x1 link at 0001:00:00.0 (capable of 31.504 Gb/s with 8 GT/s x4 link)
    [ 4.066260] OF: /soc/pcie@3400000: no msi-map translation for id 0x500 on (null)
    [ 4.074669] pci_bus 0001:05: busn_res: [bus 05-ff] end is updated to 05
    [ 4.082211] pci_bus 0001:06: busn_res: [bus 06-ff] end is updated to 06
    [ 4.089754] pci_bus 0001:07: busn_res: [bus 07-ff] end is updated to 07
    [ 4.096448] pci_bus 0001:04: busn_res: [bus 04-ff] end is updated to 07
    [ 4.103143] pci_bus 0001:03: busn_res: [bus 03-ff] end is updated to 07
    [ 4.110663] pci_bus 0001:08: busn_res: [bus 08-ff] end is updated to 08
    [ 4.118198] pci_bus 0001:09: busn_res: [bus 09-ff] end is updated to 09
    [ 4.124893] pci_bus 0001:02: busn_res: [bus 02-ff] end is updated to 09
    [ 4.131585] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 09
    [ 4.138279] pci 0001:00:00.0: BAR 14: assigned [mem 0x8040000000-0x8041dfffff]
    [ 4.145573] pci 0001:00:00.0: BAR 15: assigned [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.153832] pci 0001:01:00.0: BAR 14: assigned [mem 0x8040000000-0x8041bfffff]
    [ 4.161125] pci 0001:01:00.0: BAR 15: assigned [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.169382] pci 0001:01:00.0: BAR 0: assigned [mem 0x8041c00000-0x8041c1ffff]
    [ 4.176603] pci 0001:02:01.0: BAR 14: assigned [mem 0x8040000000-0x8041bfffff]
    [ 4.183896] pci 0001:02:01.0: BAR 15: assigned [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.192155] pci 0001:03:00.0: BAR 14: assigned [mem 0x8040000000-0x80417fffff]
    [ 4.199447] pci 0001:03:00.0: BAR 15: assigned [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.207706] pci 0001:03:00.0: BAR 0: assigned [mem 0x8041800000-0x804181ffff]
    [ 4.214927] pci 0001:04:00.0: BAR 14: assigned [mem 0x8040000000-0x80417fffff]
    [ 4.222219] pci 0001:04:00.0: BAR 15: assigned [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.230479] pci 0001:05:00.0: BAR 6: assigned [mem 0x8040000000-0x8040ffffff pref]
    [ 4.238122] pci 0001:05:00.0: BAR 4: assigned [mem 0x8041e00000-0x8041efffff 64bit pref]
    [ 4.246348] pci 0001:05:00.0: BAR 1: assigned [mem 0x8041000000-0x8041001fff]
    [ 4.253568] pci 0001:05:00.0: BAR 0: assigned [mem 0x8041002000-0x8041002fff]
    [ 4.260788] pci 0001:05:00.0: BAR 2: assigned [mem 0x8041f00000-0x8041f00fff 64bit pref]
    [ 4.269014] pci 0001:04:00.0: PCI bridge to [bus 05]
    [ 4.274047] pci 0001:04:00.0: bridge window [mem 0x8040000000-0x80417fffff]
    [ 4.281266] pci 0001:04:00.0: bridge window [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.289464] pci 0001:04:01.0: PCI bridge to [bus 06]
    [ 4.294542] pci 0001:04:04.0: PCI bridge to [bus 07]
    [ 4.299619] pci 0001:03:00.0: PCI bridge to [bus 04-07]
    [ 4.304914] pci 0001:03:00.0: bridge window [mem 0x8040000000-0x80417fffff]
    [ 4.312134] pci 0001:03:00.0: bridge window [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.320332] pci 0001:02:01.0: PCI bridge to [bus 03-07]
    [ 4.325627] pci 0001:02:01.0: bridge window [mem 0x8040000000-0x8041bfffff]
    [ 4.332845] pci 0001:02:01.0: bridge window [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.341041] pci 0001:02:04.0: PCI bridge to [bus 08]
    [ 4.346114] pci 0001:02:05.0: PCI bridge to [bus 09]
    [ 4.351188] pci 0001:01:00.0: PCI bridge to [bus 02-09]
    [ 4.356482] pci 0001:01:00.0: bridge window [mem 0x8040000000-0x8041bfffff]
    [ 4.363700] pci 0001:01:00.0: bridge window [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.371896] pci 0001:00:00.0: PCI bridge to [bus 01-09]
    [ 4.377170] pci 0001:00:00.0: bridge window [mem 0x8040000000-0x8041dfffff]
    [ 4.384375] pci 0001:00:00.0: bridge window [mem 0x8041e00000-0x8041ffffff 64bit pref]
    [ 4.392753] layerscape-pcie 3500000.pcie: host bridge /soc/pcie@3500000 ranges:
    [ 4.400147] layerscape-pcie 3500000.pcie: IO 0x8800010000..0x880001ffff -> 0x00000000
    [ 4.408324] layerscape-pcie 3500000.pcie: MEM 0x8840000000..0x887fffffff -> 0x40000000
    [ 4.416574] layerscape-pcie 3500000.pcie: PCI host bridge to bus 0002:00
    [ 4.423342] pci_bus 0002:00: root bus resource [bus 00-ff]
    [ 4.428880] pci_bus 0002:00: root bus resource [io 0x10000-0x1ffff] (bus address [0x0000-0xffff])
    [ 4.437928] pci_bus 0002:00: root bus resource [mem 0x8840000000-0x887fffffff] (bus address [0x40000000-0x7fffffff])
    [ 4.448564] pci 0002:00:00.0: [1957:82c0] type 01 class 0x060400
    [ 4.454679] pci 0002:00:00.0: supports D1 D2
    [ 4.458988] pci 0002:00:00.0: PME# supported from D0 D1 D2 D3hot
    [ 4.465866] pci 0002:01:00.0: [11aa:1556] type 00 class 0x000000
    [ 4.472116] pci 0002:01:00.0: reg 0x10: [mem 0x8840000000-0x88407fffff 64bit pref]
    [ 4.480092] pci 0002:01:00.0: enabling Extended Tags
    [ 4.485478] pci 0002:01:00.0: PME# supported from D0 D3hot
    [ 4.491222] pci 0002:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s x1 link at 0002:00:00.0 (capable of 8.000 Gb/s with 2.5 GT/s x4 link)
    [ 4.505424] OF: /soc/pcie@3500000: no msi-map translation for id 0x100 on (null)
    [ 4.522031] pci_bus 0002:01: busn_res: [bus 01-ff] end is updated to 01
    [ 4.528719] pci 0002:00:00.0: BAR 15: assigned [mem 0x8840000000-0x88407fffff 64bit pref]
    [ 4.536977] pci 0002:00:00.0: PCI bridge to [bus 01]
    [ 4.541990] pci 0002:00:00.0: bridge window [mem 0x8840000000-0x88407fffff 64bit pref]
    [ 4.550723] switchtec: loaded.
    [ 4.554062] EINJ: ACPI disabled.
    [ 4.560008] Bus freq driver module loaded
    [ 4.567089] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    [ 4.574625] printk: console [ttyS0] disabled
    [ 4.578980] 21c0500.serial: ttyS0 at MMIO 0x21c0500 (irq = 13, base_baud = 12500000) is a 16550A
    [ 4.587870] printk: console [ttyS0] enabled
    [ 4.587870] printk: console [ttyS0] enabled
    [ 4.596281] printk: bootconsole [uart8250] disabled
    [ 4.596281] printk: bootconsole [uart8250] disabled
    [ 4.606363] 21c0600.serial: ttyS1 at MMIO 0x21c0600 (irq = 13, base_baud = 12500000) is a 16550A
    [ 4.615435] SuperH (H)SCI(F) driver initialized
    [ 4.620232] msm_serial: driver initialized
    [ 4.625690] arm-smmu 5000000.iommu: probing hardware configuration...
    [ 4.632157] arm-smmu 5000000.iommu: SMMUv2 with:
    [ 4.636789] arm-smmu 5000000.iommu: stage 1 translation
    [ 4.642118] arm-smmu 5000000.iommu: stage 2 translation
    [ 4.647448] arm-smmu 5000000.iommu: nested translation
    [ 4.652693] arm-smmu 5000000.iommu: stream matching with 128 register groups
    [ 4.659856] arm-smmu 5000000.iommu: 64 context banks (0 stage-2 only)
    [ 4.666409] arm-smmu 5000000.iommu: Supported page sizes: 0x61311000
    [ 4.672872] arm-smmu 5000000.iommu: Stage-1: 48-bit VA -> 48-bit IPA
    [ 4.679336] arm-smmu 5000000.iommu: Stage-2: 48-bit IPA -> 48-bit PA
    [ 4.690959] brd: module loaded
    [ 4.697644] loop: module loaded
    [ 4.702095] imx ahci driver is registered.
    [ 4.706399] ahci-qoriq 3200000.sata: Adding to iommu group 0
    [ 4.712126] ahci-qoriq 3200000.sata: 3200000.sata supply ahci not found, using dummy regulator
    [ 4.720810] ahci-qoriq 3200000.sata: 3200000.sata supply phy not found, using dummy regulator
    [ 4.729399] ahci-qoriq 3200000.sata: 3200000.sata supply target not found, using dummy regulator
    [ 4.738295] ahci-qoriq 3200000.sata: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl platform mode
    [ 4.747290] ahci-qoriq 3200000.sata: flags: 64bit ncq sntf pm clo only pmp fbs pio slum part ccc sds apst
    [ 4.757470] scsi host0: ahci-qoriq
    [ 4.761004] ata1: SATA max UDMA/133 mmio [mem 0x03200000-0x0320ffff] port 0x100 irq 19
    [ 4.770163] spi-nor spi2.0: mr25h40 (512 Kbytes)
    [ 4.774810] 1 fixed-partitions partitions found on MTD device spi2.0
    [ 4.781187] Creating 1 MTD partitions on "spi2.0":
    [ 4.785997] 0x000000000000-0x000000040000 : "SPI.MRAM_User Partition"
    [ 4.794294] spi-nor spi0.0: mt35xu01g (131072 Kbytes)
    [ 4.799390] 3 fixed-partitions partitions found on MTD device 20c0000.spi
    [ 4.806202] Creating 3 MTD partitions on "20c0000.spi":
    [ 4.811447] 0x000000000000-0x000000100000 : "SPI_NOR.bl2_flexspi_nor.pbl"
    [ 4.821731] 0x000000100000-0x000000500000 : "SPI_NOR.fip.bin_U-boot"
    [ 4.829697] 0x000004100000-0x000004300000 : "SPI_NOR.user_space"
    [ 4.838751] libphy: Fixed MDIO Bus: probed
    [ 4.843409] tun: Universal TUN/TAP device driver, 1.6
    [ 4.848573] CAN device driver interface
    [ 4.852510] flexcan 2180000.can: 2180000.can supply xceiver not found, using dummy regulator
    [ 4.861319] flexcan 2190000.can: 2190000.can supply xceiver not found, using dummy regulator
    [ 4.870167] mscc_felix 0000:00:00.5: Adding to iommu group 1
    [ 4.876024] mscc_felix 0000:00:00.5: Failed to register DSA switch: -517
    [ 4.883144] thunder_xcv, ver 1.0
    [ 4.886409] thunder_bgx, ver 1.0
    [ 4.889669] nicpf, ver 1.0
    [ 4.892622] Freescale FM module, FMD API version 21.1.0
    [ 4.897931] Freescale FM Ports module
    [ 4.901605] fsl_mac: fsl_mac: FSL FMan MAC API based driver
    [ 4.907246] fsl_dpa: FSL DPAA Ethernet driver
    [ 4.911657] fsl_advanced: FSL DPAA Advanced drivers:
    [ 4.916637] fsl_proxy: FSL DPAA Proxy initialization driver
    [ 4.922268] fsl_oh: FSL FMan Offline Parsing port driver
    [ 4.927726] fsl_enetc 0000:00:00.0: Adding to iommu group 2
    [ 5.037391] fsl_enetc 0000:00:00.0: enabling device (0400 -> 0402)
    [ 5.043622] fsl_enetc 0000:00:00.0: PHY not specified
    [ 5.048691] fsl_enetc 0000:00:00.0: Fallback to PHY-less operation
    [ 5.054901] fsl_enetc 0000:00:00.0: no MAC address specified for SI1, using 86:f8:79:e8:0e:81
    [ 5.063460] fsl_enetc 0000:00:00.0: no MAC address specified for SI2, using fa:e4:63:f9:e2:48
    [ 5.072504] fsl_enetc 0000:00:00.0 eth0: ENETC PF driver v1.0
    [ 5.078283] fsl_enetc 0000:00:00.0: enetc_tsn_init: setup done
    [ 5.084051] ata1: SATA link down (SStatus 0 SControl 300)
    [ 5.084200] fsl_enetc 0000:00:00.1: Adding to iommu group 3
    [ 5.095155] fsl_enetc 0000:00:00.1: device is disabled, skipping
    [ 5.101223] fsl_enetc 0000:00:00.2: Adding to iommu group 4
    [ 5.213393] fsl_enetc 0000:00:00.2: enabling device (0400 -> 0402)
    [ 5.222127] fsl_enetc 0000:00:00.2 eth1: ENETC PF driver v1.0
    [ 5.227904] fsl_enetc 0000:00:00.2: enetc_tsn_init: setup done
    [ 5.233842] fsl_enetc 0000:00:00.6: Adding to iommu group 5
    [ 5.239452] fsl_enetc 0000:00:00.6: device is disabled, skipping
    [ 5.245580] fsl_enetc_mdio 0000:00:00.3: Adding to iommu group 6
    [ 5.357393] fsl_enetc_mdio 0000:00:00.3: enabling device (0400 -> 0402)
    [ 5.364100] libphy: FSL PCIe IE Central MDIO Bus: probed
    [ 5.376194] fsl_enetc_ptp 0000:00:00.4: Adding to iommu group 7
    [ 5.382168] fsl_enetc_ptp 0000:00:00.4: enabling device (0404 -> 0406)
    [ 5.388840] ptp_qoriq: device tree node missing required elements, try automatic configuration
    [ 5.397577] pps pps0: new PPS source ptp0
    [ 5.401980] hclge is initializing
    [ 5.405300] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
    [ 5.412566] hns3: Copyright (c) 2017 Huawei Corporation.
    [ 5.417934] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
    [ 5.425008] e1000: Copyright (c) 1999-2006 Intel Corporation.
    [ 5.430801] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
    [ 5.436654] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [ 5.442621] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.6.0-k
    [ 5.449607] igb: Copyright (c) 2007-2014 Intel Corporation.
    [ 5.455223] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k
    [ 5.463081] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [ 5.469194] sky2: driver version 1.30
    [ 5.473198] usbcore: registered new interface driver r8152
    [ 5.478723] usbcore: registered new interface driver asix
    [ 5.484159] usbcore: registered new interface driver ax88179_178a
    [ 5.490560] VFIO - User Level meta-driver version: 0.3
    [ 5.495946] dwc3 3100000.usb: Adding to iommu group 8
    [ 5.501078] dwc3 3100000.usb: Failed to get clk 'ref': -2
    [ 5.506877] dwc3 3110000.usb: Adding to iommu group 9
    [ 5.511992] dwc3 3110000.usb: Failed to get clk 'ref': -2
    [ 5.518610] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [ 5.525171] ehci-pci: EHCI PCI platform driver
    [ 5.529668] ehci-platform: EHCI generic platform driver
    [ 5.534995] ehci-orion: EHCI orion driver
    [ 5.539065] ehci-exynos: EHCI EXYNOS driver
    [ 5.543304] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    [ 5.549517] ohci-pci: OHCI PCI platform driver
    [ 5.554003] ohci-platform: OHCI generic platform driver
    [ 5.559302] ohci-exynos: OHCI EXYNOS driver
    [ 5.563701] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 5.569218] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
    [ 5.576985] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f66d hci version 0x100 quirks 0x0000000002010010
    [ 5.586434] xhci-hcd xhci-hcd.0.auto: irq 17, io mem 0x03100000
    [ 5.592748] hub 1-0:1.0: USB hub found
    [ 5.596524] hub 1-0:1.0: 1 port detected
    [ 5.600605] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 5.606114] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [ 5.613804] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
    [ 5.620379] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [ 5.628737] hub 2-0:1.0: USB hub found
    [ 5.632510] hub 2-0:1.0: 1 port detected
    [ 5.636636] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
    [ 5.642148] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 3
    [ 5.649908] xhci-hcd xhci-hcd.1.auto: hcc params 0x0220f66d hci version 0x100 quirks 0x0000000002010010
    [ 5.659344] xhci-hcd xhci-hcd.1.auto: irq 18, io mem 0x03110000
    [ 5.665597] hub 3-0:1.0: USB hub found
    [ 5.669363] hub 3-0:1.0: 1 port detected
    [ 5.673440] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
    [ 5.678948] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 4
    [ 5.686638] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
    [ 5.693212] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
    [ 5.701565] hub 4-0:1.0: USB hub found
    [ 5.705332] hub 4-0:1.0: 1 port detected
    [ 5.709599] usbcore: registered new interface driver usb-storage
    [ 5.717299] ftm-alarm 2810000.timer: registered as rtc1
    [ 5.723017] i2c /dev entries driver
    [ 5.728107] ret val of i2c_smbus_write_byte():0
    [ 5.732656] ret val of pca954x_init():0
    [ 5.736625] i2c i2c-1: Added multiplexed i2c bus 2
    [ 5.742326] rtc-pcf2127-i2c 3-0051: pcf2127_probe: interrupt config (ctrl3) failed
    [ 5.749974] i2c i2c-1: Added multiplexed i2c bus 3
    [ 5.755662] i2c i2c-1: Added multiplexed i2c bus 4
    [ 5.760671] i2c i2c-1: Added multiplexed i2c bus 5
    [ 5.765662] i2c i2c-1: Added multiplexed i2c bus 6
    [ 5.770648] i2c i2c-1: Added multiplexed i2c bus 7
    [ 5.775568] i2c i2c-1: Added multiplexed i2c bus 8
    [ 5.780477] i2c i2c-1: Added multiplexed i2c bus 9
    [ 5.785288] pca954x 1-0071: registered 8 multiplexed busses for I2C switch pca9548
    [ 5.795242] sp805-wdt c000000.watchdog: registration successful
    [ 5.801273] sp805-wdt c010000.watchdog: registration successful
    [ 5.808108] qoriq_cpufreq: Freescale QorIQ CPU frequency scaling driver
    [ 5.815026] sdhci: Secure Digital Host Controller Interface driver
    [ 5.821244] sdhci: Copyright(c) Pierre Ossman
    [ 5.825820] Synopsys Designware Multimedia Card Interface Driver
    [ 5.832265] sdhci-pltfm: SDHCI platform and OF driver helper
    [ 5.838648] ledtrig-cpu: registered to indicate activity on CPUs
    [ 5.845441] caam 8000000.crypto: Instantiated RNG4 SH1
    [ 5.850619] caam 8000000.crypto: device ID = 0x0a12070000000000 (Era 10)
    [ 5.857345] caam 8000000.crypto: job rings = 3, qi = 0
    [ 5.864799] caam_jr 8010000.jr: Adding to iommu group 10
    [ 5.876776] caam algorithms registered in /proc/crypto
    [ 5.882722] caam 8000000.crypto: caam pkc algorithms registered in /proc/crypto
    [ 5.890456] caam_jr 8010000.jr: registering rng-caam
    [ 5.895528] caam_jr 8020000.jr: Adding to iommu group 11
    [ 5.905516] caam_jr 8030000.jr: Adding to iommu group 12
    [ 5.914408] usbcore: registered new interface driver usbhid
    [ 5.920018] usbhid: USB HID core driver
    [ 5.925223] No fsl,qman node
    [ 5.928159] Freescale USDPAA process driver
    [ 5.932358] fsl-usdpaa: no region found
    [ 5.936211] Freescale USDPAA process IRQ driver
    [ 5.942322] optee: probing for conduit method from DT.
    [ 5.947504] optee: revision 3.8 (0cb01f7f)
    [ 5.947824] optee: initialized driver
    [ 5.955885] galcore f0c0000.gpu: Adding to iommu group 13
    [ 5.961407] Galcore version 6.4.0.234062
    [ 6.002113] NET: Registered protocol family 26
    [ 6.006592] u32 classifier
    [ 6.009299] input device check on
    [ 6.012980] Actions configured
    [ 6.016761] Initializing XFRM netlink socket
    [ 6.021105] NET: Registered protocol family 10
    [ 6.026014] Segment Routing with IPv6
    [ 6.029737] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [ 6.035928] NET: Registered protocol family 17
    [ 6.040409] NET: Registered protocol family 15
    [ 6.044890] Bridge firewalling registered
    [ 6.049010] can: controller area network core (rev 20170425 abi 9)
    [ 6.055244] NET: Registered protocol family 29
    [ 6.059704] can: raw protocol (rev 20170425)
    [ 6.063986] can: broadcast manager protocol (rev 20170425 t)
    [ 6.069665] can: netlink gateway (rev 20190810) max_hops=1
    [ 6.075216] 8021q: 802.1Q VLAN Support v1.8
    [ 6.079422] lib80211: common routines for IEEE802.11 drivers
    [ 6.085146] 9pnet: Installing 9P2000 support
    [ 6.089454] tsn generic netlink module v1 init...
    [ 6.094219] Key type dns_resolver registered
    [ 6.098764] registered taskstats version 1
    [ 6.102885] Loading compiled-in X.509 certificates
    [ 6.108982] Btrfs loaded, crc32c=crc32c-generic
    [ 6.115688] pcieport 0001:00:00.0: Adding to iommu group 14
    [ 6.121478] pcieport 0001:00:00.0: PME: Signaling with IRQ 101
    [ 6.127636] pcieport 0001:00:00.0: AER: enabled with IRQ 102
    [ 6.133438] pcieport 0001:01:00.0: Adding to iommu group 14
    [ 6.140126] pcieport 0001:02:01.0: Adding to iommu group 14
    [ 6.146760] pcieport 0001:02:04.0: Adding to iommu group 14
    [ 6.153358] pcieport 0001:02:05.0: Adding to iommu group 14
    [ 6.160002] pcieport 0001:03:00.0: Adding to iommu group 14
    [ 6.166667] pcieport 0001:04:00.0: Adding to iommu group 14
    [ 6.173419] pcieport 0001:04:01.0: Adding to iommu group 14
    [ 6.180116] pcieport 0001:04:04.0: Adding to iommu group 14
    [ 6.186779] pcieport 0002:00:00.0: Adding to iommu group 15
    [ 6.192466] pcieport 0002:00:00.0: PME: Signaling with IRQ 103
    [ 6.198460] pcieport 0002:00:00.0: AER: enabled with IRQ 104
    [ 6.215262] libphy: VSC9959 internal MDIO bus: probed
    [ 6.222423] mscc_felix 0000:00:00.5: Found PCS at internal MDIO address 0
    [ 6.230522] mscc_felix 0000:00:00.5: Found PCS at internal MDIO address 1
    [ 6.238545] mscc_felix 0000:00:00.5: Found PCS at internal MDIO address 2
    [ 6.246552] mscc_felix 0000:00:00.5: Found PCS at internal MDIO address 3
    [ 6.337478] IO remap to GPIO successfully completed
    [ 6.341383] pcieport 0002:00:00.0: AER: Multiple Corrected error received: 0002:00:00.0
    [ 6.354370] pcieport 0002:00:00.0: AER: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
    [ 6.364410] pcieport 0002:00:00.0: AER: device [1957:82c0] error status/mask=00000001/00006000
    [ 6.373229] pcieport 0002:00:00.0: AER: [ 0] RxErr
    [ 6.586335] mscc_felix 0000:00:00.5 swp0 (uninitialized): PHY [0000:00:00.3:10] driver [Microsemi GE VSC8574 SyncE]
    [ 6.669473] IO remap to GPIO successfully completed
    [ 6.782333] mscc_felix 0000:00:00.5 swp1 (uninitialized): PHY [0000:00:00.3:11] driver [Microsemi GE VSC8574 SyncE]
    [ 6.869472] IO remap to GPIO successfully completed
    [ 6.982283] mscc_felix 0000:00:00.5 swp2 (uninitialized): PHY [0000:00:00.3:12] driver [Microsemi GE VSC8574 SyncE]
    [ 7.069473] IO remap to GPIO successfully completed
    [ 7.182350] mscc_felix 0000:00:00.5 swp3 (uninitialized): PHY [0000:00:00.3:13] driver [Microsemi GE VSC8574 SyncE]
    [ 7.198677] mscc_felix 0000:00:00.5: configuring for fixed/internal link mode
    [ 7.205942] mscc_felix 0000:00:00.5: Link is Up - 2.5Gbps/Full - flow control off
    [ 7.205948] DSA: tree 0 setup
    [ 7.213765] hctosys: unable to open rtc device (rtc0)
    [ 7.221743] ALSA device list:
    [ 7.224716] No soundcards found.
    [ 7.228164] Warning: unable to open an initial console.
    [ 7.249979] Freeing unused kernel memory: 28288K
    [ 7.254710] Run /init as init process
    [ 7.938960] udevd[257]: starting version 3.2.8
    [ 7.943646] random: udevd: uninitialized urandom read (16 bytes read)
    [ 7.950158] random: udevd: uninitialized urandom read (16 bytes read)
    [ 7.956753] random: udevd: uninitialized urandom read (16 bytes read)
    [ 7.966366] udevd[258]: starting eudev-3.2.8
    [ 8.013615] fsl_enetc 0000:00:00.2 eno2: renamed from eth1
    [ 8.037991] fsl_enetc 0000:00:00.0 eno0: renamed from eth0
    [ 13.750832] random: crng init done
    [ 13.754252] random: 4 urandom warning(s) missed due to ratelimiting

    NXP LSDK tiny 2012 (based on Yocto)
    TinyLinux login: root
    root@TinyLinux:~#
    root@TinyLinux:~#
    root@TinyLinux:~#
    root@TinyLinux:~# ls -l /sys/bus/i2c/devices
    total 0
    lrwxrwxrwx 1 root root 0 Jan 1 1970 0-0050 -> ../../../devices/platform/soc/2000000.i2c/i2c-0/0-0050
    lrwxrwxrwx 1 root root 0 Jan 1 1970 1-0071 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/1-0071
    lrwxrwxrwx 1 root root 0 Jan 1 1970 3-0051 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-3/3-0051
    lrwxrwxrwx 1 root root 0 Jan 1 1970 4-0050 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-4/4-0050
    lrwxrwxrwx 1 root root 0 Jan 1 1970 5-0038 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-5/5-0038
    lrwxrwxrwx 1 root root 0 Jan 1 1970 6-004d -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-6/6-004d
    lrwxrwxrwx 1 root root 0 Jan 1 1970 7-000d -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-7/7-000d
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-0 -> ../../../devices/platform/soc/2000000.i2c/i2c-0
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-1 -> ../../../devices/platform/soc/2010000.i2c/i2c-1
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-2 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-2
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-3 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-3
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-4 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-4
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-5 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-5
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-6 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-6
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-7 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-7
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-8 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-8
    lrwxrwxrwx 1 root root 0 Jan 1 1970 i2c-9 -> ../../../devices/platform/soc/2010000.i2c/i2c-1/i2c-9
    root@TinyLinux:~#
    root@TinyLinux:~#
    root@TinyLinux:~# i2ctransfer 1 w17@0x71 0x0 0xFF-
    i2ctransfer: can't set address to 0x71: Device or resource busy
    root@TinyLinux:~#
    root@TinyLinux:~# i2ctransfer 1 w17@0x71 0x0 0xFF-
    i2ctransfer: can't set address to 0x71: Device or resource busy
    root@TinyLinux:~# i2ctransfer 1 w17@0x71 0x0 0xFF-
    i2ctransfer: can't set address to 0x71: Device or resource busy

    root@TinyLinux:~#

    Thanks,

    Amit Keshri

  • Hi Amit,

    Do you have a schematic that could show where the TCA9548A is located and what other devices are connected on the SDA/SCL bus? Are there multiple I2C devices trying to communicate on the bus at once? 

    The problem seems to be centered around this i2ctransfer command and the bus being busy. It seems that some type of driver already has access to this device. Can you try using the "rmmod" command to unload the bus? I believe you can use "modprobe -r"

    https://www.mankier.com/8/rmmod

    This is a link to the description for the rmmod command. Trying using this in your code before using the i2ctransfer command. 

    Regards,

    Tyler

  • Hi Tyler,

    Thank you for your input.

    Please find the schematics for TCA9548A i2c hub.

    Diagram:

    Schematics:

    So according to diagram from I2C2 two devices are connected one is FPGA and second is I2C HUB Switch.

    I will try "modprobe -r" before i2ctransfer command and update you the result.

    Is my dts is correct for I2C HUB Switch?.

    Regards,

    Amit Keshri

  • Hi Amit, 

    One thing I would suggest on your schematic is to remove the resistors on the address pins and directly short the address pins to either VCC or GND. 

    Also, keep in mind that every channel that is enabled will then see the parallel combination of pull-up resistors on each channel. So if by chance you enable all channels by 0xFF, then you could possibly have 6 x 4.7kohm resistors in parallel -> Req = (4.7k || 4.7k || 4.7k || 4.7k || 4.7k || 4.7k) = 783.33 ohm which should be fine if attempting to drive the bus low with all resistors pulling up VCC.

    For the DTS node, I do not see any problem with the way you were addressing. It looks like you correctly set the #address-cells = <1>; and #size-cells = <0>, with address set to 0x71. 

    Please update me on usage of "modprobe - r"

    Regards,

    Tyler