Jump to content

Recommended Posts

Posted (edited)
Quote

sudo ./display -c
[WARN] Display device directory missing at /sys/class/leds/display; attempting module load
[INFO] Successfully loaded module: tm16xx
[ERROR] Display device not present after modprobe

Hi, @Jean-Francois Lessard I'm using a x98h box with self-built image. I have issue with the tm16xx kernel module using a patch https://github.com/paolosabatino/armbian-build/blob/main/patch/kernel/archive/rockchip64-6.16/general-driver-tm16xx-led-driver.patch

The vfd controller is AIP1688 which is similar to fd628. Do you have any idea why it fails?

 

Edited by dale
Posted

Hi @dale

 

What is your DTS node for your display? My first guess is that your DT node is not being picked up/inexistent since the module loads but the display device is not present.

You can use dtc /proc/device-tree to see your loaded DT and find your display node, if any.

 

Then, have you checked dmesg for any tm16xx kernel message?

 

Then, you can ls /sys/class/leds to see if any device were created. The display-service/display-utils scripts expect /sys/class/leds/display.

 

That should not be your issue here, but I'm not sure that aip1688 is the same as tm1628 variants. Googling aip1688 list it besides aip1618, so that would be the tm1618 variant. Whatsoever, I think you should have partial working display if using tm1628. To be 100% of which compatible string to use, we would need the aip1688 datasheet but I couldn't find it online.

 

Good luck with your experimentation! Let me know how you results.

 

Posted (edited)

@Jean-Francois Lessard I'm sorry for the typo. Yes the controller is tm1628. 

ls /sys/class/leds --> shows empty. 

Dmesg doesn't show any message for tm16xx.

I've attached the working overlay source for openvfd which I have the clock digits working at least with.

(The full icons would be card, usb, Low wifi, hi wifi, apps and eth)

image.png.4736e8d07a53ec2110e01bc3198b78e0.png

openvfd_x98h.dts

Edited by dale
Posted

@dale you need a display overlay that is compatible with tm16xx. OpenVFD overlays are NOT supported.

 

You can read README.md and dt-bindings documentation at https://github.com/jefflessard/tm16xx-display

But note that there has been many changes recently to the code base since the driver is currently in review process to be upstreamed into mainline kernel (targeting v6.18). So double check which bindings version format has been integrated into Armbian rockchip64.

 

The GitHub repo also contains a vfd-convert utility to automatically convert OpenVFD configuration files to expected tm16xx DTSO. But :

1. It requires OpenVFD conf file, not dtso.

2. You may need to go through file history to get the version matching of what has been integrated into Armbian rockchip64.

 

 

Posted

To anyone interested, I am seeking help to test the latest tm16xx changes for the (hopefully) final upstreaming submittal.

 

You will find in-tree patches here: https://github.com/torvalds/linux/compare/master...jefflessard:linux:tm16xx, just suffix with ".patch" to get all patches in a single download.

 

 

You will find out-of-tree version, device-specific dtso and latest display-service in the https://github.com/jefflessard/tm16xx-display/tree/v4-feedback branch.

 

Thanks to all of you for you help so far!

 

Posted

@Jean-Francois Lessard sorry for making you confused.

Device tree source for tm16xx driver that I convert from a working openvfd.conf is below

 

/dts-v1/;
/plugin/;

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

