Jump to content

Recommended Posts

Posted
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.

Posted

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?

Posted

@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.

Posted (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 by blackc
errors
Posted
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 */

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