From patchwork Sun Oct 8 11:09:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alvin_=C5=A0ipraga?= X-Patchwork-Id: 149729 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a888:0:b0:403:3b70:6f57 with SMTP id x8csp1317598vqo; Sun, 8 Oct 2023 04:14:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFvOHSSFZN3Twh/VuI5T84RmrXTGlBLezGcjWUGl4MEPivaFZ1cwt9E1pDJPXSBq7zN0iMj X-Received: by 2002:a05:6a00:2d01:b0:68c:d6f:212b with SMTP id fa1-20020a056a002d0100b0068c0d6f212bmr15616998pfb.19.1696763639631; Sun, 08 Oct 2023 04:13:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696763639; cv=none; d=google.com; s=arc-20160816; b=tMtf6r6zmZcNzloNEVgKSUrkeiVf2kHjxvqraynbYGb5Bqhq1Zpw1+y9rO+d1q8wtB 92GYTiEW0TEYPynOip5N6nmhEFWkqXL2bcOWVfRYcpkMmMNSHObilwH1tg+2FuM5jig4 yP6rJZ/QIt4p+nKyTOb9EnZtTjtbOSQW04BwSg0dzZngMGP82enkdxJadIEd0qAq7VBr gWUyShRCWtq9n2oShnEP9tw+2PBJRm+1rqt2+xDINdehGcd3D8yBoZx0TwARe7OzDc0u Ah3tLjEQSvAIu3juDFHNS5Y5BkgwJ6Y4ZFzBDs4HwgcxSVvcqV/cn52/w+nqmdnPs5CH cFrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=X73w9Tm3/Fb3xfcteBxnrsvkSpD2zh7pbrO20v4v9zM=; fh=HqqB48r6SHvUcv8OCJiXNFPCqGIgcKaok+ubCoLfnZI=; b=pF98axH3ewYCeuUeX6HfcUoKsRvvukJwyNie9O1SNgNVL31ckqhBgiFt0qulxkxiLm sArWlJrgw+j3C6Vp8g5QBSsNKvqRnCRuuJ9M8GvvGiPiza4yHCgKxD/fS4vngKl1nAZp ZJRGEHfoDQcbVFJD7V7kVQjzn4x1CDjih/mVj9z+Lc4eXMKNb4R9tlpaJ03x/kR4xrY8 5zEyRgjtj1h7H+tDzxaaNiFioQICIu/jkSpwfx88ZOQBpwLyF1WH6nHizNpkfAMjBfTL 6VCmTLoIh/nbif0kSmFhU110Om0LmPe7O+aSnF8nv3dV9qMKPvx2VSigRFzF46hk81gk CR9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b=AmEmYHrL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id c66-20020a633545000000b0055ace8caef9si7414782pga.309.2023.10.08.04.13.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:13:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b=AmEmYHrL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 8E23080A7E65; Sun, 8 Oct 2023 04:13:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344684AbjJHLNw (ORCPT + 18 others); Sun, 8 Oct 2023 07:13:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344658AbjJHLNu (ORCPT ); Sun, 8 Oct 2023 07:13:50 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24553C6 for ; Sun, 8 Oct 2023 04:13:48 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-533d31a8523so6509006a12.1 for ; Sun, 08 Oct 2023 04:13:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pqrs.dk; s=google; t=1696763626; x=1697368426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=X73w9Tm3/Fb3xfcteBxnrsvkSpD2zh7pbrO20v4v9zM=; b=AmEmYHrLmdAnN6lNs8Gn9045SVqdBAqm3sIFCyueGs9giuKaDRkNGYZKE8c5p5pw7x dHa2dRG9IOEMQxX+Mpjxx0RpEnVon1uv/3GaMw/p5yvBAgvsGvFTLVu1lrjR39EXG/0N pSmSyvza2EMYeY1qb5fazFzNxgi2raDpTdWiDH8Na2XdTTpNkCoIF3GVqB8L5i8MwlEz AxDEDQONcv5mwJliYtCzrw3xTiXnQc1VjEouE5vVdpMcxUGvs93Htnq3zec45gAFgLJJ C/QThBwBCU8QJUI1fF9fFe2alMatLQK9Hjbd21TO7+78YioP8b2wBYBH4Ox7O+GRKM63 4Ptg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696763626; x=1697368426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X73w9Tm3/Fb3xfcteBxnrsvkSpD2zh7pbrO20v4v9zM=; b=II86k+SiDPubsGk3G85YzL7/CnyTLcFhQwWfdvvbhZlChmisN7+CdWohPJBqeD7NwD 3dzOLhnH/iFJ2JCEEBa6a1qzLU7H6nCXSaqQtEsmIhHpSH6Cq35Eit0FKojeHqevNqTz HqvPLFa56Hgd6sbjhJl+08ozZupCa5B4kqOnXjgL5UetI6I61loYQo4vYp0d2PYYkT1E 4L8Ci8eU5XOLVhRo8fVHb6gODrAIwSkg0M/l7YU9g0jkxCoLOxP/IAk0MxTaP5DX7Ea9 hQ5r9/zM5uplZmk6VdkVDkMXKgBa/O+hxUnFaC/HkhqjT51rUpBNA54Abu9BHsu1Vb1W uB0g== X-Gm-Message-State: AOJu0YwFouPfhOZ8F5FIow1beH8OmQ3KbZcepFWlZwU+yojpjOPKw2pO Xk/WUhNTiPg1L7iE7TyeAt7/dg== X-Received: by 2002:a17:907:c70d:b0:9ae:47c3:35a0 with SMTP id ty13-20020a170907c70d00b009ae47c335a0mr11083414ejc.47.1696763626359; Sun, 08 Oct 2023 04:13:46 -0700 (PDT) Received: from capella.localdomain (80.71.142.18.ipv4.parknet.dk. [80.71.142.18]) by smtp.gmail.com with ESMTPSA id t3-20020a1709064f0300b009b928eb8dd3sm5383396eju.163.2023.10.08.04.13.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:13:45 -0700 (PDT) From: =?utf-8?q?Alvin_=C5=A0ipraga?= To: =?unknown-8bit?q?Michael_Turquette_=3Cmturquette=40baylibre=2Ecom=3E=2C_?= =?unknown-8bit?q?Stephen_Boyd_=3Csboyd=40kernel=2Eorg=3E=2C_Rob_Herring_=3C?= =?unknown-8bit?q?robh+dt=40kernel=2Eorg=3E=2C_Krzysztof_Kozlowski_=3Ckrzysz?= =?unknown-8bit?q?tof=2Ekozlowski+dt=40linaro=2Eorg=3E=2C_Conor_Dooley_=3Cco?= =?unknown-8bit?q?nor+dt=40kernel=2Eorg=3E=2C_=A0ipraga__=3Calsi=40bang-oluf?= =?unknown-8bit?q?sen=2Edk=3E?= Cc: Sebastian Hesselbarth , Rabeeh Khoury , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/3] dt-bindings: clock: si5351: convert to yaml Date: Sun, 8 Oct 2023 13:09:37 +0200 Message-ID: <20231008111324.582595-2-alvin@pqrs.dk> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231008111324.582595-1-alvin@pqrs.dk> References: <20231008111324.582595-1-alvin@pqrs.dk> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sun, 08 Oct 2023 04:13:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779185629869765178 X-GMAIL-MSGID: 1779185629869765178 From: Alvin Šipraga The following additional properties are described: - clock-names - clock-frequency of the clkout child nodes In order to suppress warnings from the DT schema validator, the clkout child nodes are prescribed names clkout@[0-7] rather than clkout[0-7]. The latter form is still admissible but the example has been changed to use the former. The example is refined as follows: - correct the usage of property pll-master -> silabs,pll-master - give an example of how the silabs,pll-reset property can be used I made myself maintainer of the file as I cannot presume that anybody else wants the responsibility. Cc: Sebastian Hesselbarth Cc: Rabeeh Khoury Signed-off-by: Alvin Šipraga --- .../bindings/clock/silabs,si5351.txt | 126 --------- .../bindings/clock/silabs,si5351.yaml | 244 ++++++++++++++++++ 2 files changed, 244 insertions(+), 126 deletions(-) delete mode 100644 Documentation/devicetree/bindings/clock/silabs,si5351.txt create mode 100644 Documentation/devicetree/bindings/clock/silabs,si5351.yaml diff --git a/Documentation/devicetree/bindings/clock/silabs,si5351.txt b/Documentation/devicetree/bindings/clock/silabs,si5351.txt deleted file mode 100644 index bfda6af76bee..000000000000 --- a/Documentation/devicetree/bindings/clock/silabs,si5351.txt +++ /dev/null @@ -1,126 +0,0 @@ -Binding for Silicon Labs Si5351a/b/c programmable i2c clock generator. - -Reference -[1] Si5351A/B/C Data Sheet - https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/data-sheets/Si5351-B.pdf - -The Si5351a/b/c are programmable i2c clock generators with up to 8 output -clocks. Si5351a also has a reduced pin-count package (MSOP10) where only -3 output clocks are accessible. The internal structure of the clock -generators can be found in [1]. - -==I2C device node== - -Required properties: -- compatible: shall be one of the following: - "silabs,si5351a" - Si5351a, QFN20 package - "silabs,si5351a-msop" - Si5351a, MSOP10 package - "silabs,si5351b" - Si5351b, QFN20 package - "silabs,si5351c" - Si5351c, QFN20 package -- reg: i2c device address, shall be 0x60 or 0x61. -- #clock-cells: from common clock binding; shall be set to 1. -- clocks: from common clock binding; list of parent clock - handles, shall be xtal reference clock or xtal and clkin for - si5351c only. Corresponding clock input names are "xtal" and - "clkin" respectively. -- #address-cells: shall be set to 1. -- #size-cells: shall be set to 0. - -Optional properties: -- silabs,pll-source: pair of (number, source) for each pll. Allows - to overwrite clock source of pll A (number=0) or B (number=1). - -==Child nodes== - -Each of the clock outputs can be overwritten individually by -using a child node to the I2C device node. If a child node for a clock -output is not set, the eeprom configuration is not overwritten. - -Required child node properties: -- reg: number of clock output. - -Optional child node properties: -- silabs,clock-source: source clock of the output divider stage N, shall be - 0 = multisynth N - 1 = multisynth 0 for output clocks 0-3, else multisynth4 - 2 = xtal - 3 = clkin (si5351c only) -- silabs,drive-strength: output drive strength in mA, shall be one of {2,4,6,8}. -- silabs,multisynth-source: source pll A(0) or B(1) of corresponding multisynth - divider. -- silabs,pll-master: boolean, multisynth can change pll frequency. -- silabs,pll-reset: boolean, clock output can reset its pll. -- silabs,disable-state : clock output disable state, shall be - 0 = clock output is driven LOW when disabled - 1 = clock output is driven HIGH when disabled - 2 = clock output is FLOATING (HIGH-Z) when disabled - 3 = clock output is NEVER disabled - -==Example== - -/* 25MHz reference crystal */ -ref25: ref25M { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <25000000>; -}; - -i2c-master-node { - - /* Si5351a msop10 i2c clock generator */ - si5351a: clock-generator@60 { - compatible = "silabs,si5351a-msop"; - reg = <0x60>; - #address-cells = <1>; - #size-cells = <0>; - #clock-cells = <1>; - - /* connect xtal input to 25MHz reference */ - clocks = <&ref25>; - clock-names = "xtal"; - - /* connect xtal input as source of pll0 and pll1 */ - silabs,pll-source = <0 0>, <1 0>; - - /* - * overwrite clkout0 configuration with: - * - 8mA output drive strength - * - pll0 as clock source of multisynth0 - * - multisynth0 as clock source of output divider - * - multisynth0 can change pll0 - * - set initial clock frequency of 74.25MHz - */ - clkout0 { - reg = <0>; - silabs,drive-strength = <8>; - silabs,multisynth-source = <0>; - silabs,clock-source = <0>; - silabs,pll-master; - clock-frequency = <74250000>; - }; - - /* - * overwrite clkout1 configuration with: - * - 4mA output drive strength - * - pll1 as clock source of multisynth1 - * - multisynth1 as clock source of output divider - * - multisynth1 can change pll1 - */ - clkout1 { - reg = <1>; - silabs,drive-strength = <4>; - silabs,multisynth-source = <1>; - silabs,clock-source = <0>; - pll-master; - }; - - /* - * overwrite clkout2 configuration with: - * - xtal as clock source of output divider - */ - clkout2 { - reg = <2>; - silabs,clock-source = <2>; - }; - }; -}; diff --git a/Documentation/devicetree/bindings/clock/silabs,si5351.yaml b/Documentation/devicetree/bindings/clock/silabs,si5351.yaml new file mode 100644 index 000000000000..99c4e2271b6d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/silabs,si5351.yaml @@ -0,0 +1,244 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/silabs,si5351.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Silicon Labs Si5351A/B/C programmable I2C clock generators + +description: | + The Silicon Labs Si5351A/B/C are programmable I2C clock generators with up to + 8 outputs. Si5351A also has a reduced pin-count package (10-MSOP) where only 3 + output clocks are accessible. The internal structure of the clock generators + can be found in [1]. + + [1] Si5351A/B/C Data Sheet + https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/data-sheets/Si5351-B.pdf + +maintainers: + - Alvin Šipraga + +properties: + compatible: + enum: + - silabs,si5351a # Si5351A, 20-QFN package + - silabs,si5351a-msop # Si5351A, 10-MSOP package + - silabs,si5351b # Si5351B, 20-QFN package + - silabs,si5351c # Si5351C, 20-QFN package + + reg: + enum: + - 0x60 + - 0x61 + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + "#clock-cells": + const: 1 + + clocks: true + + clock-names: true + + silabs,pll-source: + $ref: /schemas/types.yaml#/definitions/uint32-matrix + description: | + A list of cell pairs containing a PLL index and its source. Allows to + overwrite clock source of the internal PLLs. + items: + items: + - description: PLL A (0) or PLL B (1) + enum: [ 0, 1 ] + - description: PLL source, XTAL (0) or CLKIN (1, Si5351C only). + enum: [ 0, 1 ] + +patternProperties: + "^clkout@[0-7]$": + type: object + + additionalProperties: false + + properties: + reg: + description: Clock output number. + + clock-frequency: true + + silabs,clock-source: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Source clock of the this output's divider stage. + + 0 - use multisynth N for this output, where N is the output number + 1 - use either multisynth 0 (if output number is 0-3) or multisynth 4 + (otherwise) for this output + 2 - use XTAL for this output + 3 - use CLKIN for this output (Si5351C only) + + silabs,drive-strength: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [ 2, 4, 6, 8 ] + description: Output drive strength in mA. + + silabs,multisynth-source: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [ 0, 1 ] + description: | + Source PLL A (0) or B (1) for the corresponding multisynth divider. + + silabs,pll-master: + type: boolean + description: | + The frequency of the source PLL is allowed to be changed by the + multisynth when setting the rate of this clock output. + + silabs,pll-reset: + type: boolean + description: Reset the source PLL when enabling this clock output. + + silabs,disable-state: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [ 0, 1, 2, 3 ] + description: | + Clock output disable state. The state can be one of: + + 0 - clock output is driven LOW when disabled + 1 - clock output is driven HIGH when disabled + 2 - clock output is FLOATING (HIGH-Z) when disabled + 3 - clock output is never disabled + + allOf: + - if: + properties: + compatible: + contains: + const: silabs,si5351a-msop + then: + properties: + reg: + maximum: 2 + else: + properties: + reg: + maximum: 7 + + - if: + properties: + compatible: + contains: + const: silabs,si5351c + then: + properties: + silabs,clock-source: + enum: [ 0, 1, 2, 3 ] + else: + properties: + silabs,clock-source: + enum: [ 0, 1, 2 ] + + required: + - reg + +allOf: + - if: + properties: + compatible: + contains: + enum: + - silabs,si5351a + - silabs,si5351a-msop + - silabs,si5351b + then: + properties: + clocks: + maxItems: 1 + clock-names: + items: + - const: xtal + else: + properties: + clocks: + maxItems: 2 + clock-names: + items: + - const: xtal + - const: clkin + +required: + - reg + - "#address-cells" + - "#size-cells" + - "#clock-cells" + - clocks + - clock-names + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + clock-generator@60 { + compatible = "silabs,si5351a-msop"; + reg = <0x60>; + #address-cells = <1>; + #size-cells = <0>; + #clock-cells = <1>; + + /* Connect XTAL input to 25MHz reference */ + clocks = <&ref25>; + clock-names = "xtal"; + + /* Use XTAL input as source of PLL0 and PLL1 */ + silabs,pll-source = <0 0>, <1 0>; + + /* + * Overwrite CLK0 configuration with: + * - 8 mA output drive strength + * - PLL0 as clock source of multisynth 0 + * - Multisynth 0 as clock source of output divider + * - Multisynth 0 can change PLL0 + * - Set initial clock frequency of 74.25MHz + */ + clkout@0 { + reg = <0>; + silabs,drive-strength = <8>; + silabs,multisynth-source = <0>; + silabs,clock-source = <0>; + silabs,pll-master; + clock-frequency = <74250000>; + }; + + /* + * Overwrite CLK1 configuration with: + * - 4 mA output drive strength + * - PLL1 as clock source of multisynth 1 + * - Multisynth 1 as clock source of output divider + * - Multisynth 1 can change PLL1 + * - Reset PLL1 when enabling this clock output + */ + clkout@1 { + reg = <1>; + silabs,drive-strength = <4>; + silabs,multisynth-source = <1>; + silabs,clock-source = <0>; + silabs,pll-master; + silabs,pll-reset; + }; + + /* + * Overwrite CLK2 configuration with: + * - XTAL as clock source of output divider + */ + clkout@2 { + reg = <2>; + silabs,clock-source = <2>; + }; + }; + }; From patchwork Sun Oct 8 11:09:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alvin_=C5=A0ipraga?= X-Patchwork-Id: 149730 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a888:0:b0:403:3b70:6f57 with SMTP id x8csp1317642vqo; Sun, 8 Oct 2023 04:14:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH/zZMkZbAwOD7Bw7sgzqND+AcHhInCgwUzG9HDczv5/XjGihos0w/Rv1JkHpWA5yV/8qdM X-Received: by 2002:a5e:c814:0:b0:79f:cdb4:3f87 with SMTP id y20-20020a5ec814000000b0079fcdb43f87mr13611436iol.4.1696763649197; Sun, 08 Oct 2023 04:14:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696763649; cv=none; d=google.com; s=arc-20160816; b=ik+PxY7UqjPo2q/r9udEL4Bz5ErglLyP1jgjxk5v3IBYDV/UNxn8SKXe2W47vvranh Kf/kqIu/Szh1TnAqV6qcicGs5sFDbZPAsto8xGGajiZzDFnysjL69TWA25oy+XF31hvp gm4aP8JUAQLVksjPz9t7zB1j1Mjhv0kTyH91Vf1u2SHYLZMxChsMWChUI6NJck4CcaC2 jhDsmOrRtMhe8CmxB6BSbteN51MebHU/LRhcjJ+8+BrhRFkyBH68QMdVuTbq8xJEc+Zf WOYRDWTz8B2zuJAp8EKY15FVaxfXpaF9VAckOg1iRQOxeryC2V7mzprnJYGf7f+Y9UkG KgVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=WGvwmv7blnoHjX1qS2bGhDolAncwyiZsBGNZLg6R4Cw=; fh=KyFBUXcuM6fUgur5yAGjxy8UwwGrnAi0qyRlE0N5PJo=; b=rCiJOfxycR4bdS/uUPqQXegUwZsUq/52vwG2wdUnQlw7fEfcghCXo+ciHl9uOirXtO 8fs86aBoPVtNbIiug0Qj1NAue8MTV73AuoAzD0Xx7G85u2QcWHds2LoeNvmQyccNDXfg iHZJYwqUf9/LhmT5gCZ7wc882b7sB44fcZWenNFretxXp6PvdzuTL0vVKu7qcAh5A1er uKf/ZZnOutjiZP0z/RmDZkj8vaP1f5fGnNjAXjKY8uFFpo2BWuZ/jwROvduzSQ2EqAon iBWgEv+XbxzkT08VM3o6c0D/dqonGz+37kuzJbM14Z6qkjIfM+VrIOVHsqyAdtoVyHGx b0bg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b="QWv/4MZh"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id t64-20020a638143000000b00565eccbc52fsi7703627pgd.303.2023.10.08.04.14.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:14:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b="QWv/4MZh"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 0465B80B2304; Sun, 8 Oct 2023 04:14:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230424AbjJHLN5 (ORCPT + 18 others); Sun, 8 Oct 2023 07:13:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344680AbjJHLNv (ORCPT ); Sun, 8 Oct 2023 07:13:51 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E14F3D6 for ; Sun, 8 Oct 2023 04:13:49 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-9b9faf05f51so384900266b.2 for ; Sun, 08 Oct 2023 04:13:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pqrs.dk; s=google; t=1696763628; x=1697368428; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WGvwmv7blnoHjX1qS2bGhDolAncwyiZsBGNZLg6R4Cw=; b=QWv/4MZhau5K2WfbYMvWbSjkfR/1c/JF5H9j5lj7RcDbGAE9cCMOfES00twBrFvm7Z RRz0TrykTvAuW6CIKVRKVXQZEda4yIblC0ZVI2sNAEvdGT2XMEviSGA4ZzacgpkIAbHU +Gz9ZADJs2j/DDm8llnjRp3mXDh0U/EoBQMfim5BNzAmaOTlBWnN7UBa0bpBPExrTc4z FkkO4A0vFHi1To86aGiFEOe8bm7BoVDkEddPafQCvTH2goDf1EKSJg+X0HQUEeWx4Ysf tYIef/zCUN+vmtphDBNBi/wQ+abQUzsuWtiIbLM0XchYHw0CNbiYbJfVWEBrkKZbgJcx /sQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696763628; x=1697368428; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WGvwmv7blnoHjX1qS2bGhDolAncwyiZsBGNZLg6R4Cw=; b=CwFLz6XC72fjuaue/ke00mo5nbjRJPzkTa4TwhGKiWBSjl4jkL2wfkRzYMZAi+yd+U fipN1vAqR5p/DdB4FCqRKRzew1W45ZsNPt+Ss2GxZ3TnpqLi93hI5l+s+eKF301PE6Ac CTTdSlmQAzHG+QnpsGqPiIb20wcNjmobcGTAQTH68JCB5cBskQOlznj9ZN8g1ciQ+uO+ 1P/LjnLoWM2KlZhsfSj9wZsmYeOKGKCNEsIfYJBths/1lGWgYAfQWuE/Z/9B3ScKlJFd b9jwDFwwn0qmFwuaAVRNjlXqw3KshyoH+IXUpcU1poFrQaUXGkq55A7X7VsmocKdJ5JP 3ccA== X-Gm-Message-State: AOJu0YxvExyBDSNjc2mjRP8LJ1Nb4pEIwRhfG10+V+YQrFci0j0Qm/NB o3OJNkGXdysMkvsHE/aKs33DfA== X-Received: by 2002:a17:906:3156:b0:9b2:b71f:83be with SMTP id e22-20020a170906315600b009b2b71f83bemr11113918eje.1.1696763628206; Sun, 08 Oct 2023 04:13:48 -0700 (PDT) Received: from capella.localdomain (80.71.142.18.ipv4.parknet.dk. [80.71.142.18]) by smtp.gmail.com with ESMTPSA id t3-20020a1709064f0300b009b928eb8dd3sm5383396eju.163.2023.10.08.04.13.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:13:47 -0700 (PDT) From: =?utf-8?q?Alvin_=C5=A0ipraga?= To: =?unknown-8bit?q?Michael_Turquette_=3Cmturquette=40baylibre=2Ecom=3E=2C_?= =?unknown-8bit?q?Stephen_Boyd_=3Csboyd=40kernel=2Eorg=3E=2C_Rob_Herring_=3C?= =?unknown-8bit?q?robh+dt=40kernel=2Eorg=3E=2C_Krzysztof_Kozlowski_=3Ckrzysz?= =?unknown-8bit?q?tof=2Ekozlowski+dt=40linaro=2Eorg=3E=2C_Conor_Dooley_=3Cco?= =?unknown-8bit?q?nor+dt=40kernel=2Eorg=3E=2C_=A0ipraga__=3Calsi=40bang-oluf?= =?unknown-8bit?q?sen=2Edk=3E?= Cc: Sebastian Hesselbarth , Rabeeh Khoury , Jacob Siverskog , Sergej Sawazki , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/3] dt-bindings: clock: si5351: add PLL reset mode property Date: Sun, 8 Oct 2023 13:09:38 +0200 Message-ID: <20231008111324.582595-3-alvin@pqrs.dk> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231008111324.582595-1-alvin@pqrs.dk> References: <20231008111324.582595-1-alvin@pqrs.dk> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sun, 08 Oct 2023 04:14:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779185640552571609 X-GMAIL-MSGID: 1779185640552571609 From: Alvin Šipraga For applications where the PLL must be adjusted without glitches in the clock output(s), a new silabs,pll-reset-mode property is added. It can be used to specify whether or not the PLL should be reset after adjustment. Resetting is known to cause glitches. For compatibility with older device trees, it must be assumed that the default PLL reset mode is to unconditionally reset after adjustment. Cc: Sebastian Hesselbarth Cc: Rabeeh Khoury Cc: Jacob Siverskog Cc: Sergej Sawazki Signed-off-by: Alvin Šipraga --- .../bindings/clock/silabs,si5351.yaml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/silabs,si5351.yaml b/Documentation/devicetree/bindings/clock/silabs,si5351.yaml index 99c4e2271b6d..9a36d1f55c18 100644 --- a/Documentation/devicetree/bindings/clock/silabs,si5351.yaml +++ b/Documentation/devicetree/bindings/clock/silabs,si5351.yaml @@ -56,6 +56,27 @@ properties: - description: PLL source, XTAL (0) or CLKIN (1, Si5351C only). enum: [ 0, 1 ] + silabs,pll-reset-mode: + $ref: /schemas/types.yaml#/definitions/uint32-matrix + minItems: 1 + description: | + A list of cell pairs containing a PLL index and its reset mode. + items: + items: + - description: PLL A (0) or PLL B (1) + enum: [ 0, 1 ] + - description: | + Reset mode for the PLL. Mode can be one of: + + 0 - reset whenever PLL rate is adjusted (default mode) + 1 - do not reset when PLL rate is adjusted + + In mode 1, the PLL is only reset if the silabs,pll-reset is + specified in one of the clock output child nodes that also sources + the PLL. This mode may be preferable if output clocks are expected + to be adjusted without glitches. + enum: [ 0, 1 ] + patternProperties: "^clkout@[0-7]$": type: object @@ -198,6 +219,9 @@ examples: /* Use XTAL input as source of PLL0 and PLL1 */ silabs,pll-source = <0 0>, <1 0>; + /* Don't reset PLL1 on rate adjustment */ + silabs,pll-reset-mode = <1 1>; + /* * Overwrite CLK0 configuration with: * - 8 mA output drive strength From patchwork Sun Oct 8 11:09:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alvin_=C5=A0ipraga?= X-Patchwork-Id: 149731 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a888:0:b0:403:3b70:6f57 with SMTP id x8csp1317664vqo; Sun, 8 Oct 2023 04:14:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSYAQFoh7jlkB87ClzVhSWXeq/JrIDFalNrUlMwU6CB6MBHtV2+XZuk4+cxBukwqN3d8GF X-Received: by 2002:a05:6358:9184:b0:143:1063:d1f4 with SMTP id j4-20020a056358918400b001431063d1f4mr13510481rwa.13.1696763651266; Sun, 08 Oct 2023 04:14:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696763651; cv=none; d=google.com; s=arc-20160816; b=cAiEvHJmLFCVidciNwMjaC/DcT1diMSxhiICYhCN3w7VntWQVyLUyhTXrw5ykJ8g84 i9V07Asf0M37Fb+DU4RMCoyI8LOb8OiGGCbN9xeUKXIacJ089B0egnF2zU9ehb24cpgV 2Hz11hanTHSM2q5bUoN7PYoT4XKnjl56zkTsQL4uY0xH192RQnEhvATr7NIV2sU/VjWG N4FJrrgvzVBcUDk23/1iOrvQ15gfwbj4EmtVsD5wQPmbvpAcxThbFhJPX5IJJpwlcn1Z fcpz4Fx370gTCSCiSO1QYCu3bkiI8YLWBMtCoZymqcFyuVUOuSmfNCyJtnNvlpRbV10e Ojmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YhFZ+nJk7VLBMeKe+/tLKVPNXDUr9yKyddGx3RvRDwY=; fh=KyFBUXcuM6fUgur5yAGjxy8UwwGrnAi0qyRlE0N5PJo=; b=QJU3GZHGcJNNMenvIhPiDYBFnwJ8vuPX65vMD8ukUpBWylbxkMtLFrneRpf91oM8DA Z0CYi5qo5DMbFH4OQLJYNvCC/FjxK7HaOgaBnvs4/7ybunaYSiJ44dLX8bPq/CThxXCr /dhkbn9Vbadty32HvkIpSRO+dY4wBF/Jews/ddAd9e57w/0cady0FSXJ5f2xsb76F8ZA eUyQOwWVumSKJWWCZNTn6icOhGdvt2ex8+UdBcef57V7N8JRxF89PMOo5IS/PN7y1qK7 GnCe0iTzdGdFMvSB31AeOOPYn8GkRYtl44K1/ISw0NmJSa5kahLGzJrtJ4MfeRPHvs+m N7fQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b="HjY71/gc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id w63-20020a638242000000b00585527553a4si7290550pgd.130.2023.10.08.04.14.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:14:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@pqrs.dk header.s=google header.b="HjY71/gc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 3566580B2306; Sun, 8 Oct 2023 04:14:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344697AbjJHLOB (ORCPT + 18 others); Sun, 8 Oct 2023 07:14:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344688AbjJHLNx (ORCPT ); Sun, 8 Oct 2023 07:13:53 -0400 Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9664DBA for ; Sun, 8 Oct 2023 04:13:51 -0700 (PDT) Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-9b96c3b4be4so615508866b.1 for ; Sun, 08 Oct 2023 04:13:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pqrs.dk; s=google; t=1696763630; x=1697368430; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YhFZ+nJk7VLBMeKe+/tLKVPNXDUr9yKyddGx3RvRDwY=; b=HjY71/gcJbWI+qb/N0zroB0efOo8NGMoPacpm9r9ET+AClHhpYTS/azQs0tPUC84mM +zqlxmO0WyvlXyKDHYXKLjPuBa9S3ByJRQV4mzFF2ZllpLlv6MOFcQq4z2rt5sJXdGRr tLsSrcUMz6iItDHYfA5ipp4qYWwdtcJv1gdvEs/n5gtCBDD63rPIazdNWWPvEZcCh5U9 CUwueZIYGvcVSzywQqGhlSzlJtSlBlD5CTbZVPRW+Lq/yoDwcrbChnttruChByGE7noS Z0I6h126dT7mmn6Y9lVBEESMzyLD7b3SQqItumKFd0kyaJXUvZrfISnj1y3j/t64RP3I hFfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696763630; x=1697368430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YhFZ+nJk7VLBMeKe+/tLKVPNXDUr9yKyddGx3RvRDwY=; b=mas1t1wBH9R2f1WshP473cGUubW0YD1iwMtwpinpJHAuU5X4bzvWAjM/fxBGBBvWL8 0eAhucPuWpmlvXosOpmTW4GYn9LebvcV5WkkQHDVBPFH6ERh9szNGBS9AvsnCFSDO/Zh xWrbJ7xH+wNLHjjt3XeKe1vg1QxdmRtlyxepyTplx+z1gSXn0INfLUZjI4R8SgYChl86 pM/AQjaF+KAZxM/pX2uL6Q3rktJsEwA0LEpiElMiNmAlybqlDYTLF0ENLftYiGtKY6iY Upk6XDwk+xRstCMZxnG88wEMdlyw8rg4mv+pTXDb0WnG/94aP1VDEWO4H6r4H+8Uhzv+ D5zg== X-Gm-Message-State: AOJu0YxihTug31/WL9foiKGcvzO9MRS53Obp1WeFj/g14VqFL9qHQ16G /MSGeoHZXlzLAb2++1Zb/5Lrdw== X-Received: by 2002:a17:907:78c2:b0:9ad:ad5a:939b with SMTP id kv2-20020a17090778c200b009adad5a939bmr11545362ejc.7.1696763630194; Sun, 08 Oct 2023 04:13:50 -0700 (PDT) Received: from capella.localdomain (80.71.142.18.ipv4.parknet.dk. [80.71.142.18]) by smtp.gmail.com with ESMTPSA id t3-20020a1709064f0300b009b928eb8dd3sm5383396eju.163.2023.10.08.04.13.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 04:13:49 -0700 (PDT) From: =?utf-8?q?Alvin_=C5=A0ipraga?= To: =?unknown-8bit?q?Michael_Turquette_=3Cmturquette=40baylibre=2Ecom=3E=2C_?= =?unknown-8bit?q?Stephen_Boyd_=3Csboyd=40kernel=2Eorg=3E=2C_Rob_Herring_=3C?= =?unknown-8bit?q?robh+dt=40kernel=2Eorg=3E=2C_Krzysztof_Kozlowski_=3Ckrzysz?= =?unknown-8bit?q?tof=2Ekozlowski+dt=40linaro=2Eorg=3E=2C_Conor_Dooley_=3Cco?= =?unknown-8bit?q?nor+dt=40kernel=2Eorg=3E=2C_=A0ipraga__=3Calsi=40bang-oluf?= =?unknown-8bit?q?sen=2Edk=3E?= Cc: Sebastian Hesselbarth , Rabeeh Khoury , Jacob Siverskog , Sergej Sawazki , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/3] clk: si5351: allow PLLs to be adjusted without reset Date: Sun, 8 Oct 2023 13:09:39 +0200 Message-ID: <20231008111324.582595-4-alvin@pqrs.dk> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231008111324.582595-1-alvin@pqrs.dk> References: <20231008111324.582595-1-alvin@pqrs.dk> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sun, 08 Oct 2023 04:14:10 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779185642490892301 X-GMAIL-MSGID: 1779185642490892301 From: Alvin Šipraga Introduce a new PLL reset mode flag which controls whether or not to reset a PLL after adjusting its rate. The mode can be configured through platform data or device tree. Since commit 6dc669a22c77 ("clk: si5351: Add PLL soft reset"), the driver unconditionally resets a PLL whenever its rate is adjusted. The rationale was that a PLL reset was required to get three outputs working at the same time. Before this change, the driver never reset the PLLs. Commit b26ff127c52c ("clk: si5351: Apply PLL soft reset before enabling the outputs") subsequently introduced an option to reset the PLL when enabling a clock output that sourced it. Here, the rationale was that this is required to get a deterministic phase relationship between multiple output clocks. This clearly shows that it is useful to reset the PLLs in applications where multiple clock outputs are used. However, the Si5351 also allows for glitch-free rate adjustment of its PLLs if one avoids resetting the PLL. In our audio application where a single Si5351 clock output is used to supply a runtime adjustable bit clock, this unconditional PLL reset behaviour introduces unwanted glitches in the clock output. It would appear that the problem being solved in the former commit may be solved by using the optional device tree property introduced in the latter commit, obviating the need for an unconditional PLL reset after rate adjustment. But it's not OK to break the default behaviour of the driver, and it cannot be assumed that all device trees are using the property introduced in the latter commit. Hence, the new behaviour is made opt-in. Cc: Sebastian Hesselbarth Cc: Rabeeh Khoury Cc: Jacob Siverskog Cc: Sergej Sawazki Signed-off-by: Alvin Šipraga Acked-by: Sebastian Hesselbarth --- drivers/clk/clk-si5351.c | 47 ++++++++++++++++++++++++++-- include/linux/platform_data/si5351.h | 2 ++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c index 00fb9b09e030..95d7afb8cfc6 100644 --- a/drivers/clk/clk-si5351.c +++ b/drivers/clk/clk-si5351.c @@ -506,6 +506,8 @@ static int si5351_pll_set_rate(struct clk_hw *hw, unsigned long rate, { struct si5351_hw_data *hwdata = container_of(hw, struct si5351_hw_data, hw); + struct si5351_platform_data *pdata = + hwdata->drvdata->client->dev.platform_data; u8 reg = (hwdata->num == 0) ? SI5351_PLLA_PARAMETERS : SI5351_PLLB_PARAMETERS; @@ -518,9 +520,10 @@ static int si5351_pll_set_rate(struct clk_hw *hw, unsigned long rate, (hwdata->params.p2 == 0) ? SI5351_CLK_INTEGER_MODE : 0); /* Do a pll soft reset on the affected pll */ - si5351_reg_write(hwdata->drvdata, SI5351_PLL_RESET, - hwdata->num == 0 ? SI5351_PLL_RESET_A : - SI5351_PLL_RESET_B); + if (pdata->pll_reset[hwdata->num]) + si5351_reg_write(hwdata->drvdata, SI5351_PLL_RESET, + hwdata->num == 0 ? SI5351_PLL_RESET_A : + SI5351_PLL_RESET_B); dev_dbg(&hwdata->drvdata->client->dev, "%s - %s: p1 = %lu, p2 = %lu, p3 = %lu, parent_rate = %lu, rate = %lu\n", @@ -1222,6 +1225,44 @@ static int si5351_dt_parse(struct i2c_client *client, } } + /* + * Parse PLL reset mode. For compatibility with older device trees, the + * default is to always reset a PLL after setting its rate. + */ + pdata->pll_reset[0] = true; + pdata->pll_reset[1] = true; + + of_property_for_each_u32(np, "silabs,pll-reset-mode", prop, p, num) { + if (num >= 2) { + dev_err(&client->dev, + "invalid pll %d on pll-reset-mode prop\n", num); + return -EINVAL; + } + + p = of_prop_next_u32(prop, p, &val); + if (!p) { + dev_err(&client->dev, + "missing pll-reset-mode for pll %d\n", num); + return -EINVAL; + } + + switch (val) { + case 0: + /* Reset PLL whenever its rate is adjusted */ + pdata->pll_reset[num] = true; + break; + case 1: + /* Don't reset PLL whenever its rate is adjusted */ + pdata->pll_reset[num] = false; + break; + default: + dev_err(&client->dev, + "invalid pll-reset-mode %d for pll %d\n", val, + num); + return -EINVAL; + } + } + /* per clkout properties */ for_each_child_of_node(np, child) { if (of_property_read_u32(child, "reg", &num)) { diff --git a/include/linux/platform_data/si5351.h b/include/linux/platform_data/si5351.h index c71a2dd66143..5f412a615532 100644 --- a/include/linux/platform_data/si5351.h +++ b/include/linux/platform_data/si5351.h @@ -105,10 +105,12 @@ struct si5351_clkout_config { * @clk_xtal: xtal input clock * @clk_clkin: clkin input clock * @pll_src: array of pll source clock setting + * @pll_reset: array indicating if plls should be reset after setting the rate * @clkout: array of clkout configuration */ struct si5351_platform_data { enum si5351_pll_src pll_src[2]; + bool pll_reset[2]; struct si5351_clkout_config clkout[8]; };