&{/} {

        display_client: spi {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "spi-gpio";
                sck-gpios = < 7 GPIO_ACTIVE_HIGH>;
                mosi-gpios = < 2 GPIO_ACTIVE_HIGH>;
                cs-gpios = < 12 GPIO_ACTIVE_LOW>;
                num-chipselects = <1>;

                display@0 {
                        compatible = "fdhisi,fd628";
                        reg = <0>;
                        spi-3wire;
                        spi-lsb-first;
                        spi-max-frequency = <500000>;

                        digits {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                01 02 03 04
                        };

                        leds {
                                #address-cells = <2>;
                                #size-cells = <0>;
                                led@{GRID0},0 {
                                reg = <{GRID0} 0>;
                                function = "apps";
                        };
                        led@{GRID1},1 {
                                reg = <{GRID1} 1>;
                                function = "setup";
                        };
                        led@{GRID2},2 {
                                reg = <{GRID2} 2>;
                                function = LED_FUNCTION_USB;
                        };
                        led@{GRID3},3 {
                                reg = <{GRID3} 3>;
                                function = LED_FUNCTION_SD;
                        };
                        led@{GRID4},4 {
                                reg = <{GRID4} 4>;
                                function = "colon";
                        };
                        led@{GRID5},5 {
                                reg = <{GRID5} 5>;
                                function = "hdmi";
                        };
                        led@{GRID6},6 {
                                reg = <{GRID6} 6>;
                                function = "video";
                        };
                        };
                };
        };
};

The convert script I downloaded from this commit https://github.com/jefflessard/tm16xx-display/blob/a93b257ed4c73780fcdefbb1f1dd189599cf6ecc/vfdconf-convert

Can you please help get it to work? Thanks!

Posted

@dale it seems like vfd-convert has not worked well. Perhaps because of some mix between script version and the template files version.

 

Whatsoever, I've looked closer at the patch link you previously posted, this is the older pre-review dt-bindings syntax. You should be go to start with something like:

 

/dts-v1/;

/plugin/;

 

#include <dt-bindings/gpio/gpio.h>

#include <dt-bindings/leds/common.h>

 

&{/} {

 

 display_client: spi {

  #address-cells = <1>;

  #size-cells = <0>;

  compatible = "spi-gpio";

  sck-gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;

  mosi-gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;

  cs-gpios = <&gpio 12 GPIO_ACTIVE_LOW>;

  num-chipselects = <1>;

 

  display@0 {

   compatible = "fdhisi,fd628";

   reg = <0x0>;

   spi-3wire;

   spi-lsb-first;

   spi-rx-delay-us = <1>;

   spi-max-frequency = <500000>;

 

   titanmec,digits = [00 01 02 03];

   titanmec,segment-mapping = [03 01 02 06 04 05 00];

 

   #address-cells = <2>;

   #size-cells = <0>;

   

   led@4,0 {

    reg = <4 0>;

    function = LED_FUNCTION_ALARM;

   };

   

   led@4,1 {

    reg = <4 1>;

    function = LED_FUNCTION_USB;

   };

   

   led@4,2 {

    reg = <4 2>;

    function = "play";

   };

   

   led@4,3 {

    reg = <4 3>;

    function = "pause";

   };

   

   led@4,4 {

    reg = <4 4>;

    function = "colon";

   };

   

   led@4,5 {

    reg = <4 5>;

    function = LED_FUNCTION_LAN;

   };

   

   led@4,6 {

    reg = <4 6>;

    function = LED_FUNCTION_WLAN;

   };

 

  };

 };

};

 

Note that I haven't tested it, just made it from some copy-paste. If it doesn't work, even partially, you would most likely need to replace &gpio with the right reference to the gpio controller wired to the display.

Posted

Hi, thanks for checking.

I check dmesg -T | grep spi_gpio            and see the error spi_gpio spi: probe with driver spi_gpio failed with error -22.

Also the /sys/class/leds is empty.

Do you think the gpio pins are not correct?

Below are current gpio pins I try this time

mosi-gpios = <&pio 2 11 GPIO_ACTIVE_HIGH>; /* PC11 = data */

sck-gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 = clock */

cs-gpios = <&pio 7 5 GPIO_ACTIVE_LOW>; /* PH5 = strobe/latch */

Posted

 

@dale looking at the openvfd_x98h.dtso file you shared, openvfd uses these pins:

  openvfd_gpio_clk = <&pio 2 7 0>;

  openvfd_gpio_dat = <&pio 2 2 0>;

  openvfd_gpio_stb = <&pio 2 12 0>;

 

So you should try with their equivalent:

