From nobody Thu Oct 2 20:44:54 2025 Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 76DB51E32B7; Thu, 11 Sep 2025 03:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.92.39.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561685; cv=none; b=CPvROzY/mLz50y+CppDTvXrKRxapdN+2I6R9pmr3tXAQS4ijofCoJCN6H909ojow8uNCIel7k2JJwnkRHmoaW9Z9ITLiCASLiXAR5/fExWHDKBZ2sxdQ7GvxQUERYEXYE3EMpLK//jyS1yotVMMDd0JC7qPaPUkLDUD8SRvUQQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561685; c=relaxed/simple; bh=MpbEVQJf2AVIQqx//peGNwuMBg67BNUIUbJjcb88MlM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OhQbABsYiqenAVFltYMDGSgPOLdBK7D2jQfId4bCySDU/ILvywyjnkLKfiNiahVVuBFVspcUN6gcnFOcx98BQf/v72PUPaLGnUnOnJyhl7FJieK8iX9alwY84iKH/ZvAGYp/0ivk6PUGHM4ddkoNZrwRcj8d3Ve1brICL3q9a90= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=uamyh68U; arc=none smtp.client-ip=54.92.39.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="uamyh68U" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1757561658; bh=x5heRWWxoAFSgKGfAwL+UUBZ/SH0X/KEucfW1kCohLA=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=uamyh68UQ/9WAQV9iNwgdFN/LsAbqDpixCYYuoJBF5qR3992SK9DtLI98ubMexCZn mhSUIN+wumvONt9QJqKBSWbfjrYv8pd6JCpDSGOGif4wUEWY3Q8HwngIXy7TCgjcgU 8UMIPhMA6UiFDh8NOYRcHwHFo6Lz8Do46BvD/1g8= X-QQ-mid: zesmtpsz2t1757561652t4b838e95 X-QQ-Originating-IP: Qp+B9ePOiwoUsGLiwQOkSRppr9ndituH0TM+4FnkRBk= Received: from = ( [61.145.255.150]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 11 Sep 2025 11:34:09 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 7849737783869679119 EX-QQ-RecipientCnt: 17 From: Troy Mitchell Date: Thu, 11 Sep 2025 11:34:03 +0800 Subject: [PATCH RESEND v4 1/3] dt-bindings: clock: spacemit: introduce i2s pre-clock to fix i2s clock Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250911-k1-clk-i2s-generation-v4-1-cba204a50d48@linux.spacemit.com> References: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> In-Reply-To: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Alex Elder , Haylen Chu , Inochi Amaoto Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Jinmei Wei , Troy Mitchell , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757561644; l=1199; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=MpbEVQJf2AVIQqx//peGNwuMBg67BNUIUbJjcb88MlM=; b=rJtTCJbkHV68WSAj3AA4O5N9sWEvL4JzfqV7QHzEt3JilpuSsg+tpZqj+UenUr0AyzvQgMkO6 HNOIIvHjIjpBSk9zDm9JO2k2vzfrzJXoYpVw5iCFRcHahAINTOG96fL X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpsz:linux.spacemit.com:qybglogicsvrsz:qybglogicsvrsz3a-0 X-QQ-XMAILINFO: NlLEkF+Y0lKeL/hQmrPt4bSLqDk2TPGNwHxxeLywOQxe1R4utBs+fIiQ rkb2n1f6hM26Jate3I0lHpP6hwjLTvtV9r2sgD7uBv7z25Sw1MvDXrD8FXkLKOnti4bzBrl aHx946kaOZdirXoOAWf3GOCtE+2ue2nEw3g38M9aU3LnM9EZ5/apnCDpiUH9nbmvcc69r9Z lVO47KAaVa6JWqj3KZnTV6kSH5voQBAuAnhBXGYZn2B7Ti5MpW8GUbV0pqmZmuDhD3xODc5 pkAsM5gjfK8M+Z5cfbdg+pI538x/sO5G93qB02yJcQVAb/FX34omltD4Y1v7M0JUQvrMto+ lFnZ3RYS28QzNVrMftXG/qjZimMP18MZsALlCh/kKwOfFHRRZJ6CMqkQGiJ/JFxRiG9X4vg j8o0jD0MYUmkCZltWUqRKz0MhSE0dpYbFEJ7zaeasW94rwbLHDAw/2gzRAV7sD294t1kLG9 BukFm+9r/PpFsZ2wHLvxh9UBbqY/9RfU3zMIa5rAKQyvNvq3ogs4BbL7eP7Tm39gA9aCZve tcj30Wnngjo94gQ/LXEbdn1B9b1tAfADaykDAjoLFLr3l3w4qwYtis9wWIcQw22ey5Uww0O BN15Yi+6e6LODM8N3zDcOhyvCQO0towpEv286IeRBpyfJcSnEUiHz7Er5bqyRUDYsIikTpt hoF3yTy6SMgfNaHbk5M0NcygRoRMTIOg+uitFjtNiNkxrfSVx+mfeRheJlzNXJjuwh70UET AzO6DIcw8Fm68hk28P9RlPZ408tnq94ECkqTeFQNl2p71PZgc+k3dulfNgtuAJ0Dr6UalRl lOk/fT3SQYyUS6MDR7nbieTrWdRSt5VokVZwXiPnjE4e/ph4zEZxci50/uonPB0NhjQpzo0 fbGU85URd7UEvmZWZUyrhsNlglYcQUsH268+wUDcVrcsd/fFAHdSWVfcLio9Ncki5FiBo1J qIYv5e/0O7hzLKQ6sd9en/IRnUQhOYDX8vejZB1wTPvwpAd73gN50hOjAYILcsN1ivIw8qO d54oF4TBRTB6bpLugx+WrDnY4n8TLrA0Sz6aqMgfgGP0rMIZlc8GXjeNC0ubF8KaZ9Y84S4 Q5f0CvdrvyOGwUn0MX8CHjKMWAF3nbtxe0MN+8cg84J X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= X-QQ-RECHKSPAM: 0 Previously, the K1 clock driver did not include the parent clocks of the I2S sysclk. Introduce pre-clock to fix I2S clock. Otherwise, the I2S clock may not work as expected. This patch adds their definitions to allow proper registration in the driver and usage in the device tree. Fixes: 1b72c59db0add ("clk: spacemit: Add clock support for SpacemiT K1 SoC= ") Acked-by: Krzysztof Kozlowski Signed-off-by: Troy Mitchell --- include/dt-bindings/clock/spacemit,k1-syscon.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/dt-bindings/clock/spacemit,k1-syscon.h b/include/dt-bi= ndings/clock/spacemit,k1-syscon.h index 2714c3fe66cd5b49e12c8b20689f5b01da36b774..ad62525be43a909633f8d3a65ec= e1acd60ba8052 100644 --- a/include/dt-bindings/clock/spacemit,k1-syscon.h +++ b/include/dt-bindings/clock/spacemit,k1-syscon.h @@ -77,6 +77,10 @@ #define CLK_I2S_BCLK 30 #define CLK_APB 31 #define CLK_WDT_BUS 32 +#define CLK_I2S_153P6 33 +#define CLK_I2S_153P6_BASE 34 +#define CLK_I2S_SYSCLK_SRC 35 +#define CLK_I2S_BCLK_FACTOR 36 =20 /* MPMU resets */ #define RESET_WDT 0 --=20 2.51.0 From nobody Thu Oct 2 20:44:54 2025 Received: from bg5.exmail.qq.com (bg5.exmail.qq.com [43.154.197.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D516243367; Thu, 11 Sep 2025 03:34:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=43.154.197.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561693; cv=none; b=VY+PpnDa9+JP8D9qm8VpsDiqRyO00k5VC6gpX3n0RMnKWy9khoOekKYZzyoQkfUayWbUgqYKIdJI3hnrGXOJzCOY1W9W6SRhvK8piloM+5Wqv7X1pGPAvaZ8GQzF1PZ5vSy0CKBS3Yez4T8VnplnVOxwhrjFIXTeHe/YIXvtu80= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561693; c=relaxed/simple; bh=um/BmDrcrL0kuow4Mg9YUsckGkNepV1kSLVg1UlzI78=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hoBqPRL4NrW9OWi6I2MkFddP6hMh9IU54msL4VxOgodDvon7RIu0rBbKpW1lCSsDSiimS2DeEm4dT8pddas3PfY0omjh34A7g17anKrpejyz93EJht7WCUQyocO6RXVkQRUD7zetEOckTMfvihttjK+Qc2pyLsLT3T+LlD8im9k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=SGJu44LT; arc=none smtp.client-ip=43.154.197.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="SGJu44LT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1757561658; bh=6dv7CsMYSMIwRgfQgFkuw6XwJ6YSMwlWfwNLaJZz9VU=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=SGJu44LTkeobZJOHSxoXXJZqzgBl1pbm3qzi4KPNbOvM2M6mO4NFA9B5YbuX7yBn7 DGCT90m7TROWvcyd68hs11PofwpXxu7i8gOB54aFZgfL2WjxEP/mAfqLngOZZIH1vv x0OhCGsvGAJRpzODoJdS6SiB+RsM86Q9PkIwt3gU= X-QQ-mid: zesmtpsz8t1757561656t73c75677 X-QQ-Originating-IP: atI6jdhOTO99dK0qo4mLzd5Ax7YIXq4ZclxUwACk0GM= Received: from = ( [61.145.255.150]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 11 Sep 2025 11:34:13 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11099552558053467934 EX-QQ-RecipientCnt: 16 From: Troy Mitchell Date: Thu, 11 Sep 2025 11:34:04 +0800 Subject: [PATCH RESEND v4 2/3] clk: spacemit: introduce pre-div for ddn clock Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250911-k1-clk-i2s-generation-v4-2-cba204a50d48@linux.spacemit.com> References: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> In-Reply-To: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Alex Elder , Haylen Chu , Inochi Amaoto Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Jinmei Wei , Troy Mitchell X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757561644; l=4272; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=um/BmDrcrL0kuow4Mg9YUsckGkNepV1kSLVg1UlzI78=; b=z1OFKwF+QDZ8bs6TETX7P1vRlSxis+A8oFuHuR8uWEkspKrqdM5HtNAflp/q3Caesb+NZ4VCC 2mRA2Y3Z890DxgfO37pcYRwxZBERKDeqLbN/s0p/Im+sPeHcAL8fo2d X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpsz:linux.spacemit.com:qybglogicsvrsz:qybglogicsvrsz3a-0 X-QQ-XMAILINFO: NGdvwxE97AwefNdEJpmYM6lo32jNovIfqsteg/zFKVwyphdsCpoAyLAo JBWn4ezbzcYk67Cx/0pIecmT6kz7JVjcbCEp7I07iquPs76+U4zw+b4Y5smPoyEOS9TTuet upOlJfrBC6gsmbkuEXaGvtqV7HsjWx+4ZYc95T/Cs1UQpDJuNRWqiWK5TYcuiXPNog3qaMj sk44pVtNP+BET11gdxPp8XhtzUP4NfHmA8CiWaZsYdwufE81HLOce+ubSTFMNqDpf0UROpK b7KKs9/8uKtWeAABrjYXS8KDsRnZGgFpiQMwJEWvaQ7lOYqqunXil71b+ZwQkpIaMAf3mRt 8dYdEG776sOLL5sO1l0x9sRnoalE2XOmoG3Z4SiEkf9pJ+KL7gZ7440N8ASNFijCw51xv4U nZxqkFZ9ZPHbp0ib7AyEz8jD+AiaNFgiN19iyFbiWpv+0Ado12i2ZoHt1/XfGeUHB2HZfTw 9UEmWWDawTVBZ/GsFzbg+bGGepwk8IUBTdoMrbeTmP/SRnZlRnZ+9+7dkFNG0gow5oTxli7 9HsSvFBfnHMk+PFDwqAgnv6nSbJjJjD99f4Ds4nWKY9O/yk7+728wHi/TjfUkl2RTeGavMz o+BFwMHxvykWMsX9aBx6cfSaZpMBc9JmOCRPUKC29mS9N8vyyaihSXJs0MMs+4L/oTgJ8NH BkjqHJLAsUiKu87S1rvdIhpdmzC7Oz0JKYcqqcqvv6zGPhA981f6CxgUYQ4ZDzlGkHFlCnf /LxLfhbopWG7N7RAWcFd3o7nah23uDZrysvWrF5yTNCboOrBV+SboBWZ/lpc3/WgJ8rJIzH FJXeKw93fs33LoSGx326hie/Ls4siWAUlYjQSnmnzXA3aF5S1l7TA6IVQZthXMxO/HfKF3A N2oomjfd8g9xpmUc1zw8rO8voqX4Spf9Fi6MeHXEaNw1EatZ15QQidUbwYuuiCV5uD0Kzj+ 77nfbM5b827NuIpkMjbiXVFweQmRJNAtercR4kreuU9+xBdBAU+b3Xgii4LQpebFE3E4Ziz /UzDSYfIdYCj1Eq7SFY+faAW30J57TOKZrLWMzf6ZaPaEGFDhs6j9i6EPn+z+Rwf45p6qbe f6JjPL73CnvSf52x9lfDJmVzEZuqDO4SsspqoQUwl1i X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= X-QQ-RECHKSPAM: 0 The original DDN operations applied an implicit divide-by-2, which should not be a default behavior. This patch removes that assumption, letting each clock define its actual behavior explicitly. Reviewed-by: Haylen Chu Signed-off-by: Troy Mitchell --- drivers/clk/spacemit/ccu-k1.c | 4 ++-- drivers/clk/spacemit/ccu_ddn.c | 12 ++++++------ drivers/clk/spacemit/ccu_ddn.h | 6 ++++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/clk/spacemit/ccu-k1.c b/drivers/clk/spacemit/ccu-k1.c index 65e6de030717afa60eefab7bda88f9a13b857650..7155824673fb450971439873b6b= 6163faf48c7e5 100644 --- a/drivers/clk/spacemit/ccu-k1.c +++ b/drivers/clk/spacemit/ccu-k1.c @@ -136,8 +136,8 @@ CCU_GATE_DEFINE(pll1_d3_819p2, CCU_PARENT_HW(pll1_d3), = MPMU_ACGR, BIT(14), 0); CCU_GATE_DEFINE(pll1_d2_1228p8, CCU_PARENT_HW(pll1_d2), MPMU_ACGR, BIT(16)= , 0); =20 CCU_GATE_DEFINE(slow_uart, CCU_PARENT_NAME(osc), MPMU_ACGR, BIT(1), CLK_IG= NORE_UNUSED); -CCU_DDN_DEFINE(slow_uart1_14p74, pll1_d16_153p6, MPMU_SUCCR, 16, 13, 0, 13= , 0); -CCU_DDN_DEFINE(slow_uart2_48, pll1_d4_614p4, MPMU_SUCCR_1, 16, 13, 0, 13, = 0); +CCU_DDN_DEFINE(slow_uart1_14p74, pll1_d16_153p6, MPMU_SUCCR, 16, 13, 0, 13= , 2, 0); +CCU_DDN_DEFINE(slow_uart2_48, pll1_d4_614p4, MPMU_SUCCR_1, 16, 13, 0, 13, = 2, 0); =20 CCU_GATE_DEFINE(wdt_clk, CCU_PARENT_HW(pll1_d96_25p6), MPMU_WDTPCR, BIT(1)= , 0); =20 diff --git a/drivers/clk/spacemit/ccu_ddn.c b/drivers/clk/spacemit/ccu_ddn.c index be311b045698e95a688a35858a8ac1bcfbffd2c7..06d86748182bd1959cdab5c18d0= a882ee25dcade 100644 --- a/drivers/clk/spacemit/ccu_ddn.c +++ b/drivers/clk/spacemit/ccu_ddn.c @@ -22,21 +22,21 @@ =20 #include "ccu_ddn.h" =20 -static unsigned long ccu_ddn_calc_rate(unsigned long prate, - unsigned long num, unsigned long den) +static unsigned long ccu_ddn_calc_rate(unsigned long prate, unsigned long = num, + unsigned long den, unsigned int pre_div) { - return prate * den / 2 / num; + return prate * den / pre_div / num; } =20 static unsigned long ccu_ddn_calc_best_rate(struct ccu_ddn *ddn, unsigned long rate, unsigned long prate, unsigned long *num, unsigned long *den) { - rational_best_approximation(rate, prate / 2, + rational_best_approximation(rate, prate / ddn->pre_div, ddn->den_mask >> ddn->den_shift, ddn->num_mask >> ddn->num_shift, den, num); - return ccu_ddn_calc_rate(prate, *num, *den); + return ccu_ddn_calc_rate(prate, *num, *den, ddn->pre_div); } =20 static long ccu_ddn_round_rate(struct clk_hw *hw, unsigned long rate, @@ -58,7 +58,7 @@ static unsigned long ccu_ddn_recalc_rate(struct clk_hw *h= w, unsigned long prate) num =3D (val & ddn->num_mask) >> ddn->num_shift; den =3D (val & ddn->den_mask) >> ddn->den_shift; =20 - return ccu_ddn_calc_rate(prate, num, den); + return ccu_ddn_calc_rate(prate, num, den, ddn->pre_div); } =20 static int ccu_ddn_set_rate(struct clk_hw *hw, unsigned long rate, diff --git a/drivers/clk/spacemit/ccu_ddn.h b/drivers/clk/spacemit/ccu_ddn.h index a52fabe77d62eba16426867a9c13481e72f025c0..4838414a8e8dc04af49d3b8d392= 80efedbd75616 100644 --- a/drivers/clk/spacemit/ccu_ddn.h +++ b/drivers/clk/spacemit/ccu_ddn.h @@ -18,13 +18,14 @@ struct ccu_ddn { unsigned int num_shift; unsigned int den_mask; unsigned int den_shift; + unsigned int pre_div; }; =20 #define CCU_DDN_INIT(_name, _parent, _flags) \ CLK_HW_INIT_HW(#_name, &_parent.common.hw, &spacemit_ccu_ddn_ops, _flags) =20 #define CCU_DDN_DEFINE(_name, _parent, _reg_ctrl, _num_shift, _num_width, \ - _den_shift, _den_width, _flags) \ + _den_shift, _den_width, _pre_div, _flags) \ static struct ccu_ddn _name =3D { \ .common =3D { \ .reg_ctrl =3D _reg_ctrl, \ @@ -33,7 +34,8 @@ static struct ccu_ddn _name =3D { \ .num_mask =3D GENMASK(_num_shift + _num_width - 1, _num_shift), \ .num_shift =3D _num_shift, \ .den_mask =3D GENMASK(_den_shift + _den_width - 1, _den_shift), \ - .den_shift =3D _den_shift, \ + .den_shift =3D _den_shift, \ + .pre_div =3D _pre_div, \ } =20 static inline struct ccu_ddn *hw_to_ccu_ddn(struct clk_hw *hw) --=20 2.51.0 From nobody Thu Oct 2 20:44:54 2025 Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A43032153FB; Thu, 11 Sep 2025 03:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.59.177.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561686; cv=none; b=Ukzw138nPhd2frBQheqGUr5Xiw4wEerRpsXPJ2EjykD/b9H5e21lmG+jrSdXhubpODpvW7dByNdQNCE7qmJ9QwCt6lUYJIz88KTrx/vHV/9EXS9JjcR4VdnrM7fEwKeKNiGhL4XoSAgMj6W83ULqqnX+p+km6McXeraKc4WTv3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757561686; c=relaxed/simple; bh=8vF7EJspH6w1AlvO0Jhpe6nfMvzzMDDLu+qMOL0JjTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KIn9EOgkErPDIV7I1+JycjBUcCPUiIT0bBufPMtCa+CgvL4+uP5tUVH71M2Q11BHaKy+h4P1vdW1HFLMIXy562oK6OpYx1vewOWydE95W7VVDvpp6qXL3Da0nMnHxCZOcgKdrzOwxJvAZV5MfopHox4NaIhUB2CYnzyPrgixbXY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=dlf5cqnW; arc=none smtp.client-ip=52.59.177.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="dlf5cqnW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1757561662; bh=6cIpFHh8JqmTbERos517ybZUEXPDKNh75tATmTM7P3k=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=dlf5cqnW39q0U9OqXPs36q4aQhBrW23ouhilOI+KEdhcwwa66IxTdzfpb2u2Sfeg6 rI9q3taDedWIKQDi+eFJpEp/ln777/9OAR9fHNJLz6K7oHvChAPZBbvN3EglGxjcrv T8C8uha+tCi7IVUi9x/pUJ9jyvRFoLK23Adf2Fdk= X-QQ-mid: esmtpsz21t1757561660t871e2e00 X-QQ-Originating-IP: QJTV/3qbzO7kVHvyxsNO+eqgGoYbsBX3FUfXfw0F3+M= Received: from = ( [61.145.255.150]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 11 Sep 2025 11:34:17 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 12270443823912362904 EX-QQ-RecipientCnt: 16 From: Troy Mitchell Date: Thu, 11 Sep 2025 11:34:05 +0800 Subject: [PATCH RESEND v4 3/3] clk: spacemit: fix i2s clock Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250911-k1-clk-i2s-generation-v4-3-cba204a50d48@linux.spacemit.com> References: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> In-Reply-To: <20250911-k1-clk-i2s-generation-v4-0-cba204a50d48@linux.spacemit.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Alex Elder , Haylen Chu , Inochi Amaoto Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Jinmei Wei , Troy Mitchell X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757561644; l=4010; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=8vF7EJspH6w1AlvO0Jhpe6nfMvzzMDDLu+qMOL0JjTg=; b=10oG8zpdU52YluNw4UoXjusApo3IbWbq+z6jZ7QTwnEIDsRNVpJLfhG28nn0Ci6E5yfMrH5i6 yry+XbgPjh6CthSUdzQKpJi69cltQvTJGIcNCdA8DVdUH8THeYmeWFf X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpsz:linux.spacemit.com:qybglogicsvrsz:qybglogicsvrsz3a-0 X-QQ-XMAILINFO: OJiFY9Ubx80kavjCyE6/6IQ8hNrja44ca1dzSp5fbBDmAPX3AOXh324J iygycmCkUJIvSOwaDJWEA3RWIKbsoF4lKsVhhCv2liLsnQbqrqvvHY62WL/8ztIbMxbc4A+ D4F4Y9ymCPBC71PbPW1m8sJq0wA27uCLvo22xaDuw/zC/zh8+6PJTReCQJ+gccXDg+jbPvF SDm4QVuG2YM6RVzGvtxZnp3j/pJuNyiByDIJKhndfeDLH2E/vG6SWnyZr4OgaPACNnQyubH achkTRJ+enJJBVplkWJrHWivRT+Ay9EH9Zm0YYmTj9LyITgHdrvMKjDde+DB2JHmHoOh4fi A++qVYm4uwWybKrhJbMGYiuxjcgIStV9zvZo/KrQ9fcM4YILdSZlpvAi8lL7shZrmX82+sa /mNy1NVYWH5+JavO2JbxOdPc3f663m9vnBkB4MU0wNrteMiWSaVg5JctzrO0RB2CXR11SvI HGfDbOmYl3AWssKKy+zMRlmidkS+zQw3bkCdWlvFmHprC0IBr1QPAAGT2HWjWIrmDkRo+Bj 6o213RIwr1qz/LyKIQd7lyItD+QYuu/ccwiWhZ8f8/IPYlvuy4NafYOhPVBZK30qUoAxoqJ nq9LKtUQXLn26Ow+S3rW4+tPfLORD5muIf7y/XhyMQPeCfMhTBu+1o1/QRfmfFUJfxFx/QZ S0bjGv0njshdOFuFfOCpR2Ozn3z+BAk6dMQddB0hyFAfsrJU+SF5dxdqyFzOOBveObPSt6w 4S+lm623j5wRncE7qLgkd0ldMVi1v7LBfbdx2GJ8zjw3SLt+yWwABIRBgaf6Fr8M9OlsNgC 9eH9uU3Azp8jKtuht/dfqiEWRMLxBIV5OYyMAZ0g+UM7TiTQ2YyQjp8+iuXAJUclvTPxu01 thEA0K3Bm3oQ8iEfGzRvJcDGeUd5PVaVMtz6RFvupKVHiWdi3mtbF4Ag9VS2mUO6BdimPGV e3R4mZTAd90TWeiReCdOo8ZZhEFBv2wHXcfi+Y+vX3SHsDLUOhW/WGYxE2Phyk2y+B5TjfC 7hfeJRAhagmSeVSavwxx8REvFMUamYa987a8GdxgcGyBuSDnZExHePtZJoee1VkqKpjJusp aSPgK+B185Raui+1hCmYG8= X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= X-QQ-RECHKSPAM: 0 Defining i2s_bclk and i2s_sysclk as fixed-rate clocks is insufficient for real I2S use cases. Moreover, the current I2S clock configuration does not work as expected due to missing parent clocks. This patch adds the missing parent clocks, defines i2s_sysclk as a DDN clock, and i2s_bclk as a DIV clock. A special note for i2s_bclk: From the register definition, the i2s_bclk divider always implies an additional 1/2 factor. The following table shows the correspondence between index and frequency division coefficients: | index | div | |-------|-------| | 0 | 2 | | 1 | 4 | | 2 | 6 | | 3 | 8 | From a software perspective, introducing i2s_bclk_factor as the parent of i2s_bclk is sufficient to address the issue. The I2S-related clock registers can be found here [1]. Link: https://developer.spacemit.com/documentation?token=3DLCrKwWDasiJuROkVNusc2p= WTnEb [1] Fixes: 1b72c59db0add ("clk: spacemit: Add clock support for SpacemiT K1 SoC= ") Co-developer: Jinmei Wei Suggested-by: Haylen Chu Signed-off-by: Jinmei Wei Signed-off-by: Troy Mitchell --- drivers/clk/spacemit/ccu-k1.c | 28 ++++++++++++++++++++++++++-- include/soc/spacemit/k1-syscon.h | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/clk/spacemit/ccu-k1.c b/drivers/clk/spacemit/ccu-k1.c index 7155824673fb450971439873b6b6163faf48c7e5..50b472a2721121414f33e9fac63= 70f544e6b8229 100644 --- a/drivers/clk/spacemit/ccu-k1.c +++ b/drivers/clk/spacemit/ccu-k1.c @@ -141,8 +141,28 @@ CCU_DDN_DEFINE(slow_uart2_48, pll1_d4_614p4, MPMU_SUCC= R_1, 16, 13, 0, 13, 2, 0); =20 CCU_GATE_DEFINE(wdt_clk, CCU_PARENT_HW(pll1_d96_25p6), MPMU_WDTPCR, BIT(1)= , 0); =20 -CCU_FACTOR_GATE_DEFINE(i2s_sysclk, CCU_PARENT_HW(pll1_d16_153p6), MPMU_ISC= CR, BIT(31), 50, 1); -CCU_FACTOR_GATE_DEFINE(i2s_bclk, CCU_PARENT_HW(i2s_sysclk), MPMU_ISCCR, BI= T(29), 1, 1); +CCU_FACTOR_DEFINE(i2s_153p6, CCU_PARENT_HW(pll1_d8_307p2), 2, 1); + +static const struct clk_parent_data i2s_153p6_base_parents[] =3D { + CCU_PARENT_HW(i2s_153p6), + CCU_PARENT_HW(pll1_d8_307p2), +}; +CCU_MUX_DEFINE(i2s_153p6_base, i2s_153p6_base_parents, MPMU_FCCR, 29, 1, 0= ); + +static const struct clk_parent_data i2s_sysclk_src_parents[] =3D { + CCU_PARENT_HW(pll1_d96_25p6), + CCU_PARENT_HW(i2s_153p6_base) +}; +CCU_MUX_GATE_DEFINE(i2s_sysclk_src, i2s_sysclk_src_parents, MPMU_ISCCR, 30= , 1, BIT(31), 0); + +CCU_DDN_DEFINE(i2s_sysclk, i2s_sysclk_src, MPMU_ISCCR, 0, 15, 15, 12, 1, 0= ); + +CCU_FACTOR_DEFINE(i2s_bclk_factor, CCU_PARENT_HW(i2s_sysclk), 2, 1); +/* + * Divider of i2s_bclk always implies a 1/2 factor, which is + * described by i2s_bclk_factor. + */ +CCU_DIV_GATE_DEFINE(i2s_bclk, CCU_PARENT_HW(i2s_bclk_factor), MPMU_ISCCR, = 27, 2, BIT(29), 0); =20 static const struct clk_parent_data apb_parents[] =3D { CCU_PARENT_HW(pll1_d96_25p6), @@ -756,6 +776,10 @@ static struct clk_hw *k1_ccu_mpmu_hws[] =3D { [CLK_I2S_BCLK] =3D &i2s_bclk.common.hw, [CLK_APB] =3D &apb_clk.common.hw, [CLK_WDT_BUS] =3D &wdt_bus_clk.common.hw, + [CLK_I2S_153P6] =3D &i2s_153p6.common.hw, + [CLK_I2S_153P6_BASE] =3D &i2s_153p6_base.common.hw, + [CLK_I2S_SYSCLK_SRC] =3D &i2s_sysclk_src.common.hw, + [CLK_I2S_BCLK_FACTOR] =3D &i2s_bclk_factor.common.hw, }; =20 static const struct spacemit_ccu_data k1_ccu_mpmu_data =3D { diff --git a/include/soc/spacemit/k1-syscon.h b/include/soc/spacemit/k1-sys= con.h index c59bd7a38e5b4219121341b9c0d9ffda13a9c3e2..354751562c55523ef8a22be931d= dd8aca9651084 100644 --- a/include/soc/spacemit/k1-syscon.h +++ b/include/soc/spacemit/k1-syscon.h @@ -30,6 +30,7 @@ to_spacemit_ccu_adev(struct auxiliary_device *adev) =20 /* MPMU register offset */ #define MPMU_POSR 0x0010 +#define MPMU_FCCR 0x0008 #define POSR_PLL1_LOCK BIT(27) #define POSR_PLL2_LOCK BIT(28) #define POSR_PLL3_LOCK BIT(29) --=20 2.51.0