Message ID | 20240106-w1-uart-v4-1-7fe1378a8b3e@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:37c1:b0:101:2151:f287 with SMTP id y1csp174138dyq; Sat, 6 Jan 2024 08:03:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IGqzXXNYFVwTtRiFE275MjgwT2uecVEWUb4TdNNH7SfJDebB0GztIFEvVq8XM+CLzaLIKVz X-Received: by 2002:a05:6870:2f05:b0:204:a79:143c with SMTP id qj5-20020a0568702f0500b002040a79143cmr893297oab.61.1704557018313; Sat, 06 Jan 2024 08:03:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704557018; cv=none; d=google.com; s=arc-20160816; b=CJQQPLoSF59mLVK9I5yNU9xd7N4m97WkwHx8AZoKoS4E+h5mQnF/NgLm17WimbXd32 ZsP4Dj7qdZ6sXa49rBTLBjbSmjIv/qp+7gOpU/ephlXsK59+K8xOwkztni46lZj3shs+ Ql5RQGUDbPtXX3q0gKL6WjiZvP14MvO50xV0Ty3MYuOdB9ZSeHm7B2bEb3Qx23TeB4Vs aaNNGdItrwmJUysXqVnGaTsVbH8011TYpBH5Gczgfgxxc+VCdGSN0kNhlmc3tOD05Bn8 lNZIyFxqDQiom76ucxvKDFFy/QfebXwnoAqB4BOoiXxXEarXhQzWJcwlPgEFVZDYZyPN eatA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=reply-to:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:subject:date:from:dkim-signature; bh=tTVpoQBm5by/gySWsgc6YKHNE3z51EYLg/nImWTCs74=; fh=r7BajV2D2Jg57gZaa17CglIUBPH7SMJfiunV2wQAzJw=; b=BHnJHfRa30qJEMO+dytKYXj/cXnpgx0zcfj1sZgaFtwBZyQ+5LU9f4JYBhcaqhDEc/ wFwY/dpTQBFTWhGvFsjlvIbFevQKnBSEQ1/j/A8Am2CEPCkC9rS4lzUmjD7JDmMMrSLO Q/eETcCMt78+MIgmVUIvbM8e9/Na3TlsIjKh1hxpDV37qIcDxPb31M4qUBeSlFvB/zsR EkUdQqdrJ2vK0hTpNBTQeM5pJdTWhqVF4scBpIrfRRvwKT6/KiBpwZWa6iKVEejK8GJb 9jFGqlKVtB/ZX5r3fFAZHAcXqrANM46hvyiddaahfTcq80uQUJNkXGJv0BiXFj6fnlii EUog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="HZ/9496T"; spf=pass (google.com: domain of linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id l7-20020a05620a28c700b007831155b31csi1421054qkp.644.2024.01.06.08.03.38 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 08:03:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="HZ/9496T"; spf=pass (google.com: domain of linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18635-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1427C1C212F7 for <ouuuleilei@gmail.com>; Sat, 6 Jan 2024 16:03:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6F91FE563; Sat, 6 Jan 2024 16:02:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HZ/9496T" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C17DC846F; Sat, 6 Jan 2024 16:02:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPS id 3CC08C433C9; Sat, 6 Jan 2024 16:02:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704556947; bh=CyM+dK81AY1GNze7Q8lQ3o9F39LiJRzCOqn3mymlsFA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=HZ/9496TlKf4v2wV7fF+9NcTM9dHMCQXAcuuMIVE4Hf2npLU+aBIP13h7taxNKweL CdBEFlAlaZessnSINFRDXLEXwctVsGzcWGMAculhsm6vtjTiTHDUipkb6xgi63pg2z pNRoe7lzUz9ymDNXH9gpEKGTqgplPrQUKUl4l1kIQ0jbqhk0JSJZrd0G/BRoke5+NU MLN1GZmBLM6PDKBqTV4l0ZhSUFIiOBeDR94sZqC8oEySftYvX+Pi+jeTObESrVheVm fNMa3xdj5rbU8lLOKm/hmRpjdAyD6wlKo1RJfDYaUo1g81NydRk0ocL0sIjzSZg0af ZpNv5IRQIpJDA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 221D4C47079; Sat, 6 Jan 2024 16:02:27 +0000 (UTC) From: Christoph Winklhofer via B4 Relay <devnull+cj.winklhofer.gmail.com@kernel.org> Date: Sat, 06 Jan 2024 17:02:24 +0100 Subject: [PATCH v4 1/3] dt-bindings: w1: UART 1-Wire bus Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240106-w1-uart-v4-1-7fe1378a8b3e@gmail.com> References: <20240106-w1-uart-v4-0-7fe1378a8b3e@gmail.com> In-Reply-To: <20240106-w1-uart-v4-0-7fe1378a8b3e@gmail.com> To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Rob Herring <robh+dt@kernel.org>, Conor Dooley <conor+dt@kernel.org>, Christoph Winklhofer <cj.winklhofer@gmail.com>, Rob Herring <robh@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jirislaby@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Jonathan Corbet <corbet@lwn.net> Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1704556945; l=2346; i=cj.winklhofer@gmail.com; s=20240104; h=from:subject:message-id; bh=GIA/37nqwlMBtA6FnEHKs8XRjdXS3bL5cBDD0chGbYE=; b=M9HnA7l2nrFyCHwVTBHbWDWAg2k8moEEOvGkn+dsZ/9+/tDbjI2gkLt8m2R2tMuZtV1oBBsEM fwu0Ljq8EFNCw9b3ffM+i852WMaMePLLihudoO6BHBUfjhd9wuHthLd X-Developer-Key: i=cj.winklhofer@gmail.com; a=ed25519; pk=lgjGjOt7hFKJT9UXhgUyrdthxvZ7DJ5F1U/7d9qdAsk= X-Endpoint-Received: by B4 Relay for cj.winklhofer@gmail.com/20240104 with auth_id=111 X-Original-From: Christoph Winklhofer <cj.winklhofer@gmail.com> Reply-To: <cj.winklhofer@gmail.com> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787357579834276377 X-GMAIL-MSGID: 1787357579834276377 |
Series |
w1: add UART w1 bus driver
|
|
Commit Message
Christoph Winklhofer via B4 Relay
Jan. 6, 2024, 4:02 p.m. UTC
From: Christoph Winklhofer <cj.winklhofer@gmail.com> Add device tree binding for UART 1-Wire bus. Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> --- Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ 1 file changed, 62 insertions(+)
Comments
On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: > Add device tree binding for UART 1-Wire bus. > > Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> > --- > Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ > 1 file changed, 62 insertions(+) > > diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml > new file mode 100644 > index 000000000000..6b90693b2ca0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml > @@ -0,0 +1,62 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: UART 1-Wire Bus > + > +maintainers: > + - Christoph Winklhofer <cj.winklhofer@gmail.com> > + > +description: | > + UART 1-wire bus. Utilizes the UART interface via the Serial Device Bus > + to create the 1-Wire timing patterns. > + > + The UART peripheral must support full-duplex and operate in open-drain > + mode. The timing patterns are generated by a specific combination of > + baud-rate and transmitted byte, which corresponds to a 1-Wire read bit, > + write bit or reset pulse. > + > + The default baud-rate for reset and presence detection is 9600 and for > + a 1-Wire read or write operation 115200. In case the actual baud-rate > + is different from the requested one, the transmitted byte is adapted > + to generate the 1-Wire timing patterns. > + > + https://www.analog.com/en/technical-articles/using-a-uart-to-implement-a-1wire-bus-master.html > + > + > +properties: > + compatible: > + const: w1-uart > + > + reset-speed: > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 9600 > + description: | Don't need '|' if no formatting > + The baud rate for the 1-Wire reset and presence detect. > + > + touch_0-speed: Don't use '_' in property names. I'm somewhat familar with 1-wire, but I don't get what 'touch' means here. I assume these are low and high times which are a function of the baudrate. > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 115200 > + description: | > + The baud rate for the 1-Wire write-0 cycle (touch bit 0). > + > + touch_1-speed: > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 115200 > + description: | > + The baud rate for the 1-Wire write-1 and read cycle (touch bit 1). > + > +required: > + - compatible > + > +additionalProperties: false w1.txt says there can be a child node for the 1-wire device. You need 'type: object'. Or w1.txt needs to be converted to schema and referenced here (along with using unevaluatedProperties here instead). Rob
On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: > On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: > > Add device tree binding for UART 1-Wire bus. > > > > Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> > > --- > > Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ > > 1 file changed, 62 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml > > new file mode 100644 > > index 000000000000..6b90693b2ca0 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml > > @@ -0,0 +1,62 @@ > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# .. > > +properties: > > + compatible: > > + const: w1-uart > > + > > + reset-speed: > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + default: 9600 > > + description: | > > Don't need '|' if no formatting > Ok. > > + The baud rate for the 1-Wire reset and presence detect. > > + > > + touch_0-speed: > > Don't use '_' in property names. > > I'm somewhat familar with 1-wire, but I don't get what 'touch' means > here. I assume these are low and high times which are a function of the > baudrate. > I change the name to 'write-0-speed' and 'write-1-speed'. The function in the w1-framework is named 'touch_bit' - therefore the previous naming. It is the baud-rate used in the 1-Wire cycle to write a 0-Bit (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and reads a 0-Bit or 1-Bit (write-1-speed). > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + default: 115200 > > + description: | > > + The baud rate for the 1-Wire write-0 cycle (touch bit 0). > > + > > + touch_1-speed: > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + default: 115200 > > + description: | > > + The baud rate for the 1-Wire write-1 and read cycle (touch bit 1). > > + > > +required: > > + - compatible > > + > > +additionalProperties: false > > w1.txt says there can be a child node for the 1-wire device. You need > 'type: object'. Or w1.txt needs to be converted to schema and referenced > here (along with using unevaluatedProperties here instead). > > Rob Will change it to type object. However, I also tried to convert w1.txt to w1.yaml - I am not quite sure, so I add an excerpt of my attempt. The example in w1.txt builds fine. Is oneOf allowed as a top-level property, the documentation only mentions allOf? Only one child should be allowed, but I did not find a way to restrict this. # w1-uart.yaml: unevaluatedProperties: $ref: w1.yaml # w1.yaml: properties: compatible: enum: - maxim,ds2760 oneOf: - $ref: /schemas/power/supply/maxim,ds2760.yaml unevaluatedProperties: false # Thank you for the review! Kind regards, Christoph
On 13/01/2024 19:04, Christoph Winklhofer wrote: > On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: >> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: >>> Add device tree binding for UART 1-Wire bus. >>> >>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> >>> --- >>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ >>> 1 file changed, 62 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>> new file mode 100644 >>> index 000000000000..6b90693b2ca0 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>> @@ -0,0 +1,62 @@ >>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > ... >>> +properties: >>> + compatible: >>> + const: w1-uart >>> + >>> + reset-speed: >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + default: 9600 >>> + description: | >> >> Don't need '|' if no formatting >> > > Ok. > >>> + The baud rate for the 1-Wire reset and presence detect. >>> + >>> + touch_0-speed: >> >> Don't use '_' in property names. >> >> I'm somewhat familar with 1-wire, but I don't get what 'touch' means >> here. I assume these are low and high times which are a function of the >> baudrate. >> > > I change the name to 'write-0-speed' and 'write-1-speed'. The function > in the w1-framework is named 'touch_bit' - therefore the previous > naming. > > It is the baud-rate used in the 1-Wire cycle to write a 0-Bit > (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and > reads a 0-Bit or 1-Bit (write-1-speed). Then probably -bps: https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml > >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + default: 115200 >>> + description: | >>> + The baud rate for the 1-Wire write-0 cycle (touch bit 0). >>> + >>> + touch_1-speed: >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + default: 115200 >>> + description: | >>> + The baud rate for the 1-Wire write-1 and read cycle (touch bit 1). >>> + >>> +required: >>> + - compatible >>> + >>> +additionalProperties: false >> >> w1.txt says there can be a child node for the 1-wire device. You need >> 'type: object'. Or w1.txt needs to be converted to schema and referenced >> here (along with using unevaluatedProperties here instead). >> >> Rob > > Will change it to type object. However, I also tried to convert w1.txt > to w1.yaml - I am not quite sure, so I add an excerpt of my attempt. > The example in w1.txt builds fine. Is oneOf allowed as a top-level > property, the documentation only mentions allOf? > Only one child should be allowed, but I did not find a way to restrict > this. > > # w1-uart.yaml: > unevaluatedProperties: > $ref: w1.yaml > > # w1.yaml: > properties: > compatible: > enum: > - maxim,ds2760 w1 describes entire class of the devices, so it should not have compatibles. Look how other buses do it. > > oneOf: > - $ref: /schemas/power/supply/maxim,ds2760.yaml > > unevaluatedProperties: false Best regards, Krzysztof
On Sun, Jan 14, 2024 at 11:54:48AM +0100, Krzysztof Kozlowski wrote: > On 13/01/2024 19:04, Christoph Winklhofer wrote: > > On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: > >> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: > >>> Add device tree binding for UART 1-Wire bus. > >>> > >>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> > >>> --- > >>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ > >>> 1 file changed, 62 insertions(+) > >>> > >>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>> new file mode 100644 > >>> index 000000000000..6b90693b2ca0 > >>> --- /dev/null > >>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>> @@ -0,0 +1,62 @@ > >>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > >>> +%YAML 1.2 > >>> +--- > >>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# > >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > > ... > >>> +properties: > >>> + compatible: > >>> + const: w1-uart > >>> + > >>> + reset-speed: > >>> + $ref: /schemas/types.yaml#/definitions/uint32 > >>> + default: 9600 > >>> + description: | > >> > >> Don't need '|' if no formatting > >> > > > > Ok. > > > >>> + The baud rate for the 1-Wire reset and presence detect. > >>> + > >>> + touch_0-speed: > >> > >> Don't use '_' in property names. > >> > >> I'm somewhat familar with 1-wire, but I don't get what 'touch' means > >> here. I assume these are low and high times which are a function of the > >> baudrate. > >> > > > > I change the name to 'write-0-speed' and 'write-1-speed'. The function > > in the w1-framework is named 'touch_bit' - therefore the previous > > naming. > > > > It is the baud-rate used in the 1-Wire cycle to write a 0-Bit > > (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and > > reads a 0-Bit or 1-Bit (write-1-speed). > > > Then probably -bps: > https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml The serial.yaml uses prefix -speed for the baud rate but I can change it to -bps. > > > > >>> + $ref: /schemas/types.yaml#/definitions/uint32 > >>> + default: 115200 > >>> + description: | > >>> + The baud rate for the 1-Wire write-0 cycle (touch bit 0). > >>> + > >>> + touch_1-speed: > >>> + $ref: /schemas/types.yaml#/definitions/uint32 > >>> + default: 115200 > >>> + description: | > >>> + The baud rate for the 1-Wire write-1 and read cycle (touch bit 1). > >>> + > >>> +required: > >>> + - compatible > >>> + > >>> +additionalProperties: false > >> > >> w1.txt says there can be a child node for the 1-wire device. You need > >> 'type: object'. Or w1.txt needs to be converted to schema and referenced > >> here (along with using unevaluatedProperties here instead). > >> > >> Rob > > > > Will change it to type object. However, I also tried to convert w1.txt > > to w1.yaml - I am not quite sure, so I add an excerpt of my attempt. > > The example in w1.txt builds fine. Is oneOf allowed as a top-level > > property, the documentation only mentions allOf? > > Only one child should be allowed, but I did not find a way to restrict > > this. > > > > # w1-uart.yaml: > > unevaluatedProperties: > > $ref: w1.yaml > > > > # w1.yaml: > > properties: > > compatible: > > enum: > > - maxim,ds2760 > > w1 describes entire class of the devices, so it should not have > compatibles. Look how other buses do it. Thanks for the hint, looked at serial.yaml and usb.yaml. Hence w1.yaml should describe the properties common to all w1 bus controllers (property for child device) and w1-uart.yaml references it in allOf, like: # w1.yaml patternProperties: ".*": if: type: object then: description: Devices are listed... properties: compatible: required: - compatible additionalProperties: true # w1-uart.yaml allOf: - $ref: w1.yaml# unevaluatedProperties: false Kind regards, Christoph
On 14/01/2024 15:47, Christoph Winklhofer wrote: > On Sun, Jan 14, 2024 at 11:54:48AM +0100, Krzysztof Kozlowski wrote: >> On 13/01/2024 19:04, Christoph Winklhofer wrote: >>> On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: >>>> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: >>>>> Add device tree binding for UART 1-Wire bus. >>>>> >>>>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> >>>>> --- >>>>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ >>>>> 1 file changed, 62 insertions(+) >>>>> >>>>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>>>> new file mode 100644 >>>>> index 000000000000..6b90693b2ca0 >>>>> --- /dev/null >>>>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>>>> @@ -0,0 +1,62 @@ >>>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >>>>> +%YAML 1.2 >>>>> +--- >>>>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# >>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> ... >>>>> +properties: >>>>> + compatible: >>>>> + const: w1-uart >>>>> + >>>>> + reset-speed: >>>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>>> + default: 9600 >>>>> + description: | >>>> >>>> Don't need '|' if no formatting >>>> >>> >>> Ok. >>> >>>>> + The baud rate for the 1-Wire reset and presence detect. >>>>> + >>>>> + touch_0-speed: >>>> >>>> Don't use '_' in property names. >>>> >>>> I'm somewhat familar with 1-wire, but I don't get what 'touch' means >>>> here. I assume these are low and high times which are a function of the >>>> baudrate. >>>> >>> >>> I change the name to 'write-0-speed' and 'write-1-speed'. The function >>> in the w1-framework is named 'touch_bit' - therefore the previous >>> naming. >>> >>> It is the baud-rate used in the 1-Wire cycle to write a 0-Bit >>> (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and >>> reads a 0-Bit or 1-Bit (write-1-speed). >> >> >> Then probably -bps: >> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml > > The serial.yaml uses prefix -speed for the baud rate but I can change it > to -bps. Do you reference serial.yaml? > Best regards, Krzysztof
On Sun, Jan 14, 2024 at 04:55:42PM +0100, Krzysztof Kozlowski wrote: > On 14/01/2024 15:47, Christoph Winklhofer wrote: > > On Sun, Jan 14, 2024 at 11:54:48AM +0100, Krzysztof Kozlowski wrote: > >> On 13/01/2024 19:04, Christoph Winklhofer wrote: > >>> On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: > >>>> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: > >>>>> Add device tree binding for UART 1-Wire bus. > >>>>> > >>>>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> > >>>>> --- > >>>>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ > >>>>> 1 file changed, 62 insertions(+) > >>>>> > >>>>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>>>> new file mode 100644 > >>>>> index 000000000000..6b90693b2ca0 > >>>>> --- /dev/null > >>>>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>>>> @@ -0,0 +1,62 @@ > >>>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > >>>>> +%YAML 1.2 > >>>>> +--- > >>>>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# > >>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >>> ... > >>>>> +properties: > >>>>> + compatible: > >>>>> + const: w1-uart > >>>>> + > >>>>> + reset-speed: > >>>>> + $ref: /schemas/types.yaml#/definitions/uint32 > >>>>> + default: 9600 > >>>>> + description: | > >>>> > >>>> Don't need '|' if no formatting > >>>> > >>> > >>> Ok. > >>> > >>>>> + The baud rate for the 1-Wire reset and presence detect. > >>>>> + > >>>>> + touch_0-speed: > >>>> > >>>> Don't use '_' in property names. > >>>> > >>>> I'm somewhat familar with 1-wire, but I don't get what 'touch' means > >>>> here. I assume these are low and high times which are a function of the > >>>> baudrate. > >>>> > >>> > >>> I change the name to 'write-0-speed' and 'write-1-speed'. The function > >>> in the w1-framework is named 'touch_bit' - therefore the previous > >>> naming. > >>> > >>> It is the baud-rate used in the 1-Wire cycle to write a 0-Bit > >>> (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and > >>> reads a 0-Bit or 1-Bit (write-1-speed). > >> > >> > >> Then probably -bps: > >> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml > > > > The serial.yaml uses prefix -speed for the baud rate but I can change it > > to -bps. > > Do you reference serial.yaml? > No, serial.yaml is not referenced but 'onewire' will be a child-node of a serial-device which already defines baud rate related properties with -speed (e.g. max-speed although not used in w1-uart). Hence, I thought -speed is typically used for baud rates. Thanks, Christoph
On 15/01/2024 18:36, Christoph Winklhofer wrote: > On Sun, Jan 14, 2024 at 04:55:42PM +0100, Krzysztof Kozlowski wrote: >> On 14/01/2024 15:47, Christoph Winklhofer wrote: >>> On Sun, Jan 14, 2024 at 11:54:48AM +0100, Krzysztof Kozlowski wrote: >>>> On 13/01/2024 19:04, Christoph Winklhofer wrote: >>>>> On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: >>>>>> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: >>>>>>> Add device tree binding for UART 1-Wire bus. >>>>>>> >>>>>>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> >>>>>>> --- >>>>>>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ >>>>>>> 1 file changed, 62 insertions(+) >>>>>>> >>>>>>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>>>>>> new file mode 100644 >>>>>>> index 000000000000..6b90693b2ca0 >>>>>>> --- /dev/null >>>>>>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml >>>>>>> @@ -0,0 +1,62 @@ >>>>>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >>>>>>> +%YAML 1.2 >>>>>>> +--- >>>>>>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# >>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>>>> ... >>>>>>> +properties: >>>>>>> + compatible: >>>>>>> + const: w1-uart >>>>>>> + >>>>>>> + reset-speed: >>>>>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>>>>> + default: 9600 >>>>>>> + description: | >>>>>> >>>>>> Don't need '|' if no formatting >>>>>> >>>>> >>>>> Ok. >>>>> >>>>>>> + The baud rate for the 1-Wire reset and presence detect. >>>>>>> + >>>>>>> + touch_0-speed: >>>>>> >>>>>> Don't use '_' in property names. >>>>>> >>>>>> I'm somewhat familar with 1-wire, but I don't get what 'touch' means >>>>>> here. I assume these are low and high times which are a function of the >>>>>> baudrate. >>>>>> >>>>> >>>>> I change the name to 'write-0-speed' and 'write-1-speed'. The function >>>>> in the w1-framework is named 'touch_bit' - therefore the previous >>>>> naming. >>>>> >>>>> It is the baud-rate used in the 1-Wire cycle to write a 0-Bit >>>>> (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and >>>>> reads a 0-Bit or 1-Bit (write-1-speed). >>>> >>>> >>>> Then probably -bps: >>>> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml >>> >>> The serial.yaml uses prefix -speed for the baud rate but I can change it >>> to -bps. >> >> Do you reference serial.yaml? >> > > No, serial.yaml is not referenced but 'onewire' will be a child-node of > a serial-device which already defines baud rate related properties > with -speed (e.g. max-speed although not used in w1-uart). Hence, I > thought -speed is typically used for baud rates. Ah, it defines max-speed for childre, so for onewire. Re-using that property would make sense, but since you are defining completely new properties, let's use proper (-bps) naming. I still wonder, why would you use different baud rates for these three different operations? Best regards, Krzysztof
On Mon, Jan 15, 2024 at 07:02:55PM +0100, Krzysztof Kozlowski wrote: > On 15/01/2024 18:36, Christoph Winklhofer wrote: > > On Sun, Jan 14, 2024 at 04:55:42PM +0100, Krzysztof Kozlowski wrote: > >> On 14/01/2024 15:47, Christoph Winklhofer wrote: > >>> On Sun, Jan 14, 2024 at 11:54:48AM +0100, Krzysztof Kozlowski wrote: > >>>> On 13/01/2024 19:04, Christoph Winklhofer wrote: > >>>>> On Fri, Jan 12, 2024 at 07:39:17PM -0600, Rob Herring wrote: > >>>>>> On Sat, Jan 06, 2024 at 05:02:24PM +0100, Christoph Winklhofer wrote: > >>>>>>> Add device tree binding for UART 1-Wire bus. > >>>>>>> > >>>>>>> Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com> > >>>>>>> --- > >>>>>>> Documentation/devicetree/bindings/w1/w1-uart.yaml | 62 +++++++++++++++++++++++ > >>>>>>> 1 file changed, 62 insertions(+) > >>>>>>> > >>>>>>> diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>>>>>> new file mode 100644 > >>>>>>> index 000000000000..6b90693b2ca0 > >>>>>>> --- /dev/null > >>>>>>> +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml > >>>>>>> @@ -0,0 +1,62 @@ > >>>>>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > >>>>>>> +%YAML 1.2 > >>>>>>> +--- > >>>>>>> +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# > >>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >>>>> ... > >>>>>>> +properties: > >>>>>>> + compatible: > >>>>>>> + const: w1-uart > >>>>>>> + > >>>>>>> + reset-speed: > >>>>>>> + $ref: /schemas/types.yaml#/definitions/uint32 > >>>>>>> + default: 9600 > >>>>>>> + description: | > >>>>>> > >>>>>> Don't need '|' if no formatting > >>>>>> > >>>>> > >>>>> Ok. > >>>>> > >>>>>>> + The baud rate for the 1-Wire reset and presence detect. > >>>>>>> + > >>>>>>> + touch_0-speed: > >>>>>> > >>>>>> Don't use '_' in property names. > >>>>>> > >>>>>> I'm somewhat familar with 1-wire, but I don't get what 'touch' means > >>>>>> here. I assume these are low and high times which are a function of the > >>>>>> baudrate. > >>>>>> > >>>>> > >>>>> I change the name to 'write-0-speed' and 'write-1-speed'. The function > >>>>> in the w1-framework is named 'touch_bit' - therefore the previous > >>>>> naming. > >>>>> > >>>>> It is the baud-rate used in the 1-Wire cycle to write a 0-Bit > >>>>> (write-0-speed) and to perform a 1-Wire cycle that writes a 1-Bit and > >>>>> reads a 0-Bit or 1-Bit (write-1-speed). > >>>> > >>>> > >>>> Then probably -bps: > >>>> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml > >>> > >>> The serial.yaml uses prefix -speed for the baud rate but I can change it > >>> to -bps. > >> > >> Do you reference serial.yaml? > >> > > > > No, serial.yaml is not referenced but 'onewire' will be a child-node of > > a serial-device which already defines baud rate related properties > > with -speed (e.g. max-speed although not used in w1-uart). Hence, I > > thought -speed is typically used for baud rates. > > Ah, it defines max-speed for childre, so for onewire. Re-using that > property would make sense, but since you are defining completely new > properties, let's use proper (-bps) naming. > Ok. > I still wonder, why would you use different baud rates for these three > different operations? The timing for the pulse on the 1-Wire bus, to perform a 1-Wire reset or read/write is too different to use the same baud rate for them. The pulse can only be generated with the transmission of a single byte (to initiate the operation and to evaluate the response), since every UART packet starts low and ends high, only a limited set of baud rates are possible. Read-0/1 and Write-1 have the same low-time and therefore share the same baud rate setting, actually this baud could be higher. Otherwise, for Write-0 the maximum baud-rate is somewhere near 115200. The table lists the low-time range for the 1-Wire standard speed (overdrive is currently not implemented by the driver): Operation | Low-Time (usec) | Baud rate (default) ----------+-----------------+-------------------- Reset | 480 - 640 | 9600 Read-0/1 | 5 - 15 | 115200 Write-1 | 5 - 15 | 115200 Write-0 | 60 - 120 | 115200 I thought it makes sense to have the option to overwrite the default baud rates. Alternatively, the driver could probe a fixed set of different baud rates that are able to generate the timing patterns. Initially, the driver always used 9600 and 115200 - however some UART devices may not support these bauds. Now the driver requests a baud rate and checks if it can create the timing pattern with the returned one. Kind regards, Christoph
diff --git a/Documentation/devicetree/bindings/w1/w1-uart.yaml b/Documentation/devicetree/bindings/w1/w1-uart.yaml new file mode 100644 index 000000000000..6b90693b2ca0 --- /dev/null +++ b/Documentation/devicetree/bindings/w1/w1-uart.yaml @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/w1/w1-uart.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: UART 1-Wire Bus + +maintainers: + - Christoph Winklhofer <cj.winklhofer@gmail.com> + +description: | + UART 1-wire bus. Utilizes the UART interface via the Serial Device Bus + to create the 1-Wire timing patterns. + + The UART peripheral must support full-duplex and operate in open-drain + mode. The timing patterns are generated by a specific combination of + baud-rate and transmitted byte, which corresponds to a 1-Wire read bit, + write bit or reset pulse. + + The default baud-rate for reset and presence detection is 9600 and for + a 1-Wire read or write operation 115200. In case the actual baud-rate + is different from the requested one, the transmitted byte is adapted + to generate the 1-Wire timing patterns. + + https://www.analog.com/en/technical-articles/using-a-uart-to-implement-a-1wire-bus-master.html + + +properties: + compatible: + const: w1-uart + + reset-speed: + $ref: /schemas/types.yaml#/definitions/uint32 + default: 9600 + description: | + The baud rate for the 1-Wire reset and presence detect. + + touch_0-speed: + $ref: /schemas/types.yaml#/definitions/uint32 + default: 115200 + description: | + The baud rate for the 1-Wire write-0 cycle (touch bit 0). + + touch_1-speed: + $ref: /schemas/types.yaml#/definitions/uint32 + default: 115200 + description: | + The baud rate for the 1-Wire write-1 and read cycle (touch bit 1). + +required: + - compatible + +additionalProperties: false + +examples: + - | + serial { + onewire { + compatible = "w1-uart"; + }; + };