Jean-Francois Lessard Posted December 8 Author Posted December 8 On 12/6/2025 at 4:09 PM, snowbody said: root@homeassistant:/boot# ls /sys/class/leds/display brightness device digits map_seg7 max_brightness num_digits num_segments power segments subsystem trigger uevent value 16 hours ago, snowbody said: display-service -c [INFO] all digits and leds on /usr/sbin/display-service: 116: cannot create /sys/class/leds/display/message: Permission denied On 10/31/2025 at 1:32 PM, Jean-Francois Lessard said: I think your previous permission denied issue was because you were using an older version of the driver with the current version of the display-service. On 10/31/2025 at 1:32 PM, Jean-Francois Lessard said: Latest driver version now use line-display library (expected upstreaming requirements), therefore there is no more sysfs value attribute. This has been replaced with the line-display message attribute. @snowbody you are using an older version of the driver with the current version of the display-service. That won't work. Since you are on 6.12 kernel, start by cloning the main branch of https://github.com/jefflessard/tm16xx-display.git it already contains the line-display backport. 0 Quote
blackc Posted Thursday at 11:41 PM Posted Thursday at 11:41 PM Hello! I have a strange behavior at compiling Цитата make EXTRA_CFLAGS="-DCONFIG_TM16XX -DCONFIG_TM16XX_KEYPAD -DCONFIG_TM16XX_I2C -DCONFIG_TM16XX_SPI -include /home/bc/Soft/tm16xx-display/drivers/auxdisplay/tm16xx_compat.h -I/home/bc/Soft/tm16xx-display/include/" -C /lib/modules/6.17.2-edge-sunxi64/build M=/home/bc/Soft/tm16xx-display/drivers/auxdisplay CONFIG_TM16XX=m CONFIG_TM16XX_KEYPAD=m CONFIG_TM16XX_I2C=m CONFIG_TM16XX_SPI=m CONFIG_LINEDISP=m modules make[1]: Entering directory '/usr/src/linux-headers-6.17.2-edge-sunxi64' make[2]: Entering directory '/home/bc/Soft/tm16xx-display/drivers/auxdisplay' CC [M] line-display.o CC [M] tm16xx_core.o tm16xx_core.c: In function ‘tm16xx_parse_fwnode’: tm16xx_core.c:285:17: error: implicit declaration of function ‘fwnode_for_each_available_child_node_scoped’; did you mean ‘fwnode_for_each_available_child_node’? [-Wimplicit-function-declaration] 285 | fwnode_for_each_available_child_node_scoped(digits_node, child) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | fwnode_for_each_available_child_node As i knew, fwnode_for_each_available_child_node_scoped was committed to kernel at 2024 year.. Thats my kernel Цитата bc@transpeed-8k618-t:~$ uname -a Linux transpeed-8k618-t 6.17.2-edge-sunxi64 #2 SMP PREEMPT Sun Oct 12 11:01:58 UTC 2025 aarch64 GNU/Linux Any ideas? 0 Quote
Jean-Francois Lessard Posted yesterday at 02:48 PM Author Posted yesterday at 02:48 PM @blackc fwnode_for_each_available_child_node_scoped has been mainstreamed in 6.18 (see Commit 448097b). When compiling out-of-tree from jefflessard/tm16xx-display, tm16xx_compat.h should provide backward compatibility (see Line 102). It looks like the Makefile is not picking up the include. You can try to manually add #include "tm16xx_compat.h" to tm16xx_core.c. 0 Quote
blackc Posted 3 hours ago Posted 3 hours ago (edited) Thanks!! I had compiled tm16xx, attach dtb overlay, and trying to load modules. dmesg: Цитата [ 161.778500] line_display: loading out-of-tree module taints kernel. [ 161.828311] tm16xx-i2c 3-0024: Failed to configure controller: -6 [ 161.828416] tm16xx-i2c 3-0024: error -ENXIO: Failed to initialize display my old dts overlay for openvfd: Цитата /dts-v1/; /plugin/; / { fragment@0 { target-path = "/"; __overlay__ { openvfd { compatible = "open,vfd"; dev_name = "openvfd"; status = "okay"; openvfd_gpio_clk = <&pio 8 11 1>; openvfd_gpio_dat = <&pio 8 12 1>; vfd_gpio_chip_name = "0300b000.pinctrl"; openvfd_chars = [02 04 03 02 01]; openvfd_dot_bits = [00 01 03 02 04 05 06]; openvfd_display_type = <0x03000001>; }; }; }; }; new dts overlay: Цитата /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/leds/common.h> &{/} { i2c-display { compatible = "i2c-gpio"; sda-gpios = <&pio 8 12 1>; /* PI12 */ scl-gpios = <&pio 8 11 1>; /* PI11 */ i2c-gpio,delay-us = <5>; #address-cells = <1>; #size-cells = <0>; display@24 { compatible = "fdhisi,fd650", "titanmec,tm1650"; reg = <0x24>; digits { #address-cells = <1>; #size-cells = <0>; digit@0 { reg = <0>; segments = <0 0>, <0 1>, <0 2>, <0 3>, <0 4>, <0 5>, <0 6>; }; digit@1 { reg = <1>; segments = <1 0>, <1 1>, <1 2>, <1 3>, <1 4>, <1 5>, <1 6>; }; digit@2 { reg = <2>; segments = <2 0>, <2 1>, <2 2>, <2 3>, <2 4>, <2 5>, <2 6>; }; digit@3 { reg = <3>; segments = ❤️ 0>, ❤️ 1>, ❤️ 2>, ❤️ 3>, ❤️ 4>, ❤️ 5>, ❤️ 6>; }; }; leds { #address-cells = <2>; #size-cells = <0>; led@1,7 { reg = <1 7>; function = "colon"; }; }; }; }; }; Configs looks equals in hardware config, but driver not loading... Edited 3 hours ago by blackc errors 0 Quote
Jean-Francois Lessard Posted 3 hours ago Author Posted 3 hours ago 11 minutes ago, blackc said: openvfd_gpio_clk = <&pio 8 11 1>; openvfd_gpio_dat = <&pio 8 12 1>; 11 minutes ago, blackc said: sda-gpios = <&pio 8 12 0>; /* PI12 */ scl-gpios = <&pio 8 11 0>; /* PI11 */ Have you tried setting the pin flag to 1 as in your open vfd config? sda-gpios = <&pio 8 12 1>; /* PI12 */ scl-gpios = <&pio 8 11 1>; /* PI11 */ 0 Quote
Jean-Francois Lessard Posted 1 hour ago Author Posted 1 hour ago May worth enabling dyndbg to see debug output: dmesg -C modprobe -r tm16xx && modprobe tm16xx dyndbg dmesg 0 Quote
Jean-Francois Lessard Posted 1 hour ago Author Posted 1 hour ago Looking at transpeed-8k618-t-allwinner-h6.dtso, you may need these flags instead of 0/1: (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) 0 Quote
Recommended Posts
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.