From patchwork Sun Feb 16 16:12:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13976566 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 E33CA199938; Sun, 16 Feb 2025 16:12:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722373; cv=none; b=VlApRbK8J6WHAVEe1lxP91ATSROdtJGUx+wZNzFvh7nqFoocyvE5ZzGTRjWng5sKR2tmWG934rj5BMY939C0Nqtwu4HhqWupxoafpC2L//Ob5zPRkUpN1w9cfuiqxVy36L25oD6TRpNYBcQno8AbSesDExw8ZDvmXq9ez0kOBxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722373; c=relaxed/simple; bh=Ly9UtUA8Pd6tt+IYxaDFVVmxNWzlSLQnkpl0OS4b+uY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h69W1EOoSB5wvgjU4NXmHc/SOVzZnjyQye+c/8E2DB5Ifv85W7fNma/V0GNp2NAercj3l3K5ve2MUr3bOa7bAV1O4lk4fERW9fogei6OgK8f492QEjLED5zhNon3gnjOXpz5wsaPWN6qO82zJWUZqAzEhwLzCQlFf+0pqXkRmj0= 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=j7s3kAik; arc=none smtp.client-ip=209.85.208.47 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="j7s3kAik" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5ded6c31344so3843375a12.1; Sun, 16 Feb 2025 08:12:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739722370; x=1740327170; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=amFA1Cyy3VSCClgsw5cvJKtdLCji07TK+OkBeo/AdFY=; b=j7s3kAikHMtdLUUNFWiB6QVDmkm9CSilZPTZvgqkuKw1M+sTBmmL4KZgyUZ6FjfdsN Br1Kdjzym6rlGodVpXyi5NeLlUCnc7hrK+27u6FBNNgcikBjWYiRO1nASAyXinYBJtN4 dAn8qi24gY4LDER73KyypqAg7MEhk1zTgZbzivZ3XQsPilllzAwih+vKb0+onXqRytlp g78CFaLGF8PDKNhvzPMnDDgq9HT51pIvNoRUl0yASNCzAZNgbsidL1pLRx9K8W3z6RW6 EiaRGeQmKsWRBQdrr2Mp9VsFCiRWjy+cPSoTqjz9nMvErxTcz7YHFQsrZ2XzPWoWxaJC 7A+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739722370; x=1740327170; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=amFA1Cyy3VSCClgsw5cvJKtdLCji07TK+OkBeo/AdFY=; b=kbok5GvD6kHwTjHET2f7a0WxZB/c9+tk9bgU5nI+Pgg30Nzhgc2A4F9jlAr5ZwIZ1V tRLAVQkOdFXLWHg9GGUO15Dmiwrq0jDkS/0rIiqofgaiSEw6O9wjf2DoKKNsgy4t/r5t QUlXfzEv/ezXkL0H1lFlLNUhtbAQ8ZdOYNXK3p1w30w2LDfRs1egtR65Clp23slpkJoh KkuTbqTbnmYTAO87oNA6m3Z4a/xfn6gG8C+CHOJob9Znu0LSG4mzXrvUl6mG+NDlwM2H dDlusD7iVdDYEmhg9Nt38DQdrtsuDaOMtCAespDdkENp6uueXKZf0YsJv+jgq6oIDTpF IF9g== X-Forwarded-Encrypted: i=1; AJvYcCUjrKIPegjs4AFLRPnKe4Nx6gskIRDHoGiior4tdfbZEeGzrw1bmj2sPnXi8Nh18tM1//TE1KZwF1DX@vger.kernel.org, AJvYcCVi+jKq3gvNudIiCVS0QXBBePy2rokNLszPmmwhPuqatEnew3YOLam9+I71tDa1zTHZTMdljuzAtXAN@vger.kernel.org, AJvYcCX9DoQJAKZEEqIA/eSdYKJ+2Wj/RtgjHXOzJr/fBdABEX6OX6jmuo05xtmRtCgYlYYonvN6CBHkEzcrWgp/@vger.kernel.org X-Gm-Message-State: AOJu0YyOMeIZ8qGohHQTu6FEpCxokgDWolH3exWN/XhybQKQdu99THjl K5tmPGH/Y5Wi4W4V5DkovEpyXpE2IRYS/4tgcKDw5d+eM1eIHuqm X-Gm-Gg: ASbGncvLD946MIwJ40FNAmbEOErj/QlwXP/AGNctuxaCcHwjSjvW82alQZgPI1m6Fik gu4DsQldQsThcaLBN6SOsUbCT/i5plT+O/MQ/7BWaaF7JgREqltoRqptPNZ+oAlNma1msoIQNrH EfWYbZxeDLt8m2qT2G0jg+r53vaFqYfuzvr+GDfIB3cCocsih42SOZ3LFfiyhHufERlournChIt 5pE89gzrJ1gIwehhjNIlQchZSejC4bT7drxqPTw/bAi3xl5o1rX6ikdQCqZ4+dRGh/PUyLV3W/+ PYFHB1BbAr0fRywmB9Dy8Tq2WGVexUywyAYqxQ4Fh+Ak2VdP2yX7dlRXUh1hMw== X-Google-Smtp-Source: AGHT+IFx7rx4cBQ+24qh/JpmVN8N/SzDAqqvLDMgJEQ6n86+XwhDIWMpPS0or7VAcLEkS/oyZckwBA== X-Received: by 2002:a05:6402:1e8a:b0:5de:5190:cfc7 with SMTP id 4fb4d7f45d1cf-5e03608cb01mr12791107a12.19.1739722369899; Sun, 16 Feb 2025 08:12:49 -0800 (PST) Received: from hex.my.domain (83.8.115.239.ipv4.supernova.orange.pl. [83.8.115.239]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abb8eea4d65sm148463466b.161.2025.02.16.08.12.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Feb 2025 08:12:49 -0800 (PST) From: Artur Weber Date: Sun, 16 Feb 2025 17:12:36 +0100 Subject: [PATCH RFC 1/5] dt-bindings: clock: brcm,kona-ccu: Add BCM21664 bus clocks Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250216-kona-bus-clock-v1-1-e8779d77a6f2@gmail.com> References: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> In-Reply-To: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> To: Michael Turquette , Stephen Boyd , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Alex Elder , Stanislav Jakubek , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1739722366; l=1827; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=Ly9UtUA8Pd6tt+IYxaDFVVmxNWzlSLQnkpl0OS4b+uY=; b=VJgL+tg1a9rW78m4+doyyeQIvRSxZzJhnoBbX8SvTohuATLLEoVOUTjHWsph8gVycWLKmYLgp o5XBkxmJn3dCTDvWTcTJCv/2CU6Fg6f2+kJy90wTAvgvZDHDDlTVSLl X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Add bus clocks for hub_timer, sdio, bsc, uart and usb_otg_ahb to the allowed clock output names for BCM21664 CCUs. Signed-off-by: Artur Weber --- .../devicetree/bindings/clock/brcm,kona-ccu.yaml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/brcm,kona-ccu.yaml b/Documentation/devicetree/bindings/clock/brcm,kona-ccu.yaml index e5656950b3bd0ad44ba47f0ada84b558e71df590..dff04e24e92829b890bf7cd336f0e083bdb30fa6 100644 --- a/Documentation/devicetree/bindings/clock/brcm,kona-ccu.yaml +++ b/Documentation/devicetree/bindings/clock/brcm,kona-ccu.yaml @@ -40,7 +40,7 @@ properties: clock-output-names: minItems: 1 - maxItems: 10 + maxItems: 14 required: - compatible @@ -124,7 +124,9 @@ allOf: then: properties: clock-output-names: - const: hub_timer + items: + - const: hub_timer + - const: hub_timer_apb - if: properties: compatible: @@ -142,6 +144,11 @@ allOf: - const: sdio2_sleep - const: sdio3_sleep - const: sdio4_sleep + - const: sdio1_ahb + - const: sdio2_ahb + - const: sdio3_ahb + - const: sdio4_ahb + - const: usb_otg_ahb - if: properties: compatible: @@ -158,6 +165,13 @@ allOf: - const: bsc2 - const: bsc3 - const: bsc4 + - const: uartb_apb + - const: uartb2_apb + - const: uartb3_apb + - const: bsc1_apb + - const: bsc2_apb + - const: bsc3_apb + - const: bsc4_apb additionalProperties: false From patchwork Sun Feb 16 16:12:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13976567 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 2225F19ADA2; Sun, 16 Feb 2025 16:12:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722375; cv=none; b=bwGvZzd4a9LNp/vAIN8FIeP6pZEuOFVQjVWT673HgKTXXyKmHNN/xvHNoHepezaVDG3yJI3wsZxtX9M0yVRv/npNfzERAr00yLZ+Kl0joeyIaChZx+r77S3QYjsT6fB3LDVmKgcUfsPGH9V2JUI/6iqk+/7ZKZJo8bzJ4axwgJg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722375; c=relaxed/simple; bh=yLwkl7oceZBUhs9U/JAT46JibL+J/R22wx/L7L3aK48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pB7pyOBOmTQHxTK0abyxmIEzIczLhtMzfFeTD2mhx35t4VKdwmwReVUBtEUEYIs7478wZcOJ/ZstRg27ed5q/OtyzwkwjHtAa40mVQLAkYsHg7vPFzmwj8yLLoqWHXLDzAUNK5TkPUbnzomln1xNBIFA4sI3zAi/mWq2J6htaJ0= 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=Mxst8Rhd; arc=none smtp.client-ip=209.85.208.43 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="Mxst8Rhd" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5dee07e51aaso4409103a12.3; Sun, 16 Feb 2025 08:12:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739722371; x=1740327171; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7cOJH9Bhmyng4a/U8Uo2URxQr1iPaKqXAETqUSzO/F0=; b=Mxst8RhdjsVfjQP4ar/KLA/giWBW81BVbXu1PzluXhXPvZZbIa25NbVRPfo8Brm5PO t5TeRt4VIo5wTzXYCTBlVZWbeZrnAym2/5OsD0qzzeQ2V91NreKynObJ74SkDui8uRZh ULGOqEWHzZBIFra9nTk4EqZ6SKe6vrbS7N1YKDxGyix9knfNMI1k9HwxOrWFtcdOh0zW 3++3wb3Ys4tzYrjeoXBLDJXJdpyRQyvN1MuH4OzrZr+emAeXV/9GRWqom7DjOQ+/EOcy AkLujUlJtl+QIL27DxOot1pj/GEleGfa4m3QJtL7r8+x0a37m9B9sZ9kd/Sq4rZBBI8Z Hrng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739722371; x=1740327171; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7cOJH9Bhmyng4a/U8Uo2URxQr1iPaKqXAETqUSzO/F0=; b=qNY055dZM6EFxpKepWjDupFZett304ReB9tnGiR4Osa8F+E6bvUY2ErZzl8wUIp7hX 98fLa1qaHzrdbZKvgletwMwlKmZPv64KnuCVUuwtCa6ZlXm8LfcfgZDNXo9PZ1cn0r1q NnTVRt5tE4nWHT5o+VBl6+43itkUvlo8gJCObTN24+DCc8zF4YKWhI1r84HgbnE5H9yh fzgLPgACM6UMyZao06rMsNb/YN9kAxdewquLB3Vo1OhpMLwsuZdaqZluYsM+rDa61E+9 v78rd03sYeZfSssUgejmD719AXy1O4WvYs++HFE6qxAokJdyBBHYl3iXEAq7c7skgC+L 2fHg== X-Forwarded-Encrypted: i=1; AJvYcCXNqm9mmGdPDow5KIhWCMX5qvPImwF4vcs9y8vjppYfFCJMooIZoFSrsv1+gVwRQXPC0l/iVDT5uxPnE2jy@vger.kernel.org, AJvYcCXXAVgKoW1k0vQEKK5ibqQ8uIgllWaRGrehnbP1Wz9GF8BrOBKhq6Mc3NME3K9f3Xc/s23//ug4am+e@vger.kernel.org, AJvYcCXvffNXp8InxQBhWIRcN9R8UQnyESWUgnObHq9wdu5aU76i4S993FJhp16ewsAki/YtGz7UOwOcF9Re@vger.kernel.org X-Gm-Message-State: AOJu0YzVSgglW8MZAhP2TzgWdAQjP++jlG1LnAXHCz1pZU+8yvKNLwgs X8wIiWayMH5CB0nGz1n3FFpJ+mbUDcZrx6rq2PlieVdllQPSOAbX X-Gm-Gg: ASbGncsnQXRPQh9n4CSXsUNAmsecM4onombDKjPRkF3PM7M9DQEmptWeal2/hIalvxp YWBRVP2dtkvlnwhJ8NsS9uU7u2n+QzoARYaiC8ZyBJ1k1skVr+LwMRNB5d8aClxqCm39EhgODr1 cyxkyys/b0l0UfvnlYWuU+l6F75n+A2Vt2EhTbY5iV7Kz9q15ADPyYgfQjNOCw47d0vMESjq51E pzl+ejNj5amxaVbwWUlPzJNOZ/Rg2ZxRfytLxqBTspPBH+E2zK2Di95oHlTT4pFUgRV5nLDHWzw G9E08BGHEYqTU5/h8J1Q6JQG+9skfWV5iYAFWGqb7HugR+R3JhXGCRoiG6v9qA== X-Google-Smtp-Source: AGHT+IFJQwyz6NFuPNcMzaqHq06wOsHkaOkOaT9ivBU3aB7LQ32OHeO1C80ARr+9RZ9uxifx6sOeQg== X-Received: by 2002:a17:907:9716:b0:ab9:63bd:91be with SMTP id a640c23a62f3a-abb70a7c5f6mr717035366b.3.1739722371091; Sun, 16 Feb 2025 08:12:51 -0800 (PST) Received: from hex.my.domain (83.8.115.239.ipv4.supernova.orange.pl. [83.8.115.239]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abb8eea4d65sm148463466b.161.2025.02.16.08.12.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Feb 2025 08:12:50 -0800 (PST) From: Artur Weber Date: Sun, 16 Feb 2025 17:12:37 +0100 Subject: [PATCH RFC 2/5] clk: bcm: kona: Add support for bus clocks Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250216-kona-bus-clock-v1-2-e8779d77a6f2@gmail.com> References: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> In-Reply-To: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> To: Michael Turquette , Stephen Boyd , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Alex Elder , Stanislav Jakubek , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1739722366; l=8531; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=yLwkl7oceZBUhs9U/JAT46JibL+J/R22wx/L7L3aK48=; b=T+WpgnGrSCAV1ouINhpcW7seSU/JirqDU1OAcb9b0wjAmGdPtlOxE08FsIGAHZDZC3BPOLd4G 6rbf7K13R3VD74ysyqNbJlMmpDyeVa70jUBsHRnPAUYKpyhEBAohbhh X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Introduce support for bus clocks into the Broadcom Kona common clock driver. Most of these functions have been adapted from their peripheral clock counterparts, as they are nearly identical (bus clocks are just much more limited in terms of allowed operations). Signed-off-by: Artur Weber --- drivers/clk/bcm/clk-kona-setup.c | 116 +++++++++++++++++++++++++++++++++++++++ drivers/clk/bcm/clk-kona.c | 62 ++++++++++++++++++++- drivers/clk/bcm/clk-kona.h | 10 ++++ 3 files changed, 187 insertions(+), 1 deletion(-) diff --git a/drivers/clk/bcm/clk-kona-setup.c b/drivers/clk/bcm/clk-kona-setup.c index 338558f6fbaec27418497fc246de17e15236ca0d..8b6123e188fbc035cda2cf394035d35197671d06 100644 --- a/drivers/clk/bcm/clk-kona-setup.c +++ b/drivers/clk/bcm/clk-kona-setup.c @@ -167,6 +167,58 @@ static bool peri_clk_data_offsets_valid(struct kona_clk *bcm_clk) return true; } +static bool bus_clk_data_offsets_valid(struct kona_clk *bcm_clk) +{ + struct bus_clk_data *bus; + struct bcm_clk_policy *policy; + struct bcm_clk_gate *gate; + struct bcm_clk_hyst *hyst; + const char *name; + u32 range; + u32 limit; + + BUG_ON(bcm_clk->type != bcm_clk_bus); + bus = bcm_clk->u.bus; + name = bcm_clk->init_data.name; + range = bcm_clk->ccu->range; + + limit = range - sizeof(u32); + limit = round_down(limit, sizeof(u32)); + + policy = &bus->policy; + if (policy_exists(policy)) { + if (policy->offset > limit) { + pr_err("%s: bad policy offset for %s (%u > %u)\n", + __func__, name, policy->offset, limit); + return false; + } + } + + gate = &bus->gate; + hyst = &bus->hyst; + if (gate_exists(gate)) { + if (gate->offset > limit) { + pr_err("%s: bad gate offset for %s (%u > %u)\n", + __func__, name, gate->offset, limit); + return false; + } + + if (hyst_exists(hyst)) { + if (hyst->offset > limit) { + pr_err("%s: bad hysteresis offset for %s " + "(%u > %u)\n", __func__, + name, hyst->offset, limit); + return false; + } + } + } else if (hyst_exists(hyst)) { + pr_err("%s: hysteresis but no gate for %s\n", __func__, name); + return false; + } + + return true; +} + /* A bit position must be less than the number of bits in a 32-bit register. */ static bool bit_posn_valid(u32 bit_posn, const char *field_name, const char *clock_name) @@ -481,9 +533,46 @@ peri_clk_data_valid(struct kona_clk *bcm_clk) return kona_dividers_valid(bcm_clk); } +/* Determine whether the set of bus clock registers are valid. */ +static bool +bus_clk_data_valid(struct kona_clk *bcm_clk) +{ + struct bus_clk_data *bus; + struct bcm_clk_policy *policy; + struct bcm_clk_gate *gate; + struct bcm_clk_hyst *hyst; + const char *name; + + BUG_ON(bcm_clk->type != bcm_clk_bus); + + if (!bus_clk_data_offsets_valid(bcm_clk)) + return false; + + bus = bcm_clk->u.bus; + name = bcm_clk->init_data.name; + + policy = &bus->policy; + if (policy_exists(policy) && !policy_valid(policy, name)) + return false; + + gate = &bus->gate; + if (gate_exists(gate) && !gate_valid(gate, "gate", name)) + return false; + + hyst = &bus->hyst; + if (hyst_exists(hyst) && !hyst_valid(hyst, name)) + return false; + + return true; +} + static bool kona_clk_valid(struct kona_clk *bcm_clk) { switch (bcm_clk->type) { + case bcm_clk_bus: + if (!bus_clk_data_valid(bcm_clk)) + return false; + break; case bcm_clk_peri: if (!peri_clk_data_valid(bcm_clk)) return false; @@ -656,6 +745,14 @@ static void peri_clk_teardown(struct peri_clk_data *data, clk_sel_teardown(&data->sel, init_data); } +static void bus_clk_teardown(struct bus_clk_data *data, + struct clk_init_data *init_data) +{ + init_data->num_parents = 0; + kfree(init_data->parent_names); + init_data->parent_names = NULL; +} + /* * Caller is responsible for freeing the parent_names[] and * parent_sel[] arrays in the peripheral clock's "data" structure @@ -670,9 +767,23 @@ peri_clk_setup(struct peri_clk_data *data, struct clk_init_data *init_data) return clk_sel_setup(data->clocks, &data->sel, init_data); } +static int +bus_clk_setup(struct bus_clk_data *data, struct clk_init_data *init_data) +{ + init_data->flags = CLK_IGNORE_UNUSED; + + init_data->parent_names = NULL; + init_data->num_parents = 0; + + return 0; +} + static void bcm_clk_teardown(struct kona_clk *bcm_clk) { switch (bcm_clk->type) { + case bcm_clk_bus: + bus_clk_teardown(bcm_clk->u.data, &bcm_clk->init_data); + break; case bcm_clk_peri: peri_clk_teardown(bcm_clk->u.data, &bcm_clk->init_data); break; @@ -702,6 +813,11 @@ static int kona_clk_setup(struct kona_clk *bcm_clk) struct clk_init_data *init_data = &bcm_clk->init_data; switch (bcm_clk->type) { + case bcm_clk_bus: + ret = bus_clk_setup(bcm_clk->u.data, init_data); + if (ret) + return ret; + break; case bcm_clk_peri: ret = peri_clk_setup(bcm_clk->u.data, init_data); if (ret) diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c index ec5749e301ba82933144f34acfaf6f3680c443f7..e92d57f3bbb147e72221802175a80502897d7504 100644 --- a/drivers/clk/bcm/clk-kona.c +++ b/drivers/clk/bcm/clk-kona.c @@ -961,7 +961,7 @@ static int selector_write(struct ccu_data *ccu, struct bcm_clk_gate *gate, return ret; } -/* Clock operations */ +/* Peripheral clock operations */ static int kona_peri_clk_enable(struct clk_hw *hw) { @@ -1233,9 +1233,69 @@ static bool __peri_clk_init(struct kona_clk *bcm_clk) return true; } +/* Bus clock operations */ + +static int kona_bus_clk_enable(struct clk_hw *hw) +{ + struct kona_clk *bcm_clk = to_kona_clk(hw); + struct bcm_clk_gate *gate = &bcm_clk->u.bus->gate; + + return clk_gate(bcm_clk->ccu, bcm_clk->init_data.name, gate, true); +} + +static void kona_bus_clk_disable(struct clk_hw *hw) +{ + struct kona_clk *bcm_clk = to_kona_clk(hw); + struct bcm_clk_gate *gate = &bcm_clk->u.bus->gate; + + (void)clk_gate(bcm_clk->ccu, bcm_clk->init_data.name, gate, false); +} + +static int kona_bus_clk_is_enabled(struct clk_hw *hw) +{ + struct kona_clk *bcm_clk = to_kona_clk(hw); + struct bcm_clk_gate *gate = &bcm_clk->u.bus->gate; + + return is_clk_gate_enabled(bcm_clk->ccu, gate) ? 1 : 0; +} + +struct clk_ops kona_bus_clk_ops = { + .enable = kona_bus_clk_enable, + .disable = kona_bus_clk_disable, + .is_enabled = kona_bus_clk_is_enabled, +}; + +/* Put a bus clock into its initial state */ +static bool __bus_clk_init(struct kona_clk *bcm_clk) +{ + struct ccu_data *ccu = bcm_clk->ccu; + struct bus_clk_data *bus = bcm_clk->u.bus; + const char *name = bcm_clk->init_data.name; + + BUG_ON(bcm_clk->type != bcm_clk_bus); + + if (!policy_init(ccu, &bus->policy)) { + pr_err("%s: error initializing policy for %s\n", + __func__, name); + return false; + } + if (!gate_init(ccu, &bus->gate)) { + pr_err("%s: error initializing gate for %s\n", __func__, name); + return false; + } + if (!hyst_init(ccu, &bus->hyst)) { + pr_err("%s: error initializing hyst for %s\n", __func__, name); + return false; + } + + return true; +} + static bool __kona_clk_init(struct kona_clk *bcm_clk) { switch (bcm_clk->type) { + case bcm_clk_bus: + return __bus_clk_init(bcm_clk); case bcm_clk_peri: return __peri_clk_init(bcm_clk); default: diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h index e09655024ac2ad42538b924f304b23e87b7db2ce..a5b3d8bdb54eaee9fad80c28796170207b817dfd 100644 --- a/drivers/clk/bcm/clk-kona.h +++ b/drivers/clk/bcm/clk-kona.h @@ -390,6 +390,14 @@ struct peri_clk_data { struct bcm_clk_sel sel; const char *clocks[]; /* must be last; use CLOCKS() to declare */ }; + +struct bus_clk_data { + struct bcm_clk_policy policy; + struct bcm_clk_gate gate; + struct bcm_clk_hyst hyst; + const char *clocks[]; /* must be last; use CLOCKS() to declare */ +}; + #define CLOCKS(...) { __VA_ARGS__, NULL, } #define NO_CLOCKS { NULL, } /* Must use of no parent clocks */ @@ -401,6 +409,7 @@ struct kona_clk { union { void *data; struct peri_clk_data *peri; + struct bus_clk_data *bus; } u; }; #define to_kona_clk(_hw) \ @@ -488,6 +497,7 @@ struct ccu_data { /* Exported globals */ extern struct clk_ops kona_peri_clk_ops; +extern struct clk_ops kona_bus_clk_ops; /* Externally visible functions */ From patchwork Sun Feb 16 16:12:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13976568 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 3576C19C578; Sun, 16 Feb 2025 16:12:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722376; cv=none; b=FuULWmbBG1lxtT/OfQ664+MZ27DMW+xXByVy0WZYQPKUNgb2bbsVp3MyGwbDuyDKK4mXspzFznIVKNlsFgl2oc4od6DZfqYqgeWIVOuEJ77cJHl75fghBm6KJWygYGUOwGVIKJcFHUrndTkEo3SIdNRbwC+g/p/XVBXM/oJJewc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722376; c=relaxed/simple; bh=VeeVmD/o8Dsf3wPBzIti6j/EIlDAuwzvCwpc3RCU4qM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FZu7i72/DAkCN3WAyz2/o1enb76w/7nWdjoB2x2t3fLcM0lnAixlQz9tuSy1wQWpMvbQzMCS8dDUnJVlaWxZmKnky4QOsvwTIZLLASdT/2GsTJUYbLQ251Pj20f4sX3fMbCSPYo8Zmpbk1Ov8udrZJkbFx3vauGtMF4/Pr6z4Eo= 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=LZWOaLUi; arc=none smtp.client-ip=209.85.218.52 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="LZWOaLUi" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-aaf900cc7fbso531851366b.3; Sun, 16 Feb 2025 08:12:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739722372; x=1740327172; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bFtcXLHPXTm+qAgLIh2Q+3EIz0nV5DFjQtabctfzSP0=; b=LZWOaLUiL9N+A2+oBRVALXRwBpndNQ6BYLH8zym6TFhgzsEKkSoHbgHOnGHupGEN6E MHo6MFyRfzGzWObVGaxG0GIfPqbJHSAa3AI8kj1Pqg1M/sTe4f4EUES184/KmAz5cxM3 9XybFbNj9gB1fFbEtp7DIt5EtxVhGNpbfDGvJbJOpnAy9x53RLzFZniILNUa5cEaVKPH bOKHTdXWg9kmlrpe44d8eJu/vhz1fOWdTXDjeKrSrC8vh3nJZCJ4Odifjw49lyizCGnO DyzGo0vGbzHJ42/MeyF1/mjqCT2itgRowaBGP0yhuaLA++aNXcpVgBF/rH9Z5vKXuRCe PE0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739722372; x=1740327172; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bFtcXLHPXTm+qAgLIh2Q+3EIz0nV5DFjQtabctfzSP0=; b=kQtlatq1EJ6BwgKHBOwgSqjwfVQVZlTxOmM5F5bgDr13rju6ZQcBiyiYJ43dTdW5dc 8uhx0zj5Ssfi2tMjcghtEEWX/v5mqZfAfw6Uj0wEIAXt0hCH8n+rs8etT+nui/+4yZnc zKXJZFvL+Vx+yaVgf4EOAOKie2wdCppnYCBZJXC6cdcXU3Z16UQq1Y4kl53zQqYgGFuy rkS1M8T/gsiDlNzeHPRIuV00md+KHkezAlCrCMUbORI/09cmGjvGsZVcuYdnkJH3Btot /HBuq0Nr05+7XG+irlBN1bFC9sutPQ5TLMenHN6QamiGIGvxHpCCKBMx+jRy0fJZih9b Y9pA== X-Forwarded-Encrypted: i=1; AJvYcCUcR0Rj5VyaRsD6wj8jBSmTSPyxvTMIbhZOrcAgdsfKqDNSKR+/BwAyIo9dLCgpBN8evDgWBz+Rjw+2K5Mo@vger.kernel.org, AJvYcCVif55qboUmpa8SJqwbLdDEzKYFSlX6id9XvyZ1gCD5lNmecWMMlOvTxZGdFvewJXM8qxutPP6bT+fH@vger.kernel.org, AJvYcCWIr6QWM71erZnYZ9azfNVKEs1ofETOg5LXBu/7o6LNpk6vkMptG1a4hVphZnDX5Ca8znTnqJdx7/lS@vger.kernel.org X-Gm-Message-State: AOJu0YwEZFjZ83bxblUUJ3p5FckBxF4aLFOy9IASQTEAVDxwmaIp99Aw Koil+e6OsktksJzlIg9ZqivbSwvcLtJzNQxyHxGPtAGJAFukSi5h X-Gm-Gg: ASbGncs/ozvLKMIAWIXqJuhjwkmLHuOy/jwZiLLmehYLkKD0nab1fs9PsJ1bHl5upJm +z7EJey1Jtd1pLnZt6LkuaK5tm3WdirDlwcyIbqGMnMuJJgtR9lEjc3e8B6v3sqceOJTloYWnU2 U4RTVYgz1yZhmgh1xLCNbBbf1S5KBecWxdXWLTFMXjd+tGivFmdBjbRdjr6fFCaksojzcG2d3lV dFdlxA5HDWngqawmKY8S9/yC9pi5HfsGCz2d5g20fD6dq9aHoofRe9X04xcPcsdFPMujObIY5xI 6lEmz0B+g1nJ538/PCtsvZjYqBJWXRFeWEQ+KCDNCK0imukOdSsHx9noq7CtAg== X-Google-Smtp-Source: AGHT+IFzLyfSCIRwLkmoAYjQN/rQ2y/+Bj4d2a9uOBk11O3VyIArjMDRFlg+jhREqi9whehcRVFmOw== X-Received: by 2002:a17:906:370c:b0:abb:519e:d395 with SMTP id a640c23a62f3a-abb70a959d9mr541482466b.20.1739722372334; Sun, 16 Feb 2025 08:12:52 -0800 (PST) Received: from hex.my.domain (83.8.115.239.ipv4.supernova.orange.pl. [83.8.115.239]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abb8eea4d65sm148463466b.161.2025.02.16.08.12.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Feb 2025 08:12:52 -0800 (PST) From: Artur Weber Date: Sun, 16 Feb 2025 17:12:38 +0100 Subject: [PATCH RFC 3/5] clk: bcm281xx: implement prerequisite clocks Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250216-kona-bus-clock-v1-3-e8779d77a6f2@gmail.com> References: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> In-Reply-To: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> To: Michael Turquette , Stephen Boyd , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Alex Elder , Stanislav Jakubek , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber , Alex Elder X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1739722366; l=5257; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=45Vb7U7z4DhCqwxNlVuYEGiXzYnfLCnnP5g3+QGTQgg=; b=bBMw4Gd3sQKAn5fzIi6iF1AJ/Uqf5q4mEflXvR4dXfeVZYYM5Q1p+B/FYbPEZFF+jzi15ujL/ w8cA+rAuZXFDzcTv7CSpIzXveRzFO7poEFITtF3u33pEzbhAFPZcFo2 X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= From: Alex Elder Allow a clock to specify a "prerequisite" clock, identified by its name. The prerequisite clock must be prepared and enabled before a clock that depends on it is used. In order to simplify locking, we require a clock and its prerequisite to be associated with the same CCU. (We'll just trust--but not verify--that nobody defines a cycle of prerequisite clocks.) Rework the KONA_CLK() macro, and define a new KONA_CLK_PREREQ() variant that allows a prerequisite clock to be specified. Signed-off-by: Alex Elder --- Artur: rebase on v6.13, move prereq prepare/unprepare to main prepare/unprepare functions, use locking versions of clk_prepare and clk_enable since the non-locking versions are no longer public --- Signed-off-by: Artur Weber --- drivers/clk/bcm/clk-kona.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/clk/bcm/clk-kona.h | 20 ++++++++++++--- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c index e92d57f3bbb147e72221802175a80502897d7504..21f925683d0da05ebc97f92236dfb207b1f9c741 100644 --- a/drivers/clk/bcm/clk-kona.c +++ b/drivers/clk/bcm/clk-kona.c @@ -9,6 +9,7 @@ #include #include #include +#include #include /* @@ -961,6 +962,63 @@ static int selector_write(struct ccu_data *ccu, struct bcm_clk_gate *gate, return ret; } +/* + * Common clock prepare/unprepare functions. These implement a "prerequisite" + * mechanism; the prerequisite clock is prepared and enabled before the main + * clock is prepared. + */ + +static int kona_clk_prepare(struct clk_hw *hw) +{ + struct kona_clk *bcm_clk = to_kona_clk(hw); + const char *clk_name = bcm_clk->init_data.name; + const char *prereq_name = bcm_clk->prereq.name; + struct clk *prereq_clk = bcm_clk->prereq.clk; + int ret; + + /* If there's no prerequisite clock, there's nothing to do */ + if (!prereq_name) + return 0; + + /* Look up the prerequisite clock if we haven't already */ + if (!prereq_clk) { + prereq_clk = __clk_lookup(prereq_name); + if (WARN_ON_ONCE(!prereq_clk)) + return -ENOENT; + bcm_clk->prereq.clk = prereq_clk; + } + + ret = clk_prepare(prereq_clk); + if (ret) { + pr_err("%s: unable to prepare prereq clock %s for %s\n", + __func__, prereq_name, clk_name); + return ret; + } + + ret = clk_enable(prereq_clk); + if (ret) { + clk_unprepare(prereq_clk); + pr_err("%s: unable to enable prereq clock %s for %s\n", + __func__, prereq_name, clk_name); + return ret; + } + + return 0; +} + +static void kona_clk_unprepare(struct clk_hw *hw) +{ + struct kona_clk *bcm_clk = to_kona_clk(hw); + struct clk *prereq_clk = bcm_clk->prereq.clk; + + /* If there's no prerequisite clock, there's nothing to do */ + if (!bcm_clk->prereq.name) + return; + + clk_disable(prereq_clk); + clk_unprepare(prereq_clk); +} + /* Peripheral clock operations */ static int kona_peri_clk_enable(struct clk_hw *hw) @@ -1172,6 +1230,8 @@ static int kona_peri_clk_set_rate(struct clk_hw *hw, unsigned long rate, } struct clk_ops kona_peri_clk_ops = { + .prepare = kona_clk_prepare, + .unprepare = kona_clk_unprepare, .enable = kona_peri_clk_enable, .disable = kona_peri_clk_disable, .is_enabled = kona_peri_clk_is_enabled, @@ -1260,6 +1320,8 @@ static int kona_bus_clk_is_enabled(struct clk_hw *hw) } struct clk_ops kona_bus_clk_ops = { + .prepare = kona_clk_prepare, + .unprepare = kona_clk_unprepare, .enable = kona_bus_clk_enable, .disable = kona_bus_clk_disable, .is_enabled = kona_bus_clk_is_enabled, diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h index a5b3d8bdb54eaee9fad80c28796170207b817dfd..c32c621282ec6dd40fff3f7598ee8aa007fed524 100644 --- a/drivers/clk/bcm/clk-kona.h +++ b/drivers/clk/bcm/clk-kona.h @@ -406,6 +406,10 @@ struct kona_clk { struct clk_init_data init_data; /* includes name of this clock */ struct ccu_data *ccu; /* ccu this clock is associated with */ enum bcm_clk_type type; + struct { + const char *name; + struct clk *clk; + } prereq; union { void *data; struct peri_clk_data *peri; @@ -416,16 +420,26 @@ struct kona_clk { container_of(_hw, struct kona_clk, hw) /* Initialization macro for an entry in a CCU's kona_clks[] array. */ -#define KONA_CLK(_ccu_name, _clk_name, _type) \ - { \ +#define __KONA_CLK_COMMON(_ccu_name, _clk_name, _type) \ .init_data = { \ .name = #_clk_name, \ .ops = &kona_ ## _type ## _clk_ops, \ }, \ .ccu = &_ccu_name ## _ccu_data, \ .type = bcm_clk_ ## _type, \ - .u.data = &_clk_name ## _data, \ + .u.data = &_clk_name ## _data + +#define KONA_CLK(_ccu_name, _clk_name, _type) \ + { \ + __KONA_CLK_COMMON(_ccu_name, _clk_name, _type), \ } + +#define KONA_CLK_PREREQ(_ccu_name, _clk_name, _type, _prereq) \ + { \ + .prereq.name = #_prereq, \ + __KONA_CLK_COMMON(_ccu_name, _clk_name, _type), \ + } + #define LAST_KONA_CLK { .type = bcm_clk_none } /* From patchwork Sun Feb 16 16:12:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13976569 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (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 6F48119D07A; Sun, 16 Feb 2025 16:12:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722377; cv=none; b=s2+wrrjvcRYT2MnTBjdzaRiKPiCko1uJ3pnJEeCvEUBTeCxIu+4bSuvEIdnnOgwsiLSGbvDh1JgoL72JVXsz+pwBG8PEDt6vRTc3y2MaEYoGVj/jIZhpDBNp2SPRMGaKpNNeOTSPssNl6atD3qJ2eRIa4RfcsWsGMlfpvpNFTms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722377; c=relaxed/simple; bh=bLlKBR/fpwcRFHbKSMGsIt7sEUfozoFN+TKaviTKp0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i4X+qUPZA1TCiSngRGdg5F36XhlpRTEAtGSrhWZ7zsq2sy951n625BLlt8pzLKn7WcIsSGQmzu17okGR3pUxdPg2nhZGtughgiIO5Z9rQHKevcevEkySctDn4gNwaKkyLSlzEpBDih9DcC8zyFx5poeWbN/IhyyhKpugkPC7ltw= 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=IsQrPb5w; arc=none smtp.client-ip=209.85.218.45 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="IsQrPb5w" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-aaec61d0f65so752956766b.1; Sun, 16 Feb 2025 08:12:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739722374; x=1740327174; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=m/R5shfvi4g7oMPn8cw9ImYbr1L1mAF4Luh9InPtUqg=; b=IsQrPb5wG0ZTc9JPqNCcu0zXcu6iqVMSP0u3BhgLWao/FdB5rB6egYg4uG87+WCbc5 cTipWCq+mGMM4fmFPU1sIIz8pIG6y1uAZFTVotF8hfXN27+ThnpGeayFBcA2JfQrxuqU Hz6XPkmacffmEzl+EILFDEDmThs1l0HEhI4gdNfyjvBi2W6A9sXP/l1W6JBpD1r6nOS5 vLgVJfU0m6KZGugAuw3E7agkiZohaghPAx5V1SQkQUBeImDn0k/yqAGifv6/O/L0parv 7/TwpwJhV+h8uDgq9OXZ/vX90M5lPobBQ5L9B50BAOtDWGeJBVst0CdpNSXovJmkOwO3 bGzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739722374; x=1740327174; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m/R5shfvi4g7oMPn8cw9ImYbr1L1mAF4Luh9InPtUqg=; b=P0tjJ2fCCUYb3Lt5ksMwrA943EbZCgZ8M5qczQRK3227oswRL/tX/y5lct5trbNh5c K+/Ce//u4nQg0q7qG5z88KE8OXgfFTrFfkB5PeNfW3LCjTJcwv6AjwtfFdZ6SHUJPS7k NeDhd+8q57ANNTtyyhsgJWBzy/1i5K5eyXmcgyTBqmhVdQDy+a1h65SA7CmQf/GIEa0y Ba2dqYCNBnQraX7SaI01fDrc54HR+GBEnz1dzcO64pUBsmk0fHfnx+nURjXyVR1Nyxax 0TN81i/awnWAwh7q2/sNdjg1JOGTVCqrE/hXkjGX94TKMNCoF4frffMpK5wpD2tzjg0R +TmA== X-Forwarded-Encrypted: i=1; AJvYcCWDDIwusE1CsjZxTwgrpkTOQ+VxetAbA2Fi/Q0uSog3Wq8uzA5qOkoUaUdQLUSUPx6bhQ2fqQftkhnN@vger.kernel.org, AJvYcCWgmACFW8/oTRmjOBoAIdNs+1G3mRFwukpa2uuxukDW/AOoGKgTR/QGnmh+wl8LH5o7iIH2D46ZcPRx@vger.kernel.org, AJvYcCXMUx0SpVtf83Stm/X+JA3NB+4S8t80WsrfwjVRU1hVeQ4sTg7OrJFBvqKNXmnfbMCE2pXmaOYSQ4Xy2A8i@vger.kernel.org X-Gm-Message-State: AOJu0YwFA/ck67XMa9rsS6pI+82Oa50H8zyrA4DPK+OKQ03mk5hUytHC a7sIISOvjPtRtvwXngBPOZQAQKEeFQXk87nt7LpFQWshWrH50rXhVFn74g== X-Gm-Gg: ASbGncu/hpVOoJ8tpYAgcFnw5Y+1OlP2fxS/eMOpy6MPpC94CjLZcE9lObKFYoeEFLL wFAH7OJOF1aneIXQKdCoprCweEtVGPbITSN892ei6ftm7L1x4tm9Omg73zxqpU5SrTYg7xx9r4E Os7lXYl3dMGTM7Ry5Dk/5QMInnWcZYiOHiU4VWaFDS8qgYq/5TIYsDyUagNkEKkXQ732pamTY7U Dot4z++h2JB+7zC0/OVrXNqlU8RnRIh6kCp0GQeLvD65r2ZqnX7fkt5yKcc7XM2jtEhAn/KefYY tyZq69vbcDuUVUiRXG5CvlRfNZX8UwtHW6kIEyARc4Fu3LBXMzZIUwhI2iAbuQ== X-Google-Smtp-Source: AGHT+IEc4fa9aQqMs6Hkl7wBJhiSx39pgqldlhSZGRQufo5ch84A6G9itwGa0xnnk6M0zRgP1kTguA== X-Received: by 2002:a17:906:c14c:b0:ab6:da18:9a3 with SMTP id a640c23a62f3a-abb7115ffdamr610635366b.46.1739722373555; Sun, 16 Feb 2025 08:12:53 -0800 (PST) Received: from hex.my.domain (83.8.115.239.ipv4.supernova.orange.pl. [83.8.115.239]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abb8eea4d65sm148463466b.161.2025.02.16.08.12.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Feb 2025 08:12:53 -0800 (PST) From: Artur Weber Date: Sun, 16 Feb 2025 17:12:39 +0100 Subject: [PATCH RFC 4/5] clk: bcm21664: Add matching bus clocks for peripheral clocks Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250216-kona-bus-clock-v1-4-e8779d77a6f2@gmail.com> References: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> In-Reply-To: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> To: Michael Turquette , Stephen Boyd , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Alex Elder , Stanislav Jakubek , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1739722366; l=7610; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=bLlKBR/fpwcRFHbKSMGsIt7sEUfozoFN+TKaviTKp0A=; b=NXULbaNxhoYHUjH/FEMwhve1priRbY5uyMkMvAvEH7yZowcqHn2sp1vQACmDBmkh0qK1Ql7Ju LlxwIHIekIkAcuSzpbWZgVqVPcXbSeoBZlJdjIxyePj4XBmA2pn7PMz X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Now that bus clock support has been implemented into the Broadcom Kona clock driver, add bus clocks corresponding to HUB_TIMER, SDIO, UART and BSC, as well as the USB OTG bus clock. Signed-off-by: Artur Weber --- drivers/clk/bcm/clk-bcm21664.c | 107 +++++++++++++++++++++++++++++++---- include/dt-bindings/clock/bcm21664.h | 19 ++++++- 2 files changed, 111 insertions(+), 15 deletions(-) diff --git a/drivers/clk/bcm/clk-bcm21664.c b/drivers/clk/bcm/clk-bcm21664.c index 520c3aeb4ea9c4a431512c0909f9545c1761d17a..c9d15bde1d49c345c160880f72c96aea94dd9f55 100644 --- a/drivers/clk/bcm/clk-bcm21664.c +++ b/drivers/clk/bcm/clk-bcm21664.c @@ -39,6 +39,11 @@ static struct peri_clk_data hub_timer_data = { .trig = TRIGGER(0x0a40, 4), }; +static struct bus_clk_data hub_timer_apb_data = { + .gate = HW_SW_GATE(0x0414, 18, 3, 2), + .hyst = HYST(0x0414, 10, 11), +}; + static struct ccu_data aon_ccu_data = { BCM21664_CCU_COMMON(aon, AON), .policy = { @@ -47,7 +52,9 @@ static struct ccu_data aon_ccu_data = { }, .kona_clks = { [BCM21664_AON_CCU_HUB_TIMER] = - KONA_CLK(aon, hub_timer, peri), + KONA_CLK_PREREQ(aon, hub_timer, peri, hub_timer_apb), + [BCM21664_AON_CCU_HUB_TIMER_APB] = + KONA_CLK(aon, hub_timer_apb, bus), [BCM21664_AON_CCU_CLOCK_COUNT] = LAST_KONA_CLK, }, }; @@ -122,6 +129,26 @@ static struct peri_clk_data sdio4_sleep_data = { .gate = HW_SW_GATE(0x0360, 18, 2, 3), }; +static struct bus_clk_data sdio1_ahb_data = { + .gate = HW_SW_GATE(0x0358, 16, 0, 1), +}; + +static struct bus_clk_data sdio2_ahb_data = { + .gate = HW_SW_GATE(0x035c, 16, 0, 1), +}; + +static struct bus_clk_data sdio3_ahb_data = { + .gate = HW_SW_GATE(0x0364, 16, 0, 1), +}; + +static struct bus_clk_data sdio4_ahb_data = { + .gate = HW_SW_GATE(0x0360, 16, 0, 1), +}; + +static struct bus_clk_data usb_otg_ahb_data = { + .gate = HW_SW_GATE(0x0348, 16, 0, 1), +}; + static struct ccu_data master_ccu_data = { BCM21664_CCU_COMMON(master, MASTER), .policy = { @@ -130,13 +157,13 @@ static struct ccu_data master_ccu_data = { }, .kona_clks = { [BCM21664_MASTER_CCU_SDIO1] = - KONA_CLK(master, sdio1, peri), + KONA_CLK_PREREQ(master, sdio1, peri, sdio1_ahb), [BCM21664_MASTER_CCU_SDIO2] = - KONA_CLK(master, sdio2, peri), + KONA_CLK_PREREQ(master, sdio2, peri, sdio2_ahb), [BCM21664_MASTER_CCU_SDIO3] = - KONA_CLK(master, sdio3, peri), + KONA_CLK_PREREQ(master, sdio3, peri, sdio3_ahb), [BCM21664_MASTER_CCU_SDIO4] = - KONA_CLK(master, sdio4, peri), + KONA_CLK_PREREQ(master, sdio4, peri, sdio4_ahb), [BCM21664_MASTER_CCU_SDIO1_SLEEP] = KONA_CLK(master, sdio1_sleep, peri), [BCM21664_MASTER_CCU_SDIO2_SLEEP] = @@ -145,6 +172,16 @@ static struct ccu_data master_ccu_data = { KONA_CLK(master, sdio3_sleep, peri), [BCM21664_MASTER_CCU_SDIO4_SLEEP] = KONA_CLK(master, sdio4_sleep, peri), + [BCM21664_MASTER_CCU_SDIO1_AHB] = + KONA_CLK(master, sdio1_ahb, bus), + [BCM21664_MASTER_CCU_SDIO2_AHB] = + KONA_CLK(master, sdio2_ahb, bus), + [BCM21664_MASTER_CCU_SDIO3_AHB] = + KONA_CLK(master, sdio3_ahb, bus), + [BCM21664_MASTER_CCU_SDIO4_AHB] = + KONA_CLK(master, sdio4_ahb, bus), + [BCM21664_MASTER_CCU_USB_OTG_AHB] = + KONA_CLK(master, usb_otg_ahb, bus), [BCM21664_MASTER_CCU_CLOCK_COUNT] = LAST_KONA_CLK, }, }; @@ -225,6 +262,38 @@ static struct peri_clk_data bsc4_data = { .trig = TRIGGER(0x0afc, 19), }; +static struct bus_clk_data uartb_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0400, 16, 0, 1), +}; + +static struct bus_clk_data uartb2_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0404, 16, 0, 1), +}; + +static struct bus_clk_data uartb3_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0408, 16, 0, 1), +}; + +static struct bus_clk_data bsc1_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0458, 16, 0, 1), + .hyst = HYST(0x0458, 8, 9), +}; + +static struct bus_clk_data bsc2_apb_data = { + .gate = HW_SW_GATE_AUTO(0x045c, 16, 0, 1), + .hyst = HYST(0x045c, 8, 9), +}; + +static struct bus_clk_data bsc3_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0470, 16, 0, 1), + .hyst = HYST(0x0470, 8, 9), +}; + +static struct bus_clk_data bsc4_apb_data = { + .gate = HW_SW_GATE_AUTO(0x0474, 16, 0, 1), + .hyst = HYST(0x0474, 8, 9), +}; + static struct ccu_data slave_ccu_data = { BCM21664_CCU_COMMON(slave, SLAVE), .policy = { @@ -233,19 +302,33 @@ static struct ccu_data slave_ccu_data = { }, .kona_clks = { [BCM21664_SLAVE_CCU_UARTB] = - KONA_CLK(slave, uartb, peri), + KONA_CLK_PREREQ(slave, uartb, peri, uartb_apb), [BCM21664_SLAVE_CCU_UARTB2] = - KONA_CLK(slave, uartb2, peri), + KONA_CLK_PREREQ(slave, uartb2, peri, uartb2_apb), [BCM21664_SLAVE_CCU_UARTB3] = - KONA_CLK(slave, uartb3, peri), + KONA_CLK_PREREQ(slave, uartb3, peri, uartb3_apb), [BCM21664_SLAVE_CCU_BSC1] = - KONA_CLK(slave, bsc1, peri), + KONA_CLK_PREREQ(slave, bsc1, peri, bsc1_apb), [BCM21664_SLAVE_CCU_BSC2] = - KONA_CLK(slave, bsc2, peri), + KONA_CLK_PREREQ(slave, bsc2, peri, bsc2_apb), [BCM21664_SLAVE_CCU_BSC3] = - KONA_CLK(slave, bsc3, peri), + KONA_CLK_PREREQ(slave, bsc3, peri, bsc3_apb), [BCM21664_SLAVE_CCU_BSC4] = - KONA_CLK(slave, bsc4, peri), + KONA_CLK_PREREQ(slave, bsc4, peri, bsc4_apb), + [BCM21664_SLAVE_CCU_UARTB_APB] = + KONA_CLK(slave, uartb_apb, bus), + [BCM21664_SLAVE_CCU_UARTB2_APB] = + KONA_CLK(slave, uartb2_apb, bus), + [BCM21664_SLAVE_CCU_UARTB3_APB] = + KONA_CLK(slave, uartb3_apb, bus), + [BCM21664_SLAVE_CCU_BSC1_APB] = + KONA_CLK(slave, bsc1_apb, bus), + [BCM21664_SLAVE_CCU_BSC2_APB] = + KONA_CLK(slave, bsc2_apb, bus), + [BCM21664_SLAVE_CCU_BSC3_APB] = + KONA_CLK(slave, bsc3_apb, bus), + [BCM21664_SLAVE_CCU_BSC4_APB] = + KONA_CLK(slave, bsc4_apb, bus), [BCM21664_SLAVE_CCU_CLOCK_COUNT] = LAST_KONA_CLK, }, }; diff --git a/include/dt-bindings/clock/bcm21664.h b/include/dt-bindings/clock/bcm21664.h index 7c7492742f3d4ca439236f2f352e432989409570..8d3e3796c72b02eace84dfb90d6264dee0297a33 100644 --- a/include/dt-bindings/clock/bcm21664.h +++ b/include/dt-bindings/clock/bcm21664.h @@ -26,7 +26,8 @@ /* aon CCU clock ids */ #define BCM21664_AON_CCU_HUB_TIMER 0 -#define BCM21664_AON_CCU_CLOCK_COUNT 1 +#define BCM21664_AON_CCU_HUB_TIMER_APB 1 +#define BCM21664_AON_CCU_CLOCK_COUNT 2 /* master CCU clock ids */ @@ -38,7 +39,12 @@ #define BCM21664_MASTER_CCU_SDIO2_SLEEP 5 #define BCM21664_MASTER_CCU_SDIO3_SLEEP 6 #define BCM21664_MASTER_CCU_SDIO4_SLEEP 7 -#define BCM21664_MASTER_CCU_CLOCK_COUNT 8 +#define BCM21664_MASTER_CCU_SDIO1_AHB 8 +#define BCM21664_MASTER_CCU_SDIO2_AHB 9 +#define BCM21664_MASTER_CCU_SDIO3_AHB 10 +#define BCM21664_MASTER_CCU_SDIO4_AHB 11 +#define BCM21664_MASTER_CCU_USB_OTG_AHB 12 +#define BCM21664_MASTER_CCU_CLOCK_COUNT 13 /* slave CCU clock ids */ @@ -49,6 +55,13 @@ #define BCM21664_SLAVE_CCU_BSC2 4 #define BCM21664_SLAVE_CCU_BSC3 5 #define BCM21664_SLAVE_CCU_BSC4 6 -#define BCM21664_SLAVE_CCU_CLOCK_COUNT 7 +#define BCM21664_SLAVE_CCU_BSC1_APB 7 +#define BCM21664_SLAVE_CCU_BSC2_APB 8 +#define BCM21664_SLAVE_CCU_BSC3_APB 9 +#define BCM21664_SLAVE_CCU_BSC4_APB 10 +#define BCM21664_SLAVE_CCU_UARTB_APB 11 +#define BCM21664_SLAVE_CCU_UARTB2_APB 12 +#define BCM21664_SLAVE_CCU_UARTB3_APB 13 +#define BCM21664_SLAVE_CCU_CLOCK_COUNT 14 #endif /* _CLOCK_BCM21664_H */ From patchwork Sun Feb 16 16:12:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13976570 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 CA3D319DF4F; Sun, 16 Feb 2025 16:12:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722378; cv=none; b=jyC3Wt+dVDsvysn1cNCVpCSs1NFPQK4tobO6xzXEbIT1VmD7Hgy0dTlNXglHq68reqw4hjg+SQii81WI5mIf8ofKRCfd7lWSLnHBncSeSrOEbaP3DPg5GP7FzNyjGD5eC8FZe2AYWY7NGGBkbnY73NGuMx7sxywKl+OcdBTlndM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739722378; c=relaxed/simple; bh=NWxQJr69T1lJZmCiHGaLhprHxELl4TcRh7xLKs+PcuA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sgounfrGB8WqA5SOmbXGFf6tQ3G5pNjQ/3+Nq6JCYHk5E+uV4o6zC+NxQZZjCL2B41OhkdPYz6cd/rnIPy46bIy908UuYQrRHXDYeM3mkKWlXY+4u+Pl5eRt3oJ/WCuYwiW3QmOT6C2jpN5htt7a42jSJI7ypulJD20Pl7cBzyc= 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=h0T6ZE3O; arc=none smtp.client-ip=209.85.218.47 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="h0T6ZE3O" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-aaeec07b705so553159766b.2; Sun, 16 Feb 2025 08:12:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739722375; x=1740327175; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=aRgn7Ji5C+YzF1ddxyvW2TOfmqPRd4kGtHBRiwohv6s=; b=h0T6ZE3OOMAg7rRtSkJYlNXeASPPmZyC3bhFeeE5tZqVp6sPa0RAAZ2b103B95o+gY EOZX9v8yrnRAUjKbKKBSc18D8L/3avrzfoIzxlcv8XbBtIEPPNQQ4bzvJPPFdmZiblb0 DW+r/liX2gIdxq6KpbUIw7l409m7bZtTN1kkMqSGjrkA3zmJxofcEhxwHgoTG81j05y1 UTpmZ3Ls0aFSUgl+Y0nraV40FX/o80vSVSPkCuMsjgZGTvbG8Tq8DDfLFq0bbxbeLhXC cOg5LbixO+QPJE1pPhQEEJO7M5iw+pdUR5Nklv9445FJBsbowFv/4yF7ig5E2MN+slG/ H41g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739722375; x=1740327175; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aRgn7Ji5C+YzF1ddxyvW2TOfmqPRd4kGtHBRiwohv6s=; b=Z4d5zn4QiKiLsbyrXeQNPt7FqxRU22eltjjHqcsKJxQXpQMaz3xaMK6Oo2w6vU1WT3 /lZ0ra9/H0TR4R3y7Q/NW8Jn/WH1LkBrPrEObNlUoaRCINPx5KWvYUcQW/ie7/jj3oNp +/kOL2qQzhFDomQUKnrHxtUDgxwPS1lVmj8ZxV4+AosCJdeQd2xWKzZj79uuKZ9CEW9e 8X353CtTzKwZ6DxNIBH5GLViaQFaZtA4+RVZFRdyf+0mHwv5n/bF/ol87LLinyfpAn7C f5VCAET1IY3rpoNwMYlZAN1GqtOOZZnXDMKhD294+wW+r0eenr9SCayHx57XnHRN5vud dx2g== X-Forwarded-Encrypted: i=1; AJvYcCUnAmrjdLN5vj3y1/qeEV8on3aK3pVn516DHnq72O9+63IxKnU5J5CQdnwYatvrbWPQ0zP2ScTrOdSr@vger.kernel.org, AJvYcCWt44jivuqkhQVFEVNomtMT3MTOubVyLdVykkDU67fqrIy9QC3ZYgn/472s4EO97FipwI+EShNaf9o/@vger.kernel.org, AJvYcCXO7RR0v3Exfs5XUfSYKZtQkKEZQGgsiF1lUuY1b0ac0CzMFdNIrOyBj6sDE0myaoXT/qbKmJ+FLjoyDtQK@vger.kernel.org X-Gm-Message-State: AOJu0YziFOXamk7O4VuVhTqfuj/x+s82Jy3RIdD7BVtKAkJMoDDKxREq 46HJ1z3QynEESPkyhDk+n6/vhTD3Nob4bJJ8d9uherKMEeWJd/zD X-Gm-Gg: ASbGncuGls7g59fKCqKkVhUE5YP9Sdec0H7hK7F6FOcMG/V5WP7z7fHq420H1gZz2wc xzbYsmgzTroEQ4oABep2fna3M+NUxkR0/kwIKFRUKG8Wom7HdZHds2+9oesfHeRkNDxZVZiZeLj vNqcpJ+w/YfpmoZc6HR8GooirWAhS74XTTvhPRW0ucOJy0Hppl1g67x0BEfug5pCg+hC7gPoy0L ZJvz4PVoGvrafqjajAdYuHqG72E8qqOTKD5IRpMZb40QR5eAAOCj+pS79nHCYw5AkbLcX/cCHY3 ySavpR8FR7qBEqTQYfIVOQRV24pCwRbpdgxsLA99wUx5bzCBL8qehGbptuW5HA== X-Google-Smtp-Source: AGHT+IGwqKTsDH+xi82LwqocuW2doDAlH+8VSSlBb3bcZjbMekpE+N/zdNvrmDQSLIBrJw2oOy+DMA== X-Received: by 2002:a17:906:7312:b0:ab7:e811:de86 with SMTP id a640c23a62f3a-abb70a95817mr720099266b.13.1739722374775; Sun, 16 Feb 2025 08:12:54 -0800 (PST) Received: from hex.my.domain (83.8.115.239.ipv4.supernova.orange.pl. [83.8.115.239]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abb8eea4d65sm148463466b.161.2025.02.16.08.12.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Feb 2025 08:12:54 -0800 (PST) From: Artur Weber Date: Sun, 16 Feb 2025 17:12:40 +0100 Subject: [PATCH RFC 5/5] ARM: dts: bcm2166x-common: Add matching bus clocks for peripheral clocks Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250216-kona-bus-clock-v1-5-e8779d77a6f2@gmail.com> References: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> In-Reply-To: <20250216-kona-bus-clock-v1-0-e8779d77a6f2@gmail.com> To: Michael Turquette , Stephen Boyd , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Alex Elder , Stanislav Jakubek , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1739722366; l=2369; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=NWxQJr69T1lJZmCiHGaLhprHxELl4TcRh7xLKs+PcuA=; b=WNxAo1QV7U6quOYCZ7/pRwvxwBviYdRpUrHiRTkzcgkUIgnh1nv+Uwn7xsTlo9Iu1PU8hKfx0 zRarsHo1uAEBf5o8Nd2VlRhCqUBXn9FcqI5LbJT5fxRr+0oQbGOf+a7 X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Following changes in the clock driver, add bus clocks for timer, SDIO, BSC and UART to the DTS clock output names. Replace the usb_otg_ahb fixed clock with the real bus clock. Signed-off-by: Artur Weber --- arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi | 28 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi b/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi index 87180b7fd695e65b52c52743e6315cbcca385fba..ab6ad8c6d326171a6da1762ecd839bd82e9da482 100644 --- a/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi +++ b/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi @@ -143,7 +143,7 @@ usbotg: usb@e20000 { compatible = "snps,dwc2"; reg = <0x00e20000 0x10000>; interrupts = ; - clocks = <&usb_otg_ahb_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_USB_OTG_AHB>; clock-names = "otg"; phys = <&usbphy>; phy-names = "usb2-phy"; @@ -248,12 +248,6 @@ var_52m_clk: var_52m { clock-frequency = <52000000>; }; - usb_otg_ahb_clk: usb_otg_ahb { - #clock-cells = <0>; - compatible = "fixed-clock"; - clock-frequency = <52000000>; - }; - ref_96m_clk: ref_96m { #clock-cells = <0>; compatible = "fixed-clock"; @@ -301,7 +295,8 @@ aon_ccu: aon_ccu@35002000 { compatible = "brcm,bcm21664-aon-ccu"; reg = <0x35002000 0x0f00>; #clock-cells = <1>; - clock-output-names = "hub_timer"; + clock-output-names = "hub_timer", + "hub_timer_apb"; }; slave_ccu: slave_ccu@3e011000 { @@ -314,7 +309,15 @@ slave_ccu: slave_ccu@3e011000 { "bsc1", "bsc2", "bsc3", - "bsc4"; + "bsc4", + "uartb_apb", + "uartb2_apb", + "uartb3_apb", + "bsc1_apb", + "bsc2_apb", + "bsc3_apb", + "bsc4_apb"; + }; master_ccu: master_ccu@3f001000 { @@ -328,7 +331,12 @@ master_ccu: master_ccu@3f001000 { "sdio1_sleep", "sdio2_sleep", "sdio3_sleep", - "sdio4_sleep"; + "sdio4_sleep", + "sdio1_ahb", + "sdio2_ahb", + "sdio3_ahb", + "sdio4_ahb", + "usb_otg_ahb"; }; }; };