mosi-gpios = <&pio 2 2 GPIO_ACTIVE_HIGH>;  /* mosi is the same as openvfd_gpio_dat */

sck-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* sck is the same as openvfd_gpio_clk */

cs-gpios = <&pio 2 12 GPIO_ACTIVE_LOW>; /* cs is the same as openvfd_gpio_stb */

 

Posted (edited)

Hi, I finally got my display to work with below DT overlay source.  My device is x98h. Thank you!

/dts-v1/;
/plugin/;


#include <dt-bindings/gpio/gpio.h>           

#include <dt-bindings/leds/common.h>


&{/} {

        display_client: spi {

                #address-cells = <1>;

                #size-cells = <0>;

                compatible = "spi-gpio";

                sck-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>;

                mosi-gpios = <&pio 2 2 GPIO_ACTIVE_HIGH>;

                cs-gpios = <&pio 2 12 GPIO_ACTIVE_LOW>;

                num-chipselects = <1>;

                display@0 {

                        compatible = "fdhisi,fd628";

                        reg = <0x0>;

                        spi-3wire;

                        spi-lsb-first;

                        spi-rx-delay-us = <1>;

                        spi-max-frequency = <500000>;


                        tm16xx,transposed;
                        tm16xx,digits = [00 01 02 03];

                        tm16xx,segment-mapping = [00 01 02 03 04 05 06];

                        #address-cells = <2>;

                        #size-cells = <0>;

                        led@4,0 {

                                reg = <4 0>;

                                function = LED_FUNCTION_USB;

                        };

                        led@4,1 {

                                reg = <4 1>;

                                function = LED_FUNCTION_SD;

                        };

                        led@4,2 {

                                reg = <4 2>;

                                function = "hi-wifi";

                        };

                        led@4,3 {

                                reg = <4 3>;

                                function = "low-wifi";

                        };

                        led@4,4 {

                                reg = <4 4>;

                                function = "colon";

                        };

                        led@4,5 {

                                reg = <4 5>;

                                function = "apps";

                        };

                        led@4,6 {

                                reg = <4 6>;

                                function = LED_FUNCTION_LAN;

                        };

                };

        };

};

Edited by dale
Posted
On 9/2/2025 at 8:02 AM, Jean-Francois Lessard said:

I am seeking help to test the latest tm16xx changes for the (hopefully) final upstreaming submittal.

Can you make a patch for armbian? It will be easy for us to try.

Posted (edited)

@dale I'm happy that it's now working! I'll add the x98h dtso to my devices library when I'll have some time (using the latest dt-bindings syntax).

 

You can download the patch of the latest tm16xx version here: https://github.com/torvalds/linux/compare/master...jefflessard:linux:tm16xx.patch

 

Let me know if the latest version works well for you and the updated x98h dtso (if you happen to do it before I have some time). I'll be glad to add you with Tested-by tag when submitting.

Edited by Jean-Francois Lessard
Posted (edited)
4 minutes ago, Jean-Francois Lessard said:

You can download the patch of the latest tm16xx version here:

I gave this a try but no success. The structure of original source code doesn't match the one for armbian. It would be great if you could make a patch as in this link

Edited by dale
Posted (edited)

Those are standard kernel patches. Do you mean Armbian build system does not support multiple patches in a single file?

 

If so, you can download each of the 14 patches individually and then apply them. Or you can try reformatting the combined patch file as a single patch.

Edited by Jean-Francois Lessard
Posted
On 9/5/2025 at 11:32 AM, dale said:

I gave this a try but no success.


With 3 whipping in a language model you can,
please give it a try to use the whip, language models are there to use you need to get updated

image.png.51bb918434b983767483db3dd12b301a.png


cd /Downluads/
git clone https://github.com/armbian/build
cd buildDocumentation

./compile.sh build BOARD=h96-tvbox-3566 BRANCH=edge BUILD_DESKTOP=yes BUILD_MINIMAL=no DESKTOP_APPGROUPS_SELECTED=browsers DESKTOP_ENVIRONMENT=gnome DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base INSTALL_HEADERS=yes KERNEL_CONFIGURE=yes RELEASE=bookworm

