Enabling RTS on iMX6 UART4 on Apalis Module & Ixora Board

I need to use iMX6 uart 4 (in apalis signal nomenclature, uart 3) with RTS to control an RS485 transceiver. Specifically I need pin 179 for RTS and 177 for CTS. (I’m not actually using CTS but assume I need it enabled anyways.) I’ve built the following into my device tree (named “imx6q-apalis-gpio-custom.dts”):

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
//#include <dt-bindings/leds/common.h>
#include "imx6q-pinfunc.h"

/ {
    compatible = "toradex,apalis-imx6q";
};

&{/} {
    leds {
        compatible = "gpio-leds";

        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_my_gpio>;

        mygpio_sodimm_1 {
            label = "my_gpio_sodimm_1";
            gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_3 {
            label = "my_gpio_sodimm_3";
            gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_5 {
            label = "my_gpio_sodimm_5";
            gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_7 {
            label = "my_gpio_sodimm_7";
            gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_9 {
            label = "my_gpio_sodimm_9";
            gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_11 {
            label = "my_gpio_sodimm_11";
            gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_13 {
            label = "my_gpio_sodimm_13";
            gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };

        mygpio_sodimm_15 {
            label = "my_gpio_sodimm_15";
            gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "heartbeat";
            default-state = "off";
        };
    };

    
};

&uart4 { // This is Apalis UART3
    status = "okay"; // need to enable mxm pin 179 for RTS. Might also enable 177 for CTS, though don't plan on using
    linux,rs485-enabled-at-boot-time;
    rs485-rts-active-low;
    rs485-rx-during-tx;
};

&uart2 { // mxm pin 128 should be enabled for RTS, pin 130 for CTS. This is Apalis UART2
    status = "okay";
    linux,rs485-enabled-at-boot-time;
    rs485-rts-active-low;
    rs485-rx-during-tx;
};

&iomuxc {
    /*pinctrl-0 = <&pinctrl_gpio1>, <&pinctrl_gpio2>,
                <&pinctrl_gpio3>, <&pinctrl_gpio4>,
                <&pinctrl_gpio7>, <&pinctrl_gpio8>,
                <&pinctrl_gpio_hog1>, <&pinctrl_gpio_hog2>, <&pinctrl_gpio_hog3>,
                <&pinctrl_pmic_tpm_ena>, <&pinctrl_my_gpio>;*/
    pinctrl_my_gpio: mygpiogrp {
        fsl,pins =
            <MX6QDL_PAD_NANDF_D4__GPIO2_IO04 0x104>,    // SODIMM 1  // pull-down enabled and drive strength X2
            <MX6QDL_PAD_NANDF_D5__GPIO2_IO05  0x104>,   // SODIMM 3  // pull-down enabled and drive strength X2
            <MX6QDL_PAD_NANDF_D6__GPIO2_IO06 0x104>,    // SODIMM 5  // pull-down enabled and drive strength X2
            <MX6QDL_PAD_NANDF_D7__GPIO2_IO07  0x104>,   // SODIMM 7  // pull-down enabled and drive strength X2
            <MX6QDL_PAD_NANDF_RB0__GPIO6_IO10 0x104>,   // SODIMM 9  // pull-down enabled and drive strength X2
            <MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09  0x104>, // SODIMM 11 // pull-down enabled and drive strength X2
            <MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x104>,      // SODIMM 13 // pull-down enabled and drive strength X2
            <MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x104>;     // SODIMM 15 // pull-down enabled and drive strength X2
    };

    // from inspecting imx6qdl-apalis.dtsi, seems like I probably need to overwrite pinctrl_uart4_dte: uart4dtegrp with additional RTS and CTS pins
    // Might also need to disable camera usage? I don't think this is enabled currently
    pinctrl_uart4_dte: uart4dtegrp {
		fsl,pins = <
			MX6QDL_PAD_KEY_COL0__UART4_RX_DATA 0x1b0b1
			MX6QDL_PAD_KEY_ROW0__UART4_TX_DATA 0x1b0b1
            MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
            MX6QDL_PAD_CSI0_DAT16__UART4_CTS_B 0x1b0b1
		>;
	};

Using this tcbuild.yaml:

# >> NOTES:
# >> Lines containing ">>" are simply comments explaining the properties that
# >> follow; if you don't like these comments run:
# >>   $ grep -v '>>' tcbuild.yaml > tcbuild-clean.yaml
# >> A line not containing ">>" can be uncommented (by removing the hash mark
# >> plus a space from its beginning); also set the corresponding property to
# >> appropriate values.
# >> When uncommenting a line having a property, remember to uncomment all its
# >> parent properties as well; for example: if you uncomment the
# >> 'splash-screen' property, also uncomment its parent property called
# >> 'customization'.

# >> The input section specifies the image to be taken as the base for the
# >> customization.
input:
  easy-installer:
    # >> Choose one of the options (REQUIRED):
    # >> (1) Image as local folder or tarball.
    local: images/torizon-core-docker-apalis-imx6-Tezi_6.5.0+build.8.tar
    # >> (2) Remote file (optionally with a filename and or a sha256 checksum):
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-apalis-imx6-Tezi_6.5.0%2Bbuild.8.tar"
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009%2Bbuild.2.tar;filename=torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009+build.2.tar;sha256sum=368595fa3fb00af9604e70311de3b04df6b30b280deec2f8918c46f479026ddb"
    # >> (3) Image specification (URL will be generated by the tool)
    # toradex-feed:
    #   version: "5.1.0"
    #   release: quarterly
    #   machine: colibri-imx7-emmc
    #   distro: torizon-upstream
    #   variant: torizon-core-docker
    #   build-number: "1"
    #   # build-date: "20210408"

# >> The customization section defines the modifications to be applied to get
# >> the desired output image.
customization:
  # >> Splash screen:
  # splash-screen: custom-splash-screen.png
  # >> Directories overlayed to the base OSTree
  # filesystem:
     # - changes/
  device-tree:
    # >> Directories where to look for include files.
    include-dirs:
      # - device-trees/include/
      - images/linux/include
    # >> Custom device tree source:
    custom: images/linux/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
    # >> Device-tree overlays configuration:
    overlays:
      # >> Whether to ignore all overlays from the base image (or ostree
      # >> archive in the future).
      # clear: false
      # >> Specific overlays not to use from base image (useful only when
      # >> clear is false and not DT has been selected).
      # remove:
        # - apalis-imx8_hdmi_overlay.dtbo
      # >> Overlays to add to output image.
      add:
        - images/device-trees/overlays/apalis-imx6_panel-cap-touch-10inch_overlay.dts
        - images/custom/imx6q-apalis-gpio-custom.dts
  # kernel:
    # >> Custom kernel arguments.
    # arguments:
      # - key1=val1
      # - key2=val2
    # >> Modules to build and possibly load automatically.
    # modules:
      # - source-dir: virtual_touchscreen/
      #   autoload: false

# >> The output section defines properties of the output image.
output:
  # >> OSTree deployment configuration (relevant also for Easy Installer output).
  # ostree:
    # branch: my-dev-branch
    # commit-subject: "OSTree commit subject"
    # commit-body: "OSTree commit body"
  # >> Parameters for deploying to an Easy Installer image.
  easy-installer:
    # >> Output directory of the customized image (REQUIRED):
    # local: images/torizon-core-docker-apalis-imx6-Tezi_6.5.0+build.CUSTOM # this was my first build to get GPIO and uart access
    local: images/torizon-core-docker-apalis-imx6-Tezi_6.5.0+build.CUSTOM2 # this build is to enable RTS on Apalis UART3 (for RS485) and RS232 on UART2
    # >> Information used by Toradex Easy Installer:
    # name: "My customized image"
    # description: "My customized image (description)"
    # licence: files/custom-licence.html
    # release-notes: files/custom-release-notes.html
    # accept-licence: true
    # autoinstall: true
    # autoreboot: true
    # bundle:
      # >> Choose one of the options:
      # >> (1) Specify a docker-compose file whose referenced images will be downloaded.
      # >>     Properties platform, username, password and registry are optional.
      # compose-file: files/docker-compose.yml
      # platform: linux/arm/v7
      # username: "${USERNAME}"
      # password: "${PASSWORD}"
      # registry: hub.docker.com
      # >> (2) Specify a local directory containing the bundled images (previously
      # >>     obtained by 'torizoncore-builder bundle' command).
      # dir: bundle/
    # >> Provisioning configuration:
    # provisioning:
      # >> For "online" mode, properties "shared-data" and "online-data" must be specified.
      # >> For "offline" mode, property "shared-data" must be specified alone.
      # mode: "online"
      # shared-data: "shared-data.tar.gz"
      # online-data: "${ONLINE_PROVISIONING_DATA:?online provisioning data not supplied}"

This builds an image without errors, but the image does not have an apalis-uart3 in /dev. What am I doing wrong?

One theory I have is that I need to disable the camera interface, since I’m stealing the RTS and CTS pins from there. But I don’t see that enabled in any of the other device tree or device tree overlay files…

Setup:
Apalis iMX6 Quad 2GB IT V1.1Y
Ixora Carrier Board V1.3A
Torizon, using Qt C++/QML Template
Host Machine: Windows, VS Code w/ Torizon IDE Extension 2

apalis-uart3 is just a symlink and it does not appear automatically by Device tree modification. All UARTs are available as /dev/ttymxc

lrwxrwxrwx 1 root root 7 Apr 28 2022 /dev/apalis-uart1 → ttymxc0
lrwxrwxrwx 1 root root 7 Feb 27 17:17 /dev/apalis-uart2 → ttymxc1
lrwxrwxrwx 1 root root 7 Feb 27 17:17 /dev/apalis-uart3 → ttymxc3
lrwxrwxrwx 1 root root 7 Feb 27 17:17 /dev/apalis-uart4 → ttymxc4

I’m also not seeing ttymxc3. Are there any obvious mistakes in my .dts or tcbuild.yaml?

I assume you are trying to access the UART from within a container. If so, please refer to this article.

Ultimately I am trying to access from within a container, but I’m saying I’m not even seeing the uart show up in /dev when I login directly to the SoM.

I’ve already added uart1-uart4 to my docker-compose.yml and tested this file on a previous image and gotten working hardware access. I believe the fact that the device isn’t even showing up is a different issue related to my device tree modifications, as that’s the only thing I changed from my previous image and tests.

Could you share an output of ls -al /dev command?

Sure thing, here it is:

total 4
drwxr-xr-x 14 root root        4340 Apr 17 17:26 .
drwxr-xr-x 13 root root        4096 Apr 11 14:43 ..
lrwxrwxrwx  1 root root           5 Apr 17 17:26 apalis-i2c-on-module -> i2c-2
lrwxrwxrwx  1 root root           5 Apr 17 17:26 apalis-i2c1 -> i2c-0
lrwxrwxrwx  1 root root           5 Apr 17 17:26 apalis-i2c3 -> i2c-1
lrwxrwxrwx  1 root root           7 Apr 17 17:26 apalis-uart1 -> ttymxc0
lrwxrwxrwx  1 root root           7 Apr 17 17:26 apalis-uart2 -> ttymxc1
lrwxrwxrwx  1 root root           7 Apr 17 17:26 apalis-uart4 -> ttymxc4
lrwxrwxrwx  1 root root           9 Apr 17 17:26 apalis-watchdog -> watchdog0
lrwxrwxrwx  1 root root           9 Apr 17 17:26 apalis-watchdog-soc -> watchdog                                                                                                             0
crw-r--r--  1 root root     10, 235 Apr 17 17:26 autofs
drwxr-xr-x  2 root root         620 Apr 17 17:26 block
crw-------  1 root root     10, 234 Apr 28  2022 btrfs-control
drwxr-xr-x  3 root root          60 Jan  1  1970 bus
drwxr-xr-x  2 root root        3340 Apr 17 17:26 char
crw-------  1 root root      5,   1 Apr 17 17:26 console
crw-------  1 root root     10, 127 Apr 17 17:26 cpu_dma_latency
drwxr-xr-x  7 root root         140 Jan  1  1970 disk
drwxr-xr-x  3 root root         120 Jan  1  1970 dri
lrwxrwxrwx  1 root root           7 Apr 17 17:26 emmc -> mmcblk2
lrwxrwxrwx  1 root root          12 Apr 17 17:26 emmc-boot0 -> mmcblk2boot0
lrwxrwxrwx  1 root root          12 Apr 17 17:26 emmc-boot1 -> mmcblk2boot1
lrwxrwxrwx  1 root root           9 Apr 17 17:26 emmc-part1 -> mmcblk2p1
crw-rw----  1 root video    29,   0 Apr 17 17:26 fb0
lrwxrwxrwx  1 root root          13 Apr 28  2022 fd -> /proc/self/fd
crw-rw-rw-  1 root root      1,   7 Apr 17 17:26 full
crw-rw-rw-  1 root root     10, 229 Apr 17 17:26 fuse
crw-rw-r--  1 root gpio    254,   0 Apr 17 17:26 gpiochip0
crw-rw-r--  1 root gpio    254,   1 Apr 17 17:26 gpiochip1
crw-rw-r--  1 root gpio    254,   2 Apr 17 17:26 gpiochip2
crw-rw-r--  1 root gpio    254,   3 Apr 17 17:26 gpiochip3
crw-rw-r--  1 root gpio    254,   4 Apr 17 17:26 gpiochip4
crw-rw-r--  1 root gpio    254,   5 Apr 17 17:26 gpiochip5
crw-rw-r--  1 root gpio    254,   6 Apr 17 17:26 gpiochip6
crw-------  1 root root     10, 183 Apr 17 17:26 hwrng
crw-rw-r--  1 root i2cdev   89,   0 Apr 17 17:26 i2c-0
crw-rw-r--  1 root i2cdev   89,   1 Apr 17 17:26 i2c-1
crw-rw-r--  1 root i2cdev   89,   2 Apr 17 17:26 i2c-2
lrwxrwxrwx  1 root root          12 Apr 28  2022 initctl -> /run/initctl
drwxr-xr-x  3 root root          80 Apr 17 17:26 input
crw-r--r--  1 root root      1,  11 Apr 17 17:26 kmsg
lrwxrwxrwx  1 root root          28 Apr 28  2022 log -> /run/systemd/journal/dev                                                                                                             -log
crw-rw----  1 root disk     10, 237 Apr 17 17:26 loop-control
brw-rw----  1 root disk      7,   0 Apr 17 17:26 loop0
brw-rw----  1 root disk      7,   1 Apr 17 17:26 loop1
brw-rw----  1 root disk      7,   2 Apr 17 17:26 loop2
brw-rw----  1 root disk      7,   3 Apr 17 17:26 loop3
brw-rw----  1 root disk      7,   4 Apr 17 17:26 loop4
brw-rw----  1 root disk      7,   5 Apr 17 17:26 loop5
brw-rw----  1 root disk      7,   6 Apr 17 17:26 loop6
brw-rw----  1 root disk      7,   7 Apr 17 17:26 loop7
crw-rw----  1 root video   252,   0 Apr 17 17:26 media0
crw-r-----  1 root kmem      1,   1 Apr 17 17:26 mem
brw-rw----  1 root disk    179,   0 Apr 17 17:26 mmcblk2
brw-rw----  1 root disk    179,  32 Apr 17 17:26 mmcblk2boot0
brw-rw----  1 root disk    179,  64 Apr 17 17:26 mmcblk2boot1
brw-rw----  1 root disk    179,   1 Apr 17 17:26 mmcblk2p1
crw-------  1 root root    243,   0 Apr 17 17:26 mmcblk2rpmb
drwxrwxrwt  2 root root          40 Jan  1  1970 mqueue
drwxr-xr-x  2 root root          60 Apr 28  2022 net
crw-rw-rw-  1 root root      1,   3 Apr 17 17:26 null
crw-r-----  1 root kmem      1,   4 Apr 17 17:26 port
crw-------  1 root root    108,   0 Apr 28  2022 ppp
crw-------  1 root root    250,   0 Apr 17 17:26 pps0
crw-rw-rw-  1 root tty       5,   2 Apr 17 18:38 ptmx
crw-------  1 root root    249,   0 Apr 17 17:26 ptp0
drwxr-xr-x  2 root root           0 Jan  1  1970 pts
brw-rw----  1 root disk      1,   0 Apr 17 17:26 ram0
brw-rw----  1 root disk      1,   1 Apr 17 17:26 ram1
brw-rw----  1 root disk      1,  10 Apr 17 17:26 ram10
brw-rw----  1 root disk      1,  11 Apr 17 17:26 ram11
brw-rw----  1 root disk      1,  12 Apr 17 17:26 ram12
brw-rw----  1 root disk      1,  13 Apr 17 17:26 ram13
brw-rw----  1 root disk      1,  14 Apr 17 17:26 ram14
brw-rw----  1 root disk      1,  15 Apr 17 17:26 ram15
brw-rw----  1 root disk      1,   2 Apr 17 17:26 ram2
brw-rw----  1 root disk      1,   3 Apr 17 17:26 ram3
brw-rw----  1 root disk      1,   4 Apr 17 17:26 ram4
brw-rw----  1 root disk      1,   5 Apr 17 17:26 ram5
brw-rw----  1 root disk      1,   6 Apr 17 17:26 ram6
brw-rw----  1 root disk      1,   7 Apr 17 17:26 ram7
brw-rw----  1 root disk      1,   8 Apr 17 17:26 ram8
brw-rw----  1 root disk      1,   9 Apr 17 17:26 ram9
crw-rw-rw-  1 root root      1,   8 Apr 17 17:26 random
crw-rw-r--  1 root root     10, 242 Apr 17 17:26 rfkill
lrwxrwxrwx  1 root root           4 Apr 17 17:26 rtc -> rtc0
crw-------  1 root root    253,   0 Apr 17 17:26 rtc0
crw-------  1 root root    253,   1 Apr 17 17:26 rtc1
drwxrwxrwt  2 root root          40 Apr 28  2022 shm
drwxr-xr-x  3 root root         200 Apr 17 17:26 snd
lrwxrwxrwx  1 root root          15 Apr 28  2022 stderr -> /proc/self/fd/2
lrwxrwxrwx  1 root root          15 Apr 28  2022 stdin -> /proc/self/fd/0
lrwxrwxrwx  1 root root          15 Apr 28  2022 stdout -> /proc/self/fd/1
crw-rw-rw-  1 root tty       5,   0 Apr 17 17:26 tty
crw--w----  1 root tty       4,   0 Apr 17 17:26 tty0
crw--w----  1 root tty       4,   1 Apr 17 17:26 tty1
crw--w----  1 root tty       4,  10 Apr 17 17:26 tty10
crw--w----  1 root tty       4,  11 Apr 17 17:26 tty11
crw--w----  1 root tty       4,  12 Apr 17 17:26 tty12
crw--w----  1 root tty       4,  13 Apr 17 17:26 tty13
crw--w----  1 root tty       4,  14 Apr 17 17:26 tty14
crw--w----  1 root tty       4,  15 Apr 17 17:26 tty15
crw--w----  1 root tty       4,  16 Apr 17 17:26 tty16
crw--w----  1 root tty       4,  17 Apr 17 17:26 tty17
crw--w----  1 root tty       4,  18 Apr 17 17:26 tty18
crw--w----  1 root tty       4,  19 Apr 17 17:26 tty19
crw--w----  1 root tty       4,   2 Apr 17 17:26 tty2
crw--w----  1 root tty       4,  20 Apr 17 17:26 tty20
crw--w----  1 root tty       4,  21 Apr 17 17:26 tty21
crw--w----  1 root tty       4,  22 Apr 17 17:26 tty22
crw--w----  1 root tty       4,  23 Apr 17 17:26 tty23
crw--w----  1 root tty       4,  24 Apr 17 17:26 tty24
crw--w----  1 root tty       4,  25 Apr 17 17:26 tty25
crw--w----  1 root tty       4,  26 Apr 17 17:26 tty26
crw--w----  1 root tty       4,  27 Apr 17 17:26 tty27
crw--w----  1 root tty       4,  28 Apr 17 17:26 tty28
crw--w----  1 root tty       4,  29 Apr 17 17:26 tty29
crw--w----  1 root tty       4,   3 Apr 17 17:26 tty3
crw--w----  1 root tty       4,  30 Apr 17 17:26 tty30
crw--w----  1 root tty       4,  31 Apr 17 17:26 tty31
crw--w----  1 root tty       4,  32 Apr 17 17:26 tty32
crw--w----  1 root tty       4,  33 Apr 17 17:26 tty33
crw--w----  1 root tty       4,  34 Apr 17 17:26 tty34
crw--w----  1 root tty       4,  35 Apr 17 17:26 tty35
crw--w----  1 root tty       4,  36 Apr 17 17:26 tty36
crw--w----  1 root tty       4,  37 Apr 17 17:26 tty37
crw--w----  1 root tty       4,  38 Apr 17 17:26 tty38
crw--w----  1 root tty       4,  39 Apr 17 17:26 tty39
crw--w----  1 root tty       4,   4 Apr 17 17:26 tty4
crw--w----  1 root tty       4,  40 Apr 17 17:26 tty40
crw--w----  1 root tty       4,  41 Apr 17 17:26 tty41
crw--w----  1 root tty       4,  42 Apr 17 17:26 tty42
crw--w----  1 root tty       4,  43 Apr 17 17:26 tty43
crw--w----  1 root tty       4,  44 Apr 17 17:26 tty44
crw--w----  1 root tty       4,  45 Apr 17 17:26 tty45
crw--w----  1 root tty       4,  46 Apr 17 17:26 tty46
crw--w----  1 root tty       4,  47 Apr 17 17:26 tty47
crw--w----  1 root tty       4,  48 Apr 17 17:26 tty48
crw--w----  1 root tty       4,  49 Apr 17 17:26 tty49
crw--w----  1 root tty       4,   5 Apr 17 17:26 tty5
crw--w----  1 root tty       4,  50 Apr 17 17:26 tty50
crw--w----  1 root tty       4,  51 Apr 17 17:26 tty51
crw--w----  1 root tty       4,  52 Apr 17 17:26 tty52
crw--w----  1 root tty       4,  53 Apr 17 17:26 tty53
crw--w----  1 root tty       4,  54 Apr 17 17:26 tty54
crw--w----  1 root tty       4,  55 Apr 17 17:26 tty55
crw--w----  1 root tty       4,  56 Apr 17 17:26 tty56
crw--w----  1 root tty       4,  57 Apr 17 17:26 tty57
crw--w----  1 root tty       4,  58 Apr 17 17:26 tty58
crw--w----  1 root tty       4,  59 Apr 17 17:26 tty59
crw--w----  1 root tty       4,   6 Apr 17 17:26 tty6
crw--w----  1 root tty       4,  60 Apr 17 17:26 tty60
crw--w----  1 root tty       4,  61 Apr 17 17:26 tty61
crw--w----  1 root tty       4,  62 Apr 17 17:26 tty62
crw--w----  1 root tty       4,  63 Apr 17 17:26 tty63
crw--w----  1 root tty       4,   7 Apr 17 17:26 tty7
crw--w----  1 root tty       4,   8 Apr 17 17:26 tty8
crw--w----  1 root tty       4,   9 Apr 17 17:26 tty9
crw-rw----  1 root dialout 207,  16 Apr 17 17:26 ttymxc0
crw-rw----  1 root dialout 207,  17 Apr 17 17:26 ttymxc1
crw-rw----  1 root dialout 207,  20 Apr 17 17:26 ttymxc4
crw-------  1 root root     10, 126 Apr 17 17:26 ubi_ctrl
crw-------  1 root root     10, 223 Apr 17 17:26 uinput
crw-rw-rw-  1 root root      1,   9 Apr 17 17:26 urandom
drwxr-xr-x  3 root root          60 Apr 17 17:26 v4l
crw-rw----  1 root video    81,   8 Apr 17 17:26 v4l-subdev0
crw-rw----  1 root video    81,   9 Apr 17 17:26 v4l-subdev1
crw-rw----  1 root video    81,  18 Apr 17 17:26 v4l-subdev10
crw-rw----  1 root video    81,  19 Apr 17 17:26 v4l-subdev11
crw-rw----  1 root video    81,  20 Apr 17 17:26 v4l-subdev12
crw-rw----  1 root video    81,  10 Apr 17 17:26 v4l-subdev2
crw-rw----  1 root video    81,  11 Apr 17 17:26 v4l-subdev3
crw-rw----  1 root video    81,  12 Apr 17 17:26 v4l-subdev4
crw-rw----  1 root video    81,  13 Apr 17 17:26 v4l-subdev5
crw-rw----  1 root video    81,  14 Apr 17 17:26 v4l-subdev6
crw-rw----  1 root video    81,  15 Apr 17 17:26 v4l-subdev7
crw-rw----  1 root video    81,  16 Apr 17 17:26 v4l-subdev8
crw-rw----  1 root video    81,  17 Apr 17 17:26 v4l-subdev9
crw-rw----  1 root tty       7,   0 Apr 17 17:26 vcs
crw-rw----  1 root tty       7,   1 Apr 17 17:26 vcs1
crw-rw----  1 root tty       7,   2 Apr 17 17:26 vcs2
crw-rw----  1 root tty       7,   3 Apr 17 17:26 vcs3
crw-rw----  1 root tty       7,   4 Apr 17 17:26 vcs4
crw-rw----  1 root tty       7,   5 Apr 17 17:26 vcs5
crw-rw----  1 root tty       7,   6 Apr 17 17:26 vcs6
crw-rw----  1 root tty       7, 128 Apr 17 17:26 vcsa
crw-rw----  1 root tty       7, 129 Apr 17 17:26 vcsa1
crw-rw----  1 root tty       7, 130 Apr 17 17:26 vcsa2
crw-rw----  1 root tty       7, 131 Apr 17 17:26 vcsa3
crw-rw----  1 root tty       7, 132 Apr 17 17:26 vcsa4
crw-rw----  1 root tty       7, 133 Apr 17 17:26 vcsa5
crw-rw----  1 root tty       7, 134 Apr 17 17:26 vcsa6
crw-rw----  1 root tty       7,  64 Apr 17 17:26 vcsu
crw-rw----  1 root tty       7,  65 Apr 17 17:26 vcsu1
crw-rw----  1 root tty       7,  66 Apr 17 17:26 vcsu2
crw-rw----  1 root tty       7,  67 Apr 17 17:26 vcsu3
crw-rw----  1 root tty       7,  68 Apr 17 17:26 vcsu4
crw-rw----  1 root tty       7,  69 Apr 17 17:26 vcsu5
crw-rw----  1 root tty       7,  70 Apr 17 17:26 vcsu6
crw-------  1 root root     10, 137 Apr 28  2022 vhci
crw-rw----  1 root video    81,   0 Apr 17 17:26 video0
crw-rw----  1 root video    81,   1 Apr 17 17:26 video1
crw-rw----  1 root video    81,  23 Apr 17 17:26 video10
crw-rw----  1 root video    81,  24 Apr 17 17:26 video11
crw-rw----  1 root video    81,  25 Apr 17 17:26 video12
crw-rw----  1 root video    81,   2 Apr 17 17:26 video2
crw-rw----  1 root video    81,   3 Apr 17 17:26 video3
crw-rw----  1 root video    81,   4 Apr 17 17:26 video4
crw-rw----  1 root video    81,   5 Apr 17 17:26 video5
crw-rw----  1 root video    81,   6 Apr 17 17:26 video6
crw-rw----  1 root video    81,   7 Apr 17 17:26 video7
crw-rw----  1 root video    81,  21 Apr 17 17:26 video8
crw-rw----  1 root video    81,  22 Apr 17 17:26 video9
crw-------  1 root root     10, 130 Apr 17 17:26 watchdog
crw-------  1 root root    246,   0 Apr 17 17:26 watchdog0
crw-rw-rw-  1 root root      1,   5 Apr 17 17:26 zero
brw-rw----  1 root disk    253,   0 Apr 17 17:26 zram0

Can you share the kernel startup with debug turned up?

Not sure if this is exactly what you’re looking for, but here’s the output of dmesg --level=err,warn:

[    0.127597] usb_phy_generic usbphynop1: supply vcc not found, using dummy regulator
[    0.127774] usb_phy_generic usbphynop1: dummy supplies not allowed for exclusive requests
[    0.127946] usb_phy_generic usbphynop2: supply vcc not found, using dummy regulator
[    0.128086] usb_phy_generic usbphynop2: dummy supplies not allowed for exclusive requests
[    0.148359] stmpe-i2c 2-0041: failed to read regs 0x0: -6
[    0.180168] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
[    1.462881] imx-uart 21f0000.serial: prop pinctrl-0 index 0 invalid phandle
[    1.511943] at24 0-0050: supply vcc not found, using dummy regulator
[    1.514477] ahci-imx 2200000.sata: supply ahci not found, using dummy regulator
[    1.514684] ahci-imx 2200000.sata: supply phy not found, using dummy regulator
[    1.514768] ahci-imx 2200000.sata: supply target not found, using dummy regulator
[    1.556269] rtc-ds1307 0-0068: oscillator failed, set time!
[    1.557911] rtc-ds1307 0-0068: hctosys: unable to read the hardware clock
[    1.574625] imx6q-pinctrl 20e0000.pinctrl: pin MX6Q_PAD_NANDF_D4 already requested by 20e0000.pinctrl; cannot claim for leds
[    1.585915] imx6q-pinctrl 20e0000.pinctrl: pin-195 (leds) status -22
[    1.592292] imx6q-pinctrl 20e0000.pinctrl: could not request pin 195 (MX6Q_PAD_NANDF_D4) from group mygpiogrp  on device 20e0000.pinctrl
[    1.604602] leds-gpio leds: Error applying setting, reverse things back
[    1.909571] imx_usb 2184200.usb: No over current polarity defined
[    2.734654] imx6q-pcie 1ffc000.pcie: Phy link never came up
[    3.744382] imx6q-pcie 1ffc000.pcie: Phy link never came up
[    6.425563] systemd-sysv-generator[508]: SysV service '/etc/init.d/fuse3' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[   10.925471] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.222530] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.581920] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.956643] atmel_mxt_ts 0-004a: supply vdda not found, using dummy regulator
[   11.989941] fsl-asoc-card sound: ASoC: driver name too long 'imx6q-apalis-sgtl5000' -> 'imx6q-apalis-sg'
[   12.055277] atmel_mxt_ts 0-004a: supply vdd not found, using dummy regulator
[   12.294513] atmel_mxt_ts 0-004a: __mxt_read_reg: i2c transfer failed (-6)
[   12.307014] atmel_mxt_ts 0-004a: mxt_bootloader_read: i2c recv failed (-6)
[   12.377892] atmel_mxt_ts 0-004a: mxt_bootloader_read: i2c recv failed (-6)

And here’s the output of dmesg:


[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 6.1.71-6.5.0+git.38fb82ecd144 (oe-user@oe-host) (arm-tdx-linux-gnueabi-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1-TorizonCore SMP Tue Dec 19 14:52:07 UTC 2023
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Toradex Apalis iMX6Q/D Module on Ixora Carrier Board V1.2
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x80000000
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000010000000-0x0000000035ffffff]
[    0.000000]   HighMem  [mem 0x0000000036000000-0x000000008fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000010000000-0x000000008fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000010000000-0x000000008fffffff]
[    0.000000] percpu: Embedded 17 pages/cpu s37972 r8192 d23468 u69632
[    0.000000] pcpu-alloc: s37972 r8192 d23468 u69632 alloc=17*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 522920
[    0.000000] Kernel command line: enable_wait_mode=off vmalloc=400M root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/b47e88aa7ff7f47e9f34cee3530048f7e7de16bf2daf557c572881e539298238/0
[    0.000000] Unknown kernel command line parameters "splash enable_wait_mode=off ostree=/ostree/boot.1/torizon/b47e88aa7ff7f47e9f34cee3530048f7e7de16bf2daf557c572881e539298238/0", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1782564K/2097152K available (13312K kernel code, 2077K rwdata, 4908K rodata, 1024K init, 468K bss, 52444K reserved, 262144K cma-reserved, 1212416K highmem)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] L2C-310 errata 752271 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 16 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 1024 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c7, AUX_CTRL 0x76470001
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] Switching to timer-based delay loop, resolution 333ns
[    0.000000] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
[    0.000019] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
[    0.001654] Console: colour dummy device 80x30
[    0.001716] printk: console [tty0] enabled
[    0.001761] Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000)
[    0.001778] CPU: Testing write buffer coherency: ok
[    0.001819] CPU0: Spectre v2: using BPIALL workaround
[    0.001829] pid_max: default: 32768 minimum: 301
[    0.002057] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.002086] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.004371] cblist_init_generic: Setting adjustable number of callback queues.
[    0.004383] cblist_init_generic: Setting shift to 2 and lim to 1.
[    0.004574] Setting up static identity map for 0x10100000 - 0x10100078
[    0.004777] rcu: Hierarchical SRCU implementation.
[    0.004785] rcu:     Max phase no-delay instances is 1000.
[    0.006475] EFI services will not be available.
[    0.007117] smp: Bringing up secondary CPUs ...
[    0.008192] CPU1: Spectre v2: using BPIALL workaround
[    0.009382] CPU2: Spectre v2: using BPIALL workaround
[    0.010609] CPU3: Spectre v2: using BPIALL workaround
[    0.010737] smp: Brought up 1 node, 4 CPUs
[    0.010754] SMP: Total of 4 processors activated (24.00 BogoMIPS).
[    0.010767] CPU: All CPU(s) started in SVC mode.
[    0.011392] devtmpfs: initialized
[    0.023967] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.024239] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.024270] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.040253] pinctrl core: initialized pinctrl subsystem
[    0.042056] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.050243] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.051373] thermal_sys: Registered thermal governor 'step_wise'
[    0.051447] cpuidle: using governor menu
[    0.051604] CPU identified as i.MX6Q, silicon rev 1.6
[    0.060525] platform soc: Fixed dependency cycle(s) with /soc/bus@2000000/gpc@20dc000
[    0.072359] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio8grp
[    0.072389] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio7grp
[    0.072412] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio6grp
[    0.072434] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio5grp
[    0.072455] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio4grp
[    0.072476] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio3grp
[    0.072496] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio2grp
[    0.072515] platform 20e0000.pinctrl: Fixed dependency cycle(s) with /soc/bus@2000000/pinctrl@20e0000/apalisgpio1grp
[    0.077369] platform 2400000.ipu: Fixed dependency cycle(s) with /ldb/lvds-channel@0/port@1/endpoint
[    0.077403] platform 2400000.ipu: Fixed dependency cycle(s) with /ldb/lvds-channel@0/port@0/endpoint
[    0.078310] platform 2800000.ipu: Fixed dependency cycle(s) with /ldb/lvds-channel@0/port@3/endpoint
[    0.078349] platform 2800000.ipu: Fixed dependency cycle(s) with /ldb/lvds-channel@0/port@2/endpoint
[    0.078376] platform 2800000.ipu: Fixed dependency cycle(s) with /soc/bus@2000000/iomuxc-gpr@20e0000/ipu2_csi1_mux/port@2/endpoint
[    0.079696] platform panel-lvds: Fixed dependency cycle(s) with /ldb/lvds-channel@0/port@4/endpoint
[    0.085128] No ATAGs?
[    0.085308] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.085321] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.086514] imx6q-pinctrl 20e0000.pinctrl: initialized IMX pinctrl driver
[    0.090054] Serial: AMBA PL011 UART driver
[    0.101934] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.109154] cryptd: max_cpu_qlen set to 1000
[    0.110920] gpio-11 (uart-2-4-on-x21-enable-hog): hogged as output/high
[    0.126778] SCSI subsystem initialized
[    0.127094] libata version 3.00 loaded.
[    0.127357] usbcore: registered new interface driver usbfs
[    0.127413] usbcore: registered new interface driver hub
[    0.127462] usbcore: registered new device driver usb
[    0.127597] usb_phy_generic usbphynop1: supply vcc not found, using dummy regulator
[    0.127774] usb_phy_generic usbphynop1: dummy supplies not allowed for exclusive requests
[    0.127946] usb_phy_generic usbphynop2: supply vcc not found, using dummy regulator
[    0.128086] usb_phy_generic usbphynop2: dummy supplies not allowed for exclusive requests
[    0.130240] i2c i2c-0: IMX I2C adapter registered
[    0.148359] stmpe-i2c 2-0041: failed to read regs 0x0: -6
[    0.148444] i2c i2c-2: IMX I2C adapter registered
[    0.149339] i2c i2c-1: IMX I2C adapter registered
[    0.149650] mc: Linux media interface: v0.10
[    0.149729] videodev: Linux video capture interface: v2.00
[    0.149853] pps_core: LinuxPPS API ver. 1 registered
[    0.149863] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.149885] PTP clock support registered
[    0.150413] Advanced Linux Sound Architecture Driver Initialized.
[    0.151207] Bluetooth: Core ver 2.22
[    0.151254] NET: Registered PF_BLUETOOTH protocol family
[    0.151263] Bluetooth: HCI device and connection manager initialized
[    0.151278] Bluetooth: HCI socket layer initialized
[    0.151289] Bluetooth: L2CAP socket layer initialized
[    0.151310] Bluetooth: SCO socket layer initialized
[    0.163911] clocksource: Switched to clocksource mxc_timer1
[    0.164539] VFS: Disk quotas dquot_6.6.0
[    0.164627] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.174596] NET: Registered PF_INET protocol family
[    0.175064] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.177586] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.177623] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.177646] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.177737] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.178040] TCP: Hash tables configured (established 8192 bind 8192)
[    0.178262] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.178316] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.178610] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.179259] RPC: Registered named UNIX socket transport module.
[    0.179271] RPC: Registered udp transport module.
[    0.179277] RPC: Registered tcp transport module.
[    0.179284] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.179299] PCI: CLS 0 bytes, default 64
[    0.179907] Trying to unpack rootfs image as initramfs...
[    0.180168] armv7-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
[    0.194304] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[    1.008037] Freeing initrd memory: 9656K
[    1.321625] Initialise system trusted keyrings
[    1.322028] workingset: timestamp_bits=14 max_order=19 bucket_order=5
[    1.328599] NFS: Registering the id_resolver key type
[    1.328660] Key type id_resolver registered
[    1.328670] Key type id_legacy registered
[    1.328758] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.328770] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    1.420858] NET: Registered PF_ALG protocol family
[    1.420882] Key type asymmetric registered
[    1.420892] Asymmetric key parser 'x509' registered
[    1.421059] bounce: pool size: 64 pages
[    1.421184] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    1.421431] io scheduler mq-deadline registered
[    1.421443] io scheduler kyber registered
[    1.426757] imx6q-pcie 1ffc000.pcie: host bridge /soc/pcie@1ffc000 ranges:
[    1.426829] imx6q-pcie 1ffc000.pcie:       IO 0x0001f80000..0x0001f8ffff -> 0x0000000000
[    1.426868] imx6q-pcie 1ffc000.pcie:      MEM 0x0001000000..0x0001efffff -> 0x0001000000
[    1.430578] mxs-dma 110000.dma-controller: initialized
[    1.435791] pfuze100-regulator 2-0008: Full layer: 2, Metal layer: 1
[    1.436527] pfuze100-regulator 2-0008: FAB: 0, FIN: 0
[    1.436541] pfuze100-regulator 2-0008: pfuze100 found.
[    1.454962] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 268, base_baud = 5000000) is a IMX
[    1.461159] printk: console [ttymxc0] enabled
[    1.462370] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 269, base_baud = 5000000) is a IMX
[    1.462881] imx-uart 21f0000.serial: prop pinctrl-0 index 0 invalid phandle
[    1.470303] 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 270, base_baud = 5000000) is a IMX
[    1.486639] etnaviv etnaviv: bound 130000.gpu (ops gpu_ops)
[    1.486922] etnaviv etnaviv: bound 134000.gpu (ops gpu_ops)
[    1.487178] etnaviv etnaviv: bound 2204000.gpu (ops gpu_ops)
[    1.487207] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108
[    1.487496] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[    1.487575] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
[    1.487596] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0
[    1.488105] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
[    1.490028] imx-ipuv3 2400000.ipu: IPUv3H probed
[    1.491076] imx-ipuv3 2800000.ipu: IPUv3H probed
[    1.502304] brd: module loaded
[    1.511006] loop: module loaded
[    1.511672] zram: Added device: zram0
[    1.511943] at24 0-0050: supply vcc not found, using dummy regulator
[    1.513073] at24 0-0050: 256 byte 24c02 EEPROM, writable, 16 bytes/write
[    1.514335] ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024
[    1.514353] ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480
[    1.514366] ahci-imx 2200000.sata: fsl,transmit-atten-16ths not specified, using 00002000
[    1.514379] ahci-imx 2200000.sata: fsl,receive-eq-mdB not specified, using 05000000
[    1.514477] ahci-imx 2200000.sata: supply ahci not found, using dummy regulator
[    1.514684] ahci-imx 2200000.sata: supply phy not found, using dummy regulator
[    1.514768] ahci-imx 2200000.sata: supply target not found, using dummy regulator
[    1.517670] ahci-imx 2200000.sata: SSS flag set, parallel bus scan disabled
[    1.517703] ahci-imx 2200000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
[    1.517725] ahci-imx 2200000.sata: flags: ncq sntf stag pm led clo only pmp pio slum part ccc apst
[    1.519481] scsi host0: ahci-imx
[    1.519828] ata1: SATA max UDMA/133 mmio [mem 0x02200000-0x02203fff] port 0x100 irq 278
[    1.535565] pps pps0: new PPS source ptp0
[    1.547596] fec 2188000.ethernet eth0: registered PHC device 0
[    1.549382] usbcore: registered new interface driver usb-storage
[    1.549498] usbcore: registered new interface driver usbserial_generic
[    1.549540] usbserial: USB Serial support registered for generic
[    1.556269] rtc-ds1307 0-0068: oscillator failed, set time!
[    1.556486] rtc-ds1307 0-0068: registered as rtc0
[    1.557911] rtc-ds1307 0-0068: hctosys: unable to read the hardware clock
[    1.566558] snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc1
[    1.566742] i2c_dev: i2c /dev entries driver
[    1.570995] sdhci: Secure Digital Host Controller Interface driver
[    1.571008] sdhci: Copyright(c) Pierre Ossman
[    1.571073] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.572711] sdhci-esdhc-imx 2190000.mmc: Got CD GPIO
[    1.574625] imx6q-pinctrl 20e0000.pinctrl: pin MX6Q_PAD_NANDF_D4 already requested by 20e0000.pinctrl; cannot claim for leds
[    1.585915] imx6q-pinctrl 20e0000.pinctrl: pin-195 (leds) status -22
[    1.592292] imx6q-pinctrl 20e0000.pinctrl: could not request pin 195 (MX6Q_PAD_NANDF_D4) from group mygpiogrp  on device 20e0000.pinctrl
[    1.604602] leds-gpio leds: Error applying setting, reverse things back
[    1.612070] ledtrig-cpu: registered to indicate activity on CPUs
[    1.612927] caam 2100000.crypto: Entropy delay = 3200
[    1.617529] mmc0: SDHCI controller on 2190000.mmc [2190000.mmc] using ADMA
[    1.642638] mmc2: SDHCI controller on 2198000.mmc [2198000.mmc] using ADMA
[    1.673726] caam 2100000.crypto: Instantiated RNG4 SH0
[    1.700963] mmc2: new DDR MMC card at address 0001
[    1.702031] mmcblk2: mmc2:0001 M04A11 3.64 GiB
[    1.704990]  mmcblk2: p1
[    1.706001] mmcblk2boot0: mmc2:0001 M04A11 4.00 MiB
[    1.708504] mmcblk2boot1: mmc2:0001 M04A11 4.00 MiB
[    1.710539] mmcblk2rpmb: mmc2:0001 M04A11 4.00 MiB, chardev (243:0)
[    1.734492] caam 2100000.crypto: Instantiated RNG4 SH1
[    1.734671] caam 2100000.crypto: device ID = 0x0a16010000000000 (Era 4)
[    1.734698] caam 2100000.crypto: job rings = 2, qi = 0
[    1.734747] imx6q-pcie 1ffc000.pcie: iATU unroll: disabled
[    1.734761] imx6q-pcie 1ffc000.pcie: iATU regions: 4 ob, 4 ib, align 64K, limit 4G
[    1.738195] caam algorithms registered in /proc/crypto
[    1.738455] caam 2100000.crypto: registering rng-caam
[    1.795595] caam 2100000.crypto: rng crypto API alg registered prng-caam
[    1.797085] hid: raw HID events driver (C) Jiri Kosina
[    1.797275] usbcore: registered new interface driver usbhid
[    1.797288] usbhid: USB HID core driver
[    1.798225] imx-ipuv3-csi imx-ipuv3-csi.0: Registered ipu1_csi0 capture as /dev/video0
[    1.798483] imx-ipuv3 2400000.ipu: Registered ipu1_ic_prpenc capture as /dev/video1
[    1.798705] imx-ipuv3 2400000.ipu: Registered ipu1_ic_prpvf capture as /dev/video2
[    1.799132] imx-ipuv3-csi imx-ipuv3-csi.1: Registered ipu1_csi1 capture as /dev/video3
[    1.799573] imx-ipuv3-csi imx-ipuv3-csi.4: Registered ipu2_csi0 capture as /dev/video4
[    1.799817] imx-ipuv3 2800000.ipu: Registered ipu2_ic_prpenc capture as /dev/video5
[    1.800026] imx-ipuv3 2800000.ipu: Registered ipu2_ic_prpvf capture as /dev/video6
[    1.800403] imx-ipuv3-csi imx-ipuv3-csi.5: Registered ipu2_csi1 capture as /dev/video7
[    1.801710]  cs_system_cfg: CoreSight Configuration manager initialised
[    1.804916] usbcore: registered new interface driver snd-usb-audio
[    1.808907] NET: Registered PF_INET6 protocol family
[    1.810486] Segment Routing with IPv6
[    1.810549] In-situ OAM (IOAM) with IPv6
[    1.810653] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.811379] NET: Registered PF_PACKET protocol family
[    1.811502] Key type dns_resolver registered
[    1.813558] Registering SWP/SWPB emulation handler
[    1.822261] registered taskstats version 1
[    1.822311] Loading compiled-in X.509 certificates
[    1.822471] Key type .fscrypt registered
[    1.822483] Key type fscrypt-provisioning registered
[    1.845846] ata1: SATA link down (SStatus 0 SControl 300)
[    1.845962] ahci-imx 2200000.sata: no device found, disabling link.
[    1.845988] ahci-imx 2200000.sata: pass ahci_imx..hotplug=1 to enable hotplug
[    1.884515] Stack Depot allocating hash table of 65536 entries with kvcalloc
[    1.886334] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
[    1.886499] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
[    1.886666] imx-drm display-subsystem: bound imx-ipuv3-crtc.6 (ops ipu_crtc_ops)
[    1.886811] imx-drm display-subsystem: bound imx-ipuv3-crtc.7 (ops ipu_crtc_ops)
[    1.887040] imx-drm display-subsystem: bound ldb (ops imx_ldb_ops)
[    1.887599] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[    1.901599] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device
[    1.909571] imx_usb 2184200.usb: No over current polarity defined
[    1.915876] ci_hdrc ci_hdrc.1: EHCI Host Controller
[    1.915944] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
[    1.944012] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[    1.944502] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[    1.944541] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.944566] usb usb1: Product: EHCI Host Controller
[    1.944585] usb usb1: Manufacturer: Linux 6.1.71-6.5.0+git.38fb82ecd144 ehci_hcd
[    1.944605] usb usb1: SerialNumber: ci_hdrc.1
[    1.945744] hub 1-0:1.0: USB hub found
[    1.945832] hub 1-0:1.0: 1 port detected
[    1.952352] imx-media: Registered ipu_ic_pp csc/scaler as /dev/video8
[    1.954348] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:105C passive:95C
[    1.962106] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    1.964786] ALSA device list:
[    1.964813]   No soundcards found.
[    1.977617] random: crng init done
[    2.234009] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[    2.434746] usb 1-1: New USB device found, idVendor=0424, idProduct=2514, bcdDevice= b.b3
[    2.434787] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.435942] hub 1-1:1.0: USB hub found
[    2.436111] hub 1-1:1.0: 4 ports detected
[    2.734654] imx6q-pcie 1ffc000.pcie: Phy link never came up
[    3.744382] imx6q-pcie 1ffc000.pcie: Phy link never came up
[    3.750305] imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00
[    3.750338] pci_bus 0000:00: root bus resource [bus 00-ff]
[    3.750367] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    3.750392] pci_bus 0000:00: root bus resource [mem 0x01000000-0x01efffff]
[    3.750477] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
[    3.750524] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
[    3.750567] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[    3.750645] pci 0000:00:00.0: Limiting cfg_size to 512
[    3.750729] pci 0000:00:00.0: supports D1
[    3.750750] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold
[    3.761479] PCI: bus0: Fast back to back transfers disabled
[    3.762041] PCI: bus1: Fast back to back transfers enabled
[    3.762109] pci 0000:00:00.0: BAR 0: assigned [mem 0x01000000-0x010fffff]
[    3.762156] pci 0000:00:00.0: BAR 6: assigned [mem 0x01100000-0x0110ffff pref]
[    3.762192] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    3.763008] pcieport 0000:00:00.0: PME: Signaling with IRQ 298
[    3.763821] pcieport 0000:00:00.0: AER: enabled with IRQ 298
[    3.767712] Freeing unused kernel image (initmem) memory: 1024K
[    3.814981] Run /init as init process
[    3.815005]   with arguments:
[    3.815025]     /init
[    3.815041]     splash
[    3.815057]   with environment:
[    3.815071]     HOME=/
[    3.815085]     TERM=linux
[    3.815099]     enable_wait_mode=off
[    3.815113]     ostree=/ostree/boot.1/torizon/b47e88aa7ff7f47e9f34cee3530048f7e7de16bf2daf557c572881e539298238/0
[    5.506319] EXT4-fs (mmcblk2p1): recovery complete
[    5.510017] EXT4-fs (mmcblk2p1): mounted filesystem with ordered data mode. Quota mode: none.
[    6.043678] systemd[1]: System time before build time, advancing clock.
[    6.092718] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
[    6.093552] systemd[1]: Detected architecture arm.
[    6.212836] systemd[1]: Hostname set to <apalis-imx6-11204647>.
[    6.311189] systemd[1]: Using hardware watchdog 'imx2+ watchdog', version 0, device /dev/watchdog0
[    6.311239] systemd[1]: Watchdog running with a timeout of 30s.
[    6.425563] systemd-sysv-generator[508]: SysV service '/etc/init.d/fuse3' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    7.526132] systemd[1]: Queued start job for default target Multi-User System.
[    7.526198] systemd[1]: Unnecessary job was removed for /sys/devices/platform/soc/2000000.bus/2000000.spba-bus/2020000.serial/tty/ttymxc0.
[    7.681650] systemd[1]: Created slice Slice /system/getty.
[    7.686718] systemd[1]: Created slice Slice /system/modprobe.
[    7.691496] systemd[1]: Created slice Slice /system/serial-getty.
[    7.696774] systemd[1]: Created slice User and Session Slice.
[    7.697414] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    7.698289] systemd[1]: Reached target Remote File Systems.
[    7.698501] systemd[1]: Reached target Slice Units.
[    7.698746] systemd[1]: Reached target Swaps.
[    7.739937] systemd[1]: Listening on RPCbind Server Activation Socket.
[    7.740452] systemd[1]: Reached target RPC Port Mapper.
[    7.741586] systemd[1]: Listening on initctl Compatibility Named Pipe.
[    7.756122] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
[    7.758072] systemd[1]: Listening on Journal Socket (/dev/log).
[    7.761255] systemd[1]: Listening on Journal Socket.
[    7.763412] systemd[1]: Listening on Network Service Netlink Socket.
[    7.772181] systemd[1]: Listening on udev Control Socket.
[    7.773027] systemd[1]: Listening on udev Kernel Socket.
[    7.773864] systemd[1]: Listening on User Database Manager Socket.
[    7.774847] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
[    7.782432] systemd[1]: Mounting POSIX Message Queue File System...
[    7.792731] systemd[1]: Mounting Kernel Debug File System...
[    7.803545] systemd[1]: Mounting Kernel Trace File System...
[    7.814917] systemd[1]: Mounting Temporary Directory /tmp...
[    7.828662] systemd[1]: Starting Create List of Static Device Nodes...
[    7.837974] systemd[1]: Starting Load Kernel Module configfs...
[    7.847930] systemd[1]: Starting Load Kernel Module drm...
[    7.857607] systemd[1]: Starting Load Kernel Module fuse...
[    7.859389] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
[    7.874151] systemd[1]: Starting Journal Service...
[    7.882817] fuse: init (API version 7.37)
[    7.887995] systemd[1]: Starting Load Kernel Modules...
[    7.898908] systemd[1]: Starting Generate network units from Kernel command line...
[    7.911156] systemd[1]: Starting Remount Root and Kernel File Systems...
[    7.925994] systemd[1]: Starting Coldplug All udev Devices...
[    7.939520] systemd[1]: Starting Setup Virtual Console...
[    7.967868] systemd[1]: Mounted POSIX Message Queue File System.
[    7.969048] systemd[1]: Mounted Kernel Debug File System.
[    7.970125] systemd[1]: Mounted Kernel Trace File System.
[    7.971304] systemd[1]: Mounted Temporary Directory /tmp.
[    7.974677] systemd[1]: Finished Create List of Static Device Nodes.
[    7.977316] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    7.979345] systemd[1]: Finished Load Kernel Module configfs.
[    7.981626] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    7.984415] systemd[1]: Finished Load Kernel Module drm.
[    7.987125] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[    7.989108] systemd[1]: Finished Load Kernel Module fuse.
[    7.993603] systemd[1]: Finished Load Kernel Modules.
[    8.007904] systemd[1]: Finished Generate network units from Kernel command line.
[    8.011508] systemd[1]: Finished Setup Virtual Console.
[    8.023776] EXT4-fs (mmcblk2p1): re-mounted. Quota mode: none.
[    8.026431] systemd[1]: Mounting FUSE Control File System...
[    8.039956] systemd[1]: Mounting Kernel Configuration File System...
[    8.052374] systemd[1]: Starting Apply Kernel Variables...
[    8.093613] systemd[1]: Finished Remount Root and Kernel File Systems.
[    8.094945] systemd[1]: Mounted FUSE Control File System.
[    8.096358] systemd[1]: Mounted Kernel Configuration File System.
[    8.099815] systemd[1]: Rebuild Hardware Database was skipped because of a failed condition check (ConditionNeedsUpdate=/etc).
[    8.100545] systemd[1]: Create System Users was skipped because of a failed condition check (ConditionNeedsUpdate=/etc).
[    8.110911] systemd[1]: Starting Create Static Device Nodes in /dev...
[    8.124867] systemd[1]: Finished Apply Kernel Variables.
[    8.189450] systemd[1]: Finished Create Static Device Nodes in /dev.
[    8.190340] systemd[1]: Reached target Preparation for Local File Systems.
[    8.245660] systemd[1]: Mounting /var...
[    8.259586] systemd[1]: Starting Rule-based Manager for Device Events and Files...
[    8.283978] systemd[1]: Started Journal Service.
[    8.459885] systemd-journald[522]: Received client request to flush runtime journal.
[    9.286910] systemd-journald[522]: Oldest entry in /run/log/journal/d282e44e17e3420aaa445c206831229d/system.journal is older than the configured file retention duration (1month), suggesting rotation.
[    9.286961] systemd-journald[522]: /run/log/journal/d282e44e17e3420aaa445c206831229d/system.journal: Journal header limits reached or header out-of-date, rotating.
[   10.714384] CAN device driver interface
[   10.756398] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   10.790969] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   10.794767] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[   10.925471] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.222530] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.238955] coda 2040000.vpu: Firmware code revision: 46076
[   11.238993] coda 2040000.vpu: Initialized CODA960.
[   11.239004] coda 2040000.vpu: Firmware version: 3.1.1
[   11.239616] coda 2040000.vpu: coda-jpeg-encoder registered as video9
[   11.240173] coda 2040000.vpu: coda-jpeg-decoder registered as video10
[   11.240504] coda 2040000.vpu: coda-video-encoder registered as video11
[   11.240786] coda 2040000.vpu: coda-video-decoder registered as video12
[   11.554363] imx-sdma 20ec000.dma-controller: loaded firmware 3.5
[   11.581920] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[   11.861883] sgtl5000 2-000a: sgtl5000 revision 0x11
[   11.956643] atmel_mxt_ts 0-004a: supply vdda not found, using dummy regulator
[   11.989941] fsl-asoc-card sound: ASoC: driver name too long 'imx6q-apalis-sgtl5000' -> 'imx6q-apalis-sg'
[   12.055277] atmel_mxt_ts 0-004a: supply vdd not found, using dummy regulator
[   12.294513] atmel_mxt_ts 0-004a: __mxt_read_reg: i2c transfer failed (-6)
[   12.307014] atmel_mxt_ts 0-004a: mxt_bootloader_read: i2c recv failed (-6)
[   12.314045] atmel_mxt_ts 0-004a: Trying alternate bootloader address
[   12.326962] fec 2188000.ethernet ethernet0: renamed from eth0
[   12.377892] atmel_mxt_ts 0-004a: mxt_bootloader_read: i2c recv failed (-6)
[   12.685292] Microchip KSZ9131 Gigabit PHY 2188000.ethernet-1:07: attached PHY driver (mii_bus:phy_addr=2188000.ethernet-1:07, irq=58)
[   16.267247] fec 2188000.ethernet ethernet0: Link is Up - 1Gbps/Full - flow control rx/tx
[   16.267315] IPv6: ADDRCONF(NETDEV_CHANGE): ethernet0: link becomes ready
[   41.101912] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[   41.106722] Bridge firewalling registered
[   41.521828] Initializing XFRM netlink socket

