On 22/11/2023 15.53, Lukas Wunner wrote: > On Mon, Nov 20, 2023 at 04:10:54PM +0100, Rasmus Villemoes wrote: >> Some boards are capable of both rs232 and rs485, and control which >> external terminals are active via a gpio-controlled mux. Allow >> describing that gpio in DT so that the kernel can transparently handle >> the proper setting when the uart is switched between rs232 and rs485 >> modes. > > Crescent CY Hsieh (+cc) is in parallel trying to add an RS-422 mode bit > to struct serial_rs485: > > https://lore.kernel.org/all/20231121095122.15948-1-crescentcy.hsieh@xxxxxxxx/ > > I don't know whether that makes sense at all (I had thought RS-422 is > the same as RS-485 with full-duplex, i.e. SER_RS485_ENABLED plus > SER_RS485_RX_DURING_TX). No, that latter case is as I understand it usually called "4-wire rs485", while rs-422 is an entirely different animal, and the wiring is in some sense actually closer to rs-232. rs-422 is full-duplex, with all the slave device's tx-lines connected to the master's rx, and the master's tx connected to the slaves' rx (ok, it uses differential signalling, so there are four wires involved and not two as in rs-232). But I'm no expert, and there doesn't seem to be entirely consistent terminology. > > But if that patch gets accepted, we'd have *three* different modes: > RS-232, RS-485, RS-422. A single GPIO seems insufficient to handle that. > You'd need at least two GPIOs. I don't see Crescent introducing any new gpio that needs to be handled. In fact, I can't even see why from the perspective of the software that rs422 isn't just rs232; there's no transmit enable pin that needs to be handled. But maybe the uart driver does something different in rs422 mode; I assume he must have some update of some driver, since otherwise the new rs422 bit should be rejected by the core. So I can't really see the whole picture of that rs422 story. >> --- a/Documentation/devicetree/bindings/serial/rs485.yaml >> +++ b/Documentation/devicetree/bindings/serial/rs485.yaml >> @@ -61,6 +61,11 @@ properties: >> the active state enables RX during TX. >> maxItems: 1 >> >> + rs485-mux-gpios: >> + description: GPIO pin to control muxing of the SOC signals to the RS485 >> + transceiver. >> + maxItems: 1 > > The description doesn't really add much to the name "rs485-mux-gpios". > > Suggestion: > > description: selects whether the UART is connect to an RS-232 driver (low) > or an RS-485 transceiver (high) Indeed, I wasn't really able to come up with a good description. Thanks, that's much better. Rasmus