#or just
./compile.sh

I WANT THE EDGE
I WANT TO CHANGE KERNEL CONFIG

CTRL+TAB
 

sudo chmod 777 777.sh
sudo chmod +X 777.sh
sudo ./777.sh

Quote

 

#!/bin/bash

# --- CONFIGURATION ---
# Your Linux kernel working directory.
# Make sure this path is correct!
DEST_DIR="/Downluads/build/cache/sources/linux-kernel-worktree/6.16__rockchip64__arm64/kernel"

# Repository and branch that contain the patch files.
REPO_URL="https://github.com/jefflessard/linux.git"
BRANCH="tm16xx"

# Temporary directory to clone the repository.
TEMP_DIR="/tmp/linux-patch-source"

# List of files to be copied.
FILES=(
    "Documentation/ABI/testing/sysfs-auxdisplay-linedisp"
    "Documentation/devicetree/bindings/auxdisplay/titanmec,tm16xx.yaml"
    "Documentation/devicetree/bindings/leds/common.yaml"
    "Documentation/devicetree/bindings/vendor-prefixes.yaml"
    "MAINTAINERS"
    "drivers/auxdisplay/Kconfig"
    "drivers/auxdisplay/Makefile"
    "drivers/auxdisplay/line-display.c"
    "drivers/auxdisplay/line-display.h"
    "drivers/auxdisplay/tm16xx.h"
    "drivers/auxdisplay/tm16xx_core.c"
    "drivers/auxdisplay/tm16xx_i2c.c"
    "drivers/auxdisplay/tm16xx_keypad.c"
    "drivers/auxdisplay/tm16xx_spi.c"
    "drivers/i2c/i2c-core-slave.c"
    "include/linux/property.h"
)

# --- EXECUTION ---

# Ensures the destination directory exists.
if [ ! -d "$DEST_DIR" ]; then
echo "ERROR: Destination directory not found: $DEST_DIR"
exit 1
fi

# Removes the temporary directory if it already exists.
rm -rf "$TEMP_DIR"

echo "➡️ Cloning the repository (only what's needed)..."
# Quickly clones (--depth 1) only the specified branch.
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$TEMP_DIR"

# Checks if the clone was successful.
if [ ! -d "$TEMP_DIR" ]; then
echo "ERROR: Failed to clone the repository."

exit 1
fi

echo " Repository successfully cloned to $TEMP_DIR"
echo "➡️ Copying files to $DEST_DIR..."

# Navigate to the cloned directory to facilitate copying.
cd "$TEMP_DIR"

# Iterate over the list and copy each file.
for file in "${FILES[@]}"; do
# Check if the source file exists before copying.
if [ -f "$file" ]; then
echo " - Copying $file"
# The --parents command creates the necessary directory structure in the destination.
cp --parents "$file" "$DEST_DIR"
else
echo " - WARNING: File not found in repository: $file"
fi
done

echo " Files copied!"
echo "➡️ Cleaning up..."

# Remove the temporary directory. rm -rf "$TEMP_DIR"

echo "🎉 Process completed!"

 

 

ps: I'm getting it to work natively on the h96-max-v56,
many users want this feature but don't want to install anything
it seems that @Jean-Francois Lessard polishing made this project look amazing, congratulations
 

 

Posted

there are many good works being done thos days by the community

kernel.zip


data for H96 Max RK3566 Box:

No external drivers, no external app, just pure mainline.....
https://github.com/armbian/build/pull/8708
 

# lsmod | grep i2c
tm16xx_i2c             12288  0
tm16xx                 16384  1 tm16xx_i2c
i2c_gpio               16384  0
i2c_algo_bit           12288  1 i2c_gpio

 

 

# ls /sys/bus/i2c/devices/
0-001c  0-0020  7-0024  i2c-0  i2c-6  i2c-7

 

 

Quote

 

check_i2c.py
nano check_i2c.py
sudo python3 check_i2c.py