Perhaps something interesting in dmesg:

That invalid phandle something to look at?

Hey @DaveM ,

You make a good point. I’m not very familiar with device trees, but I think from this that fsl and pins are phandles associated with uart4. So presumably one of these is invalid?

    pinctrl_uart4_dte: uart4dtegrp {
		fsl,pins = <
			MX6QDL_PAD_KEY_COL0__UART4_RX_DATA 0x1b0b1
			MX6QDL_PAD_KEY_ROW0__UART4_TX_DATA 0x1b0b1
            MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
            MX6QDL_PAD_CSI0_DAT16__UART4_CTS_B 0x1b0b1
		>;
	};

Could this be because the camera interface has claimed the rts and cts pins somewhere else? I’m under the impression that ipu1_csi0 is disabled by default in the device tree because of these lines in imx6qdl-apalis.dtsi:

&gpr {
	ipu1_csi0_mux {
		#address-cells = <1>;
		#size-cells = <0>;
		status = "disabled";

		port@1 {
			reg = <1>;
			ipu1_csi0_mux_from_parallel_sensor: endpoint {
				remote-endpoint = <&adv7280_to_ipu1_csi0_mux>;
			};
		};
	};
};

I’m not great with device trees either…that’s why I gave it a “maybe something’s wrong” :grinning:

