The general idea of what the overlay is doing looks OK, but the implementation is flawed - the additional settings are applied in the wrong place, and get lost. There are two problems with the overlay (and the others in that PR: https://github.com/raspberrypi/linux/pull/6820):
1. The label "rs485" is on the wrong node, so when you set e.g.: you end up with something like this (before it is applied):Moving the label solves the problem:2. rs485-rts-active-low is a boolean property - it's value is true if the property is present, and false if it is absent. However, the rs485_invert_rts override is treating it as if it is a string, then assigning nothing to it, so it ends up as an empty string. For this, we correct the declaration to make a boolean:I'll create a PR with the fixes.
1. The label "rs485" is on the wrong node, so when you set e.g.:
Code:
dtoverlay=uart3,rs485,rs485_rts_on_delay=5Code:
...rs485: fragment@2 {rs485-rts-delay = <5>;target = <&uart3>;__overlay__ {linux,rs485-enabled-at-boot-time;rs485-rts-delay = <0 0>;};};Code:
fragment@2 {target = <&uart3>;rs485: __dormant__ {linux,rs485-enabled-at-boot-time;rs485-rts-delay = <0 0>;};};Code:
rs485_invert_rts = <&rs485>,"rs485-rts-active-low?";Statistics: Posted by PhilE — Tue Dec 16, 2025 1:59 pm