import subprocess
import os

def load_i2c_gpio_module():
    try:
        subprocess.run(['sudo', 'modprobe', 'i2c-gpio'], check=True)
        print("i2c-gpio module loaded successfully.")
    except subprocess.CalledProcessError as e:
        print(f"Failed to load i2c-gpio module: {e}")

def list_i2c_modules():
    try:
        result = subprocess.run(['lsmod', '|', 'grep', 'i2c'], shell=True, capture_output=True, text=True, check=True)
        print("Loaded I2C modules:")
        print(result.stdout)
    except subprocess.CalledProcessError as e:
        print(f"Failed to list I2C modules: {e}")

def list_i2c_buses():
    try:
        buses = os.listdir('/sys/bus/i2c/devices/')
        print("Available I2C buses:")
        for bus in buses:
            if bus.startswith('i2c-'):
                print(bus)
    except Exception as e:
        print(f"Failed to list I2C buses: {e}")

def scan_i2c_bus(bus_number):
    try:
        result = subprocess.run(['i2cdetect', '-y', str(bus_number)], capture_output=True, text=True, check=True)
        print(f"Devices on I2C bus {bus_number}:")
        print(result.stdout)
    except subprocess.CalledProcessError as e:
        print(f"Failed to scan I2C bus {bus_number}: {e}")

def main():
    load_i2c_gpio_module()
    list_i2c_modules()
    list_i2c_buses()
    
    # Example: Scan bus 1
    scan_i2c_bus(1)

if __name__ == "__main__":
    main()

 

 

 

 

 

 

Quote

 

check_again_i2c.py
nano check_again_i2c.py
sudo python3 check_again_i2c.py

import subprocess
import os

def load_i2c_gpio_module():
    try:
        subprocess.run(['sudo', 'modprobe', 'i2c-gpio'], check=True)
        print("i2c-gpio module loaded successfully.")
    except subprocess.CalledProcessError as e:
        print(f"Failed to load i2c-gpio module: {e}")

def list_i2c_modules():
    try:
        result = subprocess.run(['lsmod', '|', 'grep', 'i2c'], shell=True, capture_output=True, text=True, check=True)
        print("Loaded I2C modules:")
        print(result.stdout)
    except subprocess.CalledProcessError as e:
        print(f"Failed to list I2C modules: {e}")

def list_i2c_buses():
    try:
        buses = os.listdir('/sys/bus/i2c/devices/')
        print("Available I2C buses:")
        return [bus for bus in buses if bus.startswith('i2c-')]
    except Exception as e:
        print(f"Failed to list I2C buses: {e}")
        return []

def scan_i2c_bus(bus_number):
    try:
        result = subprocess.run(['i2cdetect', '-y', bus_number], capture_output=True, text=True, check=True)
        print(f"Devices on I2C bus {bus_number}:")
        print(result.stdout)
    except subprocess.CalledProcessError as e:
        print(f"Failed to scan I2C bus {bus_number}: {e}")

def main():
    load_i2c_gpio_module()
    list_i2c_modules()
    buses = list_i2c_buses()
    
    if buses:
        for bus in buses:
            bus_number = bus.replace('i2c-', '')
            scan_i2c_bus(bus_number)
    else:
        print("No I2C buses found.")

if __name__ == "__main__":
    main()

 

 

 

 

 


 

Quote

 

Results:

