This thread has been locked.

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

SK-AM64: SK-AM64X Enable SPI on J4

Part Number: SK-AM64
Other Parts Discussed in Thread: SYSCONFIG, PCA9538, TPIC2810, WL1837, , SK-AM62

I am trying to interface a max3107 eval board to the SK-AM64X (GP) J4 connector.  I have enabled 3.3 and 5V to power the device.

I am using Linux 8.06 SDK.  Trying to connect via A53 processor.

All pins connected.  I have also added max3107 specific DTS code and have rebuilt the device tree.

Please specify necessary config settings for the kernel, and necessary DTS settings.

I don't see any SPI or ttyMAX devices after depmod and modprobe(s).

Thank you

  • Hi Brett,

    doing a quick search in the Kernel tree it looks like one of the things that's needed here is turning on CONFIG_SERIAL_MAX310X because that's not something that's enabled by default in our SDK 9.0 Linux v6.1-based Kernels:

    root@am64xx-evm:~# zcat /proc/config.gz | grep CONFIG_SERIAL_MAX310X
    # CONFIG_SERIAL_MAX310X is not set

    And yes you'll need to add the proper device node, as per DTB bindings document for that chip, see https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/serial/maxim,max310x.txt?h=ti-linux-6.1.y

    As for figuring out the proper DTS pinmux settings, you can use the SYSCONFIG tool for this: https://www.ti.com/tool/SYSCONFIG

    Regards, Andreas

  • Thanks Andreas.  Can you please provide additional information regarding pinmux settings for J4 for SPI?  I'm unsure how to set this up in the SysConfig tool.  Thanks

  • Hi Brett,

    I'm unsure how to set this up in the SysConfig tool. 

    There's some documentation on this tool available at https://software-dl.ti.com/ccs/esd/sysconfig/docs/guide/index.html that also discusses pinmux setup.

    To start, looking at the schematic we see that there's actually two SPI ports brought out on J4, let's focus on SPI0 for now. Looking at the connector...

    ...we can derive the associated AM64 device pins, which we need to configure pinmux for...

    Fortunately you don't even need to use the SYSCONFIG pinmux tool for this, as there's already an AM64x board that has this configured via device tree you can just copy the relevant section from, see here:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am642-evm.dts?h=ti-linux-5.10.y#n338

    	main_spi0_pins_default: main-spi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    			AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    		>;
    	};

    Similarly, you an grab the associated SPI device setup and model yours after that, from here:


    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am642-evm.dts?h=ti-linux-5.10.y#n565

    &main_spi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in = <1>;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };

    All this should hopefully get you going. Also on a related note you should be able to remove the ti,pindir-d0-out-d1-in = <1>; entry from the device tree if you like, while at the same time changing how SPI0_D0 and SPI0_D1 are configured from a input/output POV in the main_spi0_pins_default node discussed earlier. See https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/spi/omap-spi.yaml?h=ti-linux-5.10.y#n54 for more details on this particular DTB property.

    Regards, Andreas

  • Thanks Adreas,

    I added the above to the DTS and rebuilt.  I do now see main-spi0-pins-default in the /proc/device-tree; however, when I power up the max3107 and load the module nothing happens (no ttyMAX* devices).  I added some printk's to the max310x.c file to make sure it is loading the latest.

    I would like to add DTS entries to power the 3.3v and 5v on boot, as I do this via a script after boot  - maybe this needs to happen when the SPI port is initialized?  I was unable to find an GPIO or other assignment using SysConfig to determine J4 3.3v and 5v enable pins.

    Is there anything I can do to exercise SPI0 to see if I get any response from the max board - possibly read / write any registers to see if SPI0 is operating correctly and wiring is correct?

    Any other suggestions?  I've added the DTS below and boot sequence.

    Thx

    // SPDX-License-Identifier: GPL-2.0
    /*
    * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
    */

    /dts-v1/;

    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/leds/common.h>
    #include "k3-am642.dtsi"

    / {
    compatible = "ti,am642-sk", "ti,am642";
    model = "Texas Instruments AM642 SK";

    chosen {
    stdout-path = "serial2:115200n8";
    bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    };

    memory@80000000 {
    device_type = "memory";
    /* 2G RAM */
    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;

    };

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

    secure_ddr: optee@9e800000 {
    reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    alignment = <0x1000>;
    no-map;
    };

    main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa0000000 0x00 0x100000>;
    no-map;
    };

    main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa0100000 0x00 0xf00000>;
    no-map;
    };

    main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa1000000 0x00 0x100000>;
    no-map;
    };

    main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa1100000 0x00 0xf00000>;
    no-map;
    };

    main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa2000000 0x00 0x100000>;
    no-map;
    };

    main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa2100000 0x00 0xf00000>;
    no-map;
    };

    main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa3000000 0x00 0x100000>;
    no-map;
    };

    main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa3100000 0x00 0xf00000>;
    no-map;
    };

    mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa4000000 0x00 0x100000>;
    no-map;
    };

    mcu_m4fss_memory_region: m4f-memory@a4100000 {
    compatible = "shared-dma-pool";
    reg = <0x00 0xa4100000 0x00 0xf00000>;
    no-map;
    };

    rtos_ipc_memory_region: ipc-memories@a5000000 {
    reg = <0x00 0xa5000000 0x00 0x00800000>;
    alignment = <0x1000>;
    no-map;
    };
    };

    vusb_main: fixed-regulator-vusb-main5v0 {
    /* USB MAIN INPUT 5V DC */
    compatible = "regulator-fixed";
    regulator-name = "vusb_main5v0";
    regulator-min-microvolt = <5000000>;
    regulator-max-microvolt = <5000000>;
    regulator-always-on;
    regulator-boot-on;
    };

    vcc_3v3_sys: fixedregulator-vcc-3v3-sys {
    /* output of LP8733xx */
    compatible = "regulator-fixed";
    regulator-name = "vcc_3v3_sys";
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
    vin-supply = <&vusb_main>;
    regulator-always-on;
    regulator-boot-on;
    };

    vdd_mmc1: fixed-regulator-sd {
    /* TPS2051BD */
    compatible = "regulator-fixed";
    regulator-name = "vdd_mmc1";
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
    regulator-boot-on;
    enable-active-high;
    vin-supply = <&vcc_3v3_sys>;
    gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    };

    com8_ls_en: regulator-1 {
    compatible = "regulator-fixed";
    regulator-name = "com8_ls_en";
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
    regulator-always-on;
    regulator-boot-on;
    pinctrl-0 = <&main_com8_ls_en_pins_default>;
    pinctrl-names = "default";
    gpio = <&main_gpio0 62 GPIO_ACTIVE_LOW>;
    };

    wlan_en: regulator-2 {
    /* output of SN74AVC4T245RSVR */
    compatible = "regulator-fixed";
    regulator-name = "wlan_en";
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    enable-active-high;
    pinctrl-0 = <&main_wlan_en_pins_default>;
    pinctrl-names = "default";
    vin-supply = <&com8_ls_en>;
    gpio = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;
    };

    led-controller {
    compatible = "gpio-leds";

    led-0 {
    color = <LED_COLOR_ID_GREEN>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <1>;
    gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-1 {
    color = <LED_COLOR_ID_RED>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <2>;
    gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-2 {
    color = <LED_COLOR_ID_GREEN>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <3>;
    gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-3 {
    color = <LED_COLOR_ID_AMBER>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <4>;
    gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-4 {
    color = <LED_COLOR_ID_GREEN>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <5>;
    gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-5 {
    color = <LED_COLOR_ID_RED>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <6>;
    gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-6 {
    color = <LED_COLOR_ID_GREEN>;
    function = LED_FUNCTION_INDICATOR;
    function-enumerator = <7>;
    gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    led-7 {
    color = <LED_COLOR_ID_AMBER>;
    function = LED_FUNCTION_HEARTBEAT;
    function-enumerator = <8>;
    linux,default-trigger = "heartbeat";
    gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    };
    };

    leds {
    compatible = "gpio-leds";
    pinctrl-names = "default";
    pinctrl-0 = <&usr_led_pins_default>;

    led-0 {
    label = "am64-sk:green:heartbeat";
    gpios = <&main_gpio0 60 GPIO_ACTIVE_HIGH>;
    linux,default-trigger = "heartbeat";
    function = LED_FUNCTION_HEARTBEAT;
    default-state = "off";
    };
    };


    main_spi0_pins_default: main-spi0-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    >;
    };

    };

    &main_pmx0 {
    main_mmc1_pins_default: main-mmc1-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */
    AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */
    AM64X_IOPAD(0x028c, PIN_INPUT, 0) /* (L20) MMC1_CLK */
    AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */
    AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */
    AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */
    AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */
    AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */
    >;
    };

    main_uart0_pins_default: main-uart0-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    >;
    };

    main_usb0_pins_default: main-usb0-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    >;
    };

    main_i2c1_pins_default: main-i2c1-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    >;
    };

    mdio1_pins_default: mdio1-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    >;
    };

    rgmii1_pins_default: rgmii1-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x011c, PIN_INPUT, 4) /* (AA13) PRG1_PRU1_GPO5.RGMII1_RD0 */
    AM64X_IOPAD(0x0128, PIN_INPUT, 4) /* (U12) PRG1_PRU1_GPO8.RGMII1_RD1 */
    AM64X_IOPAD(0x0150, PIN_INPUT, 4) /* (Y13) PRG1_PRU1_GPO18.RGMII1_RD2 */
    AM64X_IOPAD(0x0154, PIN_INPUT, 4) /* (V12) PRG1_PRU1_GPO19.RGMII1_RD3 */
    AM64X_IOPAD(0x00d8, PIN_INPUT, 4) /* (W13) PRG1_PRU0_GPO8.RGMII1_RXC */
    AM64X_IOPAD(0x00cc, PIN_INPUT, 4) /* (V13) PRG1_PRU0_GPO5.RGMII1_RX_CTL */
    AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    >;
    };

    rgmii2_pins_default: rgmii2-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    >;
    };

    ospi0_pins_default: ospi0-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    >;
    };

    main_ecap0_pins_default: main-ecap0-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    >;
    };
    main_wlan_en_pins_default: main-wlan-en-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x00c4, PIN_OUTPUT_PULLUP, 7) /* (V8) GPIO0_48 */
    >;
    };

    main_com8_ls_en_pins_default: main-com8-ls-en-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (U7) PRG1_PRU0_GPO17.GPIO0_62 */
    >;
    };

    main_wlan_pins_default: main-wlan-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */
    >;
    };

    main_bten_default: main-bten-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (P17) GPIO0_49 */
    >;
    };

    main_btuart_rts_sel_default: main-btuart-rts-sel-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x100, PIN_OUTPUT, 7) /* (V7) GPIO0_63 */
    >;
    };

    main_uart4_default: main-uart4-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x250, PIN_INPUT, 1) /* (A17) UART4_RXD */
    AM64X_IOPAD(0x254, PIN_OUTPUT, 1) /* (B17) UART4_TXD */
    AM64X_IOPAD(0x64, PIN_INPUT, 2) /* (R16) UART4_CTS */
    AM64X_IOPAD(0x7c, PIN_OUTPUT, 2) /* (R17) UART4_RTS */
    >;
    };

    usr_led_pins_default: usr-led-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0F4, PIN_OUTPUT, 7) /* (Y9) PRG1_PRU0_GPO15.GPIO0_60 */
    >;
    };

    };

    &main_gpio0 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_btuart_rts_sel_default>;

    gpio0-63 {
    gpio-hog;
    gpios = <63 GPIO_ACTIVE_HIGH>;
    output-high;
    line-name = "btuart_rts_sel";
    };
    };

    &mcu_uart0 {
    status = "disabled";
    };

    &mcu_uart1 {
    status = "disabled";
    };

    &main_uart0 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_uart0_pins_default>;
    };

    &main_uart1 {
    /* main_uart1 is reserved for firmware usage */
    status = "reserved";
    };

    &main_uart2 {
    status = "disabled";
    };

    &main_uart3 {
    status = "disabled";
    };

    &main_uart4 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_uart4_default &main_bten_default>;
    status = "okay";

    bluetooth {
    compatible = "ti,wl1835-st";
    enable-gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
    };
    };

    &main_uart5 {
    status = "disabled";
    };

    &main_uart6 {
    status = "disabled";
    };

    &mcu_i2c0 {
    status = "disabled";
    };

    &mcu_i2c1 {
    status = "disabled";
    };

    &main_i2c1 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_i2c1_pins_default>;
    clock-frequency = <400000>;

    exp1: gpio@70 {
    compatible = "nxp,pca9538";
    reg = <0x70>;
    gpio-controller;
    #gpio-cells = <2>;
    gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    "PRU_DETECT", "MMC1_SD_EN",
    "VPP_LDO_EN", "RPI_PS_3V3_En",
    "RPI_PS_5V0_En", "RPI_HAT_DETECT";
    };

    exp2: gpio@60 {
    compatible = "ti,tpic2810";
    reg = <0x60>;
    gpio-controller;
    #gpio-cells = <2>;
    gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    };
    };

    &main_i2c3 {
    status = "disabled";
    };

    &mcu_spi0 {
    status = "disabled";
    };

    &mcu_spi1 {
    status = "disabled";
    };

    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    status = "reserved";
    };

    &sdhci0 {
    vmmc-supply = <&wlan_en>;
    bus-width = <4>;
    non-removable;
    cap-power-off-card;
    keep-power-in-suspend;
    ti,driver-strength-ohm = <50>;

    #address-cells = <1>;
    #size-cells = <0>;
    wlcore: wlcore@2 {
    compatible = "ti,wl1837";
    reg = <2>;
    pinctrl-0 = <&main_wlan_pins_default>;
    pinctrl-names = "default";
    interrupt-parent = <&main_gpio0>;
    interrupts = <46 IRQ_TYPE_EDGE_FALLING>;
    };
    };

    &sdhci1 {
    /* SD/MMC */
    vmmc-supply = <&vdd_mmc1>;
    pinctrl-names = "default";
    bus-width = <4>;
    pinctrl-0 = <&main_mmc1_pins_default>;
    ti,driver-strength-ohm = <50>;
    disable-wp;
    };

    &serdes_ln_ctrl {
    idle-states = <AM64_SERDES0_LANE0_USB>;
    };

    &serdes_wiz0 {
    status = "okay";
    };

    &serdes0 {
    serdes0_usb_link: phy@0 {
    reg = <0>;
    cdns,num-lanes = <1>;
    #phy-cells = <0>;
    cdns,phy-type = <PHY_TYPE_USB3>;
    resets = <&serdes_wiz0 1>;
    };
    };

    &usbss0 {
    ti,vbus-divider;
    };

    &usb0 {
    dr_mode = "host";
    maximum-speed = "super-speed";
    pinctrl-names = "default";
    pinctrl-0 = <&main_usb0_pins_default>;
    phys = <&serdes0_usb_link>;
    phy-names = "cdns3,usb3-phy";
    };

    &cpsw3g {
    pinctrl-names = "default";
    pinctrl-0 = <&mdio1_pins_default
    &rgmii1_pins_default
    &rgmii2_pins_default>;

    cpts@3d000 {
    ti,pps = <7 1>;
    };
    };

    &cpsw_port1 {
    phy-mode = "rgmii-rxid";
    phy-handle = <&cpsw3g_phy0>;
    };

    &cpsw_port2 {
    phy-mode = "rgmii-rxid";
    phy-handle = <&cpsw3g_phy1>;
    };

    &cpsw3g_mdio {
    cpsw3g_phy0: ethernet-phy@0 {
    reg = <0>;
    ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    };

    cpsw3g_phy1: ethernet-phy@1 {
    reg = <1>;
    ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    };
    };

    #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val)

    &timesync_router {
    pinctrl-names = "default";
    pinctrl-0 = <&mcu_cpts_pps>;

    /* Example of the timesync routing */
    mcu_cpts_pps: mcu-cpts-pps {
    pinctrl-single,pins = <
    /* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    TS_OFFSET(37, 22)
    /* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    TS_OFFSET(25, 22)
    >;
    };
    };

    &mailbox0_cluster2 {
    mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    ti,mbox-rx = <0 0 2>;
    ti,mbox-tx = <1 0 2>;
    };

    mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    ti,mbox-rx = <2 0 2>;
    ti,mbox-tx = <3 0 2>;
    };
    };

    &mailbox0_cluster3 {
    status = "disabled";
    };

    &mailbox0_cluster4 {
    mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    ti,mbox-rx = <0 0 2>;
    ti,mbox-tx = <1 0 2>;
    };

    mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    ti,mbox-rx = <2 0 2>;
    ti,mbox-tx = <3 0 2>;
    };
    };

    &mailbox0_cluster5 {
    status = "disabled";
    };

    &mailbox0_cluster6 {
    mbox_m4_0: mbox-m4-0 {
    ti,mbox-rx = <0 0 2>;
    ti,mbox-tx = <1 0 2>;
    };
    };

    &mailbox0_cluster7 {
    status = "disabled";
    };

    &pcie0_rc {
    status = "disabled";
    };

    &pcie0_ep {
    status = "disabled";
    };

    &main_r5fss0_core0 {
    mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    memory-region = <&main_r5fss0_core0_dma_memory_region>,
    <&main_r5fss0_core0_memory_region>;
    };

    &main_r5fss0_core1 {
    mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    memory-region = <&main_r5fss0_core1_dma_memory_region>,
    <&main_r5fss0_core1_memory_region>;
    };

    &main_r5fss1_core0 {
    mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    memory-region = <&main_r5fss1_core0_dma_memory_region>,
    <&main_r5fss1_core0_memory_region>;
    };

    &main_r5fss1_core1 {
    mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    memory-region = <&main_r5fss1_core1_dma_memory_region>,
    <&main_r5fss1_core1_memory_region>;
    };

    &mcu_m4fss {
    mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    memory-region = <&mcu_m4fss_dma_memory_region>,
    <&mcu_m4fss_memory_region>;
    };

    &tscadc0 {
    status = "disabled";
    };

    &ospi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&ospi0_pins_default>;

    flash@0{
    compatible = "jedec,spi-nor";
    reg = <0x0>;
    spi-tx-bus-width = <8>;
    spi-rx-bus-width = <8>;
    spi-max-frequency = <25000000>;
    cdns,tshsl-ns = <60>;
    cdns,tsd2d-ns = <60>;
    cdns,tchsh-ns = <60>;
    cdns,tslch-ns = <60>;
    cdns,read-delay = <4>;
    cdns,phy-mode;
    #address-cells = <1>;
    #size-cells = <1>;
    };
    };

    &main_mcan0 {
    status = "disabled";
    };

    &main_mcan1 {
    status = "disabled";
    };

    &icssg0_mdio {
    status = "disabled";
    };

    &icssg1_mdio {
    status = "disabled";
    };

    &ecap0 {
    /* PWM is available on Pin 1 of header J3 */
    pinctrl-names = "default";
    pinctrl-0 = <&main_ecap0_pins_default>;
    };

    &main_spi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_spi0_pins_default>;
    ti,pindir-d0-out-d1-in = <1>;
    eeprom@0 {
    compatible = "microchip,93lc46b";
    reg = <0>;
    spi-max-frequency = <1000000>;
    spi-cs-high;
    data-size = <16>;
    };
    };

    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:45:51 +0000)
    EEPROM not available at 80, trying to read at 81
    Resetting on cold boot to workaround ErrataID:i2331
    resetting ...

    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:45:51 +0000)
    EEPROM not available at 80, trying to read at 81
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    SPL initial stack usage: 13424 bytes
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Starting ATF on ARM64 core...

    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 13:45:56, Feb 27 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Mon Feb 27 13:46:53 UT4
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Fixing SA2UL firewall owner for GP device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot

    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted


    U-Boot 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)

    SoC: AM64X SR1.0 GP
    Model: Texas Instruments AM642 SK
    Board: AM64-SKEVM rev E3
    DRAM: 2 GiB
    NAND: 0 MiB
    MMC: mmc@fa00000: 1
    Loading Environment from FAT... OK
    In: serial@2800000
    Out: serial@2800000
    Err: serial@2800000
    Net: eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 MAC addresses don't match:
    Address in ROM is ac:1f:0f:8b:27:c6
    Address in environment is 70:ff:76:1e:ab:40
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    1490 bytes read in 3 ms (484.4 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    1 bytes read in 3 ms (0 Bytes/s)
    Already setup.
    19081728 bytes read in 796 ms (22.9 MiB/s)
    41948 bytes read in 4 ms (10 MiB/s)
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 5.10.168-g2c23e6c538 (root@brett-mini) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.123
    [ 0.000000] Machine model: Texas Instruments AM642 SK
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009e7fffff]
    [ 0.000000] node 0: [mem 0x000000009e800000-0x00000000a57fffff]
    [ 0.000000] node 0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [ 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.2
    [ 0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [ 0.000000] Detected VIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: ARM erratum 845719
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516096
    [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(t
    [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 1398896K/2097152K available (11200K kernel code, 1162K rwdata, 4304K rodata, 1856K init, 431K bss, 173968K reserved, 524288K cma-r)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU event tracing is enabled.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [ 0.000000] Trampoline variant of Tasks RCU enabled.
    [ 0.000000] Tracing variant of Tasks RCU enabled.
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 256 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] GICv3: Distributor has no Range Selector support
    [ 0.000000] GICv3: 16 PPIs implemented
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [ 0.000000] ITS [mem 0x01820000-0x0182ffff]
    [ 0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [ 0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [ 0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x0000000080030000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [ 0.000005] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [ 0.008563] Console: colour dummy device 80x25
    [ 0.013158] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [ 0.023834] pid_max: default: 32768 minimum: 301
    [ 0.028662] LSM: Security Framework initializing
    [ 0.033453] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.041030] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.051064] rcu: Hierarchical SRCU implementation.
    [ 0.056322] Platform MSI: msi-controller@1820000 domain created
    [ 0.062715] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [ 0.071999] EFI services will not be available.
    [ 0.076906] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [ 0.090535] Detected VIPT I-cache on CPU1
    [ 0.090578] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [ 0.090594] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [ 0.090664] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 0.090798] smp: Brought up 1 node, 2 CPUs
    [ 0.120187] SMP: Total of 2 processors activated.
    [ 0.125001] CPU features: detected: 32-bit EL0 Support
    [ 0.130274] CPU features: detected: CRC32 instructions
    [ 0.143809] CPU: All CPU(s) started at EL2
    [ 0.148017] alternatives: patching kernel code
    [ 0.153851] devtmpfs: initialized
    [ 0.164792] KASLR disabled due to lack of seed
    [ 0.169610] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [ 0.179587] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.204445] pinctrl core: initialized pinctrl subsystem
    [ 0.210538] DMI not present or invalid.
    [ 0.215285] NET: Registered protocol family 16
    [ 0.221791] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [ 0.229170] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.237268] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.246130] thermal_sys: Registered thermal governor 'step_wise'
    [ 0.246137] thermal_sys: Registered thermal governor 'power_allocator'
    [ 0.252764] cpuidle: using governor menu
    [ 0.263723] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [ 0.270736] ASID allocator initialised with 65536 entries
    [ 0.304469] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.311363] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.318216] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [ 0.325066] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.333353] cryptd: max_cpu_qlen set to 1000
    [ 0.341254] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR1.0 JTAGID[0x0bb3802f] Detected
    [ 0.350567] vcc_3v3_sys: supplied by vusb_main5v0
    [ 0.356918] iommu: Default domain type: Translated
    [ 0.362375] SCSI subsystem initialized
    [ 0.367032] mc: Linux media interface: v0.10
    [ 0.371439] videodev: Linux video capture interface: v2.00
    [ 0.377138] pps_core: LinuxPPS API ver. 1 registered
    [ 0.382212] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.391556] PTP clock support registered
    [ 0.395595] EDAC MC: Ver: 3.0.0
    [ 0.399755] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.406717] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.413538] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.421064] FPGA manager framework
    [ 0.424653] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.432133] clocksource: Switched to clocksource arch_sys_counter
    [ 0.438670] VFS: Disk quotas dquot_6.6.0
    [ 0.442757] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.456488] NET: Registered protocol family 2
    [ 0.461259] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.470298] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [ 0.479106] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [ 0.487335] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [ 0.495118] TCP: Hash tables configured (established 16384 bind 16384)
    [ 0.502070] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [ 0.508975] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [ 0.516490] NET: Registered protocol family 1
    [ 0.521603] RPC: Registered named UNIX socket transport module.
    [ 0.527702] RPC: Registered udp transport module.
    [ 0.532545] RPC: Registered tcp transport module.
    [ 0.537353] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.543946] NET: Registered protocol family 44
    [ 0.548504] PCI: CLS 0 bytes, default 64
    [ 0.553370] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [ 0.566671] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [ 0.577829] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [ 0.584583] NFS: Registering the id_resolver key type
    [ 0.589999] Key type id_resolver registered
    [ 0.594279] Key type id_legacy registered
    [ 0.598468] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [ 0.605320] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [ 0.613135] 9p: Installing v9fs 9p2000 file system support
    [ 0.663766] Key type asymmetric registered
    [ 0.667979] Asymmetric key parser 'x509' registered
    [ 0.673031] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [ 0.680595] io scheduler mq-deadline registered
    [ 0.685225] io scheduler kyber registered
    [ 0.691818] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [ 0.698308] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [ 0.705262] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [ 0.722039] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [ 0.745647] brd: module loaded
    [ 0.757452] loop: module loaded
    [ 0.761798] megasas: 07.714.04.00-rc1
    [ 0.770218] tun: Universal TUN/TAP device driver, 1.6
    [ 0.776238] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [ 0.782655] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [ 0.788775] sky2: driver version 1.30
    [ 0.793888] VFIO - User Level meta-driver version: 0.3
    [ 0.800583] i2c /dev entries driver
    [ 0.805752] sdhci: Secure Digital Host Controller Interface driver
    [ 0.812113] sdhci: Copyright(c) Pierre Ossman
    [ 0.817017] sdhci-pltfm: SDHCI platform and OF driver helper
    [ 0.824285] ledtrig-cpu: registered to indicate activity on CPUs
    [ 0.830965] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [ 0.839382] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [ 0.844018] optee: revision 3.20 (8e74d476)
    [ 0.860697] optee: dynamic shared memory is enabled
    [ 0.870465] optee: initialized driver
    [ 0.877044] NET: Registered protocol family 17
    [ 0.881795] 9pnet: Installing 9P2000 support
    [ 0.886265] Key type dns_resolver registered
    [ 0.910739] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
    [ 0.918958] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [ 0.983574] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [ 0.990082] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [ 0.999798] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [ 1.010526] pca953x 1-0070: supply vcc not found, using dummy regulator
    [ 1.017524] pca953x 1-0070: using no AI
    [ 1.048386] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [ 1.055621] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [ 1.061872] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [ 1.071630] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [ 1.080462] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [ 1.106441] ti-udma 485c0100.dma-controller: Number of rings: 68
    [ 1.114189] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [ 1.124508] ti-udma 485c0000.dma-controller: Number of rings: 288
    [ 1.139351] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [ 1.150596] printk: console [ttyS2] disabled
    [ 1.155066] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [ 1.163833] printk: console [ttyS2] enabled
    [ 1.163833] printk: console [ttyS2] enabled
    [ 1.172280] printk: bootconsole [ns16550a0] disabled
    [ 1.172280] printk: bootconsole [ns16550a0] disabled
    [ 1.183740] omap8250 2840000.serial: PM domain pd:155 will not be powered off
    [ 1.191324] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 17, base_baud = 3000000) is a 8250
    [ 1.200026] serial serial0: tty port ttyS6 registered
    [ 1.212089] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [ 1.217129] 7 cmdlinepart partitions found on MTD device fc40000.spi.0
    [ 1.223651] Creating 7 MTD partitions on "fc40000.spi.0":
    [ 1.229049] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [ 1.235953] 0x000000100000-0x000000300000 : "ospi.tispl"
    [ 1.242567] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [ 1.249227] 0x000000700000-0x000000740000 : "ospi.env"
    [ 1.255637] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [ 1.262670] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [ 1.269367] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [ 1.289411] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [ 1.336169] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 1.353149] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [ 1.361257] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
    [ 1.369471] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [ 1.382371] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [ 1.389503] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [ 1.396260] pps pps0: new PPS source ptp0
    [ 1.400747] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [ 1.411416] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [ 1.422478] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [ 1.431686] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [ 1.438836] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [ 1.451342] gpio-478 (btuart_rts_sel): hogged as output/high
    [ 1.464915] vdd_mmc1: supplied by vcc_3v3_sys
    [ 1.470540] wlan_en: supplied by com8_ls_en
    [ 1.479204] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 1.484786] mmc0: CQHCI version 5.10
    [ 1.488656] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [ 1.490872] mmc1: CQHCI version 5.10
    [ 1.510030] ALSA device list:
    [ 1.513034] No soundcards found.
    [ 1.542761] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [ 1.542798] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [ 1.551908] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 1.565614] Waiting for root device PARTUUID=43a182f7-02...
    [ 1.566693] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 1.582277] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
    [ 1.601857] mmc0: new SDIO card at address 0001
    [ 1.614123] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [ 1.621609] mmcblk1: mmc1:aaaa SC16G 14.8 GiB
    [ 1.630772] mmcblk1: p1 p2
    [ 1.635714] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 1.852903] EXT4-fs (mmcblk1p2): 1 orphan inode deleted
    [ 1.858230] EXT4-fs (mmcblk1p2): recovery complete
    [ 1.880276] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [ 1.888512] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [ 1.900909] devtmpfs: mounted
    [ 1.905311] Freeing unused kernel memory: 1856K
    [ 1.909979] Run /sbin/init as init process
    [ 2.081480] systemd[1]: System time before build time, advancing clock.
    [ 2.451283] NET: Registered protocol family 10
    [ 2.457296] Segment Routing with IPv6
    [ 2.499939] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNU)
    [ 2.522112] systemd[1]: Detected architecture arm64.

    Welcome to Arago 2021.09!

    [ 2.563161] systemd[1]: Set hostname to <am64xx-evm>.
    [ 2.906382] systemd[1]: /lib/systemd/system/startwlansta.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [ 2.921352] systemd[1]: /lib/systemd/system/startwlanap.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [ 2.965828] systemd[1]: /lib/systemd/system/irqbalanced.service:6: Unknown key name 'ConditionCPUs' in section 'Unit', ignoring.
    [ 3.010148] systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/docke.
    [ 3.165542] random: systemd: uninitialized urandom read (16 bytes read)
    [ 3.177125] systemd[1]: Created slice system-getty.slice.
    [ OK ] Created slice system-getty.slice.
    [ 3.200387] random: systemd: uninitialized urandom read (16 bytes read)
    [ 3.209506] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [ OK ] Created slice system-serial\x2dgetty.slice.
    [ 3.232395] random: systemd: uninitialized urandom read (16 bytes read)
    [ 3.241435] systemd[1]: Created slice system-syslog\x2dng.slice.
    [ OK ] Created slice system-syslog\x2dng.slice.
    [ 3.266724] systemd[1]: Created slice User and Session Slice.
    [ OK ] Created slice User and Session Slice.
    [ 3.288867] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [ OK ] Started Dispatch Password ��…ts to Console Directory Watch.
    [ 3.312774] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [ OK ] Started Forward Password R��…uests to Wall Directory Watch.
    [ 3.336754] systemd[1]: Reached target Paths.
    [ OK ] Reached target Paths.
    [ 3.352469] systemd[1]: Reached target Remote File Systems.
    [ OK ] Reached target Remote File Systems.
    [ 3.372460] systemd[1]: Reached target Slices.
    [ OK ] Reached target Slices.
    [ 3.388492] systemd[1]: Reached target Swap.
    [ OK ] Reached target Swap.
    [ 3.424434] systemd[1]: Listening on RPCbind Server Activation Socket.
    [ OK ] Listening on RPCbind Server Activation Socket.
    [ 3.448560] systemd[1]: Reached target RPC Port Mapper.
    [ OK ] Reached target RPC Port Mapper.
    [ 3.476477] systemd[1]: Listening on Process Core Dump Socket.
    [ OK ] Listening on Process Core Dump Socket.
    [ 3.500856] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [ OK ] Listening on initctl Compatibility Named Pipe.
    [ 3.528713] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [ 3.541242] systemd[1]: Listening on Journal Socket (/dev/log).
    [ OK ] Listening on Journal Socket (/dev/log).
    [ 3.565273] systemd[1]: Listening on Journal Socket.
    [ OK ] Listening on Journal Socket.
    [ 3.585493] systemd[1]: Listening on Network Service Netlink Socket.
    [ OK ] Listening on Network Service Netlink Socket.
    [ 3.609301] systemd[1]: Listening on udev Control Socket.
    [ OK ] Listening on udev Control Socket.
    [ 3.632992] systemd[1]: Listening on udev Kernel Socket.
    [ OK ] Listening on udev Kernel Socket.
    [ 3.662764] systemd[1]: Mounting Huge Pages File System...
    Mounting Huge Pages File System...
    [ 3.690442] systemd[1]: Mounting POSIX Message Queue File System...
    Mounting POSIX Message Queue File System...
    [ 3.718465] systemd[1]: Mounting Kernel Debug File System...
    Mounting Kernel Debug File System...
    [ 3.747474] systemd[1]: Mounting Temporary Directory (/tmp)...
    Mounting Temporary Directory (/tmp)...
    [ 3.775559] systemd[1]: Starting Create list of static device nodes for the current kernel...
    Starting Create list of st��…odes for the current kernel...
    [ 3.806317] systemd[1]: Starting RPC Bind...
    Starting RPC Bind...
    [ 3.824842] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [ 3.842919] systemd[1]: Starting Journal Service...
    Starting Journal Service...
    [ 3.869712] systemd[1]: Starting Load Kernel Modules...
    Starting Load Kernel Modules...
    [ 3.894823] systemd[1]: Starting Remount Root and Kernel File Systems...
    Starting Remount Root and Kernel File Systems...
    [ 3.931539] systemd[1]: Starting udev Coldplug all Devices...
    Starting udev Coldplug all Devices...
    [ 3.947591] cryptodev: loading out-of-tree module taints kernel.
    [ 3.975757] systemd[1]: Started RPC Bind.
    [ 3.975850] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [ 3.984936] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
    [ OK ] Started RPC Bind.
    [ 3.996641] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [ 4.007985] systemd[1]: Mounted Huge Pages File System.
    [ 4.012473] cryptodev: disagrees about version of symbol fd_install
    [ OK ] Mounted Huge Pages File System.
    [ 4.032357] cryptodev: Unknown symbol fd_install (err -22)
    [ 4.039432] systemd[1]: Started Journal Service.
    [ 4.040430] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [ OK ] Started Journal Service.
    [ 4.052537] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    [ 4.064082] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [ 4.072409] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [ 4.079524] cryptodev: disagrees about version of symbol __close_fd
    [ 4.086133] cryptodev: Unknown symbol __close_fd (err -22)
    [ OK ] Mounted POSIX Message Queue File Sy[ 4.091889] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    stem.
    [ 4.104721] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [ OK ] Mounted Kernel Debug File System.
    [ OK ] Mounted Temporary Directory (/tmp).
    [ OK ] Started Create list of sta��… nodes for the current kernel.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [ OK ] Started Remount Root and Kernel File Systems.
    [ 4.231587] random: systemd: uninitialized urandom read (16 bytes read)
    [ 4.238633] random: systemd-journal: uninitialized urandom read (16 bytes read)
    Mounting Kernel Configuration File System...
    [ 4.264922] random: systemd-journal: uninitialized urandom read (16 bytes read)
    Starting Flush Journal to Persistent Storage...
    [ 4.305186] systemd-journald[168]: Received client request to flush runtime journal.
    Starting Apply Kernel Variables...
    Starting Create Static Device Nodes in /dev...
    [ OK ] Mounted Kernel Configuration File System.
    [ OK ] Started Flush Journal to Persistent Storage.
    [ OK ] Started Apply Kernel Variables.
    [ OK ] Started Create Static Device Nodes in /dev.
    [ OK ] Reached target Local File Systems (Pre).
    Mounting /media/ram...
    Mounting /var/volatile...
    Starting udev Kernel Device Manager...
    [ OK ] Mounted /media/ram.
    [ OK ] Mounted /var/volatile.
    Starting Load/Save Random Seed...
    [ OK ] Reached target Local File Systems.
    Starting Create Volatile Files and Directories...
    [ OK ] Started udev Coldplug all Devices.
    Starting udev Wait for Complete Device Initialization...
    [ OK ] Started Create Volatile Files and Directories.
    Starting Network Time Synchronization...
    Starting Update UTMP about System Boot/Shutdown...
    [ OK ] Started udev Kernel Device Manager.
    [ OK ] Started Update UTMP about System Boot/Shutdown.
    [ OK ] Started Network Time Synchronization.
    [ OK ] Reached target System Time Set.
    [ OK ] Reached target System Time Synchronized.
    [ 5.443915] random: systemd: uninitialized urandom read (16 bytes read)
    [ 5.627581] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 5.635452] random: crng init done
    [ 5.644459] random: 64 urandom warning(s) missed due to ratelimiting
    [ OK ] Started Load/Save Random Seed.
    [ 5.727974] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 5.869626] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 5.921770] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.002402] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [ 6.051775] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [ 6.092428] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [ 6.150494] remoteproc remoteproc0: 5000000.m4fss is available
    [ 6.162395] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.213782] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.230711] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.240516] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.258671] remoteproc remoteproc0: powering up 5000000.m4fss
    [ 6.264595] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 86084
    [ 6.277614] remoteproc0#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [ 6.291974] virtio_rpmsg_bus virtio0: rpmsg host is online
    [ 6.292792] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [ 6.297607] remoteproc0#vdev0buffer: registered virtio0 (type 7)
    [ 6.312455] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [ 6.313344] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [ 6.327364] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.359776] platform 78000000.r5f: configured R5F for remoteproc mode
    [ 6.461214] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [ 6.472952] Bluetooth: Core ver 2.22
    [ 6.543128] NET: Registered protocol family 31
    [ 6.563119] remoteproc remoteproc1: 78000000.r5f is available
    [ 6.588323] Bluetooth: HCI device and connection manager initialized
    [ 6.606575] platform 78200000.r5f: configured R5F for remoteproc mode
    [ 6.618331] remoteproc remoteproc1: powering up 78000000.r5f
    [ 6.624307] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [ 6.636874] remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [ 6.645923] virtio_rpmsg_bus virtio1: rpmsg host is online
    [ 6.646343] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [ 6.651588] remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [ 6.651596] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [ 6.652186] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.685372] Bluetooth: HCI socket layer initialized
    [ 6.690448] Bluetooth: L2CAP socket layer initialized
    [ 6.700758] Bluetooth: SCO socket layer initialized
    [ 6.711701] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [ 6.787904] remoteproc remoteproc2: 78200000.r5f is available
    [ 6.798800] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.824578] remoteproc remoteproc2: powering up 78200000.r5f
    [ 6.830354] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [ 6.840724] remoteproc2#vdev0buffer: assigned reserved memory node r5f-dma-memory@a1000000
    [ 6.854484] Bluetooth: HCI UART driver ver 2.3
    [ 6.859850] Bluetooth: HCI UART protocol H4 registered
    [ 6.865405] Bluetooth: HCI UART protocol LL registered
    [ 6.871254] Bluetooth: HCI UART protocol Broadcom registered
    [ 6.882202] Bluetooth: HCI UART protocol QCA registered
    [ 6.888471] virtio_rpmsg_bus virtio2: rpmsg host is online
    [ 6.889817] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.894082] remoteproc2#vdev0buffer: registered virtio2 (type 7)
    [ 6.909419] platform 78400000.r5f: configured R5F for remoteproc mode
    [ 6.916031] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [ 6.919968] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 6.923196] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [ 6.971913] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [ 7.001916] Bluetooth: hci0: change remote baud rate command in firmware
    [ 7.014036] remoteproc remoteproc3: 78400000.r5f is available
    [ 7.035889] platform 78600000.r5f: configured R5F for remoteproc mode
    [ 7.043805] remoteproc remoteproc3: powering up 78400000.r5f
    [ 7.049666] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [ 7.076504] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [ 7.077187] remoteproc3#vdev0buffer: assigned reserved memory node r5f-dma-memory@a2000000
    [ 7.094147] virtio_rpmsg_bus virtio3: rpmsg host is online
    [ 7.103481] remoteproc3#vdev0buffer: registered virtio3 (type 7)
    [ 7.109892] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [ 7.117238] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [ 7.125272] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 7.134377] remoteproc remoteproc4: 78600000.r5f is available
    [ 7.148635] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 7.157422] remoteproc remoteproc4: powering up 78600000.r5f
    [ 7.163291] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [ 7.175152] remoteproc4#vdev0buffer: assigned reserved memory node r5f-dma-memory@a3000000
    [ 7.184575] virtio_rpmsg_bus virtio4: rpmsg host is online
    [ 7.192399] remoteproc4#vdev0buffer: registered virtio4 (type 7)
    [ 7.201875] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [ 7.209144] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [ 7.217124] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 8.784963] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ OK ] Listening on Load/Save RF ��…itch S[ 8.796958] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    tatus /dev/rfkill Watch.
    Starting Load/Save RF Kill Switch Status...
    [ 8.875091] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 8.897384] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 8.920803] remoteproc remoteproc5: 30034000.pru is available
    [ 8.959565] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 8.971499] remoteproc remoteproc6: 30004000.rtu is available
    [ 8.988001] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.002935] remoteproc remoteproc7: 3000a000.txpru is available
    [ 9.009876] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.037133] remoteproc remoteproc8: 30038000.pru is available
    [ 9.061474] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.073243] remoteproc remoteproc9: 30006000.rtu is available
    [ 9.080487] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.088715] remoteproc remoteproc10: 3000c000.txpru is available
    [ 9.095891] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.107387] remoteproc remoteproc11: 300b4000.pru is available
    [ 9.118400] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.119989] remoteproc remoteproc12: 30084000.rtu is available
    [ 9.133594] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.148880] remoteproc remoteproc13: 3008a000.txpru is available
    [ 9.156694] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.164832] remoteproc remoteproc14: 300b8000.pru is available
    [ 9.172512] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.181241] remoteproc remoteproc15: 30086000.rtu is available
    [ 9.188333] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.197167] remoteproc remoteproc16: 3008c000.txpru is available
    [ 9.204599] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.281022] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.293530] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.316039] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.327026] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.342188] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ OK ] Created slice system-systemd\x2dfsck.slice.
    Starting Load Kernel Modules...
    [ OK ] Started Load/Save RF Kill Switch Status.
    [ 9.419629] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
    [ 9.434560] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [ 9.446748] cryptodev: disagrees about version of symbol fd_install
    [ 9.456415] cryptodev: Unknown symbol fd_install (err -22)
    [ 9.462212] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [ 9.476224] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    [ 9.489664] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [ 9.500352] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [ 9.512334] cryptodev: disagrees about version of symbol __close_fd
    [ 9.522863] cryptodev: Unknown symbol __close_fd (err -22)
    [ 9.532590] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [ 9.542740] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [ 9.621659] usbcore: registered new interface driver usbfs
    [ 9.630092] usbcore: registered new interface driver hub
    [ 9.638078] usbcore: registered new device driver usb
    [ OK ] Found device /dev/mmcblk1p1.
    Starting File System Check on /dev/mmcblk1p1...
    [ 9.722818] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.824578] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 9.830194] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
    [ 9.841047] xhci-hcd xhci-hcd.0.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000002000010010
    [ 9.850694] xhci-hcd xhci-hcd.0.auto: irq 530, io mem 0x0f410000
    [ 9.857122] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 9.862894] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [ 9.870680] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
    [ 9.877512] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [ 9.885940] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 9.893267] usb usb1: Product: xHCI Host Controller
    [ 9.898262] usb usb1: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    [ 9.905031] usb usb1: SerialNumber: xhci-hcd.0.auto
    [ 9.910877] hub 1-0:1.0: USB hub found
    [ 9.914844] hub 1-0:1.0: 1 port detected
    [ 9.919769] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.930247] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.939376] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [ 9.950346] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
    [ 9.960720] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 9.969102] usb usb2: Product: xHCI Host Controller
    [ OK ] Started File System Check on /dev/m[ 9.976995] usb usb2: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    mcblk1p1.
    [ 9.987700] usb usb2: SerialNumber: xhci-hcd.0.auto
    [ 9.994936] hub 2-0:1.0: USB hub found
    [ 9.998830] hub 2-0:1.0: 1 port detected
    [ 10.003720] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    Mounting /run/media/mmcblk1p1...[ 10.018257] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency

    [ OK ] Mounted /run/media/mmcblk1p1.
    [ OK ] Started udev Wait for Complete Device Initialization.
    [ OK ] Started Hardware RNG Entropy Gatherer Daemon.
    [ OK ] Reached target System Initialization.
    [ OK ] Started Daily rotation of log files.
    [ OK ] Started Timer service to update the IP on OLED each 10s.
    [ OK ] Started Daily Cleanup of Temporary Directories.
    [ OK ] Reached target Timers.
    [ OK ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [ OK ] Listening on D-Bus System Message Bus Socket.
    Starting Docker Socket for the API.
    [ OK ] Listening on dropbear.socket.
    Starting Reboot and dump vmcore via kexec...
    [ OK ] Listening on Docker Socket for the API.
    [ OK ] Reached target Sockets.
    [ OK ] Reached target Basic System.
    [ OK ] Started Job spooling tools.
    Starting Bluetooth service...
    [ OK ] Started Periodic Command Scheduler.
    [ OK ] Started D-Bus System Message Bus.
    Starting Ethernet Bridge Filtering Tables...
    Starting Print notice about GPLv3 packages...
    Starting IPv6 Packet Filtering Framework...
    Starting IPv4 Packet Filtering Framework...
    [ OK ] Started irqbalance daemon.
    Starting Matrix GUI...
    Starting startwlanap...
    Starting startwlansta...
    Starting System Logger Daemon "default" instance...
    Starting Login Service...
    [ OK ] Started TEE Supplicant.
    Starting telnetd.service...
    [ OK ] Started Reboot and dump vmcore via kexec.
    [ OK ] Started Ethernet Bridge Filtering Tables.
    [ OK ] Started IPv6 Packet Filtering Framework.
    [ OK ] Started IPv4 Packet Filtering Framework.
    [ OK ] Started Matrix GUI.
    [ OK ] Started startwlanap.
    [ OK ] Started startwlansta.
    [ OK ] Reached target Network (Pre).
    Starting Network Service...
    [ OK ] Started Bluetooth service.
    [ OK ] Reached target Bluetooth.
    [ 10.862465] startwlanap.sh[592]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [ 10.885448] startwlanap.sh[594]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    Starting Hostname Service...
    [ OK ] Started telnetd.service.
    Starting LSB: Expand Rootfs of boot device...
    Starting syslog.service...
    [ 11.276618] startwlansta.sh[610]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [ 11.330153] startwlansta.sh[611]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [ OK ] Started System Logger Daemon "default" instance.
    [ OK ] Started Network Service.
    Starting Wait for Network to be Configured...
    Starting Network Name Resolution...
    [ 12.057080] startwlanap.sh[626]: nl80211 not found.
    [ 12.168568] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [ OK ] Started LSB: Expand Rootfs of boot device.
    [ OK ] Started syslog.service.
    [ 12.276211] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [ 12.285700] startwlanap.sh[633]: nl80211 not found.
    [ 12.449795] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [ 12.481980] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [ 12.539895] startwlanap.sh[638]: nl80211 not found.
    [ 12.744853] startwlanap.sh[645]: adding wlan1 interface
    [ 12.793757] startwlanap.sh[646]: ls: cannot access '/sys/class/ieee80211/': No such file or directory
    [ 12.810519] startwlanap.sh[647]: nl80211 not found.
    [ 12.851149] startwlanap.sh[649]: Configuration file: /usr/share/wl18xx/hostapd.conf
    [ 12.862746] startwlanap.sh[649]: nl80211: 'nl80211' generic netlink not found
    [ 12.879834] startwlanap.sh[649]: Failed to initialize driver 'nl80211'
    [ 12.880607] startwlanap.sh[649]: wlan1: interface state UNINITIALIZED->DISABLED
    [ 12.881044] startwlanap.sh[649]: wlan1: AP-DISABLED
    [ 12.881427] startwlanap.sh[649]: wlan1: CTRL-EVENT-TERMINATING
    [ 12.881811] startwlanap.sh[649]: hostapd_free_hapd_data: Interface wlan1 wasn't started
    [ OK ] Started Hostname Service.
    [ OK ] Started Login Service.
    [ 13.392027] NET: Registered protocol family 38
    [ OK ] Started Network Name Resolution.
    [ OK ] Reached target Network.
    [ OK ] Reached target Host and Network Name Lookups.
    Starting Avahi mDNS/DNS-SD Stack...
    Starting Enable and configure wl18xx bluetooth stack...
    [ OK ] Started NFS status monitor for NFSv2/3 locking..
    Starting Simple Network Ma��…ent Protocol (SNMP) Daemon....
    Starting Permit User Sessions...
    [ OK ] Started Vsftpd ftp daemon.
    [ OK ] Started Permit User Sessions.
    [ OK ] Started Getty on tty1.
    [ OK ] Started Serial Getty on ttyS1.
    [ OK ] Started Serial Getty on ttyS2.
    [ OK ] Reached target Login Prompts.
    Starting Synchronize System and HW clocks...
    [ 13.866430] startwlanap.sh[670]: SIOCSIFADDR: No such device
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service' for details.
    [ 13.914480] startwlanap.sh[670]: wlan1: ERROR while getting interface flags: No such device
    [ OK ] Started Enable and configure wl18xx bluetooth stack.
    [ 13.960244] startwlanap.sh[670]: SIOCSIFNETMASK: No such device
    [ 13.989244] startwlanap.sh[670]: wlan1: ERROR while getting interface flags: No such device
    [ OK ] Started Avahi mDNS/DNS-SD Stack.
    [ OK ] Started Simple Network Man��…ement Protocol (SNMP) Daemon..
    [ 15.833216] startwlanap.sh[818]: iperf3: error - unable to start listener for connections: Cannot assign requested address
    [ 15.833974] startwlanap.sh[818]: iperf3: exiting
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
    autoconf
    bash
    bc
    binutils
    cifs-utils
    coreutils-stdbuf
    coreutils
    cpio
    cpp-symlinks
    cpp
    dosfstools
    elfutils
    g++-symlinks
    g++
    gawk
    gcc-symlinks
    gcc
    gdb
    gdbserver
    gettext
    gstreamer1.0-libav
    gzip
    hidapi
    less
    libasm1
    libbfd
    libdw1
    libelf1
    libgdbm-compat4
    libgdbm6
    libgettextlib
    libgettextsrc
    libgmp10
    libidn2-0
    libmpc3
    libmpfr6
    libreadline8
    libunistring2
    m4
    make
    nettle
    parted
    tar
    which

    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution. This can be done using
    the opkg remove command. i.e.:
    opkg remove <package>
    Where <package> is the name printed in the list above

    NOTE: If the package is a dependency of another package you
    will be notified of the dependent packages. You should
    use the --force-removal-of-dependent-packages option to
    also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [ OK ] Started Print notice about GPLv3 packages.

    _____ _____ _ _
    | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_
    | | _| .'| . | . | | __| _| . | | | -_| _| _|
    |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_|
    |___| |___|

    Arago Project am64xx-evm ttyS2

    Arago 2021.09 am64xx-evm ttyS2

    am64xx-evm login: root
    root@am64xx-evm:~#

  • Hi Brett,

    I added some printk's to the max310x.c file to make sure it is loading the latest.

    I don't see anything in your log pointing to max310x driver activity. Which prints did you add? Did you add them to max310x_probe()?

    [ 9.919769] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [ 9.930247] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency

    Your log contains a large amount of these warning messages, something is preventing the probe from completing. Can you capture and post your active Kernel config from the running system using zcat /proc/config.gz? Also try using the "Insert->Code" feature on the E2E editor when posting, that makes such logs easier to read and work with.

    Regards, Andreas

  • Thanks Andreas,

    I am loading the max310x manually, as I am powering the max310x board via the RPI 5 and 3.3 v connector.  Once booted, I power the board via cmd line (attached script).  I would like to enable power from the DTB, but unsure of the correct address for the pins.  I was unable to deduce from SysConfig and the manual.  I also tried to use the PinMux application but it looks like the SK-AM64 board is not supported.

    I added several printK's throughout max310x.c to track what is being called (see attached).  I have also re-attached boot messages via the insert mechanism.

    am64xx-evm login: root
    root@am64xx-evm:~# ls
    power5_3_3.sh
    root@am64xx-evm:~# ./power5_3_3.sh
    power up SK RPI expansion connector script
    run from SK
    in
    0
    in
    0
    done
    root@am64xx-evm:~# depmod
    root@am64xx-evm:~# modprobe max310x
    [ 49.256849] entering _init max310x_uart_init...
    [ 49.261587] before bitmap_zer
    [ 49.264846] before uart_register_driver
    [ 49.268894] uart_register_driver ret:0
    [ 49.268903] CONFIG_SPI_MASTER
    root@am64xx-evm:~#

    max310x.c
    // SPDX-License-Identifier: GPL-2.0+
    /*
     *  Maxim (Dallas) MAX3107/8/9, MAX14830 serial driver
     *
     *  Copyright (C) 2012-2016 Alexander Shiyan <shc_work@mail.ru>
     *
     *  Based on max3100.c, by Christian Pellegrin <chripell@evolware.org>
     *  Based on max3110.c, by Feng Tang <feng.tang@intel.com>
     *  Based on max3107.c, by Aavamobile
     */
    
    
    #include <linux/bitops.h>
    #include <linux/clk.h>
    #include <linux/delay.h>
    #include <linux/device.h>
    #include <linux/gpio/driver.h>
    #include <linux/module.h>
    #include <linux/of.h>
    #include <linux/of_device.h>
    #include <linux/regmap.h>
    #include <linux/serial_core.h>
    #include <linux/serial.h>
    #include <linux/tty.h>
    #include <linux/tty_flip.h>
    #include <linux/spi/spi.h>
    #include <linux/uaccess.h>
    
    #define MAX310X_NAME			"max310x"
    #define MAX310X_MAJOR			204
    #define MAX310X_MINOR			209
    #define MAX310X_UART_NRMAX		16
    
    /* MAX310X register definitions */
    #define MAX310X_RHR_REG			(0x00) /* RX FIFO */
    #define MAX310X_THR_REG			(0x00) /* TX FIFO */
    #define MAX310X_IRQEN_REG		(0x01) /* IRQ enable */
    #define MAX310X_IRQSTS_REG		(0x02) /* IRQ status */
    #define MAX310X_LSR_IRQEN_REG		(0x03) /* LSR IRQ enable */
    #define MAX310X_LSR_IRQSTS_REG		(0x04) /* LSR IRQ status */
    #define MAX310X_REG_05			(0x05)
    #define MAX310X_SPCHR_IRQEN_REG		MAX310X_REG_05 /* Special char IRQ en */
    #define MAX310X_SPCHR_IRQSTS_REG	(0x06) /* Special char IRQ status */
    #define MAX310X_STS_IRQEN_REG		(0x07) /* Status IRQ enable */
    #define MAX310X_STS_IRQSTS_REG		(0x08) /* Status IRQ status */
    #define MAX310X_MODE1_REG		(0x09) /* MODE1 */
    #define MAX310X_MODE2_REG		(0x0a) /* MODE2 */
    #define MAX310X_LCR_REG			(0x0b) /* LCR */
    #define MAX310X_RXTO_REG		(0x0c) /* RX timeout */
    #define MAX310X_HDPIXDELAY_REG		(0x0d) /* Auto transceiver delays */
    #define MAX310X_IRDA_REG		(0x0e) /* IRDA settings */
    #define MAX310X_FLOWLVL_REG		(0x0f) /* Flow control levels */
    #define MAX310X_FIFOTRIGLVL_REG		(0x10) /* FIFO IRQ trigger levels */
    #define MAX310X_TXFIFOLVL_REG		(0x11) /* TX FIFO level */
    #define MAX310X_RXFIFOLVL_REG		(0x12) /* RX FIFO level */
    #define MAX310X_FLOWCTRL_REG		(0x13) /* Flow control */
    #define MAX310X_XON1_REG		(0x14) /* XON1 character */
    #define MAX310X_XON2_REG		(0x15) /* XON2 character */
    #define MAX310X_XOFF1_REG		(0x16) /* XOFF1 character */
    #define MAX310X_XOFF2_REG		(0x17) /* XOFF2 character */
    #define MAX310X_GPIOCFG_REG		(0x18) /* GPIO config */
    #define MAX310X_GPIODATA_REG		(0x19) /* GPIO data */
    #define MAX310X_PLLCFG_REG		(0x1a) /* PLL config */
    #define MAX310X_BRGCFG_REG		(0x1b) /* Baud rate generator conf */
    #define MAX310X_BRGDIVLSB_REG		(0x1c) /* Baud rate divisor LSB */
    #define MAX310X_BRGDIVMSB_REG		(0x1d) /* Baud rate divisor MSB */
    #define MAX310X_CLKSRC_REG		(0x1e) /* Clock source */
    #define MAX310X_REG_1F			(0x1f)
    
    #define MAX310X_REVID_REG		MAX310X_REG_1F /* Revision ID */
    
    #define MAX310X_GLOBALIRQ_REG		MAX310X_REG_1F /* Global IRQ (RO) */
    #define MAX310X_GLOBALCMD_REG		MAX310X_REG_1F /* Global Command (WO) */
    
    /* Extended registers */
    #define MAX310X_REVID_EXTREG		MAX310X_REG_05 /* Revision ID */
    
    /* IRQ register bits */
    #define MAX310X_IRQ_LSR_BIT		(1 << 0) /* LSR interrupt */
    #define MAX310X_IRQ_SPCHR_BIT		(1 << 1) /* Special char interrupt */
    #define MAX310X_IRQ_STS_BIT		(1 << 2) /* Status interrupt */
    #define MAX310X_IRQ_RXFIFO_BIT		(1 << 3) /* RX FIFO interrupt */
    #define MAX310X_IRQ_TXFIFO_BIT		(1 << 4) /* TX FIFO interrupt */
    #define MAX310X_IRQ_TXEMPTY_BIT		(1 << 5) /* TX FIFO empty interrupt */
    #define MAX310X_IRQ_RXEMPTY_BIT		(1 << 6) /* RX FIFO empty interrupt */
    #define MAX310X_IRQ_CTS_BIT		(1 << 7) /* CTS interrupt */
    
    /* LSR register bits */
    #define MAX310X_LSR_RXTO_BIT		(1 << 0) /* RX timeout */
    #define MAX310X_LSR_RXOVR_BIT		(1 << 1) /* RX overrun */
    #define MAX310X_LSR_RXPAR_BIT		(1 << 2) /* RX parity error */
    #define MAX310X_LSR_FRERR_BIT		(1 << 3) /* Frame error */
    #define MAX310X_LSR_RXBRK_BIT		(1 << 4) /* RX break */
    #define MAX310X_LSR_RXNOISE_BIT		(1 << 5) /* RX noise */
    #define MAX310X_LSR_CTS_BIT		(1 << 7) /* CTS pin state */
    
    /* Special character register bits */
    #define MAX310X_SPCHR_XON1_BIT		(1 << 0) /* XON1 character */
    #define MAX310X_SPCHR_XON2_BIT		(1 << 1) /* XON2 character */
    #define MAX310X_SPCHR_XOFF1_BIT		(1 << 2) /* XOFF1 character */
    #define MAX310X_SPCHR_XOFF2_BIT		(1 << 3) /* XOFF2 character */
    #define MAX310X_SPCHR_BREAK_BIT		(1 << 4) /* RX break */
    #define MAX310X_SPCHR_MULTIDROP_BIT	(1 << 5) /* 9-bit multidrop addr char */
    
    /* Status register bits */
    #define MAX310X_STS_GPIO0_BIT		(1 << 0) /* GPIO 0 interrupt */
    #define MAX310X_STS_GPIO1_BIT		(1 << 1) /* GPIO 1 interrupt */
    #define MAX310X_STS_GPIO2_BIT		(1 << 2) /* GPIO 2 interrupt */
    #define MAX310X_STS_GPIO3_BIT		(1 << 3) /* GPIO 3 interrupt */
    #define MAX310X_STS_CLKREADY_BIT	(1 << 5) /* Clock ready */
    #define MAX310X_STS_SLEEP_BIT		(1 << 6) /* Sleep interrupt */
    
    /* MODE1 register bits */
    #define MAX310X_MODE1_RXDIS_BIT		(1 << 0) /* RX disable */
    #define MAX310X_MODE1_TXDIS_BIT		(1 << 1) /* TX disable */
    #define MAX310X_MODE1_TXHIZ_BIT		(1 << 2) /* TX pin three-state */
    #define MAX310X_MODE1_RTSHIZ_BIT	(1 << 3) /* RTS pin three-state */
    #define MAX310X_MODE1_TRNSCVCTRL_BIT	(1 << 4) /* Transceiver ctrl enable */
    #define MAX310X_MODE1_FORCESLEEP_BIT	(1 << 5) /* Force sleep mode */
    #define MAX310X_MODE1_AUTOSLEEP_BIT	(1 << 6) /* Auto sleep enable */
    #define MAX310X_MODE1_IRQSEL_BIT	(1 << 7) /* IRQ pin enable */
    
    /* MODE2 register bits */
    #define MAX310X_MODE2_RST_BIT		(1 << 0) /* Chip reset */
    #define MAX310X_MODE2_FIFORST_BIT	(1 << 1) /* FIFO reset */
    #define MAX310X_MODE2_RXTRIGINV_BIT	(1 << 2) /* RX FIFO INT invert */
    #define MAX310X_MODE2_RXEMPTINV_BIT	(1 << 3) /* RX FIFO empty INT invert */
    #define MAX310X_MODE2_SPCHR_BIT		(1 << 4) /* Special chr detect enable */
    #define MAX310X_MODE2_LOOPBACK_BIT	(1 << 5) /* Internal loopback enable */
    #define MAX310X_MODE2_MULTIDROP_BIT	(1 << 6) /* 9-bit multidrop enable */
    #define MAX310X_MODE2_ECHOSUPR_BIT	(1 << 7) /* ECHO suppression enable */
    
    /* LCR register bits */
    #define MAX310X_LCR_LENGTH0_BIT		(1 << 0) /* Word length bit 0 */
    #define MAX310X_LCR_LENGTH1_BIT		(1 << 1) /* Word length bit 1
    						  *
    						  * Word length bits table:
    						  * 00 -> 5 bit words
    						  * 01 -> 6 bit words
    						  * 10 -> 7 bit words
    						  * 11 -> 8 bit words
    						  */
    #define MAX310X_LCR_STOPLEN_BIT		(1 << 2) /* STOP length bit
    						  *
    						  * STOP length bit table:
    						  * 0 -> 1 stop bit
    						  * 1 -> 1-1.5 stop bits if
    						  *      word length is 5,
    						  *      2 stop bits otherwise
    						  */
    #define MAX310X_LCR_PARITY_BIT		(1 << 3) /* Parity bit enable */
    #define MAX310X_LCR_EVENPARITY_BIT	(1 << 4) /* Even parity bit enable */
    #define MAX310X_LCR_FORCEPARITY_BIT	(1 << 5) /* 9-bit multidrop parity */
    #define MAX310X_LCR_TXBREAK_BIT		(1 << 6) /* TX break enable */
    #define MAX310X_LCR_RTS_BIT		(1 << 7) /* RTS pin control */
    
    /* IRDA register bits */
    #define MAX310X_IRDA_IRDAEN_BIT		(1 << 0) /* IRDA mode enable */
    #define MAX310X_IRDA_SIR_BIT		(1 << 1) /* SIR mode enable */
    
    /* Flow control trigger level register masks */
    #define MAX310X_FLOWLVL_HALT_MASK	(0x000f) /* Flow control halt level */
    #define MAX310X_FLOWLVL_RES_MASK	(0x00f0) /* Flow control resume level */
    #define MAX310X_FLOWLVL_HALT(words)	((words / 8) & 0x0f)
    #define MAX310X_FLOWLVL_RES(words)	(((words / 8) & 0x0f) << 4)
    
    /* FIFO interrupt trigger level register masks */
    #define MAX310X_FIFOTRIGLVL_TX_MASK	(0x0f) /* TX FIFO trigger level */
    #define MAX310X_FIFOTRIGLVL_RX_MASK	(0xf0) /* RX FIFO trigger level */
    #define MAX310X_FIFOTRIGLVL_TX(words)	((words / 8) & 0x0f)
    #define MAX310X_FIFOTRIGLVL_RX(words)	(((words / 8) & 0x0f) << 4)
    
    /* Flow control register bits */
    #define MAX310X_FLOWCTRL_AUTORTS_BIT	(1 << 0) /* Auto RTS flow ctrl enable */
    #define MAX310X_FLOWCTRL_AUTOCTS_BIT	(1 << 1) /* Auto CTS flow ctrl enable */
    #define MAX310X_FLOWCTRL_GPIADDR_BIT	(1 << 2) /* Enables that GPIO inputs
    						  * are used in conjunction with
    						  * XOFF2 for definition of
    						  * special character */
    #define MAX310X_FLOWCTRL_SWFLOWEN_BIT	(1 << 3) /* Auto SW flow ctrl enable */
    #define MAX310X_FLOWCTRL_SWFLOW0_BIT	(1 << 4) /* SWFLOW bit 0 */
    #define MAX310X_FLOWCTRL_SWFLOW1_BIT	(1 << 5) /* SWFLOW bit 1
    						  *
    						  * SWFLOW bits 1 & 0 table:
    						  * 00 -> no transmitter flow
    						  *       control
    						  * 01 -> receiver compares
    						  *       XON2 and XOFF2
    						  *       and controls
    						  *       transmitter
    						  * 10 -> receiver compares
    						  *       XON1 and XOFF1
    						  *       and controls
    						  *       transmitter
    						  * 11 -> receiver compares
    						  *       XON1, XON2, XOFF1 and
    						  *       XOFF2 and controls
    						  *       transmitter
    						  */
    #define MAX310X_FLOWCTRL_SWFLOW2_BIT	(1 << 6) /* SWFLOW bit 2 */
    #define MAX310X_FLOWCTRL_SWFLOW3_BIT	(1 << 7) /* SWFLOW bit 3
    						  *
    						  * SWFLOW bits 3 & 2 table:
    						  * 00 -> no received flow
    						  *       control
    						  * 01 -> transmitter generates
    						  *       XON2 and XOFF2
    						  * 10 -> transmitter generates
    						  *       XON1 and XOFF1
    						  * 11 -> transmitter generates
    						  *       XON1, XON2, XOFF1 and
    						  *       XOFF2
    						  */
    
    /* PLL configuration register masks */
    #define MAX310X_PLLCFG_PREDIV_MASK	(0x3f) /* PLL predivision value */
    #define MAX310X_PLLCFG_PLLFACTOR_MASK	(0xc0) /* PLL multiplication factor */
    
    /* Baud rate generator configuration register bits */
    #define MAX310X_BRGCFG_2XMODE_BIT	(1 << 4) /* Double baud rate */
    #define MAX310X_BRGCFG_4XMODE_BIT	(1 << 5) /* Quadruple baud rate */
    
    /* Clock source register bits */
    #define MAX310X_CLKSRC_CRYST_BIT	(1 << 1) /* Crystal osc enable */
    #define MAX310X_CLKSRC_PLL_BIT		(1 << 2) /* PLL enable */
    #define MAX310X_CLKSRC_PLLBYP_BIT	(1 << 3) /* PLL bypass */
    #define MAX310X_CLKSRC_EXTCLK_BIT	(1 << 4) /* External clock enable */
    #define MAX310X_CLKSRC_CLK2RTS_BIT	(1 << 7) /* Baud clk to RTS pin */
    
    /* Global commands */
    #define MAX310X_EXTREG_ENBL		(0xce)
    #define MAX310X_EXTREG_DSBL		(0xcd)
    
    /* Misc definitions */
    #define MAX310X_FIFO_SIZE		(128)
    #define MAX310x_REV_MASK		(0xf8)
    #define MAX310X_WRITE_BIT		0x80
    
    /* MAX3107 specific */
    #define MAX3107_REV_ID			(0xa0)
    
    /* MAX3109 specific */
    #define MAX3109_REV_ID			(0xc0)
    
    /* MAX14830 specific */
    #define MAX14830_BRGCFG_CLKDIS_BIT	(1 << 6) /* Clock Disable */
    #define MAX14830_REV_ID			(0xb0)
    
    struct max310x_devtype {
    	char	name[9];
    	int	nr;
    	u8	mode1;
    	int	(*detect)(struct device *);
    	void	(*power)(struct uart_port *, int);
    };
    
    struct max310x_one {
    	struct uart_port	port;
    	struct work_struct	tx_work;
    	struct work_struct	md_work;
    	struct work_struct	rs_work;
    
    	u8 wr_header;
    	u8 rd_header;
    	u8 rx_buf[MAX310X_FIFO_SIZE];
    };
    #define to_max310x_port(_port) \
    	container_of(_port, struct max310x_one, port)
    
    struct max310x_port {
    	struct max310x_devtype	*devtype;
    	struct regmap		*regmap;
    	struct clk		*clk;
    #ifdef CONFIG_GPIOLIB
    	struct gpio_chip	gpio;
    #endif
    	struct max310x_one	p[0];
    };
    
    static struct uart_driver max310x_uart = {
    	.owner		= THIS_MODULE,
    	.driver_name	= MAX310X_NAME,
    	.dev_name	= "ttyMAX",
    	.major		= MAX310X_MAJOR,
    	.minor		= MAX310X_MINOR,
    	.nr		= MAX310X_UART_NRMAX,
    };
    
    static DECLARE_BITMAP(max310x_lines, MAX310X_UART_NRMAX);
    
    static u8 max310x_port_read(struct uart_port *port, u8 reg)
    {
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    	unsigned int val = 0;
    
    	regmap_read(s->regmap, port->iobase + reg, &val);
    
    	return val;
    }
    
    static void max310x_port_write(struct uart_port *port, u8 reg, u8 val)
    {
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    
    	regmap_write(s->regmap, port->iobase + reg, val);
    }
    
    static void max310x_port_update(struct uart_port *port, u8 reg, u8 mask, u8 val)
    {
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    
    	regmap_update_bits(s->regmap, port->iobase + reg, mask, val);
    }
    
    static int max3107_detect(struct device *dev)
    {
    
    	struct max310x_port *s = dev_get_drvdata(dev);
    	unsigned int val = 0;
    	int ret;
    
        printk("max3107_detect\r\n");
    
    	ret = regmap_read(s->regmap, MAX310X_REVID_REG, &val);
        printk("regmap_read ret: %d\r\n", ret);
    	if (ret)
    		return ret;
    
    	if (((val & MAX310x_REV_MASK) != MAX3107_REV_ID)) {
    		dev_err(dev,
    			"%s ID 0x%02x does not match\n", s->devtype->name, val);
    		return -ENODEV;
    	}
    
    	return 0;
    }
    
    static int max3108_detect(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	unsigned int val = 0;
    	int ret;
    
    	/* MAX3108 have not REV ID register, we just check default value
    	 * from clocksource register to make sure everything works.
    	 */
    	ret = regmap_read(s->regmap, MAX310X_CLKSRC_REG, &val);
    	if (ret)
    		return ret;
    
    	if (val != (MAX310X_CLKSRC_EXTCLK_BIT | MAX310X_CLKSRC_PLLBYP_BIT)) {
    		dev_err(dev, "%s not present\n", s->devtype->name);
    		return -ENODEV;
    	}
    
    	return 0;
    }
    
    static int max3109_detect(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	unsigned int val = 0;
    	int ret;
    
    	ret = regmap_write(s->regmap, MAX310X_GLOBALCMD_REG,
    			   MAX310X_EXTREG_ENBL);
    	if (ret)
    		return ret;
    
    	regmap_read(s->regmap, MAX310X_REVID_EXTREG, &val);
    	regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, MAX310X_EXTREG_DSBL);
    	if (((val & MAX310x_REV_MASK) != MAX3109_REV_ID)) {
    		dev_err(dev,
    			"%s ID 0x%02x does not match\n", s->devtype->name, val);
    		return -ENODEV;
    	}
    
    	return 0;
    }
    
    static void max310x_power(struct uart_port *port, int on)
    {
        printk("max310x_power\r\n");
    	max310x_port_update(port, MAX310X_MODE1_REG,
    			    MAX310X_MODE1_FORCESLEEP_BIT,
    			    on ? 0 : MAX310X_MODE1_FORCESLEEP_BIT);
    	if (on)
    		msleep(50);
    }
    
    static int max14830_detect(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	unsigned int val = 0;
    	int ret;
    
    	ret = regmap_write(s->regmap, MAX310X_GLOBALCMD_REG,
    			   MAX310X_EXTREG_ENBL);
    	if (ret)
    		return ret;
    	
    	regmap_read(s->regmap, MAX310X_REVID_EXTREG, &val);
    	regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, MAX310X_EXTREG_DSBL);
    	if (((val & MAX310x_REV_MASK) != MAX14830_REV_ID)) {
    		dev_err(dev,
    			"%s ID 0x%02x does not match\n", s->devtype->name, val);
    		return -ENODEV;
    	}
    
    	return 0;
    }
    
    static void max14830_power(struct uart_port *port, int on)
    {
    	max310x_port_update(port, MAX310X_BRGCFG_REG,
    			    MAX14830_BRGCFG_CLKDIS_BIT,
    			    on ? 0 : MAX14830_BRGCFG_CLKDIS_BIT);
    	if (on)
    		msleep(50);
    }
    
    static const struct max310x_devtype max3107_devtype = {
    	.name	= "MAX3107",
    	.nr	= 1,
    	.mode1	= MAX310X_MODE1_AUTOSLEEP_BIT | MAX310X_MODE1_IRQSEL_BIT,
    	.detect	= max3107_detect,
    	.power	= max310x_power,
    };
    
    static const struct max310x_devtype max3108_devtype = {
    	.name	= "MAX3108",
    	.nr	= 1,
    	.mode1	= MAX310X_MODE1_AUTOSLEEP_BIT,
    	.detect	= max3108_detect,
    	.power	= max310x_power,
    };
    
    static const struct max310x_devtype max3109_devtype = {
    	.name	= "MAX3109",
    	.nr	= 2,
    	.mode1	= MAX310X_MODE1_AUTOSLEEP_BIT,
    	.detect	= max3109_detect,
    	.power	= max310x_power,
    };
    
    static const struct max310x_devtype max14830_devtype = {
    	.name	= "MAX14830",
    	.nr	= 4,
    	.mode1	= MAX310X_MODE1_IRQSEL_BIT,
    	.detect	= max14830_detect,
    	.power	= max14830_power,
    };
    
    static bool max310x_reg_writeable(struct device *dev, unsigned int reg)
    {
    	switch (reg & 0x1f) {
    	case MAX310X_IRQSTS_REG:
    	case MAX310X_LSR_IRQSTS_REG:
    	case MAX310X_SPCHR_IRQSTS_REG:
    	case MAX310X_STS_IRQSTS_REG:
    	case MAX310X_TXFIFOLVL_REG:
    	case MAX310X_RXFIFOLVL_REG:
    		return false;
    	default:
    		break;
    	}
    
    	return true;
    }
    
    static bool max310x_reg_volatile(struct device *dev, unsigned int reg)
    {
    	switch (reg & 0x1f) {
    	case MAX310X_RHR_REG:
    	case MAX310X_IRQSTS_REG:
    	case MAX310X_LSR_IRQSTS_REG:
    	case MAX310X_SPCHR_IRQSTS_REG:
    	case MAX310X_STS_IRQSTS_REG:
    	case MAX310X_TXFIFOLVL_REG:
    	case MAX310X_RXFIFOLVL_REG:
    	case MAX310X_GPIODATA_REG:
    	case MAX310X_BRGDIVLSB_REG:
    	case MAX310X_REG_05:
    	case MAX310X_REG_1F:
    		return true;
    	default:
    		break;
    	}
    
    	return false;
    }
    
    static bool max310x_reg_precious(struct device *dev, unsigned int reg)
    {
    	switch (reg & 0x1f) {
    	case MAX310X_RHR_REG:
    	case MAX310X_IRQSTS_REG:
    	case MAX310X_SPCHR_IRQSTS_REG:
    	case MAX310X_STS_IRQSTS_REG:
    		return true;
    	default:
    		break;
    	}
    
    	return false;
    }
    
    static int max310x_set_baud(struct uart_port *port, int baud)
    {
    	unsigned int mode = 0, div = 0, frac = 0, c = 0, F = 0;
    
    	/*
    	 * Calculate the integer divisor first. Select a proper mode
    	 * in case if the requested baud is too high for the pre-defined
    	 * clocks frequency.
    	 */
    	div = port->uartclk / baud;
    	if (div < 8) {
    		/* Mode x4 */
    		c = 4;
    		mode = MAX310X_BRGCFG_4XMODE_BIT;
    	} else if (div < 16) {
    		/* Mode x2 */
    		c = 8;
    		mode = MAX310X_BRGCFG_2XMODE_BIT;
    	} else {
    		c = 16;
    	}
    
    	/* Calculate the divisor in accordance with the fraction coefficient */
    	div /= c;
    	F = c*baud;
    
    	/* Calculate the baud rate fraction */
    	if (div > 0)
    		frac = (16*(port->uartclk % F)) / F;
    	else
    		div = 1;
    
    	max310x_port_write(port, MAX310X_BRGDIVMSB_REG, div >> 8);
    	max310x_port_write(port, MAX310X_BRGDIVLSB_REG, div);
    	max310x_port_write(port, MAX310X_BRGCFG_REG, frac | mode);
    
    	/* Return the actual baud rate we just programmed */
    	return (16*port->uartclk) / (c*(16*div + frac));
    }
    
    static int max310x_update_best_err(unsigned long f, long *besterr)
    {
    	/* Use baudrate 115200 for calculate error */
    	long err = f % (460800 * 16);
    
    	if ((*besterr < 0) || (*besterr > err)) {
    		*besterr = err;
    		return 0;
    	}
    
    	return 1;
    }
    
    static int max310x_set_ref_clk(struct device *dev, struct max310x_port *s,
    			       unsigned long freq, bool xtal)
    {
    	unsigned int div, clksrc, pllcfg = 0;
    	long besterr = -1;
    	unsigned long fdiv, fmul, bestfreq = freq;
    
    	/* First, update error without PLL */
    	max310x_update_best_err(freq, &besterr);
    
    	/* Try all possible PLL dividers */
    	for (div = 1; (div <= 63) && besterr; div++) {
    		fdiv = DIV_ROUND_CLOSEST(freq, div);
    
    		/* Try multiplier 6 */
    		fmul = fdiv * 6;
    		if ((fdiv >= 500000) && (fdiv <= 800000))
    			if (!max310x_update_best_err(fmul, &besterr)) {
    				pllcfg = (0 << 6) | div;
    				bestfreq = fmul;
    			}
    		/* Try multiplier 48 */
    		fmul = fdiv * 48;
    		if ((fdiv >= 850000) && (fdiv <= 1200000))
    			if (!max310x_update_best_err(fmul, &besterr)) {
    				pllcfg = (1 << 6) | div;
    				bestfreq = fmul;
    			}
    		/* Try multiplier 96 */
    		fmul = fdiv * 96;
    		if ((fdiv >= 425000) && (fdiv <= 1000000))
    			if (!max310x_update_best_err(fmul, &besterr)) {
    				pllcfg = (2 << 6) | div;
    				bestfreq = fmul;
    			}
    		/* Try multiplier 144 */
    		fmul = fdiv * 144;
    		if ((fdiv >= 390000) && (fdiv <= 667000))
    			if (!max310x_update_best_err(fmul, &besterr)) {
    				pllcfg = (3 << 6) | div;
    				bestfreq = fmul;
    			}
    	}
    
    	/* Configure clock source */
    	clksrc = MAX310X_CLKSRC_EXTCLK_BIT | (xtal ? MAX310X_CLKSRC_CRYST_BIT : 0);
    
    	/* Configure PLL */
    	if (pllcfg) {
    		clksrc |= MAX310X_CLKSRC_PLL_BIT;
    		regmap_write(s->regmap, MAX310X_PLLCFG_REG, pllcfg);
    	} else
    		clksrc |= MAX310X_CLKSRC_PLLBYP_BIT;
    
    	regmap_write(s->regmap, MAX310X_CLKSRC_REG, clksrc);
    
    	/* Wait for crystal */
    	if (xtal) {
    		unsigned int val;
    		msleep(10);
    		regmap_read(s->regmap, MAX310X_STS_IRQSTS_REG, &val);
    		if (!(val & MAX310X_STS_CLKREADY_BIT)) {
    			dev_warn(dev, "clock is not stable yet\n");
    		}
    	}
    
    	return (int)bestfreq;
    }
    
    static void max310x_batch_write(struct uart_port *port, u8 *txbuf, unsigned int len)
    {
    	struct max310x_one *one = to_max310x_port(port);
    	struct spi_transfer xfer[] = {
    		{
    			.tx_buf = &one->wr_header,
    			.len = sizeof(one->wr_header),
    		}, {
    			.tx_buf = txbuf,
    			.len = len,
    		}
    	};
    	spi_sync_transfer(to_spi_device(port->dev), xfer, ARRAY_SIZE(xfer));
    }
    
    static void max310x_batch_read(struct uart_port *port, u8 *rxbuf, unsigned int len)
    {
    	struct max310x_one *one = to_max310x_port(port);
    	struct spi_transfer xfer[] = {
    		{
    			.tx_buf = &one->rd_header,
    			.len = sizeof(one->rd_header),
    		}, {
    			.rx_buf = rxbuf,
    			.len = len,
    		}
    	};
    	spi_sync_transfer(to_spi_device(port->dev), xfer, ARRAY_SIZE(xfer));
    }
    
    static void max310x_handle_rx(struct uart_port *port, unsigned int rxlen)
    {
    	struct max310x_one *one = to_max310x_port(port);
    	unsigned int sts, ch, flag, i;
    
    	if (port->read_status_mask == MAX310X_LSR_RXOVR_BIT) {
    		/* We are just reading, happily ignoring any error conditions.
    		 * Break condition, parity checking, framing errors -- they
    		 * are all ignored. That means that we can do a batch-read.
    		 *
    		 * There is a small opportunity for race if the RX FIFO
    		 * overruns while we're reading the buffer; the datasheets says
    		 * that the LSR register applies to the "current" character.
    		 * That's also the reason why we cannot do batched reads when
    		 * asked to check the individual statuses.
    		 * */
    
    		sts = max310x_port_read(port, MAX310X_LSR_IRQSTS_REG);
    		max310x_batch_read(port, one->rx_buf, rxlen);
    
    		port->icount.rx += rxlen;
    		flag = TTY_NORMAL;
    		sts &= port->read_status_mask;
    
    		if (sts & MAX310X_LSR_RXOVR_BIT) {
    			dev_warn_ratelimited(port->dev, "Hardware RX FIFO overrun\n");
    			port->icount.overrun++;
    		}
    
    		for (i = 0; i < (rxlen - 1); ++i)
    			uart_insert_char(port, sts, 0, one->rx_buf[i], flag);
    
    		/*
    		 * Handle the overrun case for the last character only, since
    		 * the RxFIFO overflow happens after it is pushed to the FIFO
    		 * tail.
    		 */
    		uart_insert_char(port, sts, MAX310X_LSR_RXOVR_BIT,
    				 one->rx_buf[rxlen-1], flag);
    
    	} else {
    		if (unlikely(rxlen >= port->fifosize)) {
    			dev_warn_ratelimited(port->dev, "Possible RX FIFO overrun\n");
    			port->icount.buf_overrun++;
    			/* Ensure sanity of RX level */
    			rxlen = port->fifosize;
    		}
    
    		while (rxlen--) {
    			ch = max310x_port_read(port, MAX310X_RHR_REG);
    			sts = max310x_port_read(port, MAX310X_LSR_IRQSTS_REG);
    
    			sts &= MAX310X_LSR_RXPAR_BIT | MAX310X_LSR_FRERR_BIT |
    			       MAX310X_LSR_RXOVR_BIT | MAX310X_LSR_RXBRK_BIT;
    
    			port->icount.rx++;
    			flag = TTY_NORMAL;
    
    			if (unlikely(sts)) {
    				if (sts & MAX310X_LSR_RXBRK_BIT) {
    					port->icount.brk++;
    					if (uart_handle_break(port))
    						continue;
    				} else if (sts & MAX310X_LSR_RXPAR_BIT)
    					port->icount.parity++;
    				else if (sts & MAX310X_LSR_FRERR_BIT)
    					port->icount.frame++;
    				else if (sts & MAX310X_LSR_RXOVR_BIT)
    					port->icount.overrun++;
    
    				sts &= port->read_status_mask;
    				if (sts & MAX310X_LSR_RXBRK_BIT)
    					flag = TTY_BREAK;
    				else if (sts & MAX310X_LSR_RXPAR_BIT)
    					flag = TTY_PARITY;
    				else if (sts & MAX310X_LSR_FRERR_BIT)
    					flag = TTY_FRAME;
    				else if (sts & MAX310X_LSR_RXOVR_BIT)
    					flag = TTY_OVERRUN;
    			}
    
    			if (uart_handle_sysrq_char(port, ch))
    				continue;
    
    			if (sts & port->ignore_status_mask)
    				continue;
    
    			uart_insert_char(port, sts, MAX310X_LSR_RXOVR_BIT, ch, flag);
    		}
    	}
    
    	tty_flip_buffer_push(&port->state->port);
    }
    
    static void max310x_handle_tx(struct uart_port *port)
    {
    	struct circ_buf *xmit = &port->state->xmit;
    	unsigned int txlen, to_send, until_end;
    
    	if (unlikely(port->x_char)) {
    		max310x_port_write(port, MAX310X_THR_REG, port->x_char);
    		port->icount.tx++;
    		port->x_char = 0;
    		return;
    	}
    
    	if (uart_circ_empty(xmit) || uart_tx_stopped(port))
    		return;
    
    	/* Get length of data pending in circular buffer */
    	to_send = uart_circ_chars_pending(xmit);
    	until_end = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE);
    	if (likely(to_send)) {
    		/* Limit to size of TX FIFO */
    		txlen = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
    		txlen = port->fifosize - txlen;
    		to_send = (to_send > txlen) ? txlen : to_send;
    
    		if (until_end < to_send) {
    			/* It's a circ buffer -- wrap around.
    			 * We could do that in one SPI transaction, but meh. */
    			max310x_batch_write(port, xmit->buf + xmit->tail, until_end);
    			max310x_batch_write(port, xmit->buf, to_send - until_end);
    		} else {
    			max310x_batch_write(port, xmit->buf + xmit->tail, to_send);
    		}
    
    		/* Add data to send */
    		port->icount.tx += to_send;
    		xmit->tail = (xmit->tail + to_send) & (UART_XMIT_SIZE - 1);
    	}
    
    	if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
    		uart_write_wakeup(port);
    }
    
    static void max310x_start_tx(struct uart_port *port)
    {
    	struct max310x_one *one = to_max310x_port(port);
    
    	schedule_work(&one->tx_work);
    }
    
    static irqreturn_t max310x_port_irq(struct max310x_port *s, int portno)
    {
    	struct uart_port *port = &s->p[portno].port;
    	irqreturn_t res = IRQ_NONE;
    
    	do {
    		unsigned int ists, lsr, rxlen;
    
    		/* Read IRQ status & RX FIFO level */
    		ists = max310x_port_read(port, MAX310X_IRQSTS_REG);
    		rxlen = max310x_port_read(port, MAX310X_RXFIFOLVL_REG);
    		if (!ists && !rxlen)
    			break;
    
    		res = IRQ_HANDLED;
    
    		if (ists & MAX310X_IRQ_CTS_BIT) {
    			lsr = max310x_port_read(port, MAX310X_LSR_IRQSTS_REG);
    			uart_handle_cts_change(port,
    					       !!(lsr & MAX310X_LSR_CTS_BIT));
    		}
    		if (rxlen)
    			max310x_handle_rx(port, rxlen);
    		if (ists & MAX310X_IRQ_TXEMPTY_BIT)
    			max310x_start_tx(port);
    	} while (1);
    	return res;
    }
    
    static irqreturn_t max310x_ist(int irq, void *dev_id)
    {
    	struct max310x_port *s = (struct max310x_port *)dev_id;
    	bool handled = false;
    
    	if (s->devtype->nr > 1) {
    		do {
    			unsigned int val = ~0;
    
    			WARN_ON_ONCE(regmap_read(s->regmap,
    						 MAX310X_GLOBALIRQ_REG, &val));
    			val = ((1 << s->devtype->nr) - 1) & ~val;
    			if (!val)
    				break;
    			if (max310x_port_irq(s, fls(val) - 1) == IRQ_HANDLED)
    				handled = true;
    		} while (1);
    	} else {
    		if (max310x_port_irq(s, 0) == IRQ_HANDLED)
    			handled = true;
    	}
    
    	return IRQ_RETVAL(handled);
    }
    
    static void max310x_tx_proc(struct work_struct *ws)
    {
    	struct max310x_one *one = container_of(ws, struct max310x_one, tx_work);
    
    	max310x_handle_tx(&one->port);
    }
    
    static unsigned int max310x_tx_empty(struct uart_port *port)
    {
    	u8 lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
    
    	return lvl ? 0 : TIOCSER_TEMT;
    }
    
    static unsigned int max310x_get_mctrl(struct uart_port *port)
    {
    	/* DCD and DSR are not wired and CTS/RTS is handled automatically
    	 * so just indicate DSR and CAR asserted
    	 */
    	return TIOCM_DSR | TIOCM_CAR;
    }
    
    static void max310x_md_proc(struct work_struct *ws)
    {
    	struct max310x_one *one = container_of(ws, struct max310x_one, md_work);
    
    	max310x_port_update(&one->port, MAX310X_MODE2_REG,
    			    MAX310X_MODE2_LOOPBACK_BIT,
    			    (one->port.mctrl & TIOCM_LOOP) ?
    			    MAX310X_MODE2_LOOPBACK_BIT : 0);
    }
    
    static void max310x_set_mctrl(struct uart_port *port, unsigned int mctrl)
    {
    	struct max310x_one *one = to_max310x_port(port);
    
    	schedule_work(&one->md_work);
    }
    
    static void max310x_break_ctl(struct uart_port *port, int break_state)
    {
    	max310x_port_update(port, MAX310X_LCR_REG,
    			    MAX310X_LCR_TXBREAK_BIT,
    			    break_state ? MAX310X_LCR_TXBREAK_BIT : 0);
    }
    
    static void max310x_set_termios(struct uart_port *port,
    				struct ktermios *termios,
    				struct ktermios *old)
    {
    	unsigned int lcr = 0, flow = 0;
    	int baud;
    
    	/* Mask termios capabilities we don't support */
    	termios->c_cflag &= ~CMSPAR;
    
    	/* Word size */
    	switch (termios->c_cflag & CSIZE) {
    	case CS5:
    		break;
    	case CS6:
    		lcr = MAX310X_LCR_LENGTH0_BIT;
    		break;
    	case CS7:
    		lcr = MAX310X_LCR_LENGTH1_BIT;
    		break;
    	case CS8:
    	default:
    		lcr = MAX310X_LCR_LENGTH1_BIT | MAX310X_LCR_LENGTH0_BIT;
    		break;
    	}
    
    	/* Parity */
    	if (termios->c_cflag & PARENB) {
    		lcr |= MAX310X_LCR_PARITY_BIT;
    		if (!(termios->c_cflag & PARODD))
    			lcr |= MAX310X_LCR_EVENPARITY_BIT;
    	}
    
    	/* Stop bits */
    	if (termios->c_cflag & CSTOPB)
    		lcr |= MAX310X_LCR_STOPLEN_BIT; /* 2 stops */
    
    	/* Update LCR register */
    	max310x_port_write(port, MAX310X_LCR_REG, lcr);
    
    	/* Set read status mask */
    	port->read_status_mask = MAX310X_LSR_RXOVR_BIT;
    	if (termios->c_iflag & INPCK)
    		port->read_status_mask |= MAX310X_LSR_RXPAR_BIT |
    					  MAX310X_LSR_FRERR_BIT;
    	if (termios->c_iflag & (IGNBRK | BRKINT | PARMRK))
    		port->read_status_mask |= MAX310X_LSR_RXBRK_BIT;
    
    	/* Set status ignore mask */
    	port->ignore_status_mask = 0;
    	if (termios->c_iflag & IGNBRK)
    		port->ignore_status_mask |= MAX310X_LSR_RXBRK_BIT;
    	if (!(termios->c_cflag & CREAD))
    		port->ignore_status_mask |= MAX310X_LSR_RXPAR_BIT |
    					    MAX310X_LSR_RXOVR_BIT |
    					    MAX310X_LSR_FRERR_BIT |
    					    MAX310X_LSR_RXBRK_BIT;
    
    	/* Configure flow control */
    	max310x_port_write(port, MAX310X_XON1_REG, termios->c_cc[VSTART]);
    	max310x_port_write(port, MAX310X_XOFF1_REG, termios->c_cc[VSTOP]);
    
    	/* Disable transmitter before enabling AutoCTS or auto transmitter
    	 * flow control
    	 */
    	if (termios->c_cflag & CRTSCTS || termios->c_iflag & IXOFF) {
    		max310x_port_update(port, MAX310X_MODE1_REG,
    				    MAX310X_MODE1_TXDIS_BIT,
    				    MAX310X_MODE1_TXDIS_BIT);
    	}
    
    	port->status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF);
    
    	if (termios->c_cflag & CRTSCTS) {
    		/* Enable AUTORTS and AUTOCTS */
    		port->status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS;
    		flow |= MAX310X_FLOWCTRL_AUTOCTS_BIT |
    			MAX310X_FLOWCTRL_AUTORTS_BIT;
    	}
    	if (termios->c_iflag & IXON)
    		flow |= MAX310X_FLOWCTRL_SWFLOW3_BIT |
    			MAX310X_FLOWCTRL_SWFLOWEN_BIT;
    	if (termios->c_iflag & IXOFF) {
    		port->status |= UPSTAT_AUTOXOFF;
    		flow |= MAX310X_FLOWCTRL_SWFLOW1_BIT |
    			MAX310X_FLOWCTRL_SWFLOWEN_BIT;
    	}
    	max310x_port_write(port, MAX310X_FLOWCTRL_REG, flow);
    
    	/* Enable transmitter after disabling AutoCTS and auto transmitter
    	 * flow control
    	 */
    	if (!(termios->c_cflag & CRTSCTS) && !(termios->c_iflag & IXOFF)) {
    		max310x_port_update(port, MAX310X_MODE1_REG,
    				    MAX310X_MODE1_TXDIS_BIT,
    				    0);
    	}
    
    	/* Get baud rate generator configuration */
    	baud = uart_get_baud_rate(port, termios, old,
    				  port->uartclk / 16 / 0xffff,
    				  port->uartclk / 4);
    
    	/* Setup baudrate generator */
    	baud = max310x_set_baud(port, baud);
    
    	/* Update timeout according to new baud rate */
    	uart_update_timeout(port, termios->c_cflag, baud);
    }
    
    static void max310x_rs_proc(struct work_struct *ws)
    {
    	struct max310x_one *one = container_of(ws, struct max310x_one, rs_work);
    	unsigned int delay, mode1 = 0, mode2 = 0;
    
    	delay = (one->port.rs485.delay_rts_before_send << 4) |
    		one->port.rs485.delay_rts_after_send;
    	max310x_port_write(&one->port, MAX310X_HDPIXDELAY_REG, delay);
    
    	if (one->port.rs485.flags & SER_RS485_ENABLED) {
    		mode1 = MAX310X_MODE1_TRNSCVCTRL_BIT;
    
    		if (!(one->port.rs485.flags & SER_RS485_RX_DURING_TX))
    			mode2 = MAX310X_MODE2_ECHOSUPR_BIT;
    	}
    
    	max310x_port_update(&one->port, MAX310X_MODE1_REG,
    			MAX310X_MODE1_TRNSCVCTRL_BIT, mode1);
    	max310x_port_update(&one->port, MAX310X_MODE2_REG,
    			MAX310X_MODE2_ECHOSUPR_BIT, mode2);
    }
    
    static int max310x_rs485_config(struct uart_port *port,
    				struct serial_rs485 *rs485)
    {
    	struct max310x_one *one = to_max310x_port(port);
    
    	if ((rs485->delay_rts_before_send > 0x0f) ||
    	    (rs485->delay_rts_after_send > 0x0f))
    		return -ERANGE;
    
    	rs485->flags &= SER_RS485_RTS_ON_SEND | SER_RS485_RX_DURING_TX |
    			SER_RS485_ENABLED;
    	memset(rs485->padding, 0, sizeof(rs485->padding));
    	port->rs485 = *rs485;
    
    	schedule_work(&one->rs_work);
    
    	return 0;
    }
    
    static int max310x_startup(struct uart_port *port)
    {
    
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    	unsigned int val;
    
        printk("max310x_startup\r\n");
    
    	s->devtype->power(port, 1);
    
    	/* Configure MODE1 register */
    	max310x_port_update(port, MAX310X_MODE1_REG,
    			    MAX310X_MODE1_TRNSCVCTRL_BIT, 0);
    
    	/* Configure MODE2 register & Reset FIFOs*/
    	val = MAX310X_MODE2_RXEMPTINV_BIT | MAX310X_MODE2_FIFORST_BIT;
    	max310x_port_write(port, MAX310X_MODE2_REG, val);
    	max310x_port_update(port, MAX310X_MODE2_REG,
    			    MAX310X_MODE2_FIFORST_BIT, 0);
    
    	/* Configure mode1/mode2 to have rs485/rs232 enabled at startup */
    	val = (clamp(port->rs485.delay_rts_before_send, 0U, 15U) << 4) |
    		clamp(port->rs485.delay_rts_after_send, 0U, 15U);
    	max310x_port_write(port, MAX310X_HDPIXDELAY_REG, val);
    
    	if (port->rs485.flags & SER_RS485_ENABLED) {
    		max310x_port_update(port, MAX310X_MODE1_REG,
    				    MAX310X_MODE1_TRNSCVCTRL_BIT,
    				    MAX310X_MODE1_TRNSCVCTRL_BIT);
    
    		if (!(port->rs485.flags & SER_RS485_RX_DURING_TX))
    			max310x_port_update(port, MAX310X_MODE2_REG,
    					    MAX310X_MODE2_ECHOSUPR_BIT,
    					    MAX310X_MODE2_ECHOSUPR_BIT);
    	}
    
    	/* Configure flow control levels */
    	/* Flow control halt level 96, resume level 48 */
    	max310x_port_write(port, MAX310X_FLOWLVL_REG,
    			   MAX310X_FLOWLVL_RES(48) | MAX310X_FLOWLVL_HALT(96));
    
    	/* Clear IRQ status register */
    	max310x_port_read(port, MAX310X_IRQSTS_REG);
    
    	/* Enable RX, TX, CTS change interrupts */
    	val = MAX310X_IRQ_RXEMPTY_BIT | MAX310X_IRQ_TXEMPTY_BIT;
    	max310x_port_write(port, MAX310X_IRQEN_REG, val | MAX310X_IRQ_CTS_BIT);
    
    	return 0;
    }
    
    static void max310x_shutdown(struct uart_port *port)
    {
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    
    	/* Disable all interrupts */
    	max310x_port_write(port, MAX310X_IRQEN_REG, 0);
    
    	s->devtype->power(port, 0);
    }
    
    static const char *max310x_type(struct uart_port *port)
    {
    	struct max310x_port *s = dev_get_drvdata(port->dev);
    
    	return (port->type == PORT_MAX310X) ? s->devtype->name : NULL;
    }
    
    static int max310x_request_port(struct uart_port *port)
    {
    	/* Do nothing */
    	return 0;
    }
    
    static void max310x_config_port(struct uart_port *port, int flags)
    {
    	if (flags & UART_CONFIG_TYPE)
    		port->type = PORT_MAX310X;
    }
    
    static int max310x_verify_port(struct uart_port *port, struct serial_struct *s)
    {
    	if ((s->type != PORT_UNKNOWN) && (s->type != PORT_MAX310X))
    		return -EINVAL;
    	if (s->irq != port->irq)
    		return -EINVAL;
    
    	return 0;
    }
    
    static void max310x_null_void(struct uart_port *port)
    {
    	/* Do nothing */
    }
    
    static const struct uart_ops max310x_ops = {
    	.tx_empty	= max310x_tx_empty,
    	.set_mctrl	= max310x_set_mctrl,
    	.get_mctrl	= max310x_get_mctrl,
    	.stop_tx	= max310x_null_void,
    	.start_tx	= max310x_start_tx,
    	.stop_rx	= max310x_null_void,
    	.break_ctl	= max310x_break_ctl,
    	.startup	= max310x_startup,
    	.shutdown	= max310x_shutdown,
    	.set_termios	= max310x_set_termios,
    	.type		= max310x_type,
    	.request_port	= max310x_request_port,
    	.release_port	= max310x_null_void,
    	.config_port	= max310x_config_port,
    	.verify_port	= max310x_verify_port,
    };
    
    static int __maybe_unused max310x_suspend(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	int i;
    
    	for (i = 0; i < s->devtype->nr; i++) {
    		uart_suspend_port(&max310x_uart, &s->p[i].port);
    		s->devtype->power(&s->p[i].port, 0);
    	}
    
    	return 0;
    }
    
    static int __maybe_unused max310x_resume(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	int i;
    
    	for (i = 0; i < s->devtype->nr; i++) {
    		s->devtype->power(&s->p[i].port, 1);
    		uart_resume_port(&max310x_uart, &s->p[i].port);
    	}
    
    	return 0;
    }
    
    static SIMPLE_DEV_PM_OPS(max310x_pm_ops, max310x_suspend, max310x_resume);
    
    #ifdef CONFIG_GPIOLIB
    static int max310x_gpio_get(struct gpio_chip *chip, unsigned offset)
    {
    	unsigned int val;
    	struct max310x_port *s = gpiochip_get_data(chip);
    	struct uart_port *port = &s->p[offset / 4].port;
    
    	val = max310x_port_read(port, MAX310X_GPIODATA_REG);
    
    	return !!((val >> 4) & (1 << (offset % 4)));
    }
    
    static void max310x_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
    {
    	struct max310x_port *s = gpiochip_get_data(chip);
    	struct uart_port *port = &s->p[offset / 4].port;
    
    	max310x_port_update(port, MAX310X_GPIODATA_REG, 1 << (offset % 4),
    			    value ? 1 << (offset % 4) : 0);
    }
    
    static int max310x_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
    {
    	struct max310x_port *s = gpiochip_get_data(chip);
    	struct uart_port *port = &s->p[offset / 4].port;
    
    	max310x_port_update(port, MAX310X_GPIOCFG_REG, 1 << (offset % 4), 0);
    
    	return 0;
    }
    
    static int max310x_gpio_direction_output(struct gpio_chip *chip,
    					 unsigned offset, int value)
    {
    	struct max310x_port *s = gpiochip_get_data(chip);
    	struct uart_port *port = &s->p[offset / 4].port;
    
    	max310x_port_update(port, MAX310X_GPIODATA_REG, 1 << (offset % 4),
    			    value ? 1 << (offset % 4) : 0);
    	max310x_port_update(port, MAX310X_GPIOCFG_REG, 1 << (offset % 4),
    			    1 << (offset % 4));
    
    	return 0;
    }
    
    static int max310x_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
    				   unsigned long config)
    {
    	struct max310x_port *s = gpiochip_get_data(chip);
    	struct uart_port *port = &s->p[offset / 4].port;
    
    	switch (pinconf_to_config_param(config)) {
    	case PIN_CONFIG_DRIVE_OPEN_DRAIN:
    		max310x_port_update(port, MAX310X_GPIOCFG_REG,
    				1 << ((offset % 4) + 4),
    				1 << ((offset % 4) + 4));
    		return 0;
    	case PIN_CONFIG_DRIVE_PUSH_PULL:
    		max310x_port_update(port, MAX310X_GPIOCFG_REG,
    				1 << ((offset % 4) + 4), 0);
    		return 0;
    	default:
    		return -ENOTSUPP;
    	}
    }
    #endif
    
    static int max310x_probe(struct device *dev, struct max310x_devtype *devtype,
    			 struct regmap *regmap, int irq)
    {
    	int i, ret, fmin, fmax, freq, uartclk;
    	struct clk *clk_osc, *clk_xtal;
    	struct max310x_port *s;
    	bool xtal = false;
    
        printk("max310x_probe\r\n");
    
    	if (IS_ERR(regmap))
    		return PTR_ERR(regmap);
    
    	/* Alloc port structure */
    	s = devm_kzalloc(dev, struct_size(s, p, devtype->nr), GFP_KERNEL);
    	if (!s) {
    		dev_err(dev, "Error allocating port structure\n");
    		return -ENOMEM;
    	}
    
    	clk_osc = devm_clk_get(dev, "osc");
    	clk_xtal = devm_clk_get(dev, "xtal");
    	if (!IS_ERR(clk_osc)) {
    		s->clk = clk_osc;
    		fmin = 500000;
    		fmax = 35000000;
    	} else if (!IS_ERR(clk_xtal)) {
    		s->clk = clk_xtal;
    		fmin = 1000000;
    		fmax = 4000000;
    		xtal = true;
    	} else if (PTR_ERR(clk_osc) == -EPROBE_DEFER ||
    		   PTR_ERR(clk_xtal) == -EPROBE_DEFER) {
    		return -EPROBE_DEFER;
    	} else {
    		dev_err(dev, "Cannot get clock\n");
    		return -EINVAL;
    	}
    
    	ret = clk_prepare_enable(s->clk);
    	if (ret)
    		return ret;
    
    	freq = clk_get_rate(s->clk);
    	/* Check frequency limits */
    	if (freq < fmin || freq > fmax) {
    		ret = -ERANGE;
    		goto out_clk;
    	}
    
    	s->regmap = regmap;
    	s->devtype = devtype;
    	dev_set_drvdata(dev, s);
    
    	/* Check device to ensure we are talking to what we expect */
    	ret = devtype->detect(dev);
    	if (ret)
    		goto out_clk;
    
    	for (i = 0; i < devtype->nr; i++) {
    		unsigned int offs = i << 5;
    
    		/* Reset port */
    		regmap_write(s->regmap, MAX310X_MODE2_REG + offs,
    			     MAX310X_MODE2_RST_BIT);
    		/* Clear port reset */
    		regmap_write(s->regmap, MAX310X_MODE2_REG + offs, 0);
    
    		/* Wait for port startup */
    		do {
    			regmap_read(s->regmap,
    				    MAX310X_BRGDIVLSB_REG + offs, &ret);
    		} while (ret != 0x01);
    
    		regmap_write(s->regmap, MAX310X_MODE1_REG + offs,
    			     devtype->mode1);
    	}
    
    	uartclk = max310x_set_ref_clk(dev, s, freq, xtal);
    	dev_dbg(dev, "Reference clock set to %i Hz\n", uartclk);
    
    	for (i = 0; i < devtype->nr; i++) {
    		unsigned int line;
    
    		line = find_first_zero_bit(max310x_lines, MAX310X_UART_NRMAX);
    		if (line == MAX310X_UART_NRMAX) {
    			ret = -ERANGE;
    			goto out_uart;
    		}
    
    		/* Initialize port data */
    		s->p[i].port.line	= line;
    		s->p[i].port.dev	= dev;
    		s->p[i].port.irq	= irq;
    		s->p[i].port.type	= PORT_MAX310X;
    		s->p[i].port.fifosize	= MAX310X_FIFO_SIZE;
    		s->p[i].port.flags	= UPF_FIXED_TYPE | UPF_LOW_LATENCY;
    		s->p[i].port.iotype	= UPIO_PORT;
    		s->p[i].port.iobase	= i * 0x20;
    		s->p[i].port.membase	= (void __iomem *)~0;
    		s->p[i].port.uartclk	= uartclk;
    		s->p[i].port.rs485_config = max310x_rs485_config;
    		s->p[i].port.ops	= &max310x_ops;
    		/* Disable all interrupts */
    		max310x_port_write(&s->p[i].port, MAX310X_IRQEN_REG, 0);
    		/* Clear IRQ status register */
    		max310x_port_read(&s->p[i].port, MAX310X_IRQSTS_REG);
    		/* Initialize queue for start TX */
    		INIT_WORK(&s->p[i].tx_work, max310x_tx_proc);
    		/* Initialize queue for changing LOOPBACK mode */
    		INIT_WORK(&s->p[i].md_work, max310x_md_proc);
    		/* Initialize queue for changing RS485 mode */
    		INIT_WORK(&s->p[i].rs_work, max310x_rs_proc);
    		/* Initialize SPI-transfer buffers */
    		s->p[i].wr_header = (s->p[i].port.iobase + MAX310X_THR_REG) |
    				    MAX310X_WRITE_BIT;
    		s->p[i].rd_header = (s->p[i].port.iobase + MAX310X_RHR_REG);
    
    		/* Register port */
    		ret = uart_add_one_port(&max310x_uart, &s->p[i].port);
    		if (ret) {
    			s->p[i].port.dev = NULL;
    			goto out_uart;
    		}
    		set_bit(line, max310x_lines);
    
    		/* Go to suspend mode */
    		devtype->power(&s->p[i].port, 0);
    	}
    
    #ifdef CONFIG_GPIOLIB
    	/* Setup GPIO cotroller */
    	s->gpio.owner		= THIS_MODULE;
    	s->gpio.parent		= dev;
    	s->gpio.label		= devtype->name;
    	s->gpio.direction_input	= max310x_gpio_direction_input;
    	s->gpio.get		= max310x_gpio_get;
    	s->gpio.direction_output= max310x_gpio_direction_output;
    	s->gpio.set		= max310x_gpio_set;
    	s->gpio.set_config	= max310x_gpio_set_config;
    	s->gpio.base		= -1;
    	s->gpio.ngpio		= devtype->nr * 4;
    	s->gpio.can_sleep	= 1;
    	ret = devm_gpiochip_add_data(dev, &s->gpio, s);
    	if (ret)
    		goto out_uart;
    #endif
    
    	/* Setup interrupt */
    	ret = devm_request_threaded_irq(dev, irq, NULL, max310x_ist,
    					IRQF_ONESHOT | IRQF_SHARED, dev_name(dev), s);
    	if (!ret)
    		return 0;
    
    	dev_err(dev, "Unable to reguest IRQ %i\n", irq);
    
    out_uart:
    	for (i = 0; i < devtype->nr; i++) {
    		if (s->p[i].port.dev) {
    			uart_remove_one_port(&max310x_uart, &s->p[i].port);
    			clear_bit(s->p[i].port.line, max310x_lines);
    		}
    	}
    
    out_clk:
    	clk_disable_unprepare(s->clk);
    
    	return ret;
    }
    
    static int max310x_remove(struct device *dev)
    {
    	struct max310x_port *s = dev_get_drvdata(dev);
    	int i;
    
    	for (i = 0; i < s->devtype->nr; i++) {
    		cancel_work_sync(&s->p[i].tx_work);
    		cancel_work_sync(&s->p[i].md_work);
    		cancel_work_sync(&s->p[i].rs_work);
    		uart_remove_one_port(&max310x_uart, &s->p[i].port);
    		clear_bit(s->p[i].port.line, max310x_lines);
    		s->devtype->power(&s->p[i].port, 0);
    	}
    
    	clk_disable_unprepare(s->clk);
    
    	return 0;
    }
    
    static const struct of_device_id __maybe_unused max310x_dt_ids[] = {
    	{ .compatible = "maxim,max3107",	.data = &max3107_devtype, },
    	{ .compatible = "maxim,max3108",	.data = &max3108_devtype, },
    	{ .compatible = "maxim,max3109",	.data = &max3109_devtype, },
    	{ .compatible = "maxim,max14830",	.data = &max14830_devtype },
    	{ }
    };
    MODULE_DEVICE_TABLE(of, max310x_dt_ids);
    
    static struct regmap_config regcfg = {
    	.reg_bits = 8,
    	.val_bits = 8,
    	.write_flag_mask = MAX310X_WRITE_BIT,
    	.cache_type = REGCACHE_RBTREE,
    	.writeable_reg = max310x_reg_writeable,
    	.volatile_reg = max310x_reg_volatile,
    	.precious_reg = max310x_reg_precious,
    };
    
    #ifdef CONFIG_SPI_MASTER
    static int max310x_spi_probe(struct spi_device *spi)
    {
    	struct max310x_devtype *devtype;
    	struct regmap *regmap;
    	int ret;
    
    	/* Setup SPI bus */
    	spi->bits_per_word	= 8;
    	spi->mode		= spi->mode ? : SPI_MODE_0;
    	spi->max_speed_hz	= spi->max_speed_hz ? : 26000000;
    	ret = spi_setup(spi);
    	if (ret)
    		return ret;
    
    	if (spi->dev.of_node) {
    		const struct of_device_id *of_id =
    			of_match_device(max310x_dt_ids, &spi->dev);
    		if (!of_id)
    			return -ENODEV;
    
    		devtype = (struct max310x_devtype *)of_id->data;
    	} else {
    		const struct spi_device_id *id_entry = spi_get_device_id(spi);
    
    		devtype = (struct max310x_devtype *)id_entry->driver_data;
    	}
    
    	regcfg.max_register = devtype->nr * 0x20 - 1;
    	regmap = devm_regmap_init_spi(spi, &regcfg);
    
    	return max310x_probe(&spi->dev, devtype, regmap, spi->irq);
    }
    
    static int max310x_spi_remove(struct spi_device *spi)
    {
    	return max310x_remove(&spi->dev);
    }
    
    static const struct spi_device_id max310x_id_table[] = {
    	{ "max3107",	(kernel_ulong_t)&max3107_devtype, },
    	{ "max3108",	(kernel_ulong_t)&max3108_devtype, },
    	{ "max3109",	(kernel_ulong_t)&max3109_devtype, },
    	{ "max14830",	(kernel_ulong_t)&max14830_devtype, },
    	{ }
    };
    MODULE_DEVICE_TABLE(spi, max310x_id_table);
    
    static struct spi_driver max310x_spi_driver = {
    	.driver = {
    		.name		= MAX310X_NAME,
    		.of_match_table	= of_match_ptr(max310x_dt_ids),
    		.pm		= &max310x_pm_ops,
    	},
    	.probe		= max310x_spi_probe,
    	.remove		= max310x_spi_remove,
    	.id_table	= max310x_id_table,
    };
    #endif
    
    static int __init max310x_uart_init(void)
    {
    	int ret;
        printk("entering _init max310x_uart_init... \r\n");
    
    
        printk("before bitmap_zer\r\n");
    	bitmap_zero(max310x_lines, MAX310X_UART_NRMAX);
    
        printk("before uart_register_driver\r\n");
    	ret = uart_register_driver(&max310x_uart);
        printk("uart_register_driver ret:%d \r\n", ret);
    
    	if (ret)
    		return ret;
    
    #ifdef CONFIG_SPI_MASTER
        printk("CONFIG_SPI_MASTER\r\n");
    	ret = spi_register_driver(&max310x_spi_driver);
    	if (ret)
    		uart_unregister_driver(&max310x_uart);
    #endif
    
    	return ret;
    }
    module_init(max310x_uart_init);
    
    static void __exit max310x_uart_exit(void)
    {
    #ifdef CONFIG_SPI_MASTER
    	spi_unregister_driver(&max310x_spi_driver);
    #endif
    
    	uart_unregister_driver(&max310x_uart);
    }
    module_exit(max310x_uart_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("Alexander Shiyan <shc_work@mail.ru>");
    MODULE_DESCRIPTION("MAX310X serial driver");
    

    Thanks for your support.

    0383.boot_log.txt
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    1 bytes read in 2 ms (0 Bytes/s)
    Already setup.
    19081728 bytes read in 798 ms (22.8 MiB/s)
    41948 bytes read in 4 ms (10 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-g2c23e6c538 (root@brett-mini) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile3
    [    0.000000] Machine model: Texas Instruments AM642 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    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.2
    [    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tit
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1398896K/2097152K available (11200K kernel code, 1162K rwdata, 4304K rodata, 1856K init, 431K bss, 173968)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000006] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008564] Console: colour dummy device 80x25
    [    0.013158] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023838] pid_max: default: 32768 minimum: 301
    [    0.028665] LSM: Security Framework initializing
    [    0.033451] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041028] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051050] rcu: Hierarchical SRCU implementation.
    [    0.056306] Platform MSI: msi-controller@1820000 domain created
    [    0.062690] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.071977] EFI services will not be available.
    [    0.076881] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.090507] Detected VIPT I-cache on CPU1
    [    0.090549] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.090565] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.090634] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.090765] smp: Brought up 1 node, 2 CPUs
    [    0.120151] SMP: Total of 2 processors activated.
    [    0.124964] CPU features: detected: 32-bit EL0 Support
    [    0.130237] CPU features: detected: CRC32 instructions
    [    0.143767] CPU: All CPU(s) started at EL2
    [    0.147976] alternatives: patching kernel code
    [    0.153799] devtmpfs: initialized
    [    0.164720] KASLR disabled due to lack of seed
    [    0.169536] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.179512] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.204379] pinctrl core: initialized pinctrl subsystem
    [    0.210462] DMI not present or invalid.
    [    0.215208] NET: Registered protocol family 16
    [    0.221692] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.229091] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.237188] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.245988] thermal_sys: Registered thermal governor 'step_wise'
    [    0.245995] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.252626] cpuidle: using governor menu
    [    0.263601] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.270617] ASID allocator initialised with 65536 entries
    [    0.304285] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.311174] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.318025] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.324873] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.333161] cryptd: max_cpu_qlen set to 1000
    [    0.341199] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR1.0 JTAGID[0x0bb3802f] Detected
    [    0.350448] vcc_3v3_sys: supplied by vusb_main5v0
    [    0.356944] iommu: Default domain type: Translated 
    [    0.362393] SCSI subsystem initialized
    [    0.366909] mc: Linux media interface: v0.10
    [    0.371315] videodev: Linux video capture interface: v2.00
    [    0.377021] pps_core: LinuxPPS API ver. 1 registered
    [    0.382102] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.391449] PTP clock support registered
    [    0.395490] EDAC MC: Ver: 3.0.0
    [    0.399668] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.406620] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.413458] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.420976] FPGA manager framework
    [    0.424578] Advanced Linux Sound Architecture Driver Initialized.
    [    0.432023] clocksource: Switched to clocksource arch_sys_counter
    [    0.438562] VFS: Disk quotas dquot_6.6.0
    [    0.442644] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.456283] NET: Registered protocol family 2
    [    0.461048] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.470083] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.478894] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.487123] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [    0.494909] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.501868] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.508773] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.516288] NET: Registered protocol family 1
    [    0.521395] RPC: Registered named UNIX socket transport module.
    [    0.527496] RPC: Registered udp transport module.
    [    0.532342] RPC: Registered tcp transport module.
    [    0.537152] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.543744] NET: Registered protocol family 44
    [    0.548303] PCI: CLS 0 bytes, default 64
    [    0.553172] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.566382] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.577643] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.584378] NFS: Registering the id_resolver key type
    [    0.589713] Key type id_resolver registered
    [    0.593993] Key type id_legacy registered
    [    0.598187] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.605041] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.612858] 9p: Installing v9fs 9p2000 file system support
    [    0.662252] Key type asymmetric registered
    [    0.666464] Asymmetric key parser 'x509' registered
    [    0.671529] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [    0.679102] io scheduler mq-deadline registered
    [    0.683733] io scheduler kyber registered
    [    0.690342] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.696822] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.703744] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [    0.720560] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.743994] brd: module loaded
    [    0.755728] loop: module loaded
    [    0.760101] megasas: 07.714.04.00-rc1
    [    0.768576] tun: Universal TUN/TAP device driver, 1.6
    [    0.774500] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.780931] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.787057] sky2: driver version 1.30
    [    0.792196] VFIO - User Level meta-driver version: 0.3
    [    0.798750] i2c /dev entries driver
    [    0.803894] sdhci: Secure Digital Host Controller Interface driver
    [    0.810280] sdhci: Copyright(c) Pierre Ossman
    [    0.815523] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.822875] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.829547] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.837956] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.842598] optee: revision 3.20 (8e74d476)
    [    0.859243] optee: dynamic shared memory is enabled
    [    0.868992] optee: initialized driver
    [    0.875476] NET: Registered protocol family 17
    [    0.880242] 9pnet: Installing 9P2000 support
    [    0.884702] Key type dns_resolver registered
    [    0.908536] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
    [    0.916724] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [    0.981275] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    0.987759] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    0.997533] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.008358] pca953x 1-0070: supply vcc not found, using dummy regulator
    [    1.015314] pca953x 1-0070: using no AI
    [    1.044295] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.051495] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.057717] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [    1.067481] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [    1.076312] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.101880] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.109603] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.119889] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.134749] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.145945] printk: console [ttyS2] disabled
    [    1.150412] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [    1.159180] printk: console [ttyS2] enabled
    [    1.159180] printk: console [ttyS2] enabled
    [    1.167622] printk: bootconsole [ns16550a0] disabled
    [    1.167622] printk: bootconsole [ns16550a0] disabled
    [    1.179003] omap8250 2840000.serial: PM domain pd:155 will not be powered off
    [    1.186570] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 17, base_baud = 3000000) is a 8250
    [    1.195264] serial serial0: tty port ttyS6 registered
    [    1.207339] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.212370] 7 cmdlinepart partitions found on MTD device fc40000.spi.0
    [    1.218893] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.224289] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.231169] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.237746] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.244482] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.250897] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.257929] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.264669] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.284488] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.328065] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.345139] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.353248] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
    [    1.361458] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 36
    [    1.374365] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.381497] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.388218] pps pps0: new PPS source ptp0
    [    1.392676] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.403362] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.414307] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.423487] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    1.430609] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    1.443625] gpio-478 (btuart_rts_sel): hogged as output/high
    [    1.457020] vdd_mmc1: supplied by vcc_3v3_sys
    [    1.462680] wlan_en: supplied by com8_ls_en
    [    1.471921] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    1.471943] mmc1: CQHCI version 5.10
    [    1.479764] mmc0: CQHCI version 5.10
    [    1.488738] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    1.507250] ALSA device list:
    [    1.510243]   No soundcards found.
    [    1.524044] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.531541] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.533420] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    1.546997] Waiting for root device PARTUUID=43a182f7-02...
    [    1.548247] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    1.563355] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
    [    1.582784] mmc0: new SDIO card at address 0001
    [    1.608727] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    1.616292] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
    [    1.625401]  mmcblk1: p1 p2
    [    1.630291] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    1.736082] EXT4-fs (mmcblk1p2): 1 orphan inode deleted
    [    1.741346] EXT4-fs (mmcblk1p2): recovery complete
    [    1.757692] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    1.765910] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.777369] devtmpfs: mounted
    [    1.781728] Freeing unused kernel memory: 1856K
    [    1.786395] Run /sbin/init as init process
    [    1.965348] systemd[1]: System time before build time, advancing clock.
    [    2.335178] NET: Registered protocol family 10
    [    2.341150] Segment Routing with IPv6
    [    2.385189] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -L)
    [    2.407389] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2021.09!
    
    [    2.447019] systemd[1]: Set hostname to <am64xx-evm>.
    [    2.793113] systemd[1]: /lib/systemd/system/startwlansta.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    2.808075] systemd[1]: /lib/systemd/system/startwlanap.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    2.852133] systemd[1]: /lib/systemd/system/irqbalanced.service:6: Unknown key name 'ConditionCPUs' in section 'Unit', ignori.
    [    2.896274] systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/.
    [    3.049152] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.060783] systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    [    3.084283] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.093379] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    3.116277] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.125269] systemd[1]: Created slice system-syslog\x2dng.slice.
    [  OK  ] Created slice system-syslog\x2dng.slice.
    [    3.150616] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    3.172727] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password ��…ts to Console Directory Watch.
    [    3.196624] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R��…uests to Wall Directory Watch.
    [    3.220584] systemd[1]: Reached target Paths.
    [  OK  ] Reached target Paths.
    [    3.236350] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    3.256346] systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    [    3.272386] systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    [    3.308486] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    3.332452] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    3.360388] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    3.384763] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    3.412785] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    3.421837] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    3.445177] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    3.465363] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    3.489143] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    3.512868] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    3.542600] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    3.570233] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    3.598605] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    3.631427] systemd[1]: Mounting Temporary Directory (/tmp)...
             Mounting Temporary Directory (/tmp)...
    [    3.655418] systemd[1]: Starting Create list of static device nodes for the current kernel...
             Starting Create list of st��…odes for the current kernel...
    [    3.686263] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...
    [    3.704735] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    3.722821] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    3.753071] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    3.774355] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    [    3.798781] cryptodev: loading out-of-tree module taints kernel.
    [    3.814492] systemd[1]: Starting udev Coldplug all Devices...
    [    3.820701] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
             Starting udev Coldplug all Devices...
    [    3.848635] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [    3.850934] systemd[1]: Started RPC Bind.
    [    3.856665] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [  OK  ] Started RPC Bind.
    [    3.870611] cryptodev: disagrees about version of symbol fd_install
    [    3.881506] cryptodev: Unknown symbol fd_install (err -22)
    [    3.884191] systemd[1]: Started Journal Service.
    [    3.887176] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [  OK  ] Started Journal Service.[    3.899378] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    
    [    3.910932] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [    3.918604] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [    3.925410] cryptodev: disagrees about version of symbol __close_fd
    [    3.925422] cryptodev: Unknown symbol __close_fd (err -22)
    [    3.925583] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [    3.925591] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [  OK  ] Mounted Huge Pages File System.
    [  OK  ] Mounted POSIX Message Queue File System.
    [  OK  ] Mounted Kernel Debug File System.
    [  OK  ] Mounted Temporary Directory (/tmp).
    [  OK  ] Started Create list of sta��… nodes for the current kernel.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [  OK  ] Started Remount Root and Kernel File Systems.
    [    4.105553] random: systemd-journal: uninitialized urandom read (16 bytes read)
    [    4.114800] random: systemd: uninitialized urandom read (16 bytes read)
             Mounting Kernel Configuration File System...
    [    4.141504] random: systemd: uninitialized urandom read (16 bytes read)
             Starting Flush Journal to Persistent Storage...
             Starting Apply Kernel Variables...
    [    4.190498] systemd-journald[167]: Received client request to flush runtime journal.
             Starting Create Static Device Nodes in /dev...
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Started Flush Journal to Persistent Storage.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /media/ram...
             Mounting /var/volatile...
             Starting udev Kernel Device Manager...
    [  OK  ] Mounted /media/ram.
    [  OK  ] Mounted /var/volatile.
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
             Starting Create Volatile Files and Directories...
    [  OK  ] Started udev Coldplug all Devices.
    [  OK  ] Started Create Volatile Files and Directories.
    [  OK  ] Started udev Kernel Device Manager.
             Starting Network Time Synchronization...
             Starting udev Wait for Complete Device Initialization...
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
    [    5.305296] random: systemd: uninitialized urandom read (16 bytes read)
    [    5.506133] random: crng init done
    [    5.507146] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    5.509641] random: 64 urandom warning(s) missed due to ratelimiting
    [  OK  ] Started Load/Save Random Seed.
    [    5.604705] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    5.761534] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    5.787890] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    5.836925] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    5.869035] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [    5.901477] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [    5.926219] remoteproc remoteproc0: 5000000.m4fss is available
    [    5.953264] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.001068] remoteproc remoteproc0: powering up 5000000.m4fss
    [    6.006958] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 86084
    [    6.011107] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.023743]  remoteproc0#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [    6.036743]  remoteproc0#vdev0buffer: registered virtio0 (type 7)
    [    6.046647] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [    6.086182] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.101497] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.159939] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    6.168306] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    6.174414] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    6.195804] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.210814] Bluetooth: Core ver 2.22
    [    6.214652] NET: Registered protocol family 31
    [    6.219279] Bluetooth: HCI device and connection manager initialized
    [    6.220891] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.225728] Bluetooth: HCI socket layer initialized
    [    6.269941] Bluetooth: L2CAP socket layer initialized
    [    6.283997] Bluetooth: SCO socket layer initialized
    [    6.307988] platform 78000000.r5f: configured R5F for remoteproc mode
    [    6.401269] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    6.434230] remoteproc remoteproc1: 78000000.r5f is available
    [    6.442055] platform 78200000.r5f: configured R5F for remoteproc mode
    [    6.451459] remoteproc remoteproc1: powering up 78000000.r5f
    [    6.457322] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [    6.469228]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [    6.478416] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    6.478698] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    6.484980]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [    6.500130] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [    6.507834] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.524802] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    6.617915] remoteproc remoteproc2: 78200000.r5f is available
    [    6.634593] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.646411] remoteproc remoteproc2: powering up 78200000.r5f
    [    6.652306] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [    6.662587]  remoteproc2#vdev0buffer: assigned reserved memory node r5f-dma-memory@a1000000
    [    6.676798] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    6.682517]  remoteproc2#vdev0buffer: registered virtio2 (type 7)
    [    6.688695] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [    6.695874] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    6.714655] Bluetooth: HCI UART driver ver 2.3
    [    6.728180] Bluetooth: HCI UART protocol H4 registered
    [    6.735808] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.781762] Bluetooth: HCI UART protocol LL registered
    [    6.789957] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    6.809795] platform 78400000.r5f: configured R5F for remoteproc mode
    [    6.817983] Bluetooth: HCI UART protocol Broadcom registered
    [    6.827790] Bluetooth: HCI UART protocol QCA registered
    [    6.843378] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    6.881356] remoteproc remoteproc3: 78400000.r5f is available
    [    6.895240] remoteproc remoteproc3: powering up 78400000.r5f
    [    6.901719] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [    6.913818] Bluetooth: hci0: change remote baud rate command in firmware
    [    6.926728] platform 78600000.r5f: configured R5F for remoteproc mode
    [    6.934811]  remoteproc3#vdev0buffer: assigned reserved memory node r5f-dma-memory@a2000000
    [    6.948785] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    6.949325] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    6.960260]  remoteproc3#vdev0buffer: registered virtio3 (type 7)
    [    6.972385] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [    6.984776] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    7.058731] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.081638] remoteproc remoteproc4: 78600000.r5f is available
    [    7.089475] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    7.101998] remoteproc remoteproc4: powering up 78600000.r5f
    [    7.107802] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [    7.118428]  remoteproc4#vdev0buffer: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.129323] virtio_rpmsg_bus virtio4: rpmsg host is online
    [    7.129959] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [    7.135032]  remoteproc4#vdev0buffer: registered virtio4 (type 7)
    [    7.151200] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [    7.160781] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.552779] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.570164] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.581011] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [  OK  ] Listening on Load/Save RF ��…itch S[    8.610615] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    tatus /dev/rfkill Watch.
    [    8.624000] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.637810] remoteproc remoteproc5: 30034000.pru is available
             Starting Load/Save RF Kill Switch Status...
    [    8.697951] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.715571] remoteproc remoteproc6: 30004000.rtu is available
    [    8.745917] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.754474] remoteproc remoteproc7: 3000a000.txpru is available
    [    8.761259] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.769923] remoteproc remoteproc8: 30038000.pru is available
    [    8.776819] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.785240] remoteproc remoteproc9: 30006000.rtu is available
    [    8.793233] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.805588] remoteproc remoteproc10: 3000c000.txpru is available
    [    8.813790] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.822366] remoteproc remoteproc11: 300b4000.pru is available
    [    8.831700] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.840204] remoteproc remoteproc12: 30084000.rtu is available
    [    8.852571] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.862940] remoteproc remoteproc13: 3008a000.txpru is available
    [    8.872270] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.881777] remoteproc remoteproc14: 300b8000.pru is available
    [    8.890639] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.900767] remoteproc remoteproc15: 30086000.rtu is available
    [    8.909517] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    8.919296] remoteproc remoteproc16: 3008c000.txpru is available
    [    8.926570] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [  OK  ] Created slice system-systemd\x2dfsc[    9.015942] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    k.slice.
    [    9.035554] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.052240] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.065598] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.081510] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [  OK  ] Started Load/Save RF Kill Switch Status.
             Starting Load Kernel Modules...
    [    9.177104] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
    [    9.187104] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [    9.194043] cryptodev: disagrees about version of symbol fd_install
    [    9.200410] cryptodev: Unknown symbol fd_install (err -22)
    [    9.209954] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [    9.217473] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    [    9.228327] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [    9.235915] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [    9.247106] cryptodev: disagrees about version of symbol __close_fd
    [    9.253756] cryptodev: Unknown symbol __close_fd (err -22)
    [    9.254803] usbcore: registered new interface driver usbfs
    [    9.259621] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [    9.272129] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [    9.284911] usbcore: registered new interface driver hub
    [    9.290618] usbcore: registered new device driver usb
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [    9.387478] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [  OK  ] Found device /dev/mmcblk1p1.
             Starting File System Check on /dev/mmcblk1p1...
    [    9.490226] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    9.497374] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
    [    9.505728] xhci-hcd xhci-hcd.0.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000002000010010
    [    9.515473] xhci-hcd xhci-hcd.0.auto: irq 530, io mem 0x0f410000
    [    9.522007] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    9.527771] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [    9.535659] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
    [    9.542584] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [    9.551029] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    9.558426] usb usb1: Product: xHCI Host Controller
    [    9.563458] usb usb1: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    [    9.570241] usb usb1: SerialNumber: xhci-hcd.0.auto
    [    9.576693] hub 1-0:1.0: USB hub found
    [    9.580702] hub 1-0:1.0: 1 port detected
    [    9.585609] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.588883] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [    9.594580] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.601786] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
    [    9.617327] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    9.624625] usb usb2: Product: xHCI Host Controller
    [    9.629592] usb usb2: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    [    9.636275] usb usb2: SerialNumber: xhci-hcd.0.auto
    [    9.642732] hub 2-0:1.0: USB hub found
    [    9.646751] hub 2-0:1.0: 1 port detected
    [    9.651612] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [    9.662921] omap2_mcspi 20100000.spi: deferred probe timeout, ignoring dependency
    [  OK  ] Started udev Wait for Complete Device Initialization.
    [  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Started Timer service to update the IP on OLED each 10s.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
             Starting Docker Socket for the API.
    [  OK  ] Listening on dropbear.socket.
             Starting Reboot and dump vmcore via kexec...
    [  OK  ] Listening on Docker Socket for the API.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Job spooling tools.
             Starting Bluetooth service...
    [  OK  ] Started Periodic Command Scheduler.
    [  OK  ] Started D-Bus System Message Bus.
             Starting Ethernet Bridge Filtering Tables...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
    [  OK  ] Started irqbalance daemon.
             Starting Matrix GUI...
             Starting startwlanap...
             Starting startwlansta...
             Starting System Logger Daemon "default" instance...
             Starting Login Service...
    [  OK  ] Started TEE Supplicant.
             Starting telnetd.service...
    [  OK  ] Started File System Check on /dev/mmcblk1p1.
    [  OK  ] Started Reboot and dump vmcore via kexec.
    [  OK  ] Started Ethernet Bridge Filtering Tables.
    [  OK  ] Started IPv6 Packet Filtering Framework.
    [  OK  ] Started IPv4 Packet Filtering Framework.
    [  OK  ] Started Matrix GUI.
    [  OK  ] Started startwlanap.
    [  OK  ] Started startwlansta.
    [  OK  ] Reached target Network (Pre).
             Mounting /run/media/mmcblk1p1...
             Starting Network Service...
    [  OK  ] Started telnetd.service.
             Starting LSB: Expand Rootfs of boot device...
             Starting syslog.service...
    [  OK  ] Mounted /run/media/mmcblk1p1.
    [   10.557166] startwlanap.sh[604]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [   10.576914] startwlanap.sh[607]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started Bluetooth service.
    [  OK  ] Reached target Bluetooth.
             Starting Hostname Service...
    [   10.721090] startwlansta.sh[609]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [   10.757393] startwlansta.sh[614]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started System Logger Daemon "default" instance.
    [  OK  ] Started syslog.service.
    [  OK  ] Started LSB: Expand Rootfs of boot device.
    [  OK  ] Started Network Service.
             Starting Wait for Network to be Configured...
             Starting Network Name Resolution...
    [   11.614056] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [   11.632255] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [   11.790092] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [   11.803818] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [   11.706284] startwlanap.sh[627]: nl80211 not found.
    [   11.940477] startwlanap.sh[634]: nl80211 not found.
    [   12.193863] startwlanap.sh[639]: nl80211 not found.
    [   12.407756] startwlanap.sh[644]: adding wlan1 interface
    [   12.437113] startwlanap.sh[645]: ls: cannot access '/sys/class/ieee80211/': No such file or directory
    [  OK  ] Started Login Service.
    [   12.466081] startwlanap.sh[646]: nl80211 not found.
    [   12.628591] startwlanap.sh[648]: Configuration file: /usr/share/wl18xx/hostapd.conf
    [   12.661243] startwlanap.sh[648]: nl80211: 'nl80211' generic netlink not found
    [   12.661751] startwlanap.sh[648]: Failed to initialize driver 'nl80211'
    [   12.662125] startwlanap.sh[648]: wlan1: interface state UNINITIALIZED->DISABLED
    [   12.662351] startwlanap.sh[648]: wlan1: AP-DISABLED
    [   12.662582] startwlanap.sh[648]: wlan1: CTRL-EVENT-TERMINATING
    [   12.662851] startwlanap.sh[648]: hostapd_free_hapd_data: Interface wlan1 wasn't started
    [  OK  ] Started Hostname Service.
    [  OK  ] Started Network Name Resolution.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Host and Network Name Lookups.
             Starting Avahi mDNS/DNS-SD Stack...
             Starting Enable and configure wl18xx bluetooth stack...
    [   13.372978] NET: Registered protocol family 38
    [  OK  ] Started NFS status monitor for NFSv2/3 locking..
             Starting Simple Network Ma��…ent Protocol (SNMP) Daemon....
             Starting Permit User Sessions...
    [  OK  ] Started Vsftpd ftp daemon.
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Getty on tty1.
    [  OK  ] Started Serial Getty on ttyS1.
    [  OK  ] Started Serial Getty on ttyS2.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
    [  OK  ] Started Enable and configure wl18xx bluetooth stack.
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service' for details.
    [   13.610542] startwlanap.sh[669]: SIOCSIFADDR: No such device
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [   13.638076] startwlanap.sh[669]: wlan1: ERROR while getting interface flags: No such device
    [   13.657574] startwlanap.sh[669]: SIOCSIFNETMASK: No such device
    [   13.676890] startwlanap.sh[669]: wlan1: ERROR while getting interface flags: No such device
    [  OK  ] Started Simple Network Man��…ement Protocol (SNMP) Daemon..
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            bash
            bc
            binutils
            cifs-utils
            coreutils-stdbuf
            coreutils
            cpio
            cpp-symlinks
            cpp
            dosfstools
            elfutils
            g++-symlinks
            g++
            gawk
            gcc-symlinks
            gcc
            gdb
            gdbserver
            gettext
            gstreamer1.0-libav
            gzip
            hidapi
            less
            libasm1
            libbfd
            libdw1
            libelf1
            libgdbm-compat4
            libgdbm6
            libgettextlib
            libgettextsrc
            libgmp10
            libidn2-0
            libmpc3
            libmpfr6
            libreadline8
            libunistring2
            m4
            make
            nettle
            parted
            tar
            which
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [  OK  ] Started Print notice about GPLv3 packages.
    [   15.464711] startwlanap.sh[828]: iperf3: error - unable to start listener for connections: Cannot assign requested address
    [   15.564580] startwlanap.sh[828]: iperf3: exiting
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project am64xx-evm ttyS2
    
    Arago 2021.09 am64xx-evm ttyS2
    
    am64xx-evm login: [  132.800534] Initializing XFRM netlink socket
    [  135.755487] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilte.
    [  135.804369] Bridge firewalling registered
    [  137.330872] process 'docker/tmp/qemu-check970851799/check' started with executable stack
    
    am64xx-evm login: root
    root@am64xx-evm:~# 
    
    3007.config.txt
    power5_3_3.sh.txt
    #!/bin/bash
    echo "power up SK RPI expansion connector script"
    echo "run from SK"
    
    cd /sys/class/gpio/
    echo 507 > export
    cd gpio507
    cat direction
    echo out > direction
    cat value
    echo 1 > value
    
    cd /sys/class/gpio/
    echo 508 > export
    cd gpio508
    cat direction
    echo out > direction
    cat value
    echo 1 > value
    
    echo "done"
    

  • Also including dts

    k3-am642-sk.dts.txt
    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/leds/common.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible =  "ti,am642-sk", "ti,am642";
    	model = "Texas Instruments AM642 SK";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	vusb_main: fixed-regulator-vusb-main5v0 {
    		/* USB MAIN INPUT 5V DC */
    		compatible = "regulator-fixed";
    		regulator-name = "vusb_main5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vcc_3v3_sys: fixedregulator-vcc-3v3-sys {
    		/* output of LP8733xx */
    		compatible = "regulator-fixed";
    		regulator-name = "vcc_3v3_sys";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vusb_main>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vcc_3v3_sys>;
    		gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    	};
    
    	com8_ls_en: regulator-1 {
    		compatible = "regulator-fixed";
    		regulator-name = "com8_ls_en";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		pinctrl-0 = <&main_com8_ls_en_pins_default>;
    		pinctrl-names = "default";
    		gpio = <&main_gpio0 62 GPIO_ACTIVE_LOW>;
    	};
    
    	wlan_en: regulator-2 {
    		/* output of SN74AVC4T245RSVR */
    		compatible = "regulator-fixed";
    		regulator-name = "wlan_en";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		enable-active-high;
    		pinctrl-0 = <&main_wlan_en_pins_default>;
    		pinctrl-names = "default";
    		vin-supply = <&com8_ls_en>;
    		gpio = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;
    	};
    
    	led-controller {
    		compatible = "gpio-leds";
    
    		led-0 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <1>;
    			gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-1 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <2>;
    			gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-2 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <3>;
    			gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-3 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <4>;
    			gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-4 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <5>;
    			gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-5 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <6>;
    			gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-6 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <7>;
    			gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-7 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_HEARTBEAT;
    			function-enumerator = <8>;
    			linux,default-trigger = "heartbeat";
    			gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    		};
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am64-sk:green:heartbeat";
    			gpios = <&main_gpio0 60 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    
        main_spi0_pins_default: main-spi0-pins-default {
               pinctrl-single,pins = <
                       AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
                       AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
                       AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
                       AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
               >;
        };
    
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */
    			AM64X_IOPAD(0x028c, PIN_INPUT, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x011c, PIN_INPUT, 4) /* (AA13) PRG1_PRU1_GPO5.RGMII1_RD0 */
    			AM64X_IOPAD(0x0128, PIN_INPUT, 4) /* (U12) PRG1_PRU1_GPO8.RGMII1_RD1 */
    			AM64X_IOPAD(0x0150, PIN_INPUT, 4) /* (Y13) PRG1_PRU1_GPO18.RGMII1_RD2 */
    			AM64X_IOPAD(0x0154, PIN_INPUT, 4) /* (V12) PRG1_PRU1_GPO19.RGMII1_RD3 */
    			AM64X_IOPAD(0x00d8, PIN_INPUT, 4) /* (W13) PRG1_PRU0_GPO8.RGMII1_RXC */
    			AM64X_IOPAD(0x00cc, PIN_INPUT, 4) /* (V13) PRG1_PRU0_GPO5.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    	main_wlan_en_pins_default: main-wlan-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c4, PIN_OUTPUT_PULLUP, 7) /* (V8) GPIO0_48 */
    		>;
    	};
    
    	main_com8_ls_en_pins_default: main-com8-ls-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (U7) PRG1_PRU0_GPO17.GPIO0_62 */
    		>;
    	};
    
    	main_wlan_pins_default: main-wlan-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */
    		>;
    	};
    
    	main_bten_default: main-bten-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (P17) GPIO0_49 */
    		>;
    	};
    
    	main_btuart_rts_sel_default: main-btuart-rts-sel-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x100, PIN_OUTPUT, 7) /* (V7) GPIO0_63 */
    		>;
    	};
    
    	main_uart4_default: main-uart4-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x250, PIN_INPUT, 1)	/* (A17) UART4_RXD */
    			AM64X_IOPAD(0x254, PIN_OUTPUT, 1)	/* (B17) UART4_TXD */
    			AM64X_IOPAD(0x64, PIN_INPUT, 2)		/* (R16) UART4_CTS */
    			AM64X_IOPAD(0x7c, PIN_OUTPUT, 2)	/* (R17) UART4_RTS */
    		>;
    	};
    
    	usr_led_pins_default: usr-led-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0F4, PIN_OUTPUT, 7) /* (Y9) PRG1_PRU0_GPO15.GPIO0_60 */
    		>;
    	};
    
    };
    
    &main_gpio0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_btuart_rts_sel_default>;
    
    	gpio0-63 {
    		gpio-hog;
    		gpios = <63 GPIO_ACTIVE_HIGH>;
    		output-high;
    		line-name = "btuart_rts_sel";
    	};
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    &main_uart1 {
    	/* main_uart1 is reserved for firmware usage */
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart4_default &main_bten_default>;
    	status = "okay";
    
    	bluetooth {
    		compatible = "ti,wl1835-st";
    		enable-gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
    	};
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@70 {
    		compatible = "nxp,pca9538";
    		reg = <0x70>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    				  "PRU_DETECT", "MMC1_SD_EN",
    				  "VPP_LDO_EN", "RPI_PS_3V3_En",
    				  "RPI_PS_5V0_En", "RPI_HAT_DETECT";
    	};
    
    	exp2: gpio@60 {
    		compatible = "ti,tpic2810";
    		reg = <0x60>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    	};
    };
    
    &main_i2c3 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &sdhci0 {
    	vmmc-supply = <&wlan_en>;
    	bus-width = <4>;
    	non-removable;
    	cap-power-off-card;
    	keep-power-in-suspend;
    	ti,driver-strength-ohm = <50>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    	wlcore: wlcore@2 {
    		compatible = "ti,wl1837";
    		reg = <2>;
    		pinctrl-0 = <&main_wlan_pins_default>;
    		pinctrl-names = "default";
    		interrupt-parent = <&main_gpio0>;
    		interrupts = <46 IRQ_TYPE_EDGE_FALLING>;
    	};
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_USB>;
    };
    
    &serdes_wiz0 {
    	status = "okay";
    };
    
    &serdes0 {
    	serdes0_usb_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_USB3>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &usbss0 {
    	ti,vbus-divider;
    };
    
    &usb0 {
    	dr_mode = "host";
    	maximum-speed = "super-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    	phys = <&serdes0_usb_link>;
    	phy-names = "cdns3,usb3-phy";
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    
    	cpsw3g_phy1: ethernet-phy@1 {
    		reg = <1>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &pcie0_rc {
    	status = "disabled";
    };
    
    &pcie0_ep {
    	status = "disabled";
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &tscadc0 {
    	status = "disabled";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	status = "disabled";
    };
    
    &main_mcan1 {
    	status = "disabled";
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	status = "disabled";
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J3 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    
    &main_spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_spi0_pins_default>;
        ti,pindir-d0-out-d1-in = <1>;
        eeprom@0 {
               compatible = "microchip,93lc46b";
               reg = <0>;
               spi-max-frequency = <1000000>;
               spi-cs-high;
               data-size = <16>;
        };
    };
    

  • Update  I modified DTS, moved main_spi0_pins_default within &man_pmx0.  Sees to helped to alleviate spi boot issues.  I also turned on SPI debug in config.  Still, no luck seeing SPI or 310x devices

    5001.k3-am642-sk.dts.txt
    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/leds/common.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible =  "ti,am642-sk", "ti,am642";
    	model = "Texas Instruments AM642 SK";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	vusb_main: fixed-regulator-vusb-main5v0 {
    		/* USB MAIN INPUT 5V DC */
    		compatible = "regulator-fixed";
    		regulator-name = "vusb_main5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vcc_3v3_sys: fixedregulator-vcc-3v3-sys {
    		/* output of LP8733xx */
    		compatible = "regulator-fixed";
    		regulator-name = "vcc_3v3_sys";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vusb_main>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vcc_3v3_sys>;
    		gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    	};
    
    	com8_ls_en: regulator-1 {
    		compatible = "regulator-fixed";
    		regulator-name = "com8_ls_en";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		pinctrl-0 = <&main_com8_ls_en_pins_default>;
    		pinctrl-names = "default";
    		gpio = <&main_gpio0 62 GPIO_ACTIVE_LOW>;
    	};
    
    	wlan_en: regulator-2 {
    		/* output of SN74AVC4T245RSVR */
    		compatible = "regulator-fixed";
    		regulator-name = "wlan_en";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		enable-active-high;
    		pinctrl-0 = <&main_wlan_en_pins_default>;
    		pinctrl-names = "default";
    		vin-supply = <&com8_ls_en>;
    		gpio = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;
    	};
    
    	led-controller {
    		compatible = "gpio-leds";
    
    		led-0 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <1>;
    			gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-1 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <2>;
    			gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-2 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <3>;
    			gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-3 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <4>;
    			gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-4 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <5>;
    			gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-5 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <6>;
    			gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-6 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <7>;
    			gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-7 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_HEARTBEAT;
    			function-enumerator = <8>;
    			linux,default-trigger = "heartbeat";
    			gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    		};
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am64-sk:green:heartbeat";
    			gpios = <&main_gpio0 60 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */
    			AM64X_IOPAD(0x028c, PIN_INPUT, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
        main_spi0_pins_default: main-spi0-pins-default {
               pinctrl-single,pins = <
                       AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
                       AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
                       AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
                       AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
               >;
        };
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x011c, PIN_INPUT, 4) /* (AA13) PRG1_PRU1_GPO5.RGMII1_RD0 */
    			AM64X_IOPAD(0x0128, PIN_INPUT, 4) /* (U12) PRG1_PRU1_GPO8.RGMII1_RD1 */
    			AM64X_IOPAD(0x0150, PIN_INPUT, 4) /* (Y13) PRG1_PRU1_GPO18.RGMII1_RD2 */
    			AM64X_IOPAD(0x0154, PIN_INPUT, 4) /* (V12) PRG1_PRU1_GPO19.RGMII1_RD3 */
    			AM64X_IOPAD(0x00d8, PIN_INPUT, 4) /* (W13) PRG1_PRU0_GPO8.RGMII1_RXC */
    			AM64X_IOPAD(0x00cc, PIN_INPUT, 4) /* (V13) PRG1_PRU0_GPO5.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    	main_wlan_en_pins_default: main-wlan-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c4, PIN_OUTPUT_PULLUP, 7) /* (V8) GPIO0_48 */
    		>;
    	};
    
    	main_com8_ls_en_pins_default: main-com8-ls-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (U7) PRG1_PRU0_GPO17.GPIO0_62 */
    		>;
    	};
    
    	main_wlan_pins_default: main-wlan-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */
    		>;
    	};
    
    	main_bten_default: main-bten-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (P17) GPIO0_49 */
    		>;
    	};
    
    	main_btuart_rts_sel_default: main-btuart-rts-sel-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x100, PIN_OUTPUT, 7) /* (V7) GPIO0_63 */
    		>;
    	};
    
    	main_uart4_default: main-uart4-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x250, PIN_INPUT, 1)	/* (A17) UART4_RXD */
    			AM64X_IOPAD(0x254, PIN_OUTPUT, 1)	/* (B17) UART4_TXD */
    			AM64X_IOPAD(0x64, PIN_INPUT, 2)		/* (R16) UART4_CTS */
    			AM64X_IOPAD(0x7c, PIN_OUTPUT, 2)	/* (R17) UART4_RTS */
    		>;
    	};
    
    	usr_led_pins_default: usr-led-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0F4, PIN_OUTPUT, 7) /* (Y9) PRG1_PRU0_GPO15.GPIO0_60 */
    		>;
    	};
    
    };
    
    &main_gpio0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_btuart_rts_sel_default>;
    
    	gpio0-63 {
    		gpio-hog;
    		gpios = <63 GPIO_ACTIVE_HIGH>;
    		output-high;
    		line-name = "btuart_rts_sel";
    	};
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    &main_uart1 {
    	/* main_uart1 is reserved for firmware usage */
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart4_default &main_bten_default>;
    	status = "okay";
    
    	bluetooth {
    		compatible = "ti,wl1835-st";
    		enable-gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
    	};
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@70 {
    		compatible = "nxp,pca9538";
    		reg = <0x70>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    				  "PRU_DETECT", "MMC1_SD_EN",
    				  "VPP_LDO_EN", "RPI_PS_3V3_En",
    				  "RPI_PS_5V0_En", "RPI_HAT_DETECT";
    	};
    
    	exp2: gpio@60 {
    		compatible = "ti,tpic2810";
    		reg = <0x60>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    	};
    };
    
    &main_i2c3 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &sdhci0 {
    	vmmc-supply = <&wlan_en>;
    	bus-width = <4>;
    	non-removable;
    	cap-power-off-card;
    	keep-power-in-suspend;
    	ti,driver-strength-ohm = <50>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    	wlcore: wlcore@2 {
    		compatible = "ti,wl1837";
    		reg = <2>;
    		pinctrl-0 = <&main_wlan_pins_default>;
    		pinctrl-names = "default";
    		interrupt-parent = <&main_gpio0>;
    		interrupts = <46 IRQ_TYPE_EDGE_FALLING>;
    	};
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_USB>;
    };
    
    &serdes_wiz0 {
    	status = "okay";
    };
    
    &serdes0 {
    	serdes0_usb_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_USB3>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &usbss0 {
    	ti,vbus-divider;
    };
    
    &usb0 {
    	dr_mode = "host";
    	maximum-speed = "super-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    	phys = <&serdes0_usb_link>;
    	phy-names = "cdns3,usb3-phy";
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    
    	cpsw3g_phy1: ethernet-phy@1 {
    		reg = <1>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &pcie0_rc {
    	status = "disabled";
    };
    
    &pcie0_ep {
    	status = "disabled";
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &tscadc0 {
    	status = "disabled";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	status = "disabled";
    };
    
    &main_mcan1 {
    	status = "disabled";
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	status = "disabled";
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J3 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    
    &main_spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_spi0_pins_default>;
        ti,pindir-d0-out-d1-in = <1>;
        eeprom@0 {
               compatible = "microchip,93lc46b";
               reg = <0>;
               spi-max-frequency = <1000000>;
               spi-cs-high;
               data-size = <16>;
        };
    };
    
    8625.boot_log.txt
    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imd
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imd
    
    
    U-Boot 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    
    SoC:   AM64X SR1.0 GP
    Model: Texas Instruments AM642 SK
    Board: AM64-SKEVM rev E3
    DRAM:  2 GiB
    NAND:  0 MiB
    MMC:   mmc@fa00000: 1
    Loading Environment from FAT... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 MAC addresses don't match:
    Address in ROM is               ac:1f:0f:8b:27:c6
    Address in environment is       70:ff:76:1e:ab:40
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0 
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    1490 bytes read in 3 ms (484.4 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    1 bytes read in 3 ms (0 Bytes/s)
    Already setup.
    19147264 bytes read in 797 ms (22.9 MiB/s)
    41948 bytes read in 5 ms (8 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-g2c23e6c538 (root@brett-mini) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile3
    [    0.000000] Machine model: Texas Instruments AM642 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    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.2
    [    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tit
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1398832K/2097152K available (11200K kernel code, 1162K rwdata, 4308K rodata, 1920K init, 431K bss, 174032)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000006] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008566] Console: colour dummy device 80x25
    [    0.013163] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023838] pid_max: default: 32768 minimum: 301
    [    0.028665] LSM: Security Framework initializing
    [    0.033453] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041032] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051045] rcu: Hierarchical SRCU implementation.
    [    0.056312] Platform MSI: msi-controller@1820000 domain created
    [    0.062698] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.071982] EFI services will not be available.
    [    0.076888] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.090528] Detected VIPT I-cache on CPU1
    [    0.090568] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.090584] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.090652] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.090787] smp: Brought up 1 node, 2 CPUs
    [    0.120168] SMP: Total of 2 processors activated.
    [    0.124981] CPU features: detected: 32-bit EL0 Support
    [    0.130252] CPU features: detected: CRC32 instructions
    [    0.143787] CPU: All CPU(s) started at EL2
    [    0.147994] alternatives: patching kernel code
    [    0.153822] devtmpfs: initialized
    [    0.164671] KASLR disabled due to lack of seed
    [    0.169482] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.179460] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.204396] pinctrl core: initialized pinctrl subsystem
    [    0.210481] DMI not present or invalid.
    [    0.215216] NET: Registered protocol family 16
    [    0.221726] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.229103] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.237203] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.246065] thermal_sys: Registered thermal governor 'step_wise'
    [    0.246073] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.252697] cpuidle: using governor menu
    [    0.263661] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.270672] ASID allocator initialised with 65536 entries
    [    0.304314] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.311206] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.318059] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.324907] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.333200] cryptd: max_cpu_qlen set to 1000
    [    0.341153] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR1.0 JTAGID[0x0bb3802f] Detected
    [    0.350401] vcc_3v3_sys: supplied by vusb_main5v0
    [    0.356872] iommu: Default domain type: Translated 
    [    0.362321] SCSI subsystem initialized
    [    0.366829] mc: Linux media interface: v0.10
    [    0.371232] videodev: Linux video capture interface: v2.00
    [    0.376938] pps_core: LinuxPPS API ver. 1 registered
    [    0.382012] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.391360] PTP clock support registered
    [    0.395419] EDAC MC: Ver: 3.0.0
    [    0.399562] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.406532] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.413359] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.420880] FPGA manager framework
    [    0.424496] Advanced Linux Sound Architecture Driver Initialized.
    [    0.431931] clocksource: Switched to clocksource arch_sys_counter
    [    0.438489] VFS: Disk quotas dquot_6.6.0
    [    0.442580] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.456185] NET: Registered protocol family 2
    [    0.460952] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.469977] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.478785] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.487020] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [    0.494797] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.501742] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.508647] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.516154] NET: Registered protocol family 1
    [    0.521246] RPC: Registered named UNIX socket transport module.
    [    0.527329] RPC: Registered udp transport module.
    [    0.532142] RPC: Registered tcp transport module.
    [    0.536956] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.543548] NET: Registered protocol family 44
    [    0.548107] PCI: CLS 0 bytes, default 64
    [    0.552985] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.566296] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.577382] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.584154] NFS: Registering the id_resolver key type
    [    0.589525] Key type id_resolver registered
    [    0.593806] Key type id_legacy registered
    [    0.597989] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.604844] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.612659] 9p: Installing v9fs 9p2000 file system support
    [    0.662040] Key type asymmetric registered
    [    0.666252] Asymmetric key parser 'x509' registered
    [    0.671303] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [    0.678873] io scheduler mq-deadline registered
    [    0.683501] io scheduler kyber registered
    [    0.690111] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.696615] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.703588] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [    0.720178] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.743626] brd: module loaded
    [    0.755321] loop: module loaded
    [    0.759620] megasas: 07.714.04.00-rc1
    [    0.768243] tun: Universal TUN/TAP device driver, 1.6
    [    0.774177] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.780608] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.786732] sky2: driver version 1.30
    [    0.791831] VFIO - User Level meta-driver version: 0.3
    [    0.798416] i2c /dev entries driver
    [    0.803583] sdhci: Secure Digital Host Controller Interface driver
    [    0.809931] sdhci: Copyright(c) Pierre Ossman
    [    0.815156] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.822478] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.829142] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.837525] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.842126] optee: revision 3.20 (8e74d476)
    [    0.858799] optee: dynamic shared memory is enabled
    [    0.868546] optee: initialized driver
    [    0.874989] NET: Registered protocol family 17
    [    0.879748] 9pnet: Installing 9P2000 support
    [    0.884210] Key type dns_resolver registered
    [    0.908954] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
    [    0.917176] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [    0.972078] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    0.978548] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    0.988261] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    0.995724] pca953x 1-0070: supply vcc not found, using dummy regulator
    [    1.002689] pca953x 1-0070: using no AI
    [    1.028935] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.036156] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.042361] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [    1.052112] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [    1.060936] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.083359] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.091095] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.101408] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.116310] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.127419] printk: console [ttyS2] disabled
    [    1.131888] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [    1.140655] printk: console [ttyS2] enabled
    [    1.140655] printk: console [ttyS2] enabled
    [    1.149103] printk: bootconsole [ns16550a0] disabled
    [    1.149103] printk: bootconsole [ns16550a0] disabled
    [    1.160546] omap8250 2840000.serial: PM domain pd:155 will not be powered off
    [    1.168131] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 17, base_baud = 3000000) is a 8250
    [    1.176816] serial serial0: tty port ttyS6 registered
    [    1.185656] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.190684] 7 cmdlinepart partitions found on MTD device fc40000.spi.0
    [    1.197209] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.202605] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.209433] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.216065] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.222687] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.229082] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.236168] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.242821] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.263142] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.307935] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.318237] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.326358] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
    [    1.334570] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 36
    [    1.347453] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.354584] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.361271] pps pps0: new PPS source ptp0
    [    1.365731] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.376475] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.387507] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.396722] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    1.403849] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    1.416855] gpio-478 (btuart_rts_sel): hogged as output/high
    [    1.430276] vdd_mmc1: supplied by vcc_3v3_sys
    [    1.435909] wlan_en: supplied by com8_ls_en
    [    1.444380] mmc1: CQHCI version 5.10
    [    1.448221] mmc0: CQHCI version 5.10
    [    1.450005] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    1.470340] ALSA device list:
    [    1.473378]   No soundcards found.
    [    1.497175] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.497180] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.513113] Waiting for root device PARTUUID=43a182f7-02...
    [    1.521929] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
    [    1.541513] mmc0: new SDIO card at address 0001
    [    1.548684] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    1.556229] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
    [    1.565548]  mmcblk1: p1 p2
    [    1.872474] EXT4-fs (mmcblk1p2): 1 orphan inode deleted
    [    1.877767] EXT4-fs (mmcblk1p2): recovery complete
    [    1.896639] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    1.904859] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.916153] devtmpfs: mounted
    [    1.920609] Freeing unused kernel memory: 1920K
    [    1.925275] Run /sbin/init as init process
    [    2.093838] systemd[1]: System time before build time, advancing clock.
    [    2.152568] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -L)
    [    2.174669] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2021.09!
    
    [    2.218993] systemd[1]: Set hostname to <am64xx-evm>.
    [    2.561402] systemd[1]: /lib/systemd/system/startwlansta.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    2.576305] systemd[1]: /lib/systemd/system/startwlanap.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    2.605967] systemd[1]: Binding to IPv6 address not available since kernel does not support IPv6.
    [    2.614946] systemd[1]: Binding to IPv6 address not available since kernel does not support IPv6.
    [    2.638950] systemd[1]: /lib/systemd/system/irqbalanced.service:6: Unknown key name 'ConditionCPUs' in section 'Unit', ignori.
    [    2.683207] systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/.
    [    2.837880] random: systemd: uninitialized urandom read (16 bytes read)
    [    2.849421] systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    [    2.872194] random: systemd: uninitialized urandom read (16 bytes read)
    [    2.881260] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    2.904187] random: systemd: uninitialized urandom read (16 bytes read)
    [    2.913286] systemd[1]: Created slice system-syslog\x2dng.slice.
    [  OK  ] Created slice system-syslog\x2dng.slice.
    [    2.938549] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    2.960630] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password ��…ts to Console Directory Watch.
    [    2.984549] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R��…uests to Wall Directory Watch.
    [    3.008503] systemd[1]: Reached target Paths.
    [  OK  ] Reached target Paths.
    [    3.024252] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    3.044242] systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    [    3.060271] systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    [    3.087814] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    3.112429] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    3.140335] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    3.164651] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    3.192383] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    3.204916] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    3.229147] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    3.245271] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    3.269063] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    3.292774] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    3.322563] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    3.346315] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    3.374465] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    3.403390] systemd[1]: Mounting Temporary Directory (/tmp)...
             Mounting Temporary Directory (/tmp)...
    [    3.427384] systemd[1]: Starting Create list of static device nodes for the current kernel...
             Starting Create list of st��…odes for the current kernel...
    [    3.458207] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...
    [    3.472700] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    3.491649] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    3.522545] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    3.542578] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    [    3.565246] cryptodev: loading out-of-tree module taints kernel.
    [    3.570426] systemd[1]: Starting udev Coldplug all Devices...
    [    3.575006] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
             Starting udev Coldplug all Devices...
    [    3.596089] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [    3.608157] cryptodev: disagrees about version of symbol fd_install
    [    3.617359] systemd[1]: Started RPC Bind.
    [  OK  ] Started RPC Bind.
    [    3.629078] cryptodev: Unknown symbol fd_install (err -22)
    [    3.629656] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [    3.643777] systemd[1]: Mounted Huge Pages File System.
    [    3.648189] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [  OK  ] Mounted Huge Pages File System.
    [    3.676323] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    [    3.676440] systemd[1]: Mounted POSIX Message Queue File System.
    [    3.692221] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [  OK  ] Mounted POSIX Message Queue File System.
    [    3.708141] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [    3.717169] systemd[1]: Mounted Kernel Debug File System.
    [    3.720151] cryptodev: disagrees about version of symbol __close_fd
    [  OK  ] Mounted Kernel Debug File System.
    [    3.738086] cryptodev: Unknown symbol __close_fd (err -22)
    [    3.744154] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [    3.752652] systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.[    3.758592] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    
    [  OK  ] Mounted Temporary Directory (/tmp).
    [  OK  ] Started Create list of sta��… nodes for the current kernel.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [  OK  ] Started Remount Root and Kernel File Systems.
    [    3.885341] random: systemd-journal: uninitialized urandom read (16 bytes read)
    [    3.887343] random: systemd: uninitialized urandom read (16 bytes read)
             Mounting Kernel Configuration File System.[    3.910054] random: systemd-journal: uninitialized urandom read (16 bytes )
    ..
             Starting Flush Journal to Persistent Storage...
             Starting Apply Kernel Variables...
    [    3.971832] systemd-journald[166]: Received client request to flush runtime journal.
             Starting Create Static Device Nodes in /dev...
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Started Flush Journal to Persistent Storage.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /media/ram...
             Mounting /var/volatile...
             Starting udev Kernel Device Manager...
    [  OK  ] Mounted /media/ram.
    [  OK  ] Mounted /var/volatile.
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
             Starting Create Volatile Files and Directories...
    [  OK  ] Started udev Kernel Device Manager.
    [  OK  ] Started Create Volatile Files and Directories.
             Starting Network Time Synchronization...
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Started udev Coldplug all Devices.
             Starting udev Wait for Complete Device Initialization...
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
    [    5.066465] random: systemd: uninitialized urandom read (16 bytes read)
    [    5.238713] 93xx46 spi1.0: 16-bit eeprom 
    [    5.245762] random: crng init done
    [    5.249450] random: 64 urandom warning(s) missed due to ratelimiting
    [  OK  ] Started Load/Save Random Seed.
    [    5.539069] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    5.548868] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [    5.558726] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [    5.591596] remoteproc remoteproc0: 5000000.m4fss is available
    [    5.612112] remoteproc remoteproc0: powering up 5000000.m4fss
    [    5.617970] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 86084
    [    5.632166]  remoteproc0#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [    5.641803]  remoteproc0#vdev0buffer: registered virtio0 (type 7)
    [    5.650014] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [    5.700413] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    5.701371] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    5.719660] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    5.779545] platform 78000000.r5f: configured R5F for remoteproc mode
    [    5.858573] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    5.937831] remoteproc remoteproc1: 78000000.r5f is available
    [    6.007295] platform 78200000.r5f: configured R5F for remoteproc mode
    [    6.014356] remoteproc remoteproc1: powering up 78000000.r5f
    [    6.020111] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [    6.043062]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [    6.054721] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    6.060444]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [    6.069433] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    6.077994] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [    6.085172] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    6.136878] remoteproc remoteproc2: 78200000.r5f is available
    [    6.171354] remoteproc remoteproc2: powering up 78200000.r5f
    [    6.177444] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [    6.196408]  remoteproc2#vdev0buffer: assigned reserved memory node r5f-dma-memory@a1000000
    [    6.212429] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    6.224169]  remoteproc2#vdev0buffer: registered virtio2 (type 7)
    [    6.235999] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [    6.249500] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    6.266116] platform 78400000.r5f: configured R5F for remoteproc mode
    [    6.292644] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    6.339766] remoteproc remoteproc3: 78400000.r5f is available
    [    6.373073] remoteproc remoteproc3: powering up 78400000.r5f
    [    6.378922] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [    6.402400] platform 78600000.r5f: configured R5F for remoteproc mode
    [    6.409871]  remoteproc3#vdev0buffer: assigned reserved memory node r5f-dma-memory@a2000000
    [    6.423683] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    6.429495]  remoteproc3#vdev0buffer: registered virtio3 (type 7)
    [    6.440042] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [    6.447274] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    6.466505] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    6.483183] remoteproc remoteproc4: 78600000.r5f is available
    [    6.520312] remoteproc remoteproc4: powering up 78600000.r5f
    [    6.526274] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [    6.540135]  remoteproc4#vdev0buffer: assigned reserved memory node r5f-dma-memory@a3000000
    [    6.549338] virtio_rpmsg_bus virtio4: rpmsg host is online
    [    6.560236]  remoteproc4#vdev0buffer: registered virtio4 (type 7)
    [    6.566518] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [    6.579178] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [    7.858698] remoteproc remoteproc5: 30034000.pru is available
    [    7.913872] remoteproc remoteproc6: 30004000.rtu is available
    [    7.960436] remoteproc remoteproc7: 3000a000.txpru is available
    [    7.976703] remoteproc remoteproc8: 30038000.pru is available
    [    7.989631] remoteproc remoteproc9: 30006000.rtu is available
    [    8.003310] remoteproc remoteproc10: 3000c000.txpru is available
    [    8.016942] remoteproc remoteproc11: 300b4000.pru is available
    [    8.026109] remoteproc remoteproc12: 30084000.rtu is available
    [    8.034907] remoteproc remoteproc13: 3008a000.txpru is available
    [    8.044039] remoteproc remoteproc14: 300b8000.pru is available
    [    8.051327] remoteproc remoteproc15: 30086000.rtu is available
    [    8.061548] remoteproc remoteproc16: 3008c000.txpru is available
    [    8.329446] usbcore: registered new interface driver usbfs
    [    8.335374] usbcore: registered new interface driver hub
    [    8.340975] usbcore: registered new device driver usb
    [    8.388134] cdns3: Unknown symbol usb_role_switch_unregister (err -2)
    [    8.394811] cdns3: Unknown symbol usb_add_gadget (err -2)
    [    8.400945] cdns3: Unknown symbol usb_role_switch_get_drvdata (err -2)
    [    8.408139] cdns3: Unknown symbol usb_ep_set_maxpacket_limit (err -2)
    [    8.414981] cdns3: Unknown symbol usb_gadget_udc_reset (err -2)
    [    8.421149] cdns3: Unknown symbol usb_role_switch_register (err -2)
    [    8.427612] cdns3: Unknown symbol usb_gadget_set_state (err -2)
    [    8.433751] cdns3: Unknown symbol usb_del_gadget (err -2)
    [    8.439294] cdns3: Unknown symbol usb_initialize_gadget (err -2)
    [    8.445532] cdns3: Unknown symbol usb_gadget_giveback_request (err -2)
    [    8.452219] cdns3: Unknown symbol usb_gadget_map_request_by_dev (err -2)
    [    8.459209] cdns3: Unknown symbol usb_gadget_unmap_request_by_dev (err -2)
    [  OK  ] Created slice system-systemd\x2dfsck.slice.
    [    8.489918] cdns3: Unknown symbol usb_role_switch_unregister (err -2)
    [    8.496569] cdns3: Unknown symbol usb_add_gadget (err -2)
    [    8.502129] cdns3: Unknown symbol usb_role_switch_get_drvdata (err -2)
    [    8.508810] cdns3: Unknown symbol usb_ep_set_maxpacket_limit (err -2)
    [    8.515596] cdns3: Unknown symbol usb_gadget_udc_reset (err -2)
    [    8.521827] cdns3: Unknown symbol usb_role_switch_register (err -2)
    [    8.528199] cdns3: Unknown symbol usb_gadget_set_state (err -2)
    [    8.534321] cdns3: Unknown symbol usb_del_gadget (err -2)
    [    8.539870] cdns3: Unknown symbol usb_initialize_gadget (err -2)
    [    8.546126] cdns3: Unknown symbol usb_gadget_giveback_request (err -2)
    [    8.552866] cdns3: Unknown symbol usb_gadget_map_request_by_dev (err -2)
    [    8.560032] cdns3: Unknown symbol usb_gadget_unmap_request_by_dev (err -2)
    [  OK  ] Found device /dev/mmcblk1p1.
    [  OK  ] Started udev Wait for Complete Device Initialization.
    [  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Started Timer service to update the IP on OLED each 10s.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
             Starting Docker Socket for the API.
    [  OK  ] Listening on dropbear.socket.
             Starting Reboot and dump vmcore via kexec...
             Starting File System Check on /dev/mmcblk1p1...
    [  OK  ] Listening on Docker Socket for the API.
    [  OK  ] Started Reboot and dump vmcore via kexec.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Job spooling tools.
    [  OK  ] Started Periodic Command Scheduler.
    [  OK  ] Started D-Bus System Message Bus.
             Starting Ethernet Bridge Filtering Tables...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
    [  OK  ] Started irqbalance daemon.
             Starting Matrix GUI...
             Starting startwlanap...
             Starting startwlansta...
             Starting System Logger Daemon "default" instance...
             Starting Login Service...
    [  OK  ] Started TEE Supplicant.
             Starting telnetd.service...
    [  OK  ] Started startwlansta.
    [  OK  ] Started startwlanap.
    [    9.339185] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [  OK  ] Started File System Check on /dev/mmcblk1p1.
    [  OK  ] Started Ethernet Bridge Filtering Tables.
    [    9.467711] startwlansta.sh[588]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started IPv6 Packet Filtering Framework.
    [  OK  ] Started IPv4 Packet Filtering Framework.
    [  OK  ] Started Matrix GUI.
    [  OK  ] Started telnetd.service.
    [  OK  ] Reached target Network (Pre).
             Mounting /run/media/mmcblk1p1...
             Starting LSB: Expand Rootfs of boot device...
             Starting syslog.service...
             Starting Network Service...
    [  OK  ] Started System Logger Daemon "default" instance.
    [    9.646066] startwlanap.sh[589]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Mounted /run/media/mmcblk1p1.
    [    9.686480] startwlansta.sh[598]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [    9.691292] startwlanap.sh[599]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started Network Service.
             Starting Wait for Network to be Configured...
             Starting Network Name Resolution...
    [   10.326314] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [   10.404567] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [  OK  ] Started LSB: Expand Rootfs of boot device.
    [  OK  ] Started syslog.service.
    [   10.556337] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [   10.624631] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [  OK  ] Started Login Service.
    [   10.951253] startwlanap.sh[622]: nl80211 not found.
    [   11.092234] startwlanap.sh[627]: nl80211 not found.
    [   11.197986] startwlanap.sh[632]: nl80211 not found.
    [  OK  ] Started Network Name Resolution.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Host and Network Name Lookups.
             Starting Avahi mDNS/DNS-SD Stack...
             Starting Enable and configure wl18xx bluetooth stack...
    [  OK  ] Started NFS status monitor for NFSv2/3 locking..
             Starting Simple Network Ma��…ent Protocol (SNMP) Daemon....
             Starting Permit User Sessions...
    [  OK  ] Started Vsftpd ftp daemon.
    [   11.642333] startwlanap.sh[644]: adding wlan1 interface
    [   11.676172] startwlanap.sh[645]: ls: cannot access '/sys/class/ieee80211/': No such file or directory
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Getty on tty1.
    [  OK  ] Started Serial Getty on ttyS1.
    [  OK  ] Started Serial Getty on ttyS2.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
    [   11.840555] startwlanap.sh[650]: nl80211 not found.
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service' for details.
    [  OK  ] Started Enable and configure wl18xx bluetooth stack.
    [   11.963044] startwlanap.sh[660]: Configuration file: /usr/share/wl18xx/hostapd.conf
    [   11.988892] startwlanap.sh[660]: nl80211: 'nl80211' generic netlink not found
    [   11.989849] startwlanap.sh[660]: Failed to initialize driver 'nl80211'
    [   11.990570] startwlanap.sh[660]: wlan1: interface state UNINITIALIZED->DISABLED
    [   11.991463] startwlanap.sh[660]: wlan1: AP-DISABLED
    [   11.992276] startwlanap.sh[660]: wlan1: CTRL-EVENT-TERMINATING
    [   11.994629] startwlanap.sh[660]: hostapd_free_hapd_data: Interface wlan1 wasn't started
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [  OK  ] Started Simple Network Man��…ement Protocol (SNMP) Daemon..
    [   12.966047] startwlanap.sh[673]: SIOCSIFADDR: No such device
    [   12.988894] startwlanap.sh[673]: wlan1: ERROR while getting interface flags: No such device
    [   13.012892] startwlanap.sh[673]: SIOCSIFNETMASK: No such device
    [   13.037193] startwlanap.sh[673]: wlan1: ERROR while getting interface flags: No such device
    [   13.254669] startwlanap.sh[715]: modprobe: FATAL: Module ip_tables not found in directory /lib/modules/5.10.168-g2c23e6c538
    [   13.263374] startwlanap.sh[708]: iptables v1.8.4 (legacy): can't initialize iptables table `nat': Table does not exist (do yo)
    [   13.263886] startwlanap.sh[708]: Perhaps iptables or your kernel needs to be upgraded.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            bash
            bc
            binutils
            cifs-utils
            coreutils-stdbuf
            coreutils
            cpio
            cpp-symlinks
            cpp
            dosfstools
            elfutils
            g++-symlinks
            g++
            gawk
            gcc-symlinks
            gcc
            gdb
            gdbserver
            gettext
            gstreamer1.0-libav
            gzip
            hidapi
            less
            libasm1
            libbfd
            libdw1
            libelf1
            libgdbm-compat4
            libgdbm6
            libgettextlib
            libgettextsrc
            libgmp10
            libidn2-0
            libmpc3
            libmpfr6
            libreadline8
            libunistring2
            m4
            make
            nettle
            parted
            tar
            which
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [  OK  ] Started Print notice about GPLv3 packages.
    [   14.291806] startwlanap.sh[823]: iperf3: error - unable to start listener for connections: Cannot assign requested address
    [   14.308574] startwlanap.sh[823]: iperf3: exiting
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project am64xx-evm ttyS2
    
    Arago 2021.09 am64xx-evm ttyS2
    
    am64xx-evm login: root
    

  • Hi Brett,

    what is this "./power5_3_3.sh" script? Can you post it here? Also did you verify power is properly applied to your external chip?

    Then, can you use a logic analyzer to instrument all of the SPI signals for signs of activity during boot-up?

    Thanks, Andreas

  • I've re-attached the power script.  Its just a simple script to export the signals and enable them for 5 and 3.3v.  I would like to enable these in the DTS at boot, prior to the I2C driver startup, which controls the power enables.  Can you help with this?  I have verified correct power (after boot).

    I will apply external power (temporarily) and look at SPI signals and direction of D0 and D1.

    Thank you 

    8168.power5_3_3.sh.txt
    #!/bin/bash
    echo "power up SK RPI expansion connector script"
    echo "run from SK"
    
    cd /sys/class/gpio/
    echo 507 > export
    cd gpio507
    cat direction
    echo out > direction
    cat value
    echo 1 > value
    
    cd /sys/class/gpio/
    echo 508 > export
    cd gpio508
    cat direction
    echo out > direction
    cat value
    echo 1 > value
    
    echo "done"
    

  • Hi Brett,

    I would like to enable these in the DTS at boot, prior to the I2C driver startup, which controls the power enables.  Can you help with this?

    you can use the "GPIO Hog" functionality in the device tree to drive certain I/Os to static levels during boot, see:
    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/gpio/gpio.txt?h=ti-linux-6.1.y#n189

    Here's an example to look at, doing this with the I2C-connected IO expander module on SK-AM62 board (similar to the SK-AM64). I think the I/O expander I2C address is the same, but you'll need to port/update the individual lines you want to enable to power up the 5V and 3.3V supplies.

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-rpi-hdr-pwm.dtso?h=ti-linux-6.1.y#n32

    Can you please give this a try. Once you got this aspect working and validated successfully I'd appreciate if you could post the solution here.

    Thanks, Andreas

  • Here's an example to look at, doing this with the I2C-connected IO expander module on SK-AM62 board (similar to the SK-AM64). I think the I/O expander I2C address is the same, but you'll need to port/update the individual lines you want to enable to power up the 5V and 3.3V supplies.

    Here's another example, for SK-AM62, enabling one of the power rails on the user expansion header. Probably an even better starting point:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-mcspi-loopback.dtso?h=ti-linux-6.1.y#n27

    &main_i2c1 {
    	gpio@22 {
    		en_rpi_3v3 {
    			gpio-hog;
    			gpios = <5 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "EXP_PS_3V3_EN";
    		};
    	};
    };

    Regards, Andreas

  • Thanks Andreas,

    I now have the 3.3 and 5 v working correctly on boot (see dts).

    Unfortunately, spi J4 is still not working.  I have attached probes to the spi clock and there is no activity during boot.

    thanks for your help

    3276.k3-am642-sk.dts.txt
    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include <dt-bindings/leds/common.h>
    #include "k3-am642.dtsi"
    
    
    / {
    	compatible =  "ti,am642-sk", "ti,am642";
    	model = "Texas Instruments AM642 SK";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	vusb_main: fixed-regulator-vusb-main5v0 {
    		/* USB MAIN INPUT 5V DC */
    		compatible = "regulator-fixed";
    		regulator-name = "vusb_main5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vcc_3v3_sys: fixedregulator-vcc-3v3-sys {
    		/* output of LP8733xx */
    		compatible = "regulator-fixed";
    		regulator-name = "vcc_3v3_sys";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vusb_main>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vcc_3v3_sys>;
    		gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
    	};
    
    	com8_ls_en: regulator-1 {
    		compatible = "regulator-fixed";
    		regulator-name = "com8_ls_en";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		pinctrl-0 = <&main_com8_ls_en_pins_default>;
    		pinctrl-names = "default";
    		gpio = <&main_gpio0 62 GPIO_ACTIVE_LOW>;
    	};
    
    	wlan_en: regulator-2 {
    		/* output of SN74AVC4T245RSVR */
    		compatible = "regulator-fixed";
    		regulator-name = "wlan_en";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		enable-active-high;
    		pinctrl-0 = <&main_wlan_en_pins_default>;
    		pinctrl-names = "default";
    		vin-supply = <&com8_ls_en>;
    		gpio = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;
    	};
    
    	led-controller {
    		compatible = "gpio-leds";
    
    		led-0 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <1>;
    			gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-1 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <2>;
    			gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-2 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <3>;
    			gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-3 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <4>;
    			gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-4 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <5>;
    			gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-5 {
    			color = <LED_COLOR_ID_RED>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <6>;
    			gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-6 {
    			color = <LED_COLOR_ID_GREEN>;
    			function = LED_FUNCTION_INDICATOR;
    			function-enumerator = <7>;
    			gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led-7 {
    			color = <LED_COLOR_ID_AMBER>;
    			function = LED_FUNCTION_HEARTBEAT;
    			function-enumerator = <8>;
    			linux,default-trigger = "heartbeat";
    			gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    		};
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am64-sk:green:heartbeat";
    			gpios = <&main_gpio0 60 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
        clocks {
              spi_uart_clk: osc_max310x {
                  compatible = "fixed-clock";
                  #clock-cells = <0>;
                  clock-frequency = <3686400>;
           };
        };
    
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */
    			AM64X_IOPAD(0x028c, PIN_INPUT, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
        main_spi0_pins_default: main-spi0-pins-default {
               pinctrl-single,pins = <
                       AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
                       AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
                       AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
                       AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
               >;
        };
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x011c, PIN_INPUT, 4) /* (AA13) PRG1_PRU1_GPO5.RGMII1_RD0 */
    			AM64X_IOPAD(0x0128, PIN_INPUT, 4) /* (U12) PRG1_PRU1_GPO8.RGMII1_RD1 */
    			AM64X_IOPAD(0x0150, PIN_INPUT, 4) /* (Y13) PRG1_PRU1_GPO18.RGMII1_RD2 */
    			AM64X_IOPAD(0x0154, PIN_INPUT, 4) /* (V12) PRG1_PRU1_GPO19.RGMII1_RD3 */
    			AM64X_IOPAD(0x00d8, PIN_INPUT, 4) /* (W13) PRG1_PRU0_GPO8.RGMII1_RXC */
    			AM64X_IOPAD(0x00cc, PIN_INPUT, 4) /* (V13) PRG1_PRU0_GPO5.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    	main_wlan_en_pins_default: main-wlan-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c4, PIN_OUTPUT_PULLUP, 7) /* (V8) GPIO0_48 */
    		>;
    	};
    
    	main_com8_ls_en_pins_default: main-com8-ls-en-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (U7) PRG1_PRU0_GPO17.GPIO0_62 */
    		>;
    	};
    
    	main_wlan_pins_default: main-wlan-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */
    		>;
    	};
    
    	main_bten_default: main-bten-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (P17) GPIO0_49 */
    		>;
    	};
    
    	main_btuart_rts_sel_default: main-btuart-rts-sel-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x100, PIN_OUTPUT, 7) /* (V7) GPIO0_63 */
    		>;
    	};
    
    	main_uart4_default: main-uart4-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x250, PIN_INPUT, 1)	/* (A17) UART4_RXD */
    			AM64X_IOPAD(0x254, PIN_OUTPUT, 1)	/* (B17) UART4_TXD */
    			AM64X_IOPAD(0x64, PIN_INPUT, 2)		/* (R16) UART4_CTS */
    			AM64X_IOPAD(0x7c, PIN_OUTPUT, 2)	/* (R17) UART4_RTS */
    		>;
    	};
    
    	usr_led_pins_default: usr-led-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0F4, PIN_OUTPUT, 7) /* (Y9) PRG1_PRU0_GPO15.GPIO0_60 */
    		>;
    	};
    
    };
    
    &main_gpio0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_btuart_rts_sel_default>;
    
    	gpio0-63 {
    		gpio-hog;
    		gpios = <63 GPIO_ACTIVE_HIGH>;
    		output-high;
    		line-name = "btuart_rts_sel";
    	};
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    &main_uart1 {
    	/* main_uart1 is reserved for firmware usage */
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart4_default &main_bten_default>;
    	status = "okay";
    
    	bluetooth {
    		compatible = "ti,wl1835-st";
    		enable-gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
    	};
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@70 {
    		compatible = "nxp,pca9538";
    		reg = <0x70>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
    				  "PRU_DETECT", "MMC1_SD_EN",
    				  "VPP_LDO_EN", "RPI_PS_3V3_En",
    				  "RPI_PS_5V0_En", "RPI_HAT_DETECT";
    		exp_en_rpi_3v {
    			gpio-hog;
    			gpios = <5 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "EXP_PS_3V3_EN";
    		};
    		exp_en_rpi_5v {
    			gpio-hog;
    			gpios = <6 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "RPI_PS_5V0_En";
    		};
        };
    
    	exp2: gpio@60 {
    		compatible = "ti,tpic2810";
    		reg = <0x60>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    	};
    
    };
    
    &main_i2c3 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &sdhci0 {
    	vmmc-supply = <&wlan_en>;
    	bus-width = <4>;
    	non-removable;
    	cap-power-off-card;
    	keep-power-in-suspend;
    	ti,driver-strength-ohm = <50>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    	wlcore: wlcore@2 {
    		compatible = "ti,wl1837";
    		reg = <2>;
    		pinctrl-0 = <&main_wlan_pins_default>;
    		pinctrl-names = "default";
    		interrupt-parent = <&main_gpio0>;
    		interrupts = <46 IRQ_TYPE_EDGE_FALLING>;
    	};
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_USB>;
    };
    
    &serdes_wiz0 {
    	status = "okay";
    };
    
    &serdes0 {
    	serdes0_usb_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_USB3>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &usbss0 {
    	ti,vbus-divider;
    };
    
    &usb0 {
    	dr_mode = "host";
    	maximum-speed = "super-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    	phys = <&serdes0_usb_link>;
    	phy-names = "cdns3,usb3-phy";
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    
    	cpsw3g_phy1: ethernet-phy@1 {
    		reg = <1>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &pcie0_rc {
    	status = "disabled";
    };
    
    &pcie0_ep {
    	status = "disabled";
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &tscadc0 {
    	status = "disabled";
    };
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	status = "disabled";
    };
    
    &main_mcan1 {
    	status = "disabled";
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	status = "disabled";
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J3 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    
    &main_spi0 {
        pinctrl-names = "default";
        //pinctrl-0 = <&main_spi0_pins_default>;
        //ti,pindir-d0-out-d1-in = <1>;
    
        eeprom@0 {
               compatible = "microchip,93lc46b";
               reg = <0>;
               spi-max-frequency = <1000000>;
               spi-cs-high;
               data-size = <16>;
        };
    
    };
    
    &main_spi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_spi0_pins_default>;
    
        max310x: max310x@0 {
              compatible = "maxim,max310x";
              reg = <0>;
              clocks = <&spi_uart_clk>;
              clock-names = "osc";
              interrupt-parent = <&main_gpio0>;
              interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
              gpio-controller;
              #gpio-cells = <2>;
        };
    };
    
    3276.boot_log.txt
    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:45:51 +0000)
    EEPROM not available at 80, trying to read at 81
    Resetting on cold boot to workaround ErrataID:i2331
    resetting ...
    
    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:45:51 +0000)
    EEPROM not available at 80, trying to read at 81
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    SPL initial stack usage: 13424 bytes
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE:  BL31: Built : 13:45:56, Feb 27 2023
    I/TC: 
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 4
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Fixing SA2UL firewall owner for GP device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the imaged
    
    
    U-Boot 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    
    SoC:   AM64X SR1.0 GP
    Model: Texas Instruments AM642 SK
    Board: AM64-SKEVM rev E3
    DRAM:  2 GiB
    NAND:  0 MiB
    MMC:   mmc@fa00000: 1
    Loading Environment from FAT... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 MAC addresses don't match:
    Address in ROM is               ac:1f:0f:8b:27:c6
    Address in environment is       70:ff:76:1e:ab:40
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0 
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    1490 bytes read in 3 ms (484.4 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    1 bytes read in 3 ms (0 Bytes/s)
    Already setup.
    19214848 bytes read in 800 ms (22.9 MiB/s)
    42389 bytes read in 4 ms (10.1 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-g2c23e6c538 (root@brett-mini) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Ar3
    [    0.000000] Machine model: Texas Instruments AM642 SK
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    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.2
    [    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1398764K/2097152K available (11200K kernel code, 1164K rwdata, 4344K rodata, 1920K init, 434K bss, 174100K r)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000006] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008572] Console: colour dummy device 80x25
    [    0.013169] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023848] pid_max: default: 32768 minimum: 301
    [    0.028673] LSM: Security Framework initializing
    [    0.033465] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041041] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051030] rcu: Hierarchical SRCU implementation.
    [    0.056300] Platform MSI: msi-controller@1820000 domain created
    [    0.062694] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.071994] EFI services will not be available.
    [    0.076897] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.090506] Detected VIPT I-cache on CPU1
    [    0.090547] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.090563] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.090630] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.090766] smp: Brought up 1 node, 2 CPUs
    [    0.120147] SMP: Total of 2 processors activated.
    [    0.124959] CPU features: detected: 32-bit EL0 Support
    [    0.130230] CPU features: detected: CRC32 instructions
    [    0.143763] CPU: All CPU(s) started at EL2
    [    0.147973] alternatives: patching kernel code
    [    0.153798] devtmpfs: initialized
    [    0.165281] KASLR disabled due to lack of seed
    [    0.170111] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.180086] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.204919] pinctrl core: initialized pinctrl subsystem
    [    0.211123] DMI not present or invalid.
    [    0.215863] NET: Registered protocol family 16
    [    0.222366] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.229756] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.237851] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.246762] thermal_sys: Registered thermal governor 'step_wise'
    [    0.246768] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.260105] cpuidle: using governor menu
    [    0.264428] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.271443] ASID allocator initialised with 65536 entries
    [    0.308017] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.314888] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.321737] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.328582] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.336838] cryptd: max_cpu_qlen set to 1000
    [    0.345005] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR1.0 JTAGID[0x0bb3802f] Detected
    [    0.354475] vcc_3v3_sys: supplied by vusb_main5v0
    [    0.361213] iommu: Default domain type: Translated 
    [    0.366702] SCSI subsystem initialized
    [    0.371498] mc: Linux media interface: v0.10
    [    0.375909] videodev: Linux video capture interface: v2.00
    [    0.381649] pps_core: LinuxPPS API ver. 1 registered
    [    0.386723] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.396070] PTP clock support registered
    [    0.400120] EDAC MC: Ver: 3.0.0
    [    0.404367] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.411337] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.418193] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.425795] FPGA manager framework
    [    0.429453] Advanced Linux Sound Architecture Driver Initialized.
    [    0.436974] clocksource: Switched to clocksource arch_sys_counter
    [    0.443492] VFS: Disk quotas dquot_6.6.0
    [    0.447573] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.462144] NET: Registered protocol family 2
    [    0.466922] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.475912] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.484759] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.493008] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [    0.500779] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.507735] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.514639] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.522154] NET: Registered protocol family 1
    [    0.527245] RPC: Registered named UNIX socket transport module.
    [    0.533326] RPC: Registered udp transport module.
    [    0.538137] RPC: Registered tcp transport module.
    [    0.542949] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.549540] NET: Registered protocol family 44
    [    0.554098] PCI: CLS 0 bytes, default 64
    [    0.558995] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.572443] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.583842] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.590570] NFS: Registering the id_resolver key type
    [    0.595947] Key type id_resolver registered
    [    0.600234] Key type id_legacy registered
    [    0.604421] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.611273] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.619097] 9p: Installing v9fs 9p2000 file system support
    [    0.668745] Key type asymmetric registered
    [    0.672963] Asymmetric key parser 'x509' registered
    [    0.678025] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [    0.685593] io scheduler mq-deadline registered
    [    0.690224] io scheduler kyber registered
    [    0.697468] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.704845] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.714436] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [    0.732771] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.743741] max310x: entering _init max310x_uart_init... 
    [    0.749448] max310x: uart_register_driver ret:0 
    [    0.754270] max310x: max310x_uart_init: CONFIG_SPI_MASTER
    [    0.774741] brd: module loaded
    [    0.786910] loop: module loaded
    [    0.791426] megasas: 07.714.04.00-rc1
    [    0.796301] slram: not enough parameters.
    [    0.813462] tun: Universal TUN/TAP device driver, 1.6
    [    0.819428] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.825850] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.831969] sky2: driver version 1.30
    [    0.837807] VFIO - User Level meta-driver version: 0.3
    [    0.844515] i2c /dev entries driver
    [    0.849975] sdhci: Secure Digital Host Controller Interface driver
    [    0.856315] sdhci: Copyright(c) Pierre Ossman
    [    0.861292] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.868742] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.875474] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.884090] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.888724] optee: revision 3.20 (8e74d476)
    [    0.909698] optee: dynamic shared memory is enabled
    [    0.915167] optee: initialized driver
    [    0.921947] NET: Registered protocol family 17
    [    0.926695] 9pnet: Installing 9P2000 support
    [    0.931176] Key type dns_resolver registered
    [    0.961445] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
    [    0.969674] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [    1.026743] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    1.033196] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    1.043830] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.051788] pca953x 1-0070: supply vcc not found, using dummy regulator
    [    1.058769] pca953x 1-0070: using no AI
    [    1.085821] gpio-507 (EXP_PS_3V3_EN): hogged as output/high
    [    1.091781] gpio-508 (RPI_PS_5V0_En): hogged as output/high
    [    1.098332] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.105802] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.112085] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [    1.121905] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [    1.130780] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.155611] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.163285] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.173954] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.189082] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.201009] printk: console [ttyS2] disabled
    [    1.205512] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [    1.214279] printk: console [ttyS2] enabled
    [    1.214279] printk: console [ttyS2] enabled
    [    1.222723] printk: bootconsole [ns16550a0] disabled
    [    1.222723] printk: bootconsole [ns16550a0] disabled
    [    1.234460] omap8250 2840000.serial: PM domain pd:155 will not be powered off
    [    1.242113] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 17, base_baud = 3000000) is a 8250
    [    1.250832] serial serial0: tty port ttyS6 registered
    [    1.260218] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.265234] 7 cmdlinepart partitions found on MTD device fc40000.spi.0
    [    1.271756] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.277154] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.284073] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.290758] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.297563] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.304071] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.311226] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.318051] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.340249] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.384982] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.395544] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.403659] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
    [    1.411891] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 qu6
    [    1.424909] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.432040] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.438761] pps pps0: new PPS source ptp0
    [    1.443255] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.453989] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.465241] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.474498] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    1.481643] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    1.495117] gpio-478 (btuart_rts_sel): hogged as output/high
    [    1.509085] vdd_mmc1: supplied by vcc_3v3_sys
    [    1.515151] wlan_en: supplied by com8_ls_en
    [    1.525049] mmc1: CQHCI version 5.10
    [    1.525625] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    1.536408] mmc0: CQHCI version 5.10
    [    1.550041] ALSA device list:
    [    1.553034]   No soundcards found.
    [    1.581203] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.581208] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.598591] Waiting for root device PARTUUID=020ad39d-02...
    [    1.607473] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
    [    1.627101] mmc0: new SDIO card at address 0001
    [    1.653786] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    1.661383] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
    [    1.670768]  mmcblk1: p1 p2
    [    1.995991] EXT4-fs (mmcblk1p2): 1 orphan inode deleted
    [    2.001345] EXT4-fs (mmcblk1p2): 1 truncate cleaned up
    [    2.006485] EXT4-fs (mmcblk1p2): recovery complete
    [    2.030259] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    2.038484] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    2.049761] devtmpfs: mounted
    [    2.054195] Freeing unused kernel memory: 1920K
    [    2.058865] Run /sbin/init as init process
    [    2.232430] systemd[1]: System time before build time, advancing clock.
    [    2.598138] NET: Registered protocol family 10
    [    2.604021] Segment Routing with IPv6
    [    2.640281] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBC)
    [    2.662559] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2021.09!
    
    [    2.708213] systemd[1]: Set hostname to <am64xx-evm>.
    [    3.059349] systemd[1]: /lib/systemd/system/startwlansta.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    3.074178] systemd[1]: /lib/systemd/system/startwlanap.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    3.116838] systemd[1]: /lib/systemd/system/irqbalanced.service:6: Unknown key name 'ConditionCPUs' in section 'Unit', ignoring.
    [    3.160594] systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/, u.
    [    3.314167] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.325940] systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    [    3.349239] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.358364] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    3.381333] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.390443] systemd[1]: Created slice system-syslog\x2dng.slice.
    [  OK  ] Created slice system-syslog\x2dng.slice.
    [    3.415518] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    3.437713] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password ��…ts to Console Directory Watch.
    [    3.461613] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R��…uests to Wall Directory Watch.
    [    3.485552] systemd[1]: Reached target Paths.
    [  OK  ] Reached target Paths.
    [    3.505326] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    3.525320] systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    [    3.545338] systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    [    3.588051] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    3.609409] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    3.637304] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    3.661725] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    3.689648] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    3.698725] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    3.722095] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    3.738260] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    3.762121] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    3.785825] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    3.815661] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    3.839506] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    3.867342] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    3.896552] systemd[1]: Mounting Temporary Directory (/tmp)...
             Mounting Temporary Directory (/tmp)...
    [    3.920550] systemd[1]: Starting Create list of static device nodes for the current kernel...
             Starting Create list of st��…odes for the current kernel...
    [    3.951376] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...
    [    3.965690] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    3.984029] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    4.011177] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    4.034788] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems   4.048016] cryptodev: loading out-of-tree module taints kernel.
    [0m...
    [    4.066248] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
    [    4.075066] systemd[1]: Starting udev Coldplug all Devices...
             Starting udev Coldplug all Devices...
    [    4.098552] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [    4.110380] systemd[1]: Started RPC Bind.
    [    4.111505] cryptodev: disagrees about version of symbol fd_install
    [  OK  ] Started RPC Bind.
    [    4.133093] cryptodev: Unknown symbol fd_install (err -22)
    [    4.138697] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [    4.141615] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [    4.152892] systemd[1]: Mounted Huge Pages File System.
    [  OK  ] Mounted Huge Pages File System.[    4.158687] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    
    [    4.180028] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [    4.187518] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [    4.194237] cryptodev: disagrees about version of symbol __close_fd
    [    4.196569] systemd[1]: Mounted POSIX Message Queue File System.
    [    4.200552] cryptodev: Unknown symbol __close_fd (err -22)
    [    4.200717] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [  OK  ] Mounted POSIX Message Queue File System.
    [    4.238552] systemd[1]: Mounted Kernel Debug File System.
    [    4.245108] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [  OK  ] Mounted Kernel Debug File System.
    [    4.270168] systemd[1]: Mounted Temporary Directory (/tmp).
    [  OK  ] Mounted Temporary Directory (/tmp).
    [    4.297754] systemd[1]: Started Create list of static device nodes for the current kernel.
    [  OK  ] Started Create list of sta��… nodes for the current kernel.
    [    4.326430] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
    [    4.336810] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
    [    4.348122] systemd[1]: Failed to start Load Kernel Modules.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [    4.388801] systemd[1]: Started Remount Root and Kernel File Systems.
    [  OK  ] Started Remount Root and Kernel File Systems.
    [    4.418467] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
    [    4.433895] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.455280] systemd[1]: Mounting Kernel Configuration File System...
             Mounting Kernel Configuration File System...
    [    4.481838] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
    [    4.497459] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.510295] systemd[1]: Starting Apply Kernel Variables...
             Starting Apply Kernel Variables...
    [    4.529499] systemd[1]: Condition check resulted in Create System Users being skipped.
    [    4.541391] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.559472] systemd[1]: Starting Create Static Device Nodes in /dev...
             Starting Create Static Device Nodes in /dev...
    [    4.599199] systemd[1]: Mounted Kernel Configuration File System.
    [  OK  ] Mounted Kernel Configuration File System.
    [    4.630223] systemd[1]: Started Apply Kernel Variables.
    [  OK  ] Started Apply Kernel Variables.
    [    4.705260] systemd[1]: Started Create Static Device Nodes in /dev.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [    4.734158] systemd[1]: Reached target Local File Systems (Pre).
    [  OK  ] Reached target Local File Systems (Pre).
    [    4.770579] systemd[1]: Mounting /media/ram...
             Mounting /media/ram...
    [    4.803337] systemd[1]: Mounting /var/volatile...
             Mounting /var/volatile...
    [    4.832089] systemd[1]: Starting udev Kernel Device Manager...
             Starting udev Kernel Device Manager...
    [    4.862105] systemd[1]: Mounted /media/ram.
    [  OK  ] Mounted /media/ram.
    [    4.882488] systemd[1]: Mounted /var/volatile.
    [  OK  ] Mounted /var/volatile.
    [    4.898668] systemd[1]: Condition check resulted in Bind mount volatile /var/cache being skipped.
    [    4.910357] systemd[1]: Condition check resulted in Bind mount volatile /var/lib being skipped.
    [    4.931709] systemd[1]: Starting Load/Save Random Seed...
             Starting Load/Save Random Seed...
    [    4.957519] systemd[1]: Condition check resulted in Bind mount volatile /var/spool being skipped.
    [    4.968557] systemd[1]: Condition check resulted in Bind mount volatile /srv being skipped.
    [    4.981501] systemd[1]: Reached target Local File Systems.
    [  OK  ] Reached target Local File Systems.
    [    5.005562] systemd[1]: Condition check resulted in Rebuild Dynamic Linker Cache being skipped.
    [    5.017396] systemd[1]: Condition check resulted in Commit a transient machine-id on disk being skipped.
    [    5.069922] systemd[1]: Started udev Kernel Device Manager.
    [  OK  ] Started udev Kernel Device Manager.
    [    5.102132] systemd[1]: Started udev Coldplug all Devices.
    [  OK  ] Started udev Coldplug all Devices.
    [    5.132347] systemd[1]: Starting udev Wait for Complete Device Initialization...
             Starting udev Wait for Complete Device Initialization...
    [    5.514685] random: systemd-journal: uninitialized urandom read (16 bytes read)
    [    5.515074] systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.[    5.534107] random: systemd-journal: uninitialized urandom read (16 bytes read)
    
    [    5.550679] random: systemd-journal: uninitialized urandom read (16 bytes read)
             Starting Flush Journal to Persistent Storage...
    [    5.599527] systemd-journald[168]: Received client request to flush runtime journal.
    [  OK  ] Started Flush Journal to Persistent Storage.
             Starting Create Volatile Files and Directories...
    [  OK  ] Started Create Volatile Files and Directories.
             Starting Network Time Synchronization...
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
    [    6.300917] 93xx46 spi1.0: 16-bit eeprom 
    [    6.340805] random: crng init done
    [    6.344335] random: 64 urandom warning(s) missed due to ratelimiting
    [  OK  ] Started Load/Save Random Seed.
    [    6.478484] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    6.495226] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [    6.505506] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [    6.527786] remoteproc remoteproc0: 5000000.m4fss is available
    [    6.549397] remoteproc remoteproc0: powering up 5000000.m4fss
    [    6.555254] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 86084
    [    6.577350]  remoteproc0#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [    6.585983]  remoteproc0#vdev0buffer: registered virtio0 (type 7)
    [    6.592154] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [    6.783183] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    6.788762] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    6.799670] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    6.937219] platform 78000000.r5f: configured R5F for remoteproc mode
    [    6.967409] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    6.978214] remoteproc remoteproc1: 78000000.r5f is available
    [    6.991557] platform 78200000.r5f: configured R5F for remoteproc mode
    [    7.014521] remoteproc remoteproc1: powering up 78000000.r5f
    [    7.020819] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [    7.052938] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.062175]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.071306] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    7.077011]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [    7.083228] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [    7.092098] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    7.109855] remoteproc remoteproc2: 78200000.r5f is available
    [    7.140015] remoteproc remoteproc2: powering up 78200000.r5f
    [    7.141934] Bluetooth: Core ver 2.22
    [    7.145800] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [    7.157599] NET: Registered protocol family 31
    [    7.162165] Bluetooth: HCI device and connection manager initialized
    [    7.168692] Bluetooth: HCI socket layer initialized
    [    7.173708] Bluetooth: L2CAP socket layer initialized
    [    7.179773]  remoteproc2#vdev0buffer: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.180154] Bluetooth: SCO socket layer initialized
    [    7.193835] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    7.194457] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    7.206568]  remoteproc2#vdev0buffer: registered virtio2 (type 7)
    [    7.219975] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [    7.303162] Bluetooth: HCI UART driver ver 2.3
    [    7.307777] platform 78400000.r5f: configured R5F for remoteproc mode
    [    7.315871] Bluetooth: HCI UART protocol H4 registered
    [    7.317534] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.329349] Bluetooth: HCI UART protocol LL registered
    [    7.334953] Bluetooth: HCI UART protocol Broadcom registered
    [    7.340693] Bluetooth: HCI UART protocol QCA registered
    [    7.390668] remoteproc remoteproc3: 78400000.r5f is available
    [    7.405986] platform 78600000.r5f: configured R5F for remoteproc mode
    [    7.413289] remoteproc remoteproc3: powering up 78400000.r5f
    [    7.419182] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [    7.429433] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.438744]  remoteproc3#vdev0buffer: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.448493] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    7.457809]  remoteproc3#vdev0buffer: registered virtio3 (type 7)
    [    7.464478] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [    7.472009] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    7.479491] Bluetooth: hci0: change remote baud rate command in firmware
    [    7.492149] remoteproc remoteproc4: 78600000.r5f is available
    [    7.503897] remoteproc remoteproc4: powering up 78600000.r5f
    [    7.509686] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [    7.521880]  remoteproc4#vdev0buffer: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.531160] virtio_rpmsg_bus virtio4: rpmsg host is online
    [    7.538271]  remoteproc4#vdev0buffer: registered virtio4 (type 7)
    [    7.544550] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [    7.552310] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [    9.577709] remoteproc remoteproc5: 30034000.pru is available
    [    9.628015] remoteproc remoteproc6: 30004000.rtu is available
    [    9.647860] remoteproc remoteproc7: 3000a000.txpru is available
    [    9.655913] remoteproc remoteproc8: 30038000.pru is available
    [    9.668478] remoteproc remoteproc9: 30006000.rtu is available
    [    9.675387] remoteproc remoteproc10: 3000c000.txpru is available
    [    9.683804] remoteproc remoteproc11: 300b4000.pru is available
    [    9.695476] remoteproc remoteproc12: 30084000.rtu is available
    [    9.716128] remoteproc remoteproc13: 3008a000.txpru is available
    [    9.736446] remoteproc remoteproc14: 300b8000.pru is available
    [  OK  ] Listening on Load/Save RF ��…itch Status /dev/rfkill Watch.
             Starting Load/Save RF Kill Switch Status...
    [    9.814091] remoteproc remoteproc15: 30086000.rtu is available
    [  OK  ] Created slice system-systemd\x2dfsck.slice.
    [    9.851462] remoteproc remoteproc16: 3008c000.txpru is available
             Starting Load Kernel Modules...
    [   10.026033] cryptodev: disagrees about version of symbol crypto_skcipher_encrypt
    [  OK  ] Started Load/Save RF Kill Switch Status.
    [   10.045649] cryptodev: Unknown symbol crypto_skcipher_encrypt (err -22)
    [   10.057370] cryptodev: disagrees about version of symbol fd_install
    [   10.069106] cryptodev: Unknown symbol fd_install (err -22)
    [   10.078079] cryptodev: disagrees about version of symbol crypto_skcipher_setkey
    [   10.089202] cryptodev: Unknown symbol crypto_skcipher_setkey (err -22)
    [   10.098597] cryptodev: disagrees about version of symbol crypto_skcipher_decrypt
    [   10.114383] cryptodev: Unknown symbol crypto_skcipher_decrypt (err -22)
    [   10.121253] cryptodev: disagrees about version of symbol __close_fd
    [   10.138972] cryptodev: Unknown symbol __close_fd (err -22)
    [   10.144877] cryptodev: disagrees about version of symbol crypto_alloc_skcipher
    [   10.157217] cryptodev: Unknown symbol crypto_alloc_skcipher (err -22)
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [   10.229635] usbcore: registered new interface driver usbfs
    [   10.238737] usbcore: registered new interface driver hub
    [   10.247504] usbcore: registered new device driver usb
    [  OK  ] Found device /dev/mmcblk1p1.
             Starting File System Check on /dev/mmcblk1p1...
    [   10.452836] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [   10.458666] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
    [   10.467002] xhci-hcd xhci-hcd.0.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000002000010010
    [   10.476659] xhci-hcd xhci-hcd.0.auto: irq 532, io mem 0x0f410000
    [   10.483044] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [   10.488792] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [   10.496691] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
    [   10.503517] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [   10.512046] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   10.519404] usb usb1: Product: xHCI Host Controller
    [   10.524422] usb usb1: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    [   10.531298] usb usb1: SerialNumber: xhci-hcd.0.auto
    [   10.537550] hub 1-0:1.0: USB hub found
    [   10.541520] hub 1-0:1.0: 1 port detected
    [   10.546688] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   10.555136] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
    [   10.564043] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   10.571603] usb usb2: Product: xHCI Host Controller
    [   10.576753] usb usb2: Manufacturer: Linux 5.10.168-g2c23e6c538 xhci-hcd
    [   10.583683] usb usb2: SerialNumber: xhci-hcd.0.auto
    [   10.591554] hub 2-0:1.0: USB hub found
    [   10.597823] hub 2-0:1.0: 1 port detected
    [  OK  ] Started File System Check on /dev/mmcblk1p1.
             Mounting /run/media/mmcblk1p1...
    [  OK  ] Started udev Wait for Complete Device Initialization.
    [  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Started Timer service to update the IP on OLED each 10s.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
             Starting Docker Socket for the API.
    [  OK  ] Listening on dropbear.socket.
             Starting Reboot and dump vmcore via kexec...
    [  OK  ] Mounted /run/media/mmcblk1p1.
    [  OK  ] Listening on Docker Socket for the API.
    [  OK  ] Started Reboot and dump vmcore via kexec.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Job spooling tools.
             Starting Bluetooth service...
    [  OK  ] Started Periodic Command Scheduler.
    [  OK  ] Started D-Bus System Message Bus.
             Starting Ethernet Bridge Filtering Tables...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
    [  OK  ] Started irqbalance daemon.
             Starting Matrix GUI...
             Starting startwlanap...
             Starting startwlansta...
             Starting System Logger Daemon "default" instance...
             Starting Login Service...
    [  OK  ] Started TEE Supplicant.
             Starting telnetd.service...
    [  OK  ] Started Ethernet Bridge Filtering Tables.
    [  OK  ] Started IPv6 Packet Filtering Framework.
    [  OK  ] Started startwlansta.
    [  OK  ] Started startwlanap.
    [  OK  ] Started IPv4 Packet Filtering Framework.
    [  OK  ] Reached target Network (Pre).
             Starting Network Service...
    [  OK  ] Started Matrix GUI.
    [  OK  ] Started Bluetooth service.
    [  OK  ] Reached target Bluetooth.
    [   11.485839] startwlanap.sh[599]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [   11.487034] startwlanap.sh[601]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started telnetd.service.
             Starting LSB: Expand Rootfs of boot device...
             Starting syslog.service...
             Starting Hostname Service...
    [   11.778071] startwlansta.sh[623]: modprobe: FATAL: Module wl18xx not found in directory /lib/modules/5.10.168-g2c23e6c538
    [   11.834697] startwlansta.sh[624]: modprobe: FATAL: Module wlcore_sdio not found in directory /lib/modules/5.10.168-g2c23e6c538
    [  OK  ] Started System Logger Daemon "default" instance.
    [  OK  ] Started syslog.service.
    [  OK  ] Started Network Service.
             Starting Wait for Network to be Configured...
             Starting Network Name Resolution...
    [   12.632100] startwlanap.sh[636]: nl80211 not found.
    [   12.832873] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [   12.956890] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [   12.850714] startwlanap.sh[641]: nl80211 not found.
    [  OK  ] Started LSB: Expand Rootfs of boot device.
    [   13.153060] startwlanap.sh[648]: nl80211 not found.
    [  OK  ] Started Login Service.
    [   13.399071] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [   13.491909] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [   13.774422] NET: Registered protocol family 38
    [   13.781295] startwlanap.sh[653]: adding wlan1 interface
    [   13.833805] startwlanap.sh[656]: ls: cannot access '/sys/class/ieee80211/': No such file or directory
    [   13.943355] startwlanap.sh[657]: nl80211 not found.
    [   13.997741] startwlanap.sh[659]: Configuration file: /usr/share/wl18xx/hostapd.conf
    [   14.025649] startwlanap.sh[659]: nl80211: 'nl80211' generic netlink not found
    [   14.031519] startwlanap.sh[659]: Failed to initialize driver 'nl80211'
    [   14.033171] startwlanap.sh[659]: wlan1: interface state UNINITIALIZED->DISABLED
    [   14.035559] startwlanap.sh[659]: wlan1: AP-DISABLED
    [   14.040429] startwlanap.sh[659]: wlan1: CTRL-EVENT-TERMINATING
    [   14.044270] startwlanap.sh[659]: hostapd_free_hapd_data: Interface wlan1 wasn't started
    [  OK  ] Started Hostname Service.
    [  OK  ] Started Network Name Resolution.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Host and Network Name Lookups.
             Starting Avahi mDNS/DNS-SD Stack...
             Starting Enable and configure wl18xx bluetooth stack...
    [  OK  ] Started NFS status monitor for NFSv2/3 locking..
             Starting Simple Network Ma��…ent Protocol (SNMP) Daemon....
             Starting Permit User Sessions...
    [  OK  ] Started Vsftpd ftp daemon.
    [  OK  ] Started Enable and configure wl18xx bluetooth stack.
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Getty on tty1.
    [  OK  ] Started Serial Getty on ttyS1.
    [  OK  ] Started Serial Getty on ttyS2.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
    [   15.231265] startwlanap.sh[678]: SIOCSIFADDR: No such device
    [   15.231769] startwlanap.sh[678]: wlan1: ERROR while getting interface flags: No such device
    [   15.232323] startwlanap.sh[678]: SIOCSIFNETMASK: No such device
    [   15.232734] startwlanap.sh[678]: wlan1: ERROR while getting interface flags: No such device
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service' for details.
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [  OK  ] Started Simple Network Man��…ement Protocol (SNMP) Daemon..
    [   16.722998] startwlanap.sh[803]: iperf3: error - unable to start listener for connections: Cannot assign requested address
    [   16.723555] startwlanap.sh[803]: iperf3: exiting
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            bash
            bc
            binutils
            cifs-utils
            coreutils-stdbuf
            coreutils
            cpio
            cpp-symlinks
            cpp
            dosfstools
            elfutils
            g++-symlinks
            g++
            gawk
            gcc-symlinks
            gcc
            gdb
            gdbserver
            gettext
            gstreamer1.0-libav
            gzip
            hidapi
            less
            libasm1
            libbfd
            libdw1
            libelf1
            libgdbm-compat4
            libgdbm6
            libgettextlib
            libgettextsrc
            libgmp10
            libidn2-0
            libmpc3
            libmpfr6
            libreadline8
            libunistring2
            m4
            make
            nettle
            parted
            tar
            which
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [  OK  ] Started Print notice about GPLv3 packages.
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project am64xx-evm ttyS2
    
    Arago 2021.09 am64xx-evm ttyS2
    
    am64xx-evm login: [  134.116028] Initializing XFRM netlink socket
    [  136.106039] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter i.
    [  136.161420] Bridge firewalling registered
    [  137.742261] process 'docker/tmp/qemu-check242638343/check' started with executable stack
    
    am64xx-evm login: root
    root@am64xx-evm:~# 
    

  • update:  Here is the SPI device tree portion

    &main_spi1 {
        ti,spi-num-chipselects = <1>;
        pinctrl-names = "default";
        pinctrl-0 = <&main_spi0_pins_default>;
        ti,pindir-d0-out-d1-in;
        status = "okay";

       max3107: max3107@0 {
           compatible = "maxim,max3107";
           reg = <0>;
           clocks = <&spi_uart_clk>;
           clock-names = "osc";
           mode=<0>;
           spi-max-frequency=<5000000>;
           interrupt-parent = <&main_gpio0>;
           interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
           gpio-controller;
           #gpio-cells = <2>;
       };
    };

    and here is the corresponding boot messages:

    [ 1.520073] max310x: max310x_spi_probe: CONFIG_SPI_MASTER
    [ 1.525624] max310x: spi_setup: 0
    [ 1.529032] max310x: devtype: spi->dev.of_node
    [ 1.533654] max310x: max310x_probe
    [ 1.537144] max310x: max310x_probe: allocated port structure
    [ 1.542995] max310x: max310x_probe: after clock setup
    [ 1.548219] max310x: max310x_probe: after clk_prepare_enable
    [ 1.553957] max310x: max310x_probe: freq 3686400
    [ 1.558655] max310x: max3107_detect
    [ 1.562287] max310x: regmap_read ret: 0
    [ 1.566224] max310x spi2.0: MAX3107 ID 0x00 does not match
    [ 1.571704] max310x: max310x_probe: devtype->detect ret:-19
    [ 1.577359] max310x: max310x_probe ret: -19

  • Hi Brett,

    I now have the 3.3 and 5 v working correctly on boot (see dts).

    That's great to hear!

    Unfortunately, spi J4 is still not working.  I have attached probes to the spi clock and there is no activity during boot.

    Can you please look at the post here from a related thread regarding basic SPI setup/communication: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1263441/sk-am62-no-spi-signals-on-expansion-headers/4785932#4785932

    Somebody else was just able to get this to work.

    Can you please do another side-by-side comparison, and report back.

    Thanks!
    Andreas