From nobody Fri Dec 19 19:19:27 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 356137263C; Sun, 25 May 2025 19:08:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748200095; cv=none; b=b+iK6jswuLgKSvbiOCPDwRXLMot62ft35TAoWX1ijF8juV3uRSjXafWrBqHqXyaJDwZpePZqOGkxEm0VNUjKDk1+D92Ws7whQ3Kb/ZT3WZTkYMj7G4hKsOETrmoRHXw3ElcbSrZp/rkLLxJMF9mjYGnOQ0xt/HOwnNwuqqRQ8Mw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748200095; c=relaxed/simple; bh=sZ5P5mw9se3f5g6UprF5EyyvVvan6Sobm0FAyN+z3b8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MdcJjKwgj58Tshtfiy/S72itRHdUAiDlJhJkvAV8RYMhyQEJV64NUEpJGOwtIaQ9sltx5h0iC/FuU/HrS/o6+0fYr5qq1ClgTmPP6pnAPWUmt6RosEQw60p6Lt/b11HMBeAWI6J3ynLuZG1jqtt1ACowt64GRdkmnLTE3qtVdU0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=e0w4ikkG; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e0w4ikkG" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-54b0d638e86so2775857e87.1; Sun, 25 May 2025 12:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748200091; x=1748804891; 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=RCXQuVtRhMPnFp/GIoALd4PIYpi+ZMj5q2i+9emJxis=; b=e0w4ikkGXABZq8UuLgCMGN9eNmLoP2wp7E+W/3CIXLdMZv/fSHJd67wCCO+H60mWJU cm1xR7Wx/s6yedqZLdnecyd5I95998ksbxp0/cHAY8FrIq7R1bg83p3YpUQn9f3e/tkr 1yeQvLYjqmFYbmYQNy3zdeo4SFYXpDC4+H68gsKRHPN9tAQ+ROMsiqU3qhm5647QulRh 4ZiNGCHIyjcpGzoTzVDFbhgsq/eYgFjFCHwVE+HixZHhpA9d2DwLg5EnmGVZpKEeVPNj SuZa6n6gkiWG8Mvs3fAgxM+iPlB4nyMpHKgL7zmqhYc8I7Ogf0OPNdZqn3g/fEvuPeKW K1TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748200091; x=1748804891; 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=RCXQuVtRhMPnFp/GIoALd4PIYpi+ZMj5q2i+9emJxis=; b=mr3a0ZrTVZjKXdNu3HHMhIU2/vNMTCgv9ivVJxLJAr8uAxcJ9N+P6xNTA7WJG03YXQ X/edwaDAPDL9gNsFuuOJOOxHd9blyGxPIAadzkry1o+q/LY63A2WlJnHQqTgEGYSD9IX F5WIE+K6vyXjpberfOPC6m8CTRlCzPdl4oUg26XJ6WIEu4/Ma67v92E1gqWzy1RFLKQM Vsi8T2smM/WfsbtycQnGmPHTqBfAOTDv6dfjiZYgq7kaWQsjPWw/TNbRqMLRjWy+ZVH7 FkitDBussO+HBTZiOWA762GOE8zhZqAGqhprzAnCnee83ebVJ+XIC04DokPktzwqmk53 MwfQ== X-Forwarded-Encrypted: i=1; AJvYcCUv2ERri4f/DlEWMCv0GthMZxOzPBszMBTarwyFeaQZEwiWfC7Of1WlvG4n8Hfp+9bUzzWmmtODIXnxoCME@vger.kernel.org, AJvYcCWjiJOv5wgb6H3U3l7xPYBA54iabmyRpG0JmbnU2m4yqAF18QwS6gspPhtr0V7anXUHOttpO3xfvb+g@vger.kernel.org, AJvYcCXWRf8YEq96Fy9MqXF1xm7AjmqXbmvqJF0h7cnG0wLR+OB19/eDqLuVs2mcIn4TuPlnNcdnbna+D6nh@vger.kernel.org X-Gm-Message-State: AOJu0YzC1yFTEFm2VnNcEzFxmqs9WZffkMAKqvfuyeA4nIytf7dwDSGe iDYYEuJQE+kJ+w2UGadBKqinIalvzAxqVcPXpioVD0EvuRjZ2ee1h3r+ X-Gm-Gg: ASbGncsJ9SSi0ph7HQ8LGdsVpG7TF5KN/9r19UUTHtGi5LO7yTPp6ddf9NNS9Bo7ZFr G/SJqAftGPbcH1eoMnokh6brhSPPE02TNS8QrnCF18HtEQN3x+0RX5S9GeNlOH++R8PfmoN61go JvTdl2APp36ezF8n+11v04kznSi5pz0zRH5rvvJCJdx9qN5qpRqxEluTxTXIXwY+O121B8LMvRt 6uur1UFJdjkJ9v3gkl9kfxtf8MW6zuWJWiG+D/P1ocT4SLoOToyyakyWbANqq1WGX+rzc1BPw5u ibvFguYfxhCX3aa9xbHkDUWW6a2Slss9W+vsoaGvGVwIchS3iywaXc2a1ozXF1l7VvDeELd+Yjx RENH5BDvA2SfIhGR66YlapBo= X-Google-Smtp-Source: AGHT+IGFtM813f/BltvPo1y58g5K6ByAWOFf6/IyKN7x5J6HlznthWBxaFjM/XqubyecxmfG8NQkaQ== X-Received: by 2002:a05:6512:b98:b0:54f:c402:c55b with SMTP id 2adb3069b0e04-5521c7a8328mr1752663e87.10.1748200090934; Sun, 25 May 2025 12:08:10 -0700 (PDT) Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-550e704026esm4756078e87.241.2025.05.25.12.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 12:08:10 -0700 (PDT) From: "Edgar E. Iglesias" To: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, jank@cadence.com Cc: edgar.iglesias@amd.com, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 1/2] dt-bindings: clk: fixed-mmio-clock: Add optional ready reg Date: Sun, 25 May 2025 21:08:03 +0200 Message-ID: <20250525190806.1204531-2-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250525190806.1204531-1-edgar.iglesias@gmail.com> References: <20250525190806.1204531-1-edgar.iglesias@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Add an optional ready register and properties describing bitfields that signal when the clock is ready. This can for example be useful to describe PLL lock bits. Signed-off-by: Edgar E. Iglesias --- .../bindings/clock/fixed-mmio-clock.yaml | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/clock/fixed-mmio-clock.yaml = b/Documentation/devicetree/bindings/clock/fixed-mmio-clock.yaml index e22fc272d023..90033ba389e8 100644 --- a/Documentation/devicetree/bindings/clock/fixed-mmio-clock.yaml +++ b/Documentation/devicetree/bindings/clock/fixed-mmio-clock.yaml @@ -10,6 +10,11 @@ description: This binding describes a fixed-rate clock for which the frequency can be read from a single 32-bit memory mapped I/O register. =20 + An optional ready register can be specified in a second reg entry. + The ready register will be polled until it signals ready prior to reading + the fixed rate. This is useful for example to optionally wait for a PLL + to lock. + It was designed for test systems, like FPGA, not for complete, finished SoCs. =20 @@ -21,7 +26,10 @@ properties: const: fixed-mmio-clock =20 reg: - maxItems: 1 + minItems: 1 + items: + - description: Fixed rate register + - description: Optional clock ready register =20 "#clock-cells": const: 0 @@ -29,6 +37,25 @@ properties: clock-output-names: maxItems: 1 =20 + ready-timeout: + description: + Optional timeout in micro-seconds when polling for clock readiness. + 0 means no timeout. + $ref: /schemas/types.yaml#/definitions/uint32 + default: 0 + + ready-mask: + description: + Optional mask to apply when reading the ready register. + $ref: /schemas/types.yaml#/definitions/uint32 + default: 0xffffffff + + ready-value: + description: + When a ready register is specified in reg, poll the ready reg until + ready-reg & ready-mask =3D=3D ready-value. + $ref: /schemas/types.yaml#/definitions/uint32 + required: - compatible - reg @@ -44,4 +71,13 @@ examples: reg =3D <0xfd020004 0x4>; clock-output-names =3D "sysclk"; }; + - | + pclk: pclk@fd040000 { + compatible =3D "fixed-mmio-clock"; + #clock-cells =3D <0>; + reg =3D <0xfd040000 0x4 0xfd040004 0x4>; + ready-mask =3D <1>; + ready-value =3D <1>; + clock-output-names =3D "pclk"; + }; ... --=20 2.43.0 From nobody Fri Dec 19 19:19:27 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EF0B25DAFB; Sun, 25 May 2025 19:08:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748200096; cv=none; b=u7LQeOimWxgduULKu3SfuRITvWDWCzeg4FJKl4+kbF1YlfTmMMzOrwjInP6YP94MDG1HCYs4VAk+f8hgzm+vQQaqFPV3qeG7LRC5BSign/yZKrYuFq1bp8O1+p0Z27Cnx0yjRuVey2n6B+YU1XIobBcZVSjHacZf5zIghPmWssQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748200096; c=relaxed/simple; bh=OuKf9ibWLynECkjkcH+aIZ/gQOQvTsCAMruwIJbYKk4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qk8HcUdZ5czSxoNYMmcsA5yJx0dPsh+UXHQXE9U74RnRJJXvGcptoWyvdADaqncPeHmS2kcXrOp3goo+lQE//8P6PmhmULcom3e2RRLVmL2V0V+YX9a7uVsBE5iB1t5qrYaeHzh4Hr5IN15KrQZ4oerRDfGMR9pBwVzzr6lMD9U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NFYldRYg; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NFYldRYg" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-54b0d638e86so2775881e87.1; Sun, 25 May 2025 12:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748200093; x=1748804893; 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=hbyLyOQGCBxv96q8YzM/a2txuX18SnFJ3VEHo3ltwtk=; b=NFYldRYgvKffK/uJDY/Xunf/4ZKoDaLcNFHfVRR9uGTkN5Lek8y8SvSFCfvGd+IYrH oWAbVJXNYJrGttGXHP+CIAnqjeB9+CjKL9Tv7KoIccVQEpehvlLA0Nwc7kn2z45VTyZ1 9rVFjD0pcFQSxBGruQYzidDvqVZNYPNMdDMlSmC1u1cyHWHYALUok3UPVBYljLoqoCj+ bgJSY77Ma1cQkDcGgnQu4vhIHTW5RzUBeazte2w926nG2qJQZWuBhr6/jsJiSor5drEq 9Zej/BGPTPOm19DG6U2NBeEXgHMdlsb01YExft30k3XtS1dMQQ1jA1nOmMH/bFBfVqJ1 VL9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748200093; x=1748804893; 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=hbyLyOQGCBxv96q8YzM/a2txuX18SnFJ3VEHo3ltwtk=; b=WMXZAcWzfyGYyLyqb95C0nqko+y+lojNlJP4iVZ61ZR1h5LkCnPMHLulS7DTyfHqwh CczYEcqmZdPRyYMJ+ilxWxbI0LmfVqFssi1FyQZfGrh03Aidz/qfP/llvsevjAYoABWa X5c/rxCdzOn9otTJZ5GidZIvg6cgKnZKef7U4zVAX5fIme7TQYyKmVBy2Ww0meYIQVXV UqvgPubHCwRpBkTgZERgGs4IxbWmVf1ciuz20gVsBEzkV5q5CKLfuuFZz6nxH6FEg4j1 dOssgAmKzcIY6fzcPMVxngkBx+ybHz7LpLfP5vMSiaey9y6TATswnQ2RL4Se3Ngn1m7a w6bA== X-Forwarded-Encrypted: i=1; AJvYcCVMumY6u1U2bQP0uc4LpoI3pDeapw/DAU82b51wZWPDOz6NNgRrrSMrR5j0CTUSUQvYH14ft5sqi7xX@vger.kernel.org, AJvYcCVSIQOn2dTJoNuFBHbZmftgRUBFLN/YB2AINM27b2lLshZWd2BeOakWtl8vTifjFOJl2kgNPD8h9uO+@vger.kernel.org, AJvYcCXhLMcaK5yxzGqmZ95zy8yjcESPsnhjJKz+6smI/r5QNbVYomZzzdJrJtmcNZh/wMUMMyCdADJVQdTFhqcA@vger.kernel.org X-Gm-Message-State: AOJu0YzfatAaBgvhTY3/VhEeqT/cbYbfhCGcqgpMx5CM2E/2smVY1IdI lmwYEz8aEhJcmCY8F3E052kzsZLb5DSWC8od8bYIAqcqPTUrBvip30jFsg9aLwLYDZc= X-Gm-Gg: ASbGnct4G8mlEnwqJYqdy+/VJdk+exjzKmxJ1uFyygfD6mP4OP2uBCYsGUjaIZxmGnW jwwQlhs31SlkOLuIXZRUsfllp3T9gbjpFLF5y3cY+urCZ4O/mYbTgezv3DlK3aJys2yE5+pt1gR QgR5KktSASp8MyJULcvubAsXhr9I1Ws/7YGyK8Z8Ue9VHVX7VB4tFKmwY9HgWMhQh8V3beqfHBg GloxbAAe19/bqmLUK6II82BCVW5v2w2Qz5XX+q7AHlBG5Z8xPViqOAVxEbVk1WnuDCbrnqLKyGq y+2YbAWb9xVByprvUDsUSpwk1I+mlMTPG4njCSlGIE78koJN7zq44wU273Wc4igewio4JABvOJR KJbYeRBBjPTnsmIgPPF+vFUzFgzAGR6OIfg== X-Google-Smtp-Source: AGHT+IHsTkjLFN9eSOj8UjXQ3oYdYwoQnuj8mqXDg5ghhfgQb/LqTqvDn5bq2N4XOC0VBo+OE3XBvQ== X-Received: by 2002:a05:6512:1245:b0:545:6fa:bf60 with SMTP id 2adb3069b0e04-5521c7ade9amr1647872e87.19.1748200092997; Sun, 25 May 2025 12:08:12 -0700 (PDT) Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-550e702cf9fsm4760552e87.190.2025.05.25.12.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 12:08:11 -0700 (PDT) From: "Edgar E. Iglesias" To: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, jank@cadence.com Cc: edgar.iglesias@amd.com, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 2/2] clk: fixed-mmio: Add optional poll for clk readiness Date: Sun, 25 May 2025 21:08:04 +0200 Message-ID: <20250525190806.1204531-3-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250525190806.1204531-1-edgar.iglesias@gmail.com> References: <20250525190806.1204531-1-edgar.iglesias@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Add optional poll for clk readiness prior to reading the fixed rate. Signed-off-by: Edgar E. Iglesias --- drivers/clk/clk-fixed-mmio.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/clk/clk-fixed-mmio.c b/drivers/clk/clk-fixed-mmio.c index 3bfcf4cd98a2..4b5ba1ad06ac 100644 --- a/drivers/clk/clk-fixed-mmio.c +++ b/drivers/clk/clk-fixed-mmio.c @@ -11,10 +11,36 @@ =20 #include #include +#include #include #include #include =20 +static int fixed_mmio_clk_wait_ready(struct device_node *node, + void __iomem *base) +{ + u32 ready_mask; + u32 ready_val; + u32 timeout; + u32 v; + + if (of_property_read_u32(node, "ready-timeout", &timeout)) + timeout =3D 0; + + if (of_property_read_u32(node, "ready-mask", &ready_mask)) + ready_mask =3D ~0; + + if (of_property_read_u32(node, "ready-val", &ready_val)) { + pr_err("%pOFn: missing ready-val property\n", node); + return -EINVAL; + } + + pr_info("%pOFn: wait for clock\n", node); + return readl_relaxed_poll_timeout_atomic(base, v, + (v & ready_mask) =3D=3D ready_val, + 1, timeout); +} + static struct clk_hw *fixed_mmio_clk_setup(struct device_node *node) { struct clk_hw *clk; @@ -23,6 +49,15 @@ static struct clk_hw *fixed_mmio_clk_setup(struct device= _node *node) u32 freq; int ret; =20 + base =3D of_iomap(node, 1); + if (base) { + /* Wait for clk to get ready. */ + ret =3D fixed_mmio_clk_wait_ready(node, base); + iounmap(base); + if (ret) + return ERR_PTR(ret); + } + base =3D of_iomap(node, 0); if (!base) { pr_err("%pOFn: failed to map address\n", node); --=20 2.43.0