sudo python3 check_again_i2c.py
i2c-gpio module loaded successfully.
Loaded I2C modules:
Module                  Size  Used by
rfcomm                 73728  4
algif_hash             16384  1
algif_skcipher         12288  1
af_alg                 24576  6 algif_hash,algif_skcipher
bnep                   28672  2
sunrpc                487424  1
hci_uart              135168  0
btqca                  24576  1 hci_uart
btsdio                 16384  0
brcmfmac              376832  0
btrtl                  28672  1 hci_uart
btintel                49152  1 hci_uart
brcmutil               16384  1 brcmfmac
btbcm                  20480  1 hci_uart
cfg80211              847872  1 brcmfmac
bluetooth             675840  36 btrtl,btqca,btsdio,btintel,hci_uart,btbcm,bnep,rfcomm
tm16xx_i2c             12288  0
tm16xx                 16384  1 tm16xx_i2c
line_display           16384  1 tm16xx
gpio_ir_recv           12288  0
rc_core                45056  2 gpio_ir_recv
snd_soc_spdif_tx       12288  0
snd_soc_simple_card    20480  1
snd_soc_simple_card_utils    24576  1 snd_soc_simple_card
rfkill                 28672  6 bluetooth,cfg80211
snd_soc_rk817          40960  0
rk805_pwrkey           12288  0
rk817_charger          20480  0
hantro_vpu            253952  0
rk_crypto2             36864  1
rockchip_vdec          98304  0
rockchip_rga           20480  0
v4l2_jpeg              12288  1 hantro_vpu
sm3_generic            12288  1 rk_crypto2
libsm3                 20480  1 sm3_generic
v4l2_vp9               20480  2 rockchip_vdec,hantro_vpu
videobuf2_dma_contig    20480  2 rockchip_vdec,hantro_vpu
v4l2_h264              16384  2 rockchip_vdec,hantro_vpu
videobuf2_dma_sg       16384  1 rockchip_rga
v4l2_mem2mem           24576  3 rockchip_vdec,hantro_vpu,rockchip_rga
videobuf2_memops       16384  2 videobuf2_dma_contig,videobuf2_dma_sg
videobuf2_v4l2         20480  4 rockchip_vdec,hantro_vpu,rockchip_rga,v4l2_mem2mem
videodev              241664  5 rockchip_vdec,videobuf2_v4l2,hantro_vpu,rockchip_rga,v4l2_mem2mem
panfrost               73728  1
videobuf2_common       53248  8 rockchip_vdec,videobuf2_dma_contig,videobuf2_v4l2,hantro_vpu,rockchip_rga,videobuf2_dma_sg,v4l2_mem2mem,videobuf2_memops
gpu_sched              36864  1 panfrost
mc                     53248  6 rockchip_vdec,videodev,videobuf2_v4l2,hantro_vpu,videobuf2_common,v4l2_mem2mem
drm_shmem_helper       20480  1 panfrost
cpufreq_dt             16384  0
zram                   40960  2
binfmt_misc            20480  1
dm_mod                126976  0
ip_tables              28672  0
x_tables               36864  1 ip_tables
autofs4                45056  2
dw_hdmi_cec            12288  0
dw_hdmi_i2s_audio      12288  0
realtek                40960  1
i2c_gpio               16384  0
i2c_algo_bit           12288  1 i2c_gpio
display_connector      16384  0
dwmac_rk               28672  0
stmmac_platform        20480  1 dwmac_rk
stmmac                241664  3 stmmac_platform,dwmac_rk
pcs_xpcs               28672  1 stmmac
rockchipdrm           200704  4
dw_hdmi_qp             20480  1 rockchipdrm
dw_mipi_dsi            16384  1 rockchipdrm
dw_mipi_dsi2           16384  1 rockchipdrm
dw_hdmi                45056  2 dw_hdmi_i2s_audio,rockchipdrm
rtc_rk808              16384  1
cec                    45056  2 dw_hdmi_cec,dw_hdmi
analogix_dp            40960  1 rockchipdrm
drm_display_helper    126976  4 rockchipdrm,dw_hdmi,analogix_dp,dw_hdmi_qp
drm_dp_aux_bus         12288  1 rockchipdrm

Available I2C buses:
Devices on I2C bus 6:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: 30 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 -- -- -- 54 -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Devices on I2C bus 0:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Devices on I2C bus 7:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         08 09 0a 0b 0c 0d 0e 0f 
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
20: 20 21 22 23 UU 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
30: -- -- -- -- -- -- -- -- 38 39 3a 3b 3c 3d 3e 3f 
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 
70: 70 71 72 73 74 75 76 77           

 

 

 

 