I’ve had strange results with using that “disabled” and thinking that magically makes everything available. I’m sure it’s more user error, but I’ve just commented out those entire blocks most of the time when I know I’ll never use the peripheral.

There is a lot of data in UART4 APALIS imx6 - #16 by henrique.tx if you haven’t already checked it out. rs-485 is an interesting animal with lots of device tree knobs to tweak.

@DaveM You’re the :goat: !

Looked at that post and realized MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B needed to be MX6QDL_PAD_CSI0_DAT17__UART4_RTS_B. Rebuilt the image and I have uart3 and the RTS pin is working!!!

And thanks for the help @alex.tx !

1 Like

Excellent!

Btw, since you’re dealing with rs485, I’ve also had trouble in the past using uart rts/cts logic “built-in” to the hardware. Sometimes rs485 needs a bit of pre/post rts time, so look around for the different rs485-* device tree parameters for your particular driver. As an example, here’s a snippet from one of my dts files:

&uart6 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_uart6_q>;
    linux,rs485-enabled-at-boot-time;
    fsl,dte-mode;
    rts-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
    rs485-rts-active-low;
    rs485-rx-during-tx;
    rs485-rts-delay-in-usec;
    rs485-rts-delay = <0 100>;  // uSec
    status = "okay";
};

YMMV of course, but keep your eyes open.

Good luck!