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.

AM4378: SPI CS issue

Part Number: AM4378
Other Parts Discussed in Thread: AM4372

Hello,

I am using the spi-omap2-mcspi driver in Linux SDK version 4.3.0.5. I am trying to complete a SPI transfer, and the chip select should be driven low during this transfer. Instead, the chip select stays high and never is driven low. In the spi-omap2-mcspi.c file, I added a printk call in the omap2_mcspi_set_cs() function, so I can see that this function is called when a transfer is supposed to begin. I can also see that the force bit in the mcspi_chconf register is being set to 1. Any ideas on why the chip select isn't being set to 0?

  • Hi,

    One possible reason is incorrect pinmuxing of the CS pin.

  • I think I have them pinmuxed correctly, but here it is:

    spi_0_pins_default: spi_0_pins_default {
    pinctrl-single,pins = <
    AM4372_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* (P23) spi0_sclk.spi0_sclk */
    AM4372_IOPAD(0x954, PIN_INPUT | MUX_MODE0) /* (T22) spi0_d0.spi0_d0 */
    AM4372_IOPAD(0x958, PIN_OUTPUT | MUX_MODE0) /* (T21) spi0_d1.spi0_d1 */
    AM4372_IOPAD(0x95c, PIN_OUTPUT | MUX_MODE0) /* (T20) spi0_cs0.spi0_cs0 */
    >;
    };

    /* Optional sleep pin settings. Must manually enter values in the below skeleton. */
    spi_0_pins_sleep: spi_0_pins_sleep {
    pinctrl-single,pins = <
    AM4372_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* (P23) spi0_sclk.spi0_sclk */
    AM4372_IOPAD(0x954, PIN_INPUT | MUX_MODE0) /* (T22) spi0_d0.spi0_d0 */
    AM4372_IOPAD(0x958, PIN_OUTPUT | MUX_MODE0) /* (T21) spi0_d1.spi0_d1 */
    AM4372_IOPAD(0x95c, PIN_OUTPUT | MUX_MODE0) /* (T20) spi0_cs0.spi0_cs0 */
    >;
    };

    And here is the spi node. Let me know if you see anything that doesn't look right.

    &spi0 {
    compatible = "ti,omap4-mcspi";
    status = "okay";

    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&spi_0_pins_default>;
    pinctrl-1 = <&spi_0_pins_sleep>;

    #address-cells = <1>;
    #size-cells = <0>;
    ti,spi-num-cs = <1>;
    ti,hwmods = "spi0";

    dmas = <&edma 16 0
    &edma 17 0>;
    dma-names = "tx0", "rx0";

    spidev@0 {
    compatible = "rohm,dh2228fv";
    spi-max-frequency = <9000000>;
    reg = <0x0>;
    };
    };

  • Hi Tanner,

    the SDK you are using is 2 years old. Can you please try the current Linux SDK for AM437x to see if that makes any difference. More often than not general bug fixes and improvements in the Kernel tree over time can make a difference:

    http://software-dl.ti.com/processor-sdk-linux/esd/AM437X/latest/index_FDS.html

    Then, the Kernel v4.19 part of this SDK also has an AM437x-based SPI0 example including pinmux which you can leverage and use as a reference for hopefully a known-good starting point:

    https://git.ti.com/cgit/processor-sdk/processor-sdk-linux/tree/arch/arm/boot/dts/am437x-cm-t43.dts?h=processor-sdk-linux-4.19.y#n300

    Regards, Andreas

  • It's been a while since I've started from scratch with a new SDK. I downloaded it and ran the startup script, but I think I need to build the SDK as well, correct? I'm following the steps here and I tried running the bitbake command, but it fails with an error saying that it needs to use a python version > 2.7. But I have python 2.7 and 3.5 installed on my machine. I remembered that there was a patch related to python that I needed to run when I built the last SDK, and I tried running it again for the new SDK but it failed with the following errors:

    error: meta/recipes-devtools/python/python-3.5-manifest.inc: No such file or directory
    error: meta/recipes-devtools/python/python3_3.5.2.bb: No such file or directory

    Is there a new patch for the newer SDK?

  • Hi Tanner,

    for a quick test I would just do the following:

    • Create an SD card image with the SDK-included bin/create-sdcard.sh script
    • Manually build the Kernel (currently v4.19) from the folder that is part of the SDK after you updated the kernel configuration (create SDK config baseline via the ti_config_fragments/defconfig_builder.sh script in the Kernel directory) and DTS files per your needs - all the steps involved are standard
    • Populate/install the new Kernel, DTB files, and modules onto the SD card image created earlier

    As for building the entire image using Yocto/Bitbake, it may be good first trying out the steps from the documentation you found on a clean machine with a compatible Ubuntu image. Alternatively, use a VM inside your current machine for building (VirtualBox is free). Once you have this working you should be able to debug the issue you are seeing with Python by comparing against this known-good reference, probably also involving some online research.

    Regards, Andreas

  • I am using a custom board so there are also a lot of U-Boot changes that I need to make in order to get it working with the new SDK. Eventually I think it is a good idea to update to the new one, but I can't get my custom U-Boot stuff working and I don't really want to spend a ton of time looking into it right now if it's not necessary.

    Do you think that the older SDK is actually my problem? I understand that it is two years old but I have to imagine the SPI driver should still work with that SDK... I never got an answer about how my device tree looks - I think it looks pretty similar to the example you gave me, and all of the pinmuxing looks correct.

  • Hi Tanner,

    Tanner Hunsucker73 said:
    Do you think that the older SDK is actually my problem?

    Probably not but I am using the current SDK here and wanted to make sure we are looking at the same baseline as things such as DTS declarations/requirements sometimes change between Kernel versions (so we don't have another variable here).

    Your DTS looks good I think from the point of the current SDK although I don't know why you re-declare 'compatible' (shouldn't hurt though).

    A few things...

    1. Can you post a copy of your bootlog.
    2. Can you post a de-compiled version of your final DTB file (basically, run "dtc -I dtb your_dtb_file_name_here.dts > final_device_tree.dts") so we can look at everything that went in there throughout its entire include hierarchy.
    3. Then, can you post the output of 'cat /sys/kernel/debug/pinctrl/44e10800.pinmux-pinctrl-single/pinmux-pins'

    Regards, Andreas

  • Hi Andreas,

    In regards to the SDK versions, that makes sense in terms of eliminating a variable between our setups. I have still been trying to update to the newest version, but the more I get into it the more I remember the amount of U-Boot changes I needed to make. Some of which were some patches related to DDR that were provided to me by TI, but it appears those patches are no longer available. So in order to get that working I probably am going to need to create another E2E thread just related to that issue.

    I have attached a copy of my bootlog and the output to #3. However, when I tried to run the command in #2, I got the following error: FATAL ERROR: Blob has incorrect magic number.

    Pinmux settings per pin
    Format: pin (name): mux_owner gpio_owner hog?
    pin 0 (PIN0): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 1 (PIN1): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 2 (PIN2): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 3 (PIN3): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 4 (PIN4): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 5 (PIN5): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_deft
    pin 6 (PIN6): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_deft
    pin 7 (PIN7): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_deft
    pin 8 (PIN8): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 9 (PIN9): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 10 (PIN10): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 11 (PIN11): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 12 (PIN12): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 13 (PIN13): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 14 (PIN14): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 15 (PIN15): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 16 (PIN16): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_dt
    pin 17 (PIN17): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 18 (PIN18): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 19 (PIN19): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 20 (PIN20): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_dt
    pin 21 (PIN21): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypad_dt
    pin 22 (PIN22): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 23 (PIN23): 44e10800.pinmux (GPIO UNCLAIMED) function wlan_pins_default group wlan_pins_default
    pin 24 (PIN24): 48038000.mcasp (GPIO UNCLAIMED) function mcasp_0_pins_sleep group mcasp_0_pins_sleep
    pin 25 (PIN25): 48038000.mcasp (GPIO UNCLAIMED) function mcasp_0_pins_sleep group mcasp_0_pins_sleep
    pin 26 (PIN26): 48038000.mcasp (GPIO UNCLAIMED) function mcasp_0_pins_sleep group mcasp_0_pins_sleep
    pin 27 (PIN27): 48038000.mcasp (GPIO UNCLAIMED) function mcasp_0_pins_sleep group mcasp_0_pins_sleep
    pin 28 (PIN28): 44e10800.pinmux (GPIO UNCLAIMED) function wlan_pins_default group wlan_pins_default
    pin 29 (PIN29): 44e10800.pinmux (GPIO UNCLAIMED) function wlan_pins_default group wlan_pins_default
    pin 30 (PIN30): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 31 (PIN31): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 32 (PIN32): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 33 (PIN33): 4804c000.gpio (GPIO UNCLAIMED) function gpio_1_pins_default group gpio_1_pins_default
    pin 34 (PIN34): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 35 (PIN35): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 36 (PIN36): 481ac000.gpio (GPIO UNCLAIMED) function gpio_2_pins_default group gpio_2_pins_default
    pin 37 (PIN37): 481ac000.gpio (GPIO UNCLAIMED) function gpio_2_pins_default group gpio_2_pins_default
    pin 38 (PIN38): 481ac000.gpio (GPIO UNCLAIMED) function gpio_2_pins_default group gpio_2_pins_default
    pin 39 (PIN39): 481ac000.gpio (GPIO UNCLAIMED) function gpio_2_pins_default group gpio_2_pins_default
    pin 40 (PIN40): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 41 (PIN41): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 42 (PIN42): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 43 (PIN43): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 44 (PIN44): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 45 (PIN45): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 46 (PIN46): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 47 (PIN47): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 48 (PIN48): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 49 (PIN49): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 50 (PIN50): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 51 (PIN51): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 52 (PIN52): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 53 (PIN53): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 54 (PIN54): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 55 (PIN55): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 56 (PIN56): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 57 (PIN57): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 58 (PIN58): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 59 (PIN59): 4832a000.dss (GPIO UNCLAIMED) function dss_1_pins_default group dss_1_pins_default
    pin 60 (PIN60): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 61 (PIN61): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 62 (PIN62): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 63 (PIN63): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 64 (PIN64): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 65 (PIN65): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 66 (PIN66): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 67 (PIN67): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 68 (PIN68): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 69 (PIN69): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 70 (PIN70): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 71 (PIN71): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 72 (PIN72): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 73 (PIN73): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 74 (PIN74): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 75 (PIN75): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 76 (PIN76): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 77 (PIN77): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 78 (PIN78): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 79 (PIN79): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 80 (PIN80): 4a100000.ethernet (GPIO UNCLAIMED) function mii_1_pins_default group mii_1_pins_defat
    pin 81 (PIN81): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 82 (PIN82): 4a101000.mdio (GPIO UNCLAIMED) function mdio_1_pins_default group mdio_1_pins_default
    pin 83 (PIN83): 4a101000.mdio (GPIO UNCLAIMED) function mdio_1_pins_default group mdio_1_pins_default
    pin 84 (PIN84): 48030000.spi (GPIO UNCLAIMED) function spi_0_pins_default group spi_0_pins_default
    pin 85 (PIN85): 48030000.spi (GPIO UNCLAIMED) function spi_0_pins_default group spi_0_pins_default
    pin 86 (PIN86): 48030000.spi (GPIO UNCLAIMED) function spi_0_pins_default group spi_0_pins_default
    pin 87 (PIN87): 48030000.spi (GPIO UNCLAIMED) function spi_0_pins_default group spi_0_pins_default
    pin 88 (PIN88): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 89 (PIN89): 48300100.ecap (GPIO UNCLAIMED) function ecap_0_pins_default group ecap_0_pins_default
    pin 90 (PIN90): 44e09000.serial (GPIO UNCLAIMED) function uart_0_pins_default group uart_0_pins_defat
    pin 91 (PIN91): 44e09000.serial (GPIO UNCLAIMED) function uart_0_pins_default group uart_0_pins_defat
    pin 92 (PIN92): 44e09000.serial (GPIO UNCLAIMED) function uart_0_pins_default group uart_0_pins_defat
    pin 93 (PIN93): 44e09000.serial (GPIO UNCLAIMED) function uart_0_pins_default group uart_0_pins_defat
    pin 94 (PIN94): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 95 (PIN95): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 96 (PIN96): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 97 (PIN97): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 98 (PIN98): 44e0b000.i2c (GPIO UNCLAIMED) function i2c_0_pins_default group i2c_0_pins_default
    pin 99 (PIN99): 44e0b000.i2c (GPIO UNCLAIMED) function i2c_0_pins_default group i2c_0_pins_default
    pin 100 (PIN100): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 101 (PIN101): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 102 (PIN102): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 103 (PIN103): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 104 (PIN104): 4803c000.mcasp (GPIO UNCLAIMED) function mcasp_1_pins_sleep group mcasp_1_pins_slep
    pin 105 (PIN105): 4803c000.mcasp (GPIO UNCLAIMED) function mcasp_1_pins_sleep group mcasp_1_pins_slep
    pin 106 (PIN106): 4803c000.mcasp (GPIO UNCLAIMED) function mcasp_1_pins_sleep group mcasp_1_pins_slep
    pin 107 (PIN107): 4803c000.mcasp (GPIO UNCLAIMED) function mcasp_1_pins_sleep group mcasp_1_pins_slep
    pin 108 (PIN108): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 109 (PIN109): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 110 (PIN110): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 111 (PIN111): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 112 (PIN112): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 113 (PIN113): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 114 (PIN114): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 115 (PIN115): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 116 (PIN116): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 117 (PIN117): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 118 (PIN118): leds (GPIO UNCLAIMED) function leds_pins_default group leds_pins_default
    pin 119 (PIN119): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypadt
    pin 120 (PIN120): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypadt
    pin 121 (PIN121): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypadt
    pin 122 (PIN122): matrix_keypad0 (GPIO UNCLAIMED) function matrix_keypad_default group matrix_keypadt
    pin 123 (PIN123): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 124 (PIN124): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 125 (PIN125): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 126 (PIN126): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 127 (PIN127): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 128 (PIN128): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 129 (PIN129): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 130 (PIN130): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 131 (PIN131): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 132 (PIN132): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 133 (PIN133): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 134 (PIN134): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 135 (PIN135): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 136 (PIN136): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 137 (PIN137): 48320000.gpio (GPIO UNCLAIMED) function gpio_4_pins_default group gpio_4_pins_defat
    pin 138 (PIN138): 481a6000.serial (GPIO UNCLAIMED) function uart_3_pins_default group uart_3_pins_det
    pin 139 (PIN139): 481a6000.serial (GPIO UNCLAIMED) function uart_3_pins_default group uart_3_pins_det
    pin 140 (PIN140): 481a6000.serial (GPIO UNCLAIMED) function uart_3_pins_default group uart_3_pins_det
    pin 141 (PIN141): 481a6000.serial (GPIO UNCLAIMED) function uart_3_pins_default group uart_3_pins_det
    pin 142 (PIN142): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 143 (PIN143): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 144 (PIN144): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 145 (PIN145): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 146 (PIN146): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 147 (PIN147): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 148 (PIN148): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 149 (PIN149): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 150 (PIN150): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 151 (PIN151): 48322000.gpio (GPIO UNCLAIMED) function gpio_5_pins_default group gpio_5_pins_defat
    pin 152 (PIN152): 4802a000.i2c (GPIO UNCLAIMED) function i2c_1_pins_default group i2c_1_pins_default
    pin 153 (PIN153): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 154 (PIN154): 481ae000.gpio (GPIO UNCLAIMED) function gpio_3_pins_default group gpio_3_pins_defat
    pin 155 (PIN155): 4802a000.i2c (GPIO UNCLAIMED) function i2c_1_pins_default group i2c_1_pins_default
    pin 156 (PIN156): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 157 (PIN157): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 158 (PIN158): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 159 (PIN159): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 160 (PIN160): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 161 (PIN161): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 162 (PIN162): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 163 (PIN163): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 164 (PIN164): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 165 (PIN165): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 166 (PIN166): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 167 (PIN167): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 168 (PIN168): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 169 (PIN169): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 170 (PIN170): 44e10800.pinmux (GPIO UNCLAIMED) function debugss_1_pins_default group debugss_1_pt
    pin 171 (PIN171): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 172 (PIN172): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 173 (PIN173): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 174 (PIN174): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 175 (PIN175): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 176 (PIN176): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 177 (PIN177): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 178 (PIN178): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 179 (PIN179): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 180 (PIN180): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 181 (PIN181): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 182 (PIN182): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 183 (PIN183): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 184 (PIN184): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 185 (PIN185): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 186 (PIN186): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 187 (PIN187): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 188 (PIN188): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 189 (PIN189): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 190 (PIN190): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 191 (PIN191): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 192 (PIN192): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 193 (PIN193): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 194 (PIN194): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 195 (PIN195): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 196 (PIN196): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 197 (PIN197): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    pin 198 (PIN198): (MUX UNCLAIMED) (GPIO UNCLAIMED)
    
    

    U-Boot SPL 2017.01-00458-gccd1c34-dirty (Jan 03 2020 - 11:22:10)
    Trying to boot from MMC1
    SPL: Please implement spl_start_uboot() for your board
    SPL: Direct Linux boot not active!
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img
    
    
    U-Boot 2017.01-00458-gccd1c34-dirty (Jan 03 2020 - 11:22:10 -0600)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x UTI BOARD
    DRAM:  512 MiB
    PMIC:  TPS65218
    NAND:  0 MiB
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    Net:   Mac Addr = f0:b5:d1:3e:99:d0
    Could not get PHY for cpsw: addr 1
    cpsw
    Hit any key to stop autoboot:  0 
    ## Error: "findfdt" not defined
    reading uEnv.txt
    717 bytes read in 5 ms (139.6 KiB/s)
    Importing environment from mmc0 ...
    3642024 bytes read in 941 ms (3.7 MiB/s)
    55008 bytes read in 55 ms (976.6 KiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 8ffef000, end 8ffff6df ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 4.9.69-g9ce43c71ae (root@UTI-CPELNX-02) (gcc version 6.2.1 20161016 (Li0
    [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt:Machine model: TI AM437x UTI BOARD
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 48 MiB at 0x9d000000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM437x ES1.2 (sgx neon)
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyO0,115200n8 video=HDMI-A-1:800x600 root=/dev/nfs nfsrp
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 457892K/524288K available (7168K kernel code, 292K rwdata, 2384K rodata, 1024)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc0800000   (8160 kB)
    [    0.000000]       .init : 0xc0b00000 - 0xc0c00000   (1024 kB)
    [    0.000000]       .data : 0xc0c00000 - 0xc0c49088   ( 293 kB)
    [    0.000000]        .bss : 0xc0c49088 - 0xc0c8f7b4   ( 282 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000]  Build-time adjustment of leaf fanout to 32.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] L2C: platform modifies aux control register: 0x0e030000 -> 0x3e430000
    [    0.000000] L2C: DT/platform modifies aux control register: 0x0e030000 -> 0x3e430000
    [    0.000000] L2C-310 enabling early BRESP for Cortex-A9
    [    0.000000] OMAP L2C310: ROM does not support power control setting
    [    0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
    [    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
    [    0.000000] L2C-310: CACHE_ID 0x410000c9, AUX_CTRL 0x4e430000
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000012] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000030] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7963585194s
    [    0.000038] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000419] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327s
    [    0.000429] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000804] Console: colour dummy device 80x30
    [    0.000831] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.000837] This ensures that you still see kernel messages. Please
    [    0.000842] update your kernel commandline.
    [    0.000858] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
    [    0.060175] pid_max: default: 32768 minimum: 301
    [    0.060289] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.060300] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.061034] CPU: Testing write buffer coherency: ok
    [    0.061372] Setting up static identity map for 0x80100000 - 0x80100060
    [    0.062122] EFI services will not be available.
    [    0.062838] devtmpfs: initialized
    [    0.074306] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    [    0.074608] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191126044s
    [    0.074630] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.077831] pinctrl core: initialized pinctrl subsystem
    [    0.078894] NET: Registered protocol family 16
    [    0.080340] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.180185] cpuidle: using governor ladder
    [    0.210173] cpuidle: using governor menu
    [    0.217171] OMAP GPIO hardware version 0.1
    [    0.217785] omap_gpio 4804c000.gpio: could not find pctldev for node /ocp@44000000/l4_wkup@44c000e
    [    0.218125] omap_gpio 481ac000.gpio: could not find pctldev for node /ocp@44000000/l4_wkup@44c000e
    [    0.218414] omap_gpio 481ae000.gpio: could not find pctldev for node /ocp@44000000/l4_wkup@44c000e
    [    0.218698] omap_gpio 48320000.gpio: could not find pctldev for node /ocp@44000000/l4_wkup@44c000e
    [    0.218970] omap_gpio 48322000.gpio: could not find pctldev for node /ocp@44000000/l4_wkup@44c000e
    [    0.226385] No ATAGs?
    [    0.226412] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    [    0.226424] hw-breakpoint: maximum watchpoint size is 4 bytes.
    [    0.266774] edma 49000000.edma: TI EDMA DMA engine driver
    [    0.271626] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp@44000000/l4_wkup@44c00000e
    [    0.271682] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp@44000000/l4_wkup@44c00000e
    [    0.271825] media: Linux media interface: v0.10
    [    0.271875] Linux video capture interface: v2.00
    [    0.271914] pps_core: LinuxPPS API ver. 1 registered
    [    0.271921] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.>
    [    0.271941] PTP clock support registered
    [    0.271973] EDAC MC: Ver: 3.0.0
    [    0.272808] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.273147] Advanced Linux Sound Architecture Driver Initialized.
    [    0.274127] clocksource: Switched to clocksource timer1
    [    0.282306] NET: Registered protocol family 2
    [    0.282945] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.282988] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.283029] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.283118] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.283134] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.283256] NET: Registered protocol family 1
    [    0.283633] RPC: Registered named UNIX socket transport module.
    [    0.283646] RPC: Registered udp transport module.
    [    0.283652] RPC: Registered tcp transport module.
    [    0.283657] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.286075] workingset: timestamp_bits=14 max_order=17 bucket_order=3
    [    0.291219] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.291952] NFS: Registering the id_resolver key type
    [    0.291988] Key type id_resolver registered
    [    0.291995] Key type id_legacy registered
    [    0.292036] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.293613] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.293629] io scheduler noop registered
    [    0.293636] io scheduler deadline registered
    [    0.293746] io scheduler cfq registered (default)
    [    0.295616] pinctrl-single 44e10800.pinmux: 199 pins at pa f9e10800 size 796
    [    0.298522] backlight supply power not found, using dummy regulator
    [    0.344909] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
    [    0.347365] omap8250 44e09000.serial: No clock speed specified: using default: 48000000
    [    0.348088] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
    [    1.079229] console [ttyS0] enabled
    [    1.083168] omap8250 481a6000.serial: No clock speed specified: using default: 48000000
    [    1.091861] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 31, base_baud = 3000000) is a 8250
    [    1.102320] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    1.109212] [drm] Initialized
    [    1.113486] 4832a000.dss supply vdda_video not found, using dummy regulator
    [    1.120673] OMAP DSS rev 2.0
    [    1.123718] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
    [    1.132884] display supply vcc not found, using dummy regulator
    [    1.151570] brd: module loaded
    [    1.160538] loop: module loaded
    [    1.167253] libphy: Fixed MDIO Bus: probed
    [    1.186980] cpsw 4a100000.ethernet: Detected MACID = f0:b5:d1:3e:b3:83
    [    1.193636] cpsw 4a100000.ethernet: device node lookup for pps timer failed
    [    1.200712] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
    [    1.209388] mousedev: PS/2 mouse device common for all mice
    [    1.215491] i2c /dev entries driver
    [    1.220783] cpuidle: enable-method property 'ti,am4372' found operations
    [    1.284861] omap_hsmmc 47810000.mmc: RX DMA channel request failed
    [    1.295184] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.307263] NET: Registered protocol family 10
    [    1.312996] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    1.319711] NET: Registered protocol family 17
    [    1.324533] Key type dns_resolver registered
    [    1.329033] omap_voltage_late_init: Voltage driver support not added
    [    1.341631] omapdrm omapdrm.0: DMM not available, disable DMM support
    [    1.348267] mmc0: host does not support reading read-only switch, assuming write-enable
    [    1.356462] mmc0: new high speed SDHC card at address 1234
    [    1.363016] mmcblk0: mmc0:1234 SA16G 14.5 GiB 
    [    1.368357] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [    1.375189]  mmcblk0: p1 p2
    [    1.378742] [drm] No driver support for vblank timestamp query.
    [    1.466413] Console: switching to colour frame buffer device 128x37
    [    1.494607] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
    [    1.530273] GPIO line 147 (AVDD_EN) hogged as output/high
    [    1.579090] omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.585940] omap_i2c 4802a000.i2c: bus 1 rev0.12 at 100 kHz
    [    1.664178] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    [    1.670311] davinci_mdio 4a101000.mdio: detected phy mask fffffffd
    [    1.677204] libphy: 4a101000.mdio: probed
    [    1.681268] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver NS DP83848C 10/10Y
    [    1.695024] input: gpio-keys as /devices/platform/gpio-keys/input/input0
    [    1.702354] hctosys: unable to open rtc device (rtc0)
    [    1.708624] net eth0: initializing cpsw version 1.15 (0)
    [    1.713976] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
    [    1.720451] cpsw 4a100000.ethernet: ALE Table size 1024
    [    1.824516] NS DP83848C 10/100 Mbps PHY 4a101000.mdio:01: attached PHY driver [NS DP83848C 10/100)
    [    1.840211] cpts ptp bc clkid 0
    [    1.846296] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [    2.549969] random: fast init done
    [    3.924923] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
    [    3.944248] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [    3.974367] Sending DHCP requests ., OK
    [    4.064215] IP-Config: Got DHCP answer from 192.168.61.1, my address is 192.168.61.106
    [    4.072190] IP-Config: Complete:
    [    4.075503]      device=eth0, hwaddr=f0:b5:d1:3e:b3:83, ipaddr=192.168.61.106, mask=255.255.255.01
    [    4.085966]      host=192.168.61.106, domain=ULTRATEC.ENTERPRISE.local, nis-domain=(none)
    [    4.094235]      bootserver=0.0.0.0, rootserver=192.168.61.101, rootpath=     nameserver0=192.1680
    [    4.106631] vmmcwl_fixed: disabling
    [    4.110171] ALSA device list:
    [    4.113161]   No soundcards found.
    [    5.209795] VFS: Mounted root (nfs filesystem) on device 0:15.
    [    5.216655] devtmpfs: mounted
    [    5.221997] Freeing unused kernel memory: 1024K
    [    5.563245] systemd[1]: System time before build time, advancing clock.
    [    5.630316] systemd[1]: systemd 230 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR )
    [    5.649372] systemd[1]: Detected architecture arm.
    
    Welcome to Arago 2017.12!
    
    [    5.686214] systemd[1]: Set hostname to <am437x-evm>.
    [    6.463933] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
    [  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
    [    6.505506] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    6.536388] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    6.564986] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    6.604875] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    6.635594] systemd[1]: Listening on Syslog Socket.
    [  OK  ] Listening on Syslog Socket.
    [    6.684756] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [  OK  ] Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Listening on Journal Socket (/dev/log).
    [  OK  ] Reached target Swap.
    [  OK  ] Reached target Remote File Systems.
    [  OK  ] Listening on Journal Socket.
    [  OK  ] Created slice System Slice.
             Starting Psplash Boot Screen...
    [  OK  ] Reached target Slices.
             Mounting POSIX Message Queue File System...
             Mounting Temporary Directory...
             Starting alignment.service...
             Starting Remount Root and Kernel File Systems...
    [  OK  ] Created slice system-getty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
             Mounting Debug File System...
    [    7.260470] random: crng init done
             Starting Load Kernel Modules...
             Starting Create list of required st... nodes for the current kernel...
             Starting Journal Service...
             Starting Setup Virtual Console...
    [  OK  ] Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Reached target Paths.
    [    7.531015] cmemk: loading out-of-tree module taints kernel.
    [    7.555794] CMEMK module: reference Linux version 4.9.69
    [    7.574466] no physical memory specified
    [    7.578444] cmemk initialized
    [  OK  ] Mounted Debug File System.
    [    7.614597] cryptodev: driver 1.8 loaded.
    [  OK  ] Mounted POSIX Message Queue File System.
    [  OK  ] Mounted Temporary Directory.
    [    7.668306] usbcore: registered new interface driver usbfs
    [    7.673912] usbcore: registered new interface driver hub
    [  OK  ] Started Psplash Boot Screen.
    [    7.727905] usbcore: registered new device driver usb
    [  OK  ] Started alignment.service.
    [    7.784443] usbcore: registered new interface driver usbserial
    [  OK  ] Started Remount Root and Kernel File Systems.
    [  OK  ] Started Create list of required sta...ce node[    7.830612] usbcore: registered new interfao
    s for the current kernel.
    [    7.858769] usbserial: USB Serial support registered for FTDI USB Serial Device
    [  OK  ] Started Setup Virtual Console.
    [  OK  ] Started Journal Service.
    [  OK  ] Started Load Kernel Modules.
             Mounting Configuration File System...
             Starting Apply Kernel Variables...
             Starting Create Static Device Nodes in /dev...
             Starting Flush Journal to Persistent Storage...
             Starting udev Coldplug all Devices...
    [  OK  ] Mounted Configuration File System.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [    8.455516] systemd-journald[97]: Received request to flush runtime journal from PID 1
    [  OK  ] Started Flush Journal to Persistent Storage.
             Starting udev Kernel Device Manager...
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /var/volatile...
             Mounting /media/ram...
    [  OK  ] Mounted /var/volatile.
    [  OK  ] Mounted /media/ram.
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
             Starting Create Volatile Files and Directories...
    [  OK  ] Started Load/Save Random Seed.
    [  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 Update UTMP about System Boot/Shutdown.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Synchronized.
    [   10.444096] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [   10.542088] remoteproc remoteproc0: wkup_m3 is available
    [  OK  ] Started udev Coldplug all Devices.
    [   10.617088] omap_rtc 44e3e000.rtc: already running
    [   10.670026] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [  OK  ] Found device /dev/ttyS0.
    [  OK  ] Reached target System Initialization.
    [   10.809537] remoteproc remoteproc0: powering up wkup_m3
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
    [   10.970489] 1-0018 supply IOVDD not found, using dummy regulator
    [   11.013018] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 224268
    [   11.013846] remoteproc remoteproc0: remote processor wkup_m3 is now up
    [   11.013971] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x192
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [   11.349702] 1-0018 supply DVDD not found, using dummy regulator
    [   11.452357] 1-0018 supply AVDD not found, using dummy regulator
    [  OK  ] Listening on dropbear.socket.
    [   11.505671] 1-0018 supply DRVDD not found, using dummy regulator
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Kernel Logging Service.
    [  OK  ] Started Job spooling tools.
             Starting Print notice about GPLv3 packages...
             Starting Login Service...
    [   11.926405] omap-sham 53100000.sham: hw accel on OMAP rev 0.0
    [  OK  ] Started D-Bus System Message Bus.
    [   12.198278] omap-aes 53501000.aes: OMAP AES hw accel rev: 0.1
    [   12.298403] omap-aes 53501000.aes: will run requests pump with realtime priority
    [   12.466144] omap-des 53701000.des: OMAP DES hw accel rev: 0.33
    [   12.509262] omap-des 53701000.des: will run requests pump with realtime priority
    [   12.697138] [drm] Initialized pvr 1.14.3699939 20110701 on minor 1
    [   12.926428] input: matrix_keypad0 as /devices/platform/matrix_keypad0/input/input1
    [   13.080372] PM: bootloader does not support rtc-only!
    [   13.389825] asoc-simple-card sound0: tlv320aic3x-hifi <-> 4803c000.mcasp mapping ok
    [   13.578646] asoc-simple-card sound1: wilink8_bt-hifi <-> 48038000.mcasp mapping ok
             Starting Telephony service...
    [  OK  ] Started System Logging Service.
             Starting uim-sysfs.service...
             Starting Avahi mDNS/DNS-SD Stack...
    [  OK  ] Started Periodic Command Scheduler.
             Starting Save/Restore Sound Card State...
             Starting Network Service...
    [  OK  ] Started Network Service.
    [   15.982436] Bluetooth: Core ver 2.22
    [   16.170641] NET: Registered protocol family 31
    [   16.193323] EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem
    [   16.241015] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [  OK  ] Started Save/Restore Sound Card State.
    [   16.568885] Bluetooth: HCI device and connection manager initialized
    [   16.697314] Bluetooth: HCI socket layer initialized
    [   16.784633] Bluetooth: L2CAP socket layer initialized
    [   16.812836] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Plea.
    [   17.055141] Bluetooth: SCO socket layer initialized
    [  OK  ] Started Telephony service.
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [  OK  ] Started Login Service.
    [  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
             Starting Wait for Network to be Configured...
    [  OK  ] Reached target Network.
             Starting Network Name Resolution...
             Starting Permit User Sessions...
             Starting Simple Network Management Protocol (SNMP) Daemon....
    [  OK  ] Started strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf.
             Starting Enable and configure wl18xx bluetooth stack...
             Starting Lightning Fast Webserver With Light System Requirements...
    [  OK  ] Created slice system-systemd\x2dbacklight.slice.
             Starting Load/Save Screen Backlight...htness of backlight:backlight...
    [  OK  ] Started Wait for Network to be Configured.
    [  OK  ] Started uim-sysfs.service.
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Load/Save Screen Backlight Brightness of backlight:backlight.
    [  OK  ] Started Lightning Fast Webserver With Light System Requirements.
    [  OK  ] Started Enable and configure wl18xx bluetooth stack.
    [  OK  ] Started Network Name Resolution.
    [   21.953318] NET: Registered protocol family 15
    [   22.542411] input: ti-tsc as /devices/platform/44000000.ocp/44e0d000.tscadc/TI-am335x-tsc/input/i2
    [  OK  ] Started Simple Network Management Protocol (SNMP) Daemon..
    [   23.285249] Initializing XFRM netlink socket
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            binutils
            cifs-utils
            cpio
            cpp-symlinks
            cpp
            dosfstools
            findutils
            g++-symlinks
            g++
            gawk-dev
            gawk
            gcc-symlinks
            gcc
            gdb
            gdbserver
            glmark2
            gstreamer1.0-libav
            gzip
            hidapi
            libcairo-perf-utils
            libgmp10
            libidn11
            libmavconn
            libmpc3
            libmpfr4
            libreadline-dev
            libreadline6
            m4-dev
            m4
            make
            mavlink
            mavros-extras
            mavros-msgs
            mavros
            nettle
            socketcan-interface
            swig-dev
            swig
            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.
    [  OK  ] Reached target Sound Card.
    [  OK  ] Started Serial Getty on ttyS0.
    [  OK  ] Started Getty on tty1.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
             Starting rc.pvr.service...
    [  OK  ] Reached target Network is Online.
    [  OK  ] Started Synchronize System and HW clocks.
    [   29.229761] PVR_K: UM DDK-(3699939) and KM DDK-(3699939) match. [ OK ]
    [  OK  ] Started rc.pvr.service.
             Starting telnetd.service...
    [  OK  ] Started telnetd.service.
             Starting thttpd.service...
    [  OK  ] Started thttpd.service.
             Starting rng-tools.service...
    [  OK  ] Started rng-tools.service.
             Starting LSB: Redis, a key-value store...
    [  OK  ] Started LSB: Redis, a key-value store.
             Starting thermal-zone-init.service...
             Starting parse-ip.service...
    [  OK  ] Started thermal-zone-init.service.
    [  OK  ] Started parse-ip.service.
             Starting UTI_init.service...
             Starting Terminate Psplash Boot Screen...
    [  OK  ] Started UTI_init.service.
    [  OK  ] Started Terminate Psplash Boot Screen.
    [  OK  ] Reached target Multi-User System.
             Starting Update UTMP about System Runlevel Changes...
    [  OK  ] Started Update UTMP about System Runlevel Changes.
    
    

  • Hi Tanner,

    my apologies that command should have read "dtc -I dtb your_dtb_file_name_here.dtb". Basically, you feeding in your final DTB file, and it will get de-compiled into an DTS file. Can you please try that again.

    Regards, Andreas

  • Thanks for the info. Looks okay at first glance. Give me a day or two to look into this a bit deeper.

    Also how do you initiate the SPI transfer? May need to see if I can re-create what you are doing.

    Regards, Andreas

  • The SPI transfer is initiated by doing a write to the /dev/spidev1.0 file.

  • Tanner,

    I did a quick test by doing the following:

    • Using an AM437x GP EVM
    • That EVM has the SPI0 D0 (data input) exposed via pin header, and SCLK is accessible by probing the board directly. Unfortunately there is no easy access to CS as the associated pin/signal is heavily used.
    • I've jumpered the D0 signal first to 3.3V, did a read from spidev, then jumpered it to 0V, and did another read. You can see below how the data that is read (4 bytes) changes from 0xff to 0x00 as expected
    • I've also used a logic analyzer probing the sclk signal during those transactions, and I could see the clock coming on and off. So this piece is working too.
    am437x-evm login: root
    root@am437x-evm:~# dmesg | grep -i spi 
    root@am437x-evm:~# ls -al /dev/spi*
    crw-------    1 root     root      153,   0 Oct 19 16:13 /dev/spidev1.0
    root@am437x-evm:~# hexdump -C -n 4 /dev/spidev1.0
    00000000  ff ff ff ff                                       |....|
    00000004
    root@am437x-evm:~# hexdump -C -n 4 /dev/spidev1.0
    00000000  00 00 00 00                                       |....|
    00000004
    root@am437x-evm:~# 

    Below are the changes I did to the TI Linux Kernel 4.19 tree to do this test (the defconfig is more for completeness sake than anything, all I did over the TI default defconfig is adding CONFIG_SPI_SPIDEV=y). Can you see that you can re-create this on your end? If the read works then I'd expect the chipselect signal to go along with it, which again is a particular aspect I could not test with my HW. It also may be worth reviewing Documentation/spi/spidev in the Kernel in detail to make sure nothing is missing in terms of how to use spidev.

    Regards, Andreas

    commit 99fa992820b7f886c429d2e77a921e6ba8cc44b2
    Author: Andreas Dannenberg <dannenberg@ti.com>
    Date:   Thu Feb 6 14:24:00 2020 -0600
    
        HACK: am437x-gpevm: Enable testing spidev using spi0
        
        Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
    
    diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
    index 821ec7b09066..0cd3daf83b10 100644
    --- a/arch/arm/boot/dts/am437x-gp-evm.dts
    +++ b/arch/arm/boot/dts/am437x-gp-evm.dts
    @@ -550,7 +550,6 @@
     			AM4372_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE7)
     			AM4372_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7)
     			AM4372_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE7)
    -			AM4372_IOPAD(0x950, PIN_INPUT_PULLDOWN | MUX_MODE7)
     			AM4372_IOPAD(0x990, PIN_INPUT_PULLDOWN | MUX_MODE7)
     			AM4372_IOPAD(0x994, PIN_INPUT_PULLDOWN | MUX_MODE7)
     			AM4372_IOPAD(0x998, PIN_INPUT_PULLDOWN | MUX_MODE7)
    @@ -626,7 +625,6 @@
     			AM4372_IOPAD(0x9a4, PIN_OUTPUT | MUX_MODE7)
     			AM4372_IOPAD(0x9a8, PIN_OUTPUT | MUX_MODE7)
     			AM4372_IOPAD(0x9ac, PIN_INPUT | PULL_DISABLE | MUX_MODE9)
    -			AM4372_IOPAD(0x954, PIN_INPUT_PULLDOWN | MUX_MODE0)
     		>;
     	};
     
    @@ -635,7 +633,20 @@
     			AM4372_IOPAD(0x9a4, PULL_UP | MUX_MODE7)
     			AM4372_IOPAD(0x9a8, PULL_UP | MUX_MODE7)
     			AM4372_IOPAD(0x9ac, PIN_INPUT | PULL_DISABLE | MUX_MODE9)
    -			AM4372_IOPAD(0x954, PIN_INPUT_PULLDOWN | MUX_MODE0)
    +		>;
    +	};
    +
    +	spi0_pins: pinmux_spi0_pins {
    +		pinctrl-single,pins = <
    +			AM4372_IOPAD(0x950, PIN_INPUT | MUX_MODE0) /* spi0_sclk.spi0_sclk */
    +			AM4372_IOPAD(0x954, PIN_INPUT | MUX_MODE0) /* spi0_d0.spi0_d0 */
    +
    +			/*
    +			 * Commenting out pins T21 and T20 as they are used for I2C on the GP EVM.
    +			 * So we will only use above P23 (sclk) and T22 (d0) pins for SPI.
    +			 */
    +			/* AM4372_IOPAD(0x958, PIN_OUTPUT | MUX_MODE0) */ /* spi0_d1.spi0_d1 */
    +			/* AM4372_IOPAD(0x95C, PIN_OUTPUT | MUX_MODE0) */ /* spi0_cs0.spi0_cs0 */
     		>;
     	};
     };
    @@ -1160,3 +1171,22 @@
     		status = "okay";
     	};
     };
    +
    +&spi0 {
    +	status = "okay";
    +	pinctrl-names = "default";
    +	pinctrl-0 = <&spi0_pins>;
    +	dmas = <&edma 16 0
    +		&edma 17 0>;
    +	dma-names = "tx0", "rx0";
    +
    +	/*
    +	 * Add a simple userspace-accessible SPI device. See
    +	 * Documentation/spi/spidev for more info.
    +	 */
    +	spidev@0 {
    +		compatible = "rohm,dh2228fv";
    +		reg = <0>;
    +		spi-max-frequency = <8000000>;
    +	};
    +};
    diff --git a/arch/arm/configs/ti_sdk_am4x_release_defconfig b/arch/arm/configs/ti_sdk_am4x_release_defconfig
    new file mode 100644
    index 000000000000..99f702a65c7f
    --- /dev/null
    +++ b/arch/arm/configs/ti_sdk_am4x_release_defconfig
    @@ -0,0 +1,759 @@
    +CONFIG_KERNEL_LZMA=y
    +CONFIG_SYSVIPC=y
    +CONFIG_POSIX_MQUEUE=y
    +CONFIG_NO_HZ=y
    +CONFIG_HIGH_RES_TIMERS=y
    +CONFIG_PREEMPT=y
    +CONFIG_BSD_PROCESS_ACCT=y
    +CONFIG_IKCONFIG=y
    +CONFIG_IKCONFIG_PROC=y
    +CONFIG_CGROUPS=y
    +CONFIG_MEMCG=y
    +CONFIG_MEMCG_SWAP=y
    +CONFIG_BLK_CGROUP=y
    +CONFIG_CGROUP_SCHED=y
    +CONFIG_CFS_BANDWIDTH=y
    +CONFIG_CGROUP_PIDS=y
    +CONFIG_CGROUP_FREEZER=y
    +CONFIG_CGROUP_DEVICE=y
    +CONFIG_CGROUP_CPUACCT=y
    +CONFIG_CGROUP_PERF=y
    +CONFIG_NAMESPACES=y
    +CONFIG_CHECKPOINT_RESTORE=y
    +CONFIG_BLK_DEV_INITRD=y
    +CONFIG_KALLSYMS_ALL=y
    +CONFIG_EMBEDDED=y
    +CONFIG_PERF_EVENTS=y
    +# CONFIG_SLUB_DEBUG is not set
    +CONFIG_OMAP_RESET_CLOCKS=y
    +CONFIG_SOC_AM43XX=y
    +CONFIG_PCI=y
    +CONFIG_PCIEPORTBUS=y
    +CONFIG_PCI_MSI=y
    +CONFIG_PCIE_CADENCE_HOST=y
    +CONFIG_PCIE_CADENCE_EP=y
    +CONFIG_PCI_J721E=y
    +CONFIG_PCI_ENDPOINT=y
    +CONFIG_PCI_ENDPOINT_CONFIGFS=y
    +CONFIG_PCI_EPF_TEST=y
    +CONFIG_PCI_EPF_NTB=y
    +CONFIG_SECCOMP=y
    +CONFIG_ZBOOT_ROM_TEXT=0x0
    +CONFIG_ZBOOT_ROM_BSS=0x0
    +CONFIG_ARM_APPENDED_DTB=y
    +CONFIG_ARM_ATAG_DTB_COMPAT=y
    +CONFIG_KEXEC=y
    +CONFIG_EFI=y
    +CONFIG_CPU_FREQ=y
    +CONFIG_CPU_FREQ_STAT=y
    +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
    +CONFIG_CPU_FREQ_GOV_POWERSAVE=y
    +CONFIG_CPU_FREQ_GOV_USERSPACE=y
    +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
    +CONFIG_CPUFREQ_DT=y
    +# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
    +CONFIG_ARM_TI_CPUFREQ=y
    +CONFIG_CPU_IDLE=y
    +CONFIG_CPU_IDLE_GOV_LADDER=y
    +CONFIG_ARM_CPUIDLE=y
    +CONFIG_KERNEL_MODE_NEON=y
    +CONFIG_PM_DEBUG=y
    +# CONFIG_DMIID is not set
    +CONFIG_EFI_VARS=m
    +CONFIG_EFI_CAPSULE_LOADER=m
    +CONFIG_ARM_CRYPTO=y
    +CONFIG_CRYPTO_SHA1_ARM_NEON=m
    +CONFIG_CRYPTO_SHA1_ARM_CE=m
    +CONFIG_CRYPTO_SHA2_ARM_CE=m
    +CONFIG_CRYPTO_SHA512_ARM=m
    +CONFIG_CRYPTO_AES_ARM=m
    +CONFIG_CRYPTO_AES_ARM_BS=m
    +CONFIG_CRYPTO_AES_ARM_CE=m
    +CONFIG_CRYPTO_GHASH_ARM_CE=m
    +CONFIG_CRYPTO_CRC32_ARM_CE=m
    +CONFIG_CRYPTO_CHACHA20_NEON=m
    +CONFIG_JUMP_LABEL=y
    +CONFIG_MODULES=y
    +CONFIG_MODULE_FORCE_LOAD=y
    +CONFIG_MODULE_UNLOAD=y
    +CONFIG_MODULE_FORCE_UNLOAD=y
    +CONFIG_MODVERSIONS=y
    +CONFIG_MODULE_SRCVERSION_ALL=y
    +CONFIG_PARTITION_ADVANCED=y
    +CONFIG_CMDLINE_PARTITION=y
    +CONFIG_CMA=y
    +CONFIG_NET=y
    +CONFIG_PACKET=y
    +CONFIG_UNIX=y
    +CONFIG_XFRM_USER=m
    +CONFIG_NET_KEY=m
    +CONFIG_INET=y
    +CONFIG_IP_MULTICAST=y
    +CONFIG_IP_PNP=y
    +CONFIG_IP_PNP_DHCP=y
    +CONFIG_IP_PNP_BOOTP=y
    +CONFIG_IP_PNP_RARP=y
    +CONFIG_INET_AH=m
    +CONFIG_INET_ESP=m
    +CONFIG_INET_IPCOMP=m
    +CONFIG_INET_XFRM_MODE_TRANSPORT=m
    +CONFIG_INET_XFRM_MODE_TUNNEL=m
    +CONFIG_INET_XFRM_MODE_BEET=m
    +CONFIG_IPV6_ROUTER_PREF=y
    +CONFIG_IPV6_OPTIMISTIC_DAD=y
    +CONFIG_INET6_AH=m
    +CONFIG_INET6_ESP=m
    +CONFIG_INET6_IPCOMP=m
    +CONFIG_IPV6_MIP6=m
    +CONFIG_IPV6_TUNNEL=m
    +CONFIG_IPV6_MULTIPLE_TABLES=y
    +CONFIG_NETFILTER=y
    +CONFIG_NF_CONNTRACK=m
    +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
    +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
    +CONFIG_NETFILTER_XT_TARGET_MARK=m
    +CONFIG_NETFILTER_XT_MATCH_COMMENT=m
    +CONFIG_NETFILTER_XT_MATCH_CPU=m
    +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
    +CONFIG_NETFILTER_XT_MATCH_LENGTH=m
    +CONFIG_NETFILTER_XT_MATCH_LIMIT=m
    +CONFIG_NETFILTER_XT_MATCH_MAC=m
    +CONFIG_NETFILTER_XT_MATCH_MARK=m
    +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
    +CONFIG_NETFILTER_XT_MATCH_POLICY=m
    +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
    +CONFIG_IP_NF_IPTABLES=m
    +CONFIG_IP_NF_FILTER=m
    +CONFIG_IP_NF_NAT=m
    +CONFIG_IP_NF_TARGET_MASQUERADE=m
    +CONFIG_IP_NF_ARPTABLES=m
    +CONFIG_IP_NF_ARPFILTER=m
    +CONFIG_IP_NF_ARP_MANGLE=m
    +CONFIG_BRIDGE_NF_EBTABLES=m
    +CONFIG_BRIDGE_EBT_BROUTE=m
    +CONFIG_BRIDGE_EBT_T_FILTER=m
    +CONFIG_BRIDGE_EBT_T_NAT=m
    +CONFIG_BRIDGE_EBT_802_3=m
    +CONFIG_BRIDGE_EBT_AMONG=m
    +CONFIG_BRIDGE_EBT_ARP=m
    +CONFIG_BRIDGE_EBT_IP=m
    +CONFIG_BRIDGE_EBT_IP6=m
    +CONFIG_BRIDGE_EBT_LIMIT=m
    +CONFIG_BRIDGE_EBT_MARK=m
    +CONFIG_BRIDGE_EBT_PKTTYPE=m
    +CONFIG_BRIDGE_EBT_STP=m
    +CONFIG_BRIDGE_EBT_VLAN=m
    +CONFIG_BRIDGE_EBT_ARPREPLY=m
    +CONFIG_BRIDGE_EBT_DNAT=m
    +CONFIG_BRIDGE_EBT_MARK_T=m
    +CONFIG_BRIDGE_EBT_REDIRECT=m
    +CONFIG_BRIDGE_EBT_SNAT=m
    +CONFIG_BRIDGE_EBT_LOG=m
    +CONFIG_BRIDGE_EBT_NFLOG=m
    +CONFIG_IP_SCTP=m
    +CONFIG_BRIDGE=m
    +CONFIG_NET_DSA=m
    +CONFIG_VLAN_8021Q=m
    +CONFIG_NET_SCHED=y
    +CONFIG_NET_SCH_CBQ=m
    +CONFIG_NET_SCH_HTB=m
    +CONFIG_NET_SCH_HFSC=m
    +CONFIG_NET_SCH_PRIO=m
    +CONFIG_NET_SCH_MULTIQ=m
    +CONFIG_NET_SCH_RED=m
    +CONFIG_NET_SCH_SFB=m
    +CONFIG_NET_SCH_SFQ=m
    +CONFIG_NET_SCH_TEQL=m
    +CONFIG_NET_SCH_TBF=m
    +CONFIG_NET_SCH_GRED=m
    +CONFIG_NET_SCH_DSMARK=m
    +CONFIG_NET_SCH_NETEM=m
    +CONFIG_NET_SCH_DRR=m
    +CONFIG_NET_SCH_MQPRIO=m
    +CONFIG_NET_SCH_CHOKE=m
    +CONFIG_NET_SCH_QFQ=m
    +CONFIG_NET_SCH_CODEL=m
    +CONFIG_NET_SCH_FQ_CODEL=m
    +CONFIG_NET_SCH_INGRESS=m
    +CONFIG_NET_CLS_BASIC=m
    +CONFIG_NET_CLS_TCINDEX=m
    +CONFIG_NET_CLS_ROUTE4=m
    +CONFIG_NET_CLS_FW=m
    +CONFIG_NET_CLS_U32=m
    +CONFIG_CLS_U32_MARK=y
    +CONFIG_NET_CLS_RSVP=m
    +CONFIG_NET_CLS_RSVP6=m
    +CONFIG_NET_CLS_FLOW=m
    +CONFIG_NET_EMATCH=y
    +CONFIG_NET_EMATCH_CMP=m
    +CONFIG_NET_EMATCH_NBYTE=m
    +CONFIG_NET_EMATCH_U32=m
    +CONFIG_NET_EMATCH_META=m
    +CONFIG_NET_EMATCH_TEXT=m
    +CONFIG_NET_CLS_ACT=y
    +CONFIG_NET_ACT_POLICE=m
    +CONFIG_NET_ACT_GACT=m
    +CONFIG_GACT_PROB=y
    +CONFIG_NET_ACT_MIRRED=m
    +CONFIG_NET_ACT_IPT=m
    +CONFIG_NET_ACT_NAT=m
    +CONFIG_NET_ACT_PEDIT=m
    +CONFIG_NET_ACT_SIMP=m
    +CONFIG_NET_ACT_SKBEDIT=m
    +CONFIG_NET_ACT_CSUM=m
    +CONFIG_NET_CLS_IND=y
    +CONFIG_CAN=m
    +CONFIG_CAN_FLEXCAN=m
    +CONFIG_CAN_C_CAN=m
    +CONFIG_CAN_C_CAN_PLATFORM=m
    +CONFIG_CAN_M_CAN=m
    +CONFIG_CAN_RCAR=m
    +CONFIG_CAN_MCP251X=m
    +CONFIG_BT=m
    +CONFIG_BT_HCIUART=m
    +CONFIG_BT_HCIUART_BCM=y
    +CONFIG_BT_MRVL=m
    +CONFIG_BT_MRVL_SDIO=m
    +CONFIG_CFG80211=m
    +CONFIG_NL80211_TESTMODE=y
    +CONFIG_MAC80211=m
    +CONFIG_RFKILL=y
    +CONFIG_RFKILL_INPUT=y
    +CONFIG_RFKILL_GPIO=y
    +CONFIG_RPMSG_PROTO=m
    +CONFIG_DEVTMPFS=y
    +CONFIG_DEVTMPFS_MOUNT=y
    +CONFIG_DMA_CMA=y
    +CONFIG_CMA_SIZE_MBYTES=48
    +CONFIG_OMAP_OCP2SCP=y
    +CONFIG_SIMPLE_PM_BUS=y
    +CONFIG_MTD=y
    +CONFIG_MTD_TESTS=m
    +CONFIG_MTD_CMDLINE_PARTS=y
    +CONFIG_MTD_BLOCK=y
    +CONFIG_MTD_M25P80=y
    +CONFIG_MTD_NAND=y
    +CONFIG_MTD_NAND_DENALI_DT=y
    +CONFIG_MTD_NAND_OMAP2=y
    +CONFIG_MTD_NAND_OMAP_BCH=y
    +CONFIG_MTD_NAND_BRCMNAND=y
    +CONFIG_MTD_SPI_NOR=y
    +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
    +CONFIG_SPI_CADENCE_QUADSPI=y
    +CONFIG_MTD_UBI=y
    +CONFIG_MTD_HYPERBUS=y
    +CONFIG_HBMC_AM654=y
    +CONFIG_BLK_DEV_LOOP=y
    +CONFIG_BLK_DEV_RAM=y
    +CONFIG_BLK_DEV_RAM_SIZE=65536
    +CONFIG_VIRTIO_BLK=y
    +CONFIG_BLK_DEV_NVME=m
    +CONFIG_AD525X_DPOT=y
    +CONFIG_AD525X_DPOT_I2C=y
    +CONFIG_ICS932S401=y
    +CONFIG_APDS9802ALS=y
    +CONFIG_ISL29003=y
    +CONFIG_SRAM=y
    +CONFIG_PCI_ENDPOINT_TEST=m
    +CONFIG_DMA_BUF_PHYS=y
    +CONFIG_EEPROM_AT24=m
    +CONFIG_SCSI=y
    +CONFIG_BLK_DEV_SD=y
    +CONFIG_BLK_DEV_SR=y
    +CONFIG_SCSI_UFSHCD=y
    +CONFIG_SCSI_UFSHCD_PLATFORM=y
    +CONFIG_SCSI_UFS_CDNS_PLATFORM=y
    +CONFIG_SCSI_UFS_BSG=y
    +CONFIG_ATA=m
    +CONFIG_SATA_AHCI=m
    +CONFIG_SATA_AHCI_PLATFORM=m
    +CONFIG_AHCI_DM816=m
    +CONFIG_SATA_MV=m
    +CONFIG_NETDEVICES=y
    +CONFIG_NTB_NETDEV=m
    +CONFIG_VIRTIO_NET=y
    +# CONFIG_NET_VENDOR_3COM is not set
    +# CONFIG_NET_VENDOR_ADAPTEC is not set
    +# CONFIG_NET_VENDOR_AGERE is not set
    +# CONFIG_NET_VENDOR_ALTEON is not set
    +# CONFIG_NET_VENDOR_AMAZON is not set
    +# CONFIG_NET_VENDOR_AMD is not set
    +# CONFIG_NET_VENDOR_ARC is not set
    +# CONFIG_NET_VENDOR_ATHEROS is not set
    +CONFIG_TIGON3=m
    +# CONFIG_NET_VENDOR_BROCADE is not set
    +CONFIG_MACB=y
    +# CONFIG_NET_VENDOR_CAVIUM is not set
    +# CONFIG_NET_VENDOR_CHELSIO is not set
    +# CONFIG_NET_VENDOR_CIRRUS is not set
    +# CONFIG_NET_VENDOR_CISCO is not set
    +# CONFIG_NET_VENDOR_DEC is not set
    +# CONFIG_NET_VENDOR_DLINK is not set
    +# CONFIG_NET_VENDOR_EMULEX is not set
    +# CONFIG_NET_VENDOR_EZCHIP is not set
    +# CONFIG_NET_VENDOR_FARADAY is not set
    +# CONFIG_NET_VENDOR_HISILICON is not set
    +# CONFIG_NET_VENDOR_HP is not set
    +# CONFIG_NET_VENDOR_I825XX is not set
    +CONFIG_E1000=m
    +CONFIG_E1000E=m
    +CONFIG_SKGE=m
    +# CONFIG_NET_VENDOR_MELLANOX is not set
    +CONFIG_KS8851=y
    +# CONFIG_NET_VENDOR_MICROCHIP is not set
    +# CONFIG_NET_VENDOR_MYRI is not set
    +# CONFIG_NET_VENDOR_NATSEMI is not set
    +# CONFIG_NET_VENDOR_NETRONOME is not set
    +# CONFIG_NET_VENDOR_NVIDIA is not set
    +# CONFIG_NET_VENDOR_OKI is not set
    +# CONFIG_NET_VENDOR_QLOGIC is not set
    +# CONFIG_NET_VENDOR_QUALCOMM is not set
    +# CONFIG_NET_VENDOR_RDC is not set
    +# CONFIG_NET_VENDOR_REALTEK is not set
    +# CONFIG_NET_VENDOR_RENESAS is not set
    +# CONFIG_NET_VENDOR_ROCKER is not set
    +# CONFIG_NET_VENDOR_SAMSUNG is not set
    +# CONFIG_NET_VENDOR_SEEQ is not set
    +# CONFIG_NET_VENDOR_SILAN is not set
    +# CONFIG_NET_VENDOR_SIS is not set
    +CONFIG_SMSC911X=y
    +# CONFIG_NET_VENDOR_STMICRO is not set
    +# CONFIG_NET_VENDOR_SUN is not set
    +# CONFIG_NET_VENDOR_SYNOPSYS is not set
    +# CONFIG_NET_VENDOR_TEHUTI is not set
    +CONFIG_TI_CPSW=y
    +CONFIG_TI_CPTS=y
    +CONFIG_TI_PRUETH=m
    +# CONFIG_NET_VENDOR_VIA is not set
    +# CONFIG_NET_VENDOR_WIZNET is not set
    +CONFIG_AT803X_PHY=y
    +CONFIG_DP83848_PHY=y
    +CONFIG_DP83867_PHY=y
    +CONFIG_MARVELL_PHY=y
    +CONFIG_MICREL_PHY=y
    +CONFIG_REALTEK_PHY=y
    +CONFIG_ROCKCHIP_PHY=y
    +CONFIG_SMSC_PHY=y
    +CONFIG_USB_PEGASUS=m
    +CONFIG_USB_RTL8152=m
    +CONFIG_USB_LAN78XX=m
    +CONFIG_USB_USBNET=m
    +CONFIG_USB_NET_SMSC75XX=m
    +CONFIG_USB_NET_SMSC95XX=m
    +CONFIG_B43=m
    +CONFIG_BRCMFMAC=m
    +CONFIG_IWLWIFI=m
    +CONFIG_IWLDVM=m
    +CONFIG_IWLMVM=m
    +CONFIG_MWIFIEX=m
    +CONFIG_MWIFIEX_SDIO=m
    +CONFIG_RT2X00=m
    +CONFIG_RT2800USB=m
    +CONFIG_WL18XX=m
    +CONFIG_WLCORE_SDIO=m
    +CONFIG_INPUT_JOYDEV=y
    +CONFIG_INPUT_EVDEV=y
    +CONFIG_KEYBOARD_QT1070=m
    +CONFIG_KEYBOARD_GPIO=y
    +CONFIG_KEYBOARD_MATRIX=m
    +CONFIG_KEYBOARD_SAMSUNG=m
    +CONFIG_MOUSE_PS2_ELANTECH=y
    +CONFIG_MOUSE_CYAPA=m
    +CONFIG_MOUSE_ELAN_I2C=y
    +CONFIG_INPUT_TOUCHSCREEN=y
    +CONFIG_TOUCHSCREEN_ATMEL_MXT=m
    +CONFIG_TOUCHSCREEN_GOODIX=m
    +CONFIG_TOUCHSCREEN_MMS114=m
    +CONFIG_TOUCHSCREEN_EDT_FT5X06=m
    +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
    +CONFIG_TOUCHSCREEN_PIXCIR=m
    +CONFIG_TOUCHSCREEN_ST1232=m
    +CONFIG_INPUT_MISC=y
    +CONFIG_INPUT_GPIO_DECODER=m
    +CONFIG_INPUT_CPCAP_PWRBUTTON=m
    +CONFIG_INPUT_ADXL34X=m
    +CONFIG_SERIAL_8250=y
    +CONFIG_SERIAL_8250_CONSOLE=y
    +CONFIG_SERIAL_8250_NR_UARTS=10
    +CONFIG_SERIAL_8250_RUNTIME_UARTS=10
    +CONFIG_SERIAL_8250_EXTENDED=y
    +CONFIG_SERIAL_8250_SHARE_IRQ=y
    +CONFIG_SERIAL_8250_OMAP=y
    +CONFIG_SERIAL_OF_PLATFORM=y
    +CONFIG_SERIAL_BCM63XX=y
    +CONFIG_SERIAL_BCM63XX_CONSOLE=y
    +CONFIG_SERIAL_DEV_BUS=y
    +CONFIG_VIRTIO_CONSOLE=y
    +CONFIG_HW_RANDOM=y
    +CONFIG_I2C_CHARDEV=y
    +CONFIG_I2C_ARB_GPIO_CHALLENGE=m
    +CONFIG_I2C_MUX_PCA954x=y
    +CONFIG_I2C_MUX_PINCTRL=y
    +CONFIG_I2C_DEMUX_PINCTRL=y
    +CONFIG_I2C_EMEV2=m
    +CONFIG_I2C_SLAVE_EEPROM=y
    +CONFIG_SPI=y
    +CONFIG_SPI_GPIO=m
    +CONFIG_SPI_OMAP24XX=y
    +CONFIG_SPI_TI_QSPI=y
    +CONFIG_SPI_SPIDEV=y
    +CONFIG_SPMI=y
    +CONFIG_PINCTRL_SINGLE=y
    +CONFIG_PINCTRL_PALMAS=y
    +CONFIG_DEBUG_GPIO=y
    +CONFIG_GPIO_SYSFS=y
    +CONFIG_GPIO_SYSCON=y
    +CONFIG_GPIO_PCA953X=y
    +CONFIG_GPIO_PCA953X_IRQ=y
    +CONFIG_GPIO_PCF857X=y
    +CONFIG_GPIO_TPIC2810=m
    +CONFIG_GPIO_PALMAS=y
    +CONFIG_GPIO_TPS65910=y
    +CONFIG_GPIO_PISOSR=m
    +CONFIG_W1=m
    +CONFIG_HDQ_MASTER_OMAP=m
    +CONFIG_POWER_AVS=y
    +CONFIG_POWER_RESET=y
    +CONFIG_POWER_RESET_GPIO=y
    +CONFIG_POWER_RESET_GPIO_RESTART=y
    +CONFIG_POWER_SUPPLY=y
    +CONFIG_BATTERY_ACT8945A=y
    +CONFIG_BATTERY_CPCAP=m
    +CONFIG_BATTERY_SBS=y
    +CONFIG_BATTERY_MAX17040=m
    +CONFIG_BATTERY_MAX17042=m
    +CONFIG_CHARGER_TPS65090=y
    +CONFIG_SENSORS_GPIO_FAN=y
    +CONFIG_SENSORS_IIO_HWMON=y
    +CONFIG_SENSORS_LM90=y
    +CONFIG_SENSORS_LM95245=y
    +CONFIG_SENSORS_NTC_THERMISTOR=m
    +CONFIG_SENSORS_PWM_FAN=m
    +CONFIG_SENSORS_INA2XX=m
    +CONFIG_SENSORS_TMP102=y
    +CONFIG_THERMAL_WRITABLE_TRIPS=y
    +CONFIG_THERMAL_GOV_FAIR_SHARE=y
    +CONFIG_THERMAL_GOV_BANG_BANG=y
    +CONFIG_THERMAL_GOV_USER_SPACE=y
    +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
    +CONFIG_CPU_THERMAL=y
    +CONFIG_THERMAL_EMULATION=y
    +CONFIG_TI_THERMAL=y
    +CONFIG_WATCHDOG=y
    +CONFIG_OMAP_WATCHDOG=m
    +CONFIG_BCMA_HOST_SOC=y
    +CONFIG_BCMA_DRIVER_GMAC_CMN=y
    +CONFIG_BCMA_DRIVER_GPIO=y
    +CONFIG_MFD_ACT8945A=y
    +CONFIG_MFD_CPCAP=y
    +CONFIG_MFD_TI_AM335X_TSCADC=m
    +CONFIG_MFD_PALMAS=y
    +CONFIG_MFD_TPS65090=y
    +CONFIG_MFD_TPS65217=y
    +CONFIG_MFD_TI_LP873X=y
    +CONFIG_MFD_TI_LP87565=y
    +CONFIG_MFD_TPS65218=y
    +CONFIG_MFD_TPS6586X=y
    +CONFIG_MFD_TPS65910=y
    +CONFIG_TWL6040_CORE=y
    +CONFIG_REGULATOR_ACT8945A=y
    +CONFIG_REGULATOR_CPCAP=y
    +CONFIG_REGULATOR_GPIO=y
    +CONFIG_REGULATOR_LP873X=y
    +CONFIG_REGULATOR_LP87565=y
    +CONFIG_REGULATOR_PALMAS=y
    +CONFIG_REGULATOR_PBIAS=y
    +CONFIG_REGULATOR_TI_ABB=y
    +CONFIG_REGULATOR_TPS62360=y
    +CONFIG_REGULATOR_TPS65023=y
    +CONFIG_REGULATOR_TPS6507X=y
    +CONFIG_REGULATOR_TPS65090=y
    +CONFIG_REGULATOR_TPS65217=y
    +CONFIG_REGULATOR_TPS65218=y
    +CONFIG_REGULATOR_TPS6524X=y
    +CONFIG_REGULATOR_TPS6586X=y
    +CONFIG_REGULATOR_TPS65910=y
    +CONFIG_MEDIA_SUPPORT=y
    +CONFIG_MEDIA_CAMERA_SUPPORT=y
    +CONFIG_MEDIA_CEC_SUPPORT=y
    +CONFIG_MEDIA_CONTROLLER=y
    +CONFIG_VIDEO_V4L2_SUBDEV_API=y
    +CONFIG_MEDIA_USB_SUPPORT=y
    +CONFIG_USB_VIDEO_CLASS=m
    +CONFIG_V4L_PLATFORM_DRIVERS=y
    +CONFIG_SOC_CAMERA=m
    +CONFIG_SOC_CAMERA_PLATFORM=m
    +CONFIG_VIDEO_AM437X_VPFE=m
    +CONFIG_V4L_MEM2MEM_DRIVERS=y
    +CONFIG_V4L_TEST_DRIVERS=y
    +CONFIG_VIDEO_VIVID=m
    +CONFIG_CEC_PLATFORM_DRIVERS=y
    +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
    +CONFIG_VIDEO_ADV7180=m
    +CONFIG_VIDEO_ML86V7667=m
    +CONFIG_VIDEO_OV2659=m
    +CONFIG_VIDEO_OV5640=m
    +CONFIG_VIDEO_OV1063X=m
    +CONFIG_VIDEO_OV490=m
    +CONFIG_VIDEO_MT9T11X=m
    +# CONFIG_VGA_ARB is not set
    +CONFIG_DRM=y
    +CONFIG_DRM_I2C_NXP_TDA998X=y
    +CONFIG_DRM_OMAP=y
    +CONFIG_DRM_OMAP_WB=y
    +CONFIG_OMAP2_DSS_DEBUGFS=y
    +# CONFIG_OMAP2_DSS_VENC is not set
    +CONFIG_OMAP5_DSS_HDMI=y
    +CONFIG_DRM_OMAP_ENCODER_TPD12S015=y
    +CONFIG_DRM_OMAP_DRA7EVM_ENCODER_TPD12S015=y
    +CONFIG_DRM_OMAP_CONNECTOR_HDMI=y
    +CONFIG_DRM_TILCDC=y
    +CONFIG_DRM_PANEL_SIMPLE=y
    +CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=y
    +CONFIG_DRM_CDNS_MHDP=m
    +CONFIG_DRM_SII902X=y
    +CONFIG_DRM_TOSHIBA_TC358767=y
    +CONFIG_DRM_TOSHIBA_TC358768=y
    +CONFIG_DRM_TI_TFP410=y
    +CONFIG_DRM_TIDSS=y
    +CONFIG_DRM_LEGACY=y
    +CONFIG_FB_SSD1307=y
    +# CONFIG_LCD_CLASS_DEVICE is not set
    +CONFIG_BACKLIGHT_PWM=y
    +CONFIG_BACKLIGHT_GPIO=y
    +CONFIG_BACKLIGHT_LED=y
    +CONFIG_FRAMEBUFFER_CONSOLE=y
    +CONFIG_SOUND=y
    +CONFIG_SND=y
    +# CONFIG_SND_ARM is not set
    +# CONFIG_SND_SPI is not set
    +CONFIG_SND_USB_AUDIO=m
    +CONFIG_SND_SOC=y
    +CONFIG_SND_SOC_DAVINCI_MCASP=y
    +CONFIG_SND_SOC_OMAP_HDMI=m
    +CONFIG_SND_SOC_PCM3168A_I2C=m
    +CONFIG_SND_SOC_SPDIF=m
    +CONFIG_SND_SOC_TLV320AIC31XX=m
    +CONFIG_SND_SOC_TLV320AIC3X=m
    +CONFIG_SND_SIMPLE_CARD=m
    +CONFIG_SND_SIMPLE_SCU_CARD=m
    +CONFIG_SND_AUDIO_GRAPH_CARD=m
    +CONFIG_SND_AUDIO_GRAPH_SCU_CARD=m
    +CONFIG_HID_MULTITOUCH=m
    +CONFIG_USB=m
    +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
    +CONFIG_USB_OTG=y
    +CONFIG_USB_XHCI_HCD=m
    +CONFIG_USB_EHCI_HCD=m
    +CONFIG_USB_OHCI_HCD=m
    +CONFIG_USB_R8A66597_HCD=m
    +CONFIG_USB_ACM=m
    +CONFIG_USB_STORAGE=m
    +CONFIG_USB_UAS=m
    +CONFIG_USB_CDNS3=m
    +CONFIG_USB_CDNS3_GADGET=y
    +CONFIG_USB_CDNS3_HOST=y
    +CONFIG_USB_MUSB_HDRC=m
    +CONFIG_USB_MUSB_TUSB6010=m
    +CONFIG_USB_MUSB_OMAP2PLUS=m
    +CONFIG_USB_MUSB_AM35X=m
    +CONFIG_USB_MUSB_DSPS=m
    +CONFIG_USB_INVENTRA_DMA=y
    +CONFIG_USB_TI_CPPI41_DMA=y
    +CONFIG_USB_TUSB_OMAP_DMA=y
    +CONFIG_USB_DWC3=m
    +CONFIG_USB_ISP1760=m
    +CONFIG_USB_SERIAL=m
    +CONFIG_USB_SERIAL_CP210X=m
    +CONFIG_USB_SERIAL_FTDI_SIO=m
    +CONFIG_USB_SERIAL_PL2303=m
    +CONFIG_USB_SERIAL_OPTION=m
    +CONFIG_USB_TEST=m
    +CONFIG_USB_HSIC_USB3503=m
    +CONFIG_NOP_USB_XCEIV=m
    +CONFIG_AM335X_PHY_USB=m
    +CONFIG_USB_GPIO_VBUS=m
    +CONFIG_USB_ISP1301=m
    +CONFIG_USB_GADGET=m
    +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=32
    +CONFIG_USB_CONFIGFS=m
    +CONFIG_USB_CONFIGFS_SERIAL=y
    +CONFIG_USB_CONFIGFS_ACM=y
    +CONFIG_USB_CONFIGFS_OBEX=y
    +CONFIG_USB_CONFIGFS_NCM=y
    +CONFIG_USB_CONFIGFS_ECM=y
    +CONFIG_USB_CONFIGFS_ECM_SUBSET=y
    +CONFIG_USB_CONFIGFS_RNDIS=y
    +CONFIG_USB_CONFIGFS_EEM=y
    +CONFIG_USB_CONFIGFS_MASS_STORAGE=y
    +CONFIG_USB_CONFIGFS_F_LB_SS=y
    +CONFIG_USB_CONFIGFS_F_FS=y
    +CONFIG_USB_CONFIGFS_F_UAC1=y
    +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
    +CONFIG_USB_CONFIGFS_F_UAC2=y
    +CONFIG_USB_CONFIGFS_F_MIDI=y
    +CONFIG_USB_CONFIGFS_F_HID=y
    +CONFIG_USB_CONFIGFS_F_UVC=y
    +CONFIG_USB_CONFIGFS_F_PRINTER=y
    +CONFIG_USB_ZERO=m
    +CONFIG_USB_AUDIO=m
    +CONFIG_USB_ETH=m
    +CONFIG_USB_G_NCM=m
    +CONFIG_USB_GADGETFS=m
    +CONFIG_USB_FUNCTIONFS=m
    +CONFIG_USB_FUNCTIONFS_ETH=y
    +CONFIG_USB_FUNCTIONFS_RNDIS=y
    +CONFIG_USB_FUNCTIONFS_GENERIC=y
    +CONFIG_USB_MASS_STORAGE=m
    +CONFIG_USB_G_SERIAL=m
    +CONFIG_USB_MIDI_GADGET=m
    +CONFIG_USB_G_PRINTER=m
    +CONFIG_USB_CDC_COMPOSITE=m
    +CONFIG_USB_G_ACM_MS=m
    +CONFIG_USB_G_MULTI=m
    +CONFIG_USB_G_MULTI_CDC=y
    +CONFIG_USB_G_HID=m
    +CONFIG_USB_G_DBGP=m
    +CONFIG_USB_G_WEBCAM=m
    +CONFIG_MMC=y
    +CONFIG_MMC_BLOCK_MINORS=16
    +CONFIG_MMC_SDHCI=y
    +CONFIG_MMC_SDHCI_PLTFM=y
    +CONFIG_MMC_SDHCI_OF_ARASAN=y
    +CONFIG_MMC_SDHCI_OF_AT91=y
    +CONFIG_MMC_OMAP=y
    +CONFIG_MMC_OMAP_HS=y
    +CONFIG_MMC_SDHCI_OMAP=y
    +CONFIG_MMC_SDHCI_AM654=y
    +CONFIG_NEW_LEDS=y
    +CONFIG_LEDS_CLASS=y
    +CONFIG_LEDS_CLASS_FLASH=m
    +CONFIG_LEDS_CPCAP=m
    +CONFIG_LEDS_GPIO=y
    +CONFIG_LEDS_PWM=y
    +CONFIG_LEDS_TLC591XX=y
    +CONFIG_LEDS_TRIGGER_TIMER=y
    +CONFIG_LEDS_TRIGGER_ONESHOT=y
    +CONFIG_LEDS_TRIGGER_HEARTBEAT=y
    +CONFIG_LEDS_TRIGGER_BACKLIGHT=y
    +CONFIG_LEDS_TRIGGER_CPU=y
    +CONFIG_LEDS_TRIGGER_GPIO=y
    +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
    +CONFIG_LEDS_TRIGGER_TRANSIENT=y
    +CONFIG_LEDS_TRIGGER_CAMERA=y
    +CONFIG_EDAC=y
    +CONFIG_RTC_CLASS=y
    +CONFIG_RTC_DEBUG=y
    +CONFIG_RTC_DRV_DS1307=m
    +CONFIG_RTC_DRV_PALMAS=m
    +CONFIG_RTC_DRV_TPS6586X=m
    +CONFIG_RTC_DRV_TPS65910=m
    +CONFIG_RTC_DRV_EFI=m
    +CONFIG_RTC_DRV_OMAP=m
    +CONFIG_RTC_DRV_CPCAP=m
    +CONFIG_DMADEVICES=y
    +CONFIG_FSL_EDMA=y
    +CONFIG_DW_DMAC=y
    +CONFIG_TI_CPPI41=y
    +CONFIG_UIO=m
    +CONFIG_VIRTIO_PCI=y
    +CONFIG_VIRTIO_MMIO=y
    +CONFIG_STAGING=y
    +CONFIG_ION=y
    +CONFIG_ION_SYSTEM_HEAP=y
    +CONFIG_ION_CARVEOUT_HEAP=y
    +CONFIG_ION_CHUNK_HEAP=y
    +CONFIG_ION_TI=y
    +CONFIG_STAGING_BOARD=y
    +CONFIG_COMMON_CLK_PALMAS=y
    +CONFIG_HWSPINLOCK=y
    +CONFIG_HWSPINLOCK_OMAP=y
    +CONFIG_OMAP2PLUS_MBOX=y
    +CONFIG_OMAP_IOMMU=y
    +CONFIG_OMAP_IOMMU_DEBUG=y
    +CONFIG_REMOTEPROC=m
    +CONFIG_WKUP_M3_RPROC=m
    +CONFIG_RPMSG_VIRTIO=m
    +CONFIG_RPMSG_PRU=m
    +CONFIG_RPMSG_KDRV_DISPLAY=y
    +CONFIG_SOC_TI=y
    +CONFIG_AMX3_PM=m
    +CONFIG_WKUP_M3_IPC=m
    +CONFIG_TI_PRUSS=m
    +CONFIG_EXTCON_PALMAS=m
    +CONFIG_EXTCON_USB_GPIO=m
    +CONFIG_TI_EMIF_SRAM=m
    +CONFIG_IIO=y
    +CONFIG_IIO_SW_TRIGGER=y
    +CONFIG_CPCAP_ADC=m
    +CONFIG_TI_AM335X_ADC=m
    +CONFIG_VF610_ADC=m
    +CONFIG_MPU3050_I2C=y
    +CONFIG_CM36651=m
    +CONFIG_SENSORS_ISL29018=y
    +CONFIG_SENSORS_ISL29028=y
    +CONFIG_AK8975=y
    +CONFIG_IIO_HRTIMER_TRIGGER=y
    +CONFIG_NTB=m
    +CONFIG_NTB_EPF=m
    +CONFIG_NTB_TRANSPORT=m
    +CONFIG_PWM_FSL_FTM=m
    +CONFIG_PWM_TIECAP=y
    +CONFIG_PWM_TIEHRPWM=y
    +CONFIG_RESET_CONTROLLER=y
    +CONFIG_RESET_TI_SYSCON=y
    +CONFIG_PHY_CADENCE_TORRENT=y
    +CONFIG_PHY_CADENCE_SIERRA=y
    +CONFIG_PHY_CPCAP_USB=m
    +CONFIG_PHY_DM816X_USB=m
    +CONFIG_OMAP_USB2=m
    +CONFIG_TI_PIPE3=y
    +CONFIG_ANDROID=y
    +CONFIG_TEE=y
    +CONFIG_OPTEE=y
    +CONFIG_EXT4_FS=y
    +CONFIG_EXT4_FS_POSIX_ACL=y
    +CONFIG_EXT4_FS_SECURITY=y
    +CONFIG_AUTOFS4_FS=y
    +CONFIG_MSDOS_FS=y
    +CONFIG_VFAT_FS=y
    +CONFIG_NTFS_FS=y
    +CONFIG_TMPFS=y
    +CONFIG_TMPFS_POSIX_ACL=y
    +CONFIG_UBIFS_FS=y
    +CONFIG_SQUASHFS=y
    +CONFIG_SQUASHFS_LZO=y
    +CONFIG_SQUASHFS_XZ=y
    +CONFIG_PSTORE=y
    +CONFIG_PSTORE_CONSOLE=y
    +CONFIG_PSTORE_PMSG=y
    +CONFIG_PSTORE_RAM=y
    +CONFIG_NFS_FS=y
    +CONFIG_NFS_V3_ACL=y
    +CONFIG_NFS_V4=y
    +CONFIG_ROOT_NFS=y
    +CONFIG_CIFS=m
    +CONFIG_CIFS_XATTR=y
    +CONFIG_CIFS_POSIX=y
    +CONFIG_CIFS_ACL=y
    +CONFIG_NLS_CODEPAGE_437=y
    +CONFIG_NLS_ISO8859_1=y
    +CONFIG_NLS_UTF8=y
    +CONFIG_CRYPTO_USER=m
    +CONFIG_CRYPTO_TEST=m
    +CONFIG_CRYPTO_USER_API_HASH=m
    +CONFIG_CRYPTO_USER_API_SKCIPHER=m
    +CONFIG_CRYPTO_USER_API_RNG=m
    +CONFIG_CRYPTO_USER_API_AEAD=m
    +CONFIG_CRYPTO_DEV_OMAP=m
    +CONFIG_CRYPTO_DEV_OMAP_SHAM=m
    +CONFIG_CRYPTO_DEV_OMAP_AES=m
    +CONFIG_CRYPTO_DEV_OMAP_DES=m
    +CONFIG_PRINTK_TIME=y
    +CONFIG_DEBUG_FS=y
    +CONFIG_MAGIC_SYSRQ=y
    +CONFIG_SCHEDSTATS=y
    +# CONFIG_DEBUG_PREEMPT is not set
    +# CONFIG_DEBUG_BUGVERBOSE is not set
    +# CONFIG_FTRACE is not set
    +# CONFIG_ARM_UNWIND is not set
    

  • This test doesn't really help me with my issue. When I try to do a SPI read, I can see the clock going just the same as you can. But even though the clock is going, the chip select still doesn't go low. If you change D0 manually I can see that a read would work, but if the SPI device is waiting for chip select to go low before it does a write then it will never do the write, correct?

  • Of course CS needs to be asserted correctly. I don't have any HW where I could access the signal so what I described earlier was about the extend of testing I could do quickly. Might be able to try using a different SPI module other than SPI0 if you think that would be useful but I won't be able to look into this until later this week or early next week.

  • I ran a test where I do a printout every time the FORCE bit is set in the ch0conf register, and every time the ENABLE bit is set in the ch0ctrl register. The following is the printout I got when I do a read:

    [ 269.067835] force=1
    [ 269.070046] enable=0
    [ 269.072416] enable=1
    [ 269.078912] enable=0
    [ 269.081295] enable=1
    [ 269.083575] enable=0
    [ 269.090125] enable=0
    [ 269.092837] enable=0
    [ 269.098705] enable=1
    [ 269.101098] enable=0
    [ 269.103523] enable=1
    [ 269.110155] enable=0
    [ 269.112540] enable=0
    [ 269.117521] force=0

    Does this look right to you?It would seem to me like the force bit is doing what it should, but should the enable bit be flipping back and forth like this during a read? I don't really understand the relationship between SPIEN and CS.

  • Hi Tanner,

    thanks for sharing those observations. For all practical purposes I would assume the driver to be a known-good entity so that's not the place where I would start debugging. However I had another look at the document I pointed to earlier and found this:

    https://git.ti.com/cgit/processor-sdk/processor-sdk-linux/tree/Documentation/spi/spidev?h=processor-sdk-linux-4.19.y

    Standard read() and write() operations are obviously only half-duplex, and
    the chipselect is deactivated between those operations.  Full-duplex access,
    and composite operation without chipselect de-activation, is available using
    the SPI_IOC_MESSAGE(N) request.

    From this it seems like you need to access the /dev/spidev device on a lower level (through C code) than you can by just writing to it using a shell. There are actually two example programs part of the Kernel tree that you can build that do just that, allowing you to control various parameters via command line options.

    spidev_fdx.c

    https://git.ti.com/cgit/processor-sdk/processor-sdk-linux/tree/tools/spi/spidev_fdx.c?h=processor-sdk-linux-4.19.y

    spidev_test.c

    https://git.ti.com/cgit/processor-sdk/processor-sdk-linux/tree/tools/spi/spidev_test.c?h=processor-sdk-linux-4.19.y

    Can you try those out and see if now the CS signal is behaving as expected?

    Regards, Andreas