# ls /sys/class/leds/display
brightness  device  map_seg7  max_brightness  message  num_chars  power  scroll_step_ms  subsystem  trigger  uevent

 

# ls -l /sys/class/leds/
lrwxrwxrwx 1 root root 0 out  3 14:29 display -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display
lrwxrwxrwx 1 root root 0 out  3 14:29 display::alarm -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::alarm
lrwxrwxrwx 1 root root 0 out  3 14:29 display::colon -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::colon
lrwxrwxrwx 1 root root 0 out  3 14:29 display::lan -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::lan
lrwxrwxrwx 1 root root 0 out  3 14:29 display::pause -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::pause
lrwxrwxrwx 1 root root 0 out  3 14:29 display::play -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::play
lrwxrwxrwx 1 root root 0 out  3 14:29 display::usb -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::usb
lrwxrwxrwx 1 root root 0 out  3 14:29 display::wlan -> ../../devices/platform/i2c-aux-display/i2c-7/7-0024/leds/display::wlan
lrwxrwxrwx 1 root root 0 out  3 14:29 input3::capslock -> ../../devices/platform/fd000000.usb/xhci-hcd.1.auto/usb2/2-1/2-1:1.0/0003:17EF:6099.0002/input/input3/input3::capslock
lrwxrwxrwx 1 root root 0 out  3 14:29 input3::numlock -> ../../devices/platform/fd000000.usb/xhci-hcd.1.auto/usb2/2-1/2-1:1.0/0003:17EF:6099.0002/input/input3/input3::numlock
lrwxrwxrwx 1 root root 0 out  3 14:29 input3::scrolllock -> ../../devices/platform/fd000000.usb/xhci-hcd.1.auto/usb2/2-1/2-1:1.0/0003:17EF:6099.0002/input/input3/input3::scrolllock
lrwxrwxrwx 1 root root 0 dez 31  1969 led-power -> ../../devices/platform/leds/leds/led-power
lrwxrwxrwx 1 root root 0 dez 31  1969 led-status -> ../../devices/platform/leds/leds/led-status
lrwxrwxrwx 1 root root 0 dez 31  1969 mmc1:: -> ../../devices/platform/fe310000.mmc/leds/mmc1::


h96-max-v56-kernel-6181.gif.afe198838a92f4ef6938b6a0cdd4c409.gif

Posted


root@rk3318-box:~/tm16xx-display# make module
make EXTRA_CFLAGS="-DCONFIG_TM16XX -DCONFIG_TM16XX_KEYPAD -DCONFIG_TM16XX_I2C -DCONFIG_TM16XX_SPI" -C /lib/modules/6.16.4-edge-rockchip64/build M=/root/tm16xx-display modules
make[1]: Entering directory '/usr/src/linux-headers-6.16.4-edge-rockchip64'
make[2]: Entering directory '/root/tm16xx-display'
  CC [M]  line-display.o
/tmp/cc8iv0mf.s: Assembler messages:
/tmp/cc8iv0mf.s:8: Error: junk at end of line, first unrecognized character is `L'
/tmp/cc8iv0mf.s:9: Error: junk at end of line, first unrecognized character is `L'
/tmp/cc8iv0mf.s:10: Error: junk at end of line, first unrecognized character is `L'
/tmp/cc8iv0mf.s:11: Error: junk at end of line, first unrecognized character is `L'
make[4]: *** [/usr/src/linux-headers-6.16.4-edge-rockchip64/scripts/Makefile.build:290: line-display.o] Error 1
make[3]: *** [/usr/src/linux-headers-6.16.4-edge-rockchip64/Makefile:2003: .] Error 2
make[2]: *** [/usr/src/linux-headers-6.16.4-edge-rockchip64/Makefile:248: __sub-make] Error 2
make[2]: Leaving directory '/root/tm16xx-display'
make[1]: *** [Makefile:248: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.16.4-edge-rockchip64'
make: *** [Makefile:46: module] Error 2

 

fresh install, box T9 rk3328 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines