On Fri, Oct 09, 2026 at 04:24:07PM +0800, zjzhao@edatec.cn wrote: > From: Zi Jie Zhao > > Add a DT binding for the WK2xxx SPI-to-UART bridge ICs (WK2124, > WK2132, WK2168, WK2212 and WK2204) from Chengdu Weikai > Microelectronics (WKmic). > > Describe each UART channel with a serial@N child node carrying its > serial and RS-485 properties. Register the wkmic vendor prefix based > on the vendor website. > > Differentiate compatible strings by channel count and register > availability. WK2124 and WK2132 lack hardware flow-control and > RS-485 registers. WK2212 is a separate two-channel model that > supports both features. Reject serial@2 and serial@3 on the > two-channel members. > > Correct the WK2202 compatible used in the public v4 series to > WK2212. WK2202 in the public reference driver is a typo. > > Require the standard clocks property for the single external > reference clock used by the chips. > > Assisted-by: LLM > Signed-off-by: Zi Jie Zhao > --- > .../bindings/serial/wkmic,wk2124.yaml | 119 ++++++++++++++++++ > .../devicetree/bindings/vendor-prefixes.yaml | 2 + > MAINTAINERS | 7 ++ > 3 files changed, 128 insertions(+) > create mode 100644 Documentation/devicetree/bindings/serial/wkmic,wk2124.yaml > > diff --git a/Documentation/devicetree/bindings/serial/wkmic,wk2124.yaml b/Documentation/devicetree/bindings/serial/wkmic,wk2124.yaml > new file mode 100644 > index 000000000000..47a0cbdb5ca1 > --- /dev/null > +++ b/Documentation/devicetree/bindings/serial/wkmic,wk2124.yaml > @@ -0,0 +1,119 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/serial/wkmic,wk2124.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: WKmic WK2xxx SPI to UART bridge > + > +maintainers: > + - Huang Yang > + > +description: > + The WK2xxx family (WK2124, WK2132, WK2168, WK2212 and WK2204) are SPI to > + UART bridge ICs from WKmic (Chengdu Weikai Microelectronics). Each IC > + exposes two or four full-duplex UART channels with 256-byte RX/TX FIFOs > + through a single SPI slave interface and one interrupt line, and is > + clocked from a single external reference clock. Each channel is > + described by a "serial@N" child node that carries its own serial and > + RS-485 properties. > + > +properties: > + compatible: > + enum: > + - wkmic,wk2124 > + - wkmic,wk2132 > + - wkmic,wk2168 > + - wkmic,wk2212 > + - wkmic,wk2204 > + > + reg: > + maxItems: 1 > + > + interrupts: > + description: > + When missing, the device driver uses polling instead. > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > +patternProperties: > + "^serial@[0-3]$": > + type: object > + description: A single UART channel of the chip. > + allOf: > + - $ref: /schemas/serial/serial.yaml# > + - $ref: /schemas/serial/rs485.yaml# > + properties: > + reg: > + description: UART channel number on the chip. > + maximum: 3 > + required: > + - reg > + unevaluatedProperties: false > + > +required: > + - compatible > + - reg > + - clocks > + - "#address-cells" > + - "#size-cells" > + > +allOf: > + - $ref: /schemas/spi/spi-peripheral-props.yaml# > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - wkmic,wk2132 > + - wkmic,wk2212 > + then: > + patternProperties: > + "^serial@[23]$": false > + > +unevaluatedProperties: false > + > +examples: > + - | > + #include > + > + xtal: clock-11059200 { > + compatible = "fixed-clock"; > + clock-frequency = <11059200>; > + #clock-cells = <0>; > + }; Drop this node here please, the infra will populate it at runtime to make your example work. pw-bot: changes-requested Otherwise, it looks fine.to me.. Thanks, Conor. > + > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + serial@0 { > + compatible = "wkmic,wk2204"; > + reg = <0>; > + spi-max-frequency = <10000000>; > + clocks = <&xtal>; > + interrupt-parent = <&gpio>; > + interrupts = <24 IRQ_TYPE_LEVEL_LOW>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + serial@0 { > + reg = <0>; > + }; > + > + serial@1 { > + reg = <1>; > + rs485-rts-active-low; > + linux,rs485-enabled-at-boot-time; > + }; > + }; > + }; > diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml > index ba2002969373..cdc04229d642 100644 > --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml > +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml > @@ -1907,6 +1907,8 @@ patternProperties: > description: Wireless Tag (qiming yunduan) > "^wits,.*": > description: Shenzhen Merrii Technology Co., Ltd. (WITS) > + "^wkmic,.*": > + description: Chengdu Weikai Microelectronics Co., Ltd. (http://www.wkmic.com/) > "^wlf,.*": > description: Wolfson Microelectronics > "^wm,.*": > diff --git a/MAINTAINERS b/MAINTAINERS > index 3b2eb2a7a89a..e4a2443524d4 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -29432,6 +29432,13 @@ M: Miloslav Trmac > S: Maintained > F: drivers/input/misc/wistron_btns.c > > +WK2XXX SPI UART DRIVER > +M: Huang Yang > +L: linux-serial@vger.kernel.org > +S: Maintained > +F: Documentation/devicetree/bindings/serial/wkmic,wk2124.yaml > +F: drivers/tty/serial/wk2xxx.c > + > WMI BINARY MOF DRIVER > M: Armin Wolf > R: Thomas Weißschuh > -- > 2.43.0 >