devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581
@ 2024-11-12  0:08 Lorenzo Bianconi
  2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Map all clock-controller memory region in a single block for EN7581 SoC.
Introduce chip_scu regmap pointer since EN7581 SoC will access chip-scu
memory area through a syscon node.
REG_PCIE*_MEM and REG_PCIE*_MEM_MASK registers (PBUS_CSR) are not
part of the scu block on the EN7581 SoC and they are used to select the
PCIE ports on the PBUS, so configure them via in the PCIE host driver.
This series does not introduce any backward incompatibility since the
dts for EN7581 SoC is not upstream yet.

---
Changes in v2:
- fix smatch warnings in en7581_register_clocks()
- fix dt-bindings for EN7581 clock
- move REG_PCIE*_MEM and REG_PCIE*_MEM_MASK register configuration in
  the PCIE host driver
- Link to v1: https://lore.kernel.org/r/20240831-clk-en7581-syscon-v1-0-5c2683541068@kernel.org

---
Lorenzo Bianconi (7):
      dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC.
      clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration
      clk: en7523: move clock_register in hw_init callback
      clk: en7523: introduce chip_scu regmap
      clk: en7523: fix estimation of fixed rate for EN7581
      clk: en7523: move en7581_reset_register() in en7581_clk_hw_init()
      clk: en7523: map io region in a single block

 .../bindings/clock/airoha,en7523-scu.yaml          |  23 +-
 drivers/clk/clk-en7523.c                           | 309 ++++++++++++++-------
 2 files changed, 217 insertions(+), 115 deletions(-)
---
base-commit: f0e992956eb617c8f16119944bfe101dea074147
change-id: 20240823-clk-en7581-syscon-100c6ea60c50
prerequisite-change-id: 20240705-for-6-11-bpf-a349efc08df8:v2

Best regards,
-- 
Lorenzo Bianconi <lorenzo@kernel.org>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC.
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-12 16:41   ` Rob Herring (Arm)
  2024-11-14 21:01   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration Lorenzo Bianconi
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

clk-en7523 driver for EN7581 SoC is mapping all the scu memory region
while it is configuring the chip-scu one via a syscon. Update the reg
mapping definition for this device. This patch does not introduce any
backward incompatibility since the dts for EN7581 SoC is not upstream
yet.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 .../bindings/clock/airoha,en7523-scu.yaml          | 23 ++++++++--------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
index 84353fd09428f4c9af6a1e39c04b5abdee602a55..fe2c5c1baf4332984369fdf0271a95fce7ee5f85 100644
--- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
+++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
@@ -34,8 +34,10 @@ properties:
           - airoha,en7581-scu
 
   reg:
-    minItems: 2
-    maxItems: 4
+    items:
+      - description: scu base address
+      - description: misc scu base address
+    minItems: 1
 
   "#clock-cells":
     description:
@@ -60,9 +62,7 @@ allOf:
     then:
       properties:
         reg:
-          items:
-            - description: scu base address
-            - description: misc scu base address
+          minItems: 2
 
         '#reset-cells': false
 
@@ -73,11 +73,7 @@ allOf:
     then:
       properties:
         reg:
-          items:
-            - description: scu base address
-            - description: misc scu base address
-            - description: reset base address
-            - description: pb scu base address
+          maxItems: 1
 
 additionalProperties: false
 
@@ -96,12 +92,9 @@ examples:
       #address-cells = <2>;
       #size-cells = <2>;
 
-      scuclk: clock-controller@1fa20000 {
+      scuclk: clock-controller@1fb00000 {
         compatible = "airoha,en7581-scu";
-        reg = <0x0 0x1fa20000 0x0 0x400>,
-              <0x0 0x1fb00000 0x0 0x90>,
-              <0x0 0x1fb00830 0x0 0x8>,
-              <0x0 0x1fbe3400 0x0 0xfc>;
+        reg = <0x0 0x1fb00000 0x0 0x970>;
               #clock-cells = <1>;
               #reset-cells = <1>;
       };

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
  2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:01   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback Lorenzo Bianconi
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

REG_PCIE*_MEM and REG_PCIE*_MEM_MASK regs (PBUS_CSR memory region) are not
part of the scu block on the EN7581 SoC and they are used to select the
PCIE ports on the PBUS, so remove this configuration from the clock driver
and set these registers in the PCIE host driver instead.
This patch does not introduce any backward incompatibility since the dts
for EN7581 SoC is not upstream yet.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 18 ------------------
 1 file changed, 18 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 22fbea61c3dcc05e63f8fa37e203c62b2a6fe79e..ec6716844fdcf7fc25482c6e587d062279360675 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -31,12 +31,6 @@
 #define   REG_RESET_CONTROL_PCIE1	BIT(27)
 #define   REG_RESET_CONTROL_PCIE2	BIT(26)
 /* EN7581 */
-#define REG_PCIE0_MEM			0x00
-#define REG_PCIE0_MEM_MASK		0x04
-#define REG_PCIE1_MEM			0x08
-#define REG_PCIE1_MEM_MASK		0x0c
-#define REG_PCIE2_MEM			0x10
-#define REG_PCIE2_MEM_MASK		0x14
 #define REG_NP_SCU_PCIC			0x88
 #define REG_NP_SCU_SSTR			0x9c
 #define REG_PCIE_XSI0_SEL_MASK		GENMASK(14, 13)
@@ -415,26 +409,14 @@ static void en7581_pci_disable(struct clk_hw *hw)
 static int en7581_clk_hw_init(struct platform_device *pdev,
 			      void __iomem *np_base)
 {
-	void __iomem *pb_base;
 	u32 val;
 
-	pb_base = devm_platform_ioremap_resource(pdev, 3);
-	if (IS_ERR(pb_base))
-		return PTR_ERR(pb_base);
-
 	val = readl(np_base + REG_NP_SCU_SSTR);
 	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
 	writel(val, np_base + REG_NP_SCU_SSTR);
 	val = readl(np_base + REG_NP_SCU_PCIC);
 	writel(val | 3, np_base + REG_NP_SCU_PCIC);
 
-	writel(0x20000000, pb_base + REG_PCIE0_MEM);
-	writel(0xfc000000, pb_base + REG_PCIE0_MEM_MASK);
-	writel(0x24000000, pb_base + REG_PCIE1_MEM);
-	writel(0xfc000000, pb_base + REG_PCIE1_MEM_MASK);
-	writel(0x28000000, pb_base + REG_PCIE2_MEM);
-	writel(0xfc000000, pb_base + REG_PCIE2_MEM_MASK);
-
 	return 0;
 }
 

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
  2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
  2024-11-12  0:08 ` [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:01   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap Lorenzo Bianconi
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Move en7523_register_clocks routine in hw_init callback.
Introduce en7523_clk_hw_init callback for EN7523 SoC.
This is a preliminary patch to differentiate IO mapped region between
EN7523 and EN7581 SoCs in order to access chip-scu IO region
<0x1fa20000 0x384> on EN7581 SoC as syscon device since it contains
miscellaneous registers needed by multiple devices (clock, pinctrl ..).

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 82 +++++++++++++++++++++++++++++-------------------
 1 file changed, 50 insertions(+), 32 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index ec6716844fdcf7fc25482c6e587d062279360675..da112c9fe8ef94e830449a64f54e77885b7dda83 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -78,7 +78,8 @@ struct en_clk_soc_data {
 		const u16 *idx_map;
 		u16 idx_map_nr;
 	} reset;
-	int (*hw_init)(struct platform_device *pdev, void __iomem *np_base);
+	int (*hw_init)(struct platform_device *pdev,
+		       struct clk_hw_onecell_data *clk_data);
 };
 
 static const u32 gsw_base[] = { 400000000, 500000000 };
@@ -406,20 +407,6 @@ static void en7581_pci_disable(struct clk_hw *hw)
 	usleep_range(1000, 2000);
 }
 
-static int en7581_clk_hw_init(struct platform_device *pdev,
-			      void __iomem *np_base)
-{
-	u32 val;
-
-	val = readl(np_base + REG_NP_SCU_SSTR);
-	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
-	writel(val, np_base + REG_NP_SCU_SSTR);
-	val = readl(np_base + REG_NP_SCU_PCIC);
-	writel(val | 3, np_base + REG_NP_SCU_PCIC);
-
-	return 0;
-}
-
 static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_data *clk_data,
 				   void __iomem *base, void __iomem *np_base)
 {
@@ -449,6 +436,49 @@ static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_dat
 	clk_data->num = EN7523_NUM_CLOCKS;
 }
 
+static int en7523_clk_hw_init(struct platform_device *pdev,
+			      struct clk_hw_onecell_data *clk_data)
+{
+	void __iomem *base, *np_base;
+
+	base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
+
+	np_base = devm_platform_ioremap_resource(pdev, 1);
+	if (IS_ERR(np_base))
+		return PTR_ERR(np_base);
+
+	en7523_register_clocks(&pdev->dev, clk_data, base, np_base);
+
+	return 0;
+}
+
+static int en7581_clk_hw_init(struct platform_device *pdev,
+			      struct clk_hw_onecell_data *clk_data)
+{
+	void __iomem *base, *np_base;
+	u32 val;
+
+	base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
+
+	np_base = devm_platform_ioremap_resource(pdev, 1);
+	if (IS_ERR(np_base))
+		return PTR_ERR(np_base);
+
+	en7523_register_clocks(&pdev->dev, clk_data, base, np_base);
+
+	val = readl(np_base + REG_NP_SCU_SSTR);
+	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
+	writel(val, np_base + REG_NP_SCU_SSTR);
+	val = readl(np_base + REG_NP_SCU_PCIC);
+	writel(val | 3, np_base + REG_NP_SCU_PCIC);
+
+	return 0;
+}
+
 static int en7523_reset_update(struct reset_controller_dev *rcdev,
 			       unsigned long id, bool assert)
 {
@@ -543,31 +573,18 @@ static int en7523_clk_probe(struct platform_device *pdev)
 	struct device_node *node = pdev->dev.of_node;
 	const struct en_clk_soc_data *soc_data;
 	struct clk_hw_onecell_data *clk_data;
-	void __iomem *base, *np_base;
 	int r;
 
-	base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
-
-	np_base = devm_platform_ioremap_resource(pdev, 1);
-	if (IS_ERR(np_base))
-		return PTR_ERR(np_base);
-
-	soc_data = device_get_match_data(&pdev->dev);
-	if (soc_data->hw_init) {
-		r = soc_data->hw_init(pdev, np_base);
-		if (r)
-			return r;
-	}
-
 	clk_data = devm_kzalloc(&pdev->dev,
 				struct_size(clk_data, hws, EN7523_NUM_CLOCKS),
 				GFP_KERNEL);
 	if (!clk_data)
 		return -ENOMEM;
 
-	en7523_register_clocks(&pdev->dev, clk_data, base, np_base);
+	soc_data = device_get_match_data(&pdev->dev);
+	r = soc_data->hw_init(pdev, clk_data);
+	if (r)
+		return r;
 
 	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 	if (r)
@@ -590,6 +607,7 @@ static const struct en_clk_soc_data en7523_data = {
 		.prepare = en7523_pci_prepare,
 		.unprepare = en7523_pci_unprepare,
 	},
+	.hw_init = en7523_clk_hw_init,
 };
 
 static const struct en_clk_soc_data en7581_data = {

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
                   ` (2 preceding siblings ...)
  2024-11-12  0:08 ` [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:01   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581 Lorenzo Bianconi
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Introduce chip_scu regmap pointer since EN7581 SoC will access chip-scu
memory area via a syscon node. Remove first memory region mapping
for EN7581 SoC. This patch does not introduce any backward incompatibility
since the dts for EN7581 SoC is not upstream yet.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 81 ++++++++++++++++++++++++++++++++++++------------
 1 file changed, 61 insertions(+), 20 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index da112c9fe8ef94e830449a64f54e77885b7dda83..7f83cbce01eeb852597d3f0bea11255aa78572c1 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -3,8 +3,10 @@
 #include <linux/delay.h>
 #include <linux/clk-provider.h>
 #include <linux/io.h>
+#include <linux/mfd/syscon.h>
 #include <linux/platform_device.h>
 #include <linux/property.h>
+#include <linux/regmap.h>
 #include <linux/reset-controller.h>
 #include <dt-bindings/clock/en7523-clk.h>
 #include <dt-bindings/reset/airoha,en7581-reset.h>
@@ -247,15 +249,11 @@ static const u16 en7581_rst_map[] = {
 	[EN7581_XPON_MAC_RST]		= RST_NR_PER_BANK + 31,
 };
 
-static unsigned int en7523_get_base_rate(void __iomem *base, unsigned int i)
+static u32 en7523_get_base_rate(const struct en_clk_desc *desc, u32 val)
 {
-	const struct en_clk_desc *desc = &en7523_base_clks[i];
-	u32 val;
-
 	if (!desc->base_bits)
 		return desc->base_value;
 
-	val = readl(base + desc->base_reg);
 	val >>= desc->base_shift;
 	val &= (1 << desc->base_bits) - 1;
 
@@ -265,16 +263,11 @@ static unsigned int en7523_get_base_rate(void __iomem *base, unsigned int i)
 	return desc->base_values[val];
 }
 
-static u32 en7523_get_div(void __iomem *base, int i)
+static u32 en7523_get_div(const struct en_clk_desc *desc, u32 val)
 {
-	const struct en_clk_desc *desc = &en7523_base_clks[i];
-	u32 reg, val;
-
 	if (!desc->div_bits)
 		return 1;
 
-	reg = desc->div_reg ? desc->div_reg : desc->base_reg;
-	val = readl(base + reg);
 	val >>= desc->div_shift;
 	val &= (1 << desc->div_bits) - 1;
 
@@ -416,9 +409,12 @@ static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_dat
 
 	for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
 		const struct en_clk_desc *desc = &en7523_base_clks[i];
+		u32 reg = desc->div_reg ? desc->div_reg : desc->base_reg;
+		u32 val = readl(base + desc->base_reg);
 
-		rate = en7523_get_base_rate(base, i);
-		rate /= en7523_get_div(base, i);
+		rate = en7523_get_base_rate(desc, val);
+		val = readl(base + reg);
+		rate /= en7523_get_div(desc, val);
 
 		hw = clk_hw_register_fixed_rate(dev, desc->name, NULL, 0, rate);
 		if (IS_ERR(hw)) {
@@ -454,21 +450,66 @@ static int en7523_clk_hw_init(struct platform_device *pdev,
 	return 0;
 }
 
+static void en7581_register_clocks(struct device *dev, struct clk_hw_onecell_data *clk_data,
+				   struct regmap *map, void __iomem *base)
+{
+	struct clk_hw *hw;
+	u32 rate;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
+		const struct en_clk_desc *desc = &en7523_base_clks[i];
+		u32 val, reg = desc->div_reg ? desc->div_reg : desc->base_reg;
+		int err;
+
+		err = regmap_read(map, desc->base_reg, &val);
+		if (err) {
+			pr_err("Failed reading fixed clk rate %s: %d\n",
+			       desc->name, err);
+			continue;
+		}
+		rate = en7523_get_base_rate(desc, val);
+
+		err = regmap_read(map, reg, &val);
+		if (err) {
+			pr_err("Failed reading fixed clk div %s: %d\n",
+			       desc->name, err);
+			continue;
+		}
+		rate /= en7523_get_div(desc, val);
+
+		hw = clk_hw_register_fixed_rate(dev, desc->name, NULL, 0, rate);
+		if (IS_ERR(hw)) {
+			pr_err("Failed to register clk %s: %ld\n",
+			       desc->name, PTR_ERR(hw));
+			continue;
+		}
+
+		clk_data->hws[desc->id] = hw;
+	}
+
+	hw = en7523_register_pcie_clk(dev, base);
+	clk_data->hws[EN7523_CLK_PCIE] = hw;
+
+	clk_data->num = EN7523_NUM_CLOCKS;
+}
+
 static int en7581_clk_hw_init(struct platform_device *pdev,
 			      struct clk_hw_onecell_data *clk_data)
 {
-	void __iomem *base, *np_base;
+	void __iomem *np_base;
+	struct regmap *map;
 	u32 val;
 
-	base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
+	map = syscon_regmap_lookup_by_compatible("airoha,en7581-chip-scu");
+	if (IS_ERR(map))
+		return PTR_ERR(map);
 
-	np_base = devm_platform_ioremap_resource(pdev, 1);
+	np_base = devm_platform_ioremap_resource(pdev, 0);
 	if (IS_ERR(np_base))
 		return PTR_ERR(np_base);
 
-	en7523_register_clocks(&pdev->dev, clk_data, base, np_base);
+	en7581_register_clocks(&pdev->dev, clk_data, map, np_base);
 
 	val = readl(np_base + REG_NP_SCU_SSTR);
 	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
@@ -545,7 +586,7 @@ static int en7523_reset_register(struct platform_device *pdev,
 	if (!soc_data->reset.idx_map_nr)
 		return 0;
 
-	base = devm_platform_ioremap_resource(pdev, 2);
+	base = devm_platform_ioremap_resource(pdev, 1);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
                   ` (3 preceding siblings ...)
  2024-11-12  0:08 ` [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:02   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init() Lorenzo Bianconi
  2024-11-12  0:08 ` [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block Lorenzo Bianconi
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Introduce en7581_base_clks array in order to define per-SoC fixed-rate
clock parameters and fix wrong parameters for emi, npu and crypto EN7581
clocks

Fixes: 66bc47326ce2 ("clk: en7523: Add EN7581 support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 103 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 7f83cbce01eeb852597d3f0bea11255aa78572c1..fdd8ea989ed24a5967a42091bb3fee59500b4353 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -37,6 +37,7 @@
 #define REG_NP_SCU_SSTR			0x9c
 #define REG_PCIE_XSI0_SEL_MASK		GENMASK(14, 13)
 #define REG_PCIE_XSI1_SEL_MASK		GENMASK(12, 11)
+#define REG_CRYPTO_CLKSRC2		0x20c
 
 #define REG_RST_CTRL2			0x00
 #define REG_RST_CTRL1			0x04
@@ -89,6 +90,10 @@ static const u32 emi_base[] = { 333000000, 400000000 };
 static const u32 bus_base[] = { 500000000, 540000000 };
 static const u32 slic_base[] = { 100000000, 3125000 };
 static const u32 npu_base[] = { 333000000, 400000000, 500000000 };
+/* EN7581 */
+static const u32 emi7581_base[] = { 540000000, 480000000, 400000000, 300000000 };
+static const u32 npu7581_base[] = { 800000000, 750000000, 720000000, 600000000 };
+static const u32 crypto_base[] = { 540000000, 480000000 };
 
 static const struct en_clk_desc en7523_base_clks[] = {
 	{
@@ -186,6 +191,102 @@ static const struct en_clk_desc en7523_base_clks[] = {
 	}
 };
 
+static const struct en_clk_desc en7581_base_clks[] = {
+	{
+		.id = EN7523_CLK_GSW,
+		.name = "gsw",
+
+		.base_reg = REG_GSW_CLK_DIV_SEL,
+		.base_bits = 1,
+		.base_shift = 8,
+		.base_values = gsw_base,
+		.n_base_values = ARRAY_SIZE(gsw_base),
+
+		.div_bits = 3,
+		.div_shift = 0,
+		.div_step = 1,
+		.div_offset = 1,
+	}, {
+		.id = EN7523_CLK_EMI,
+		.name = "emi",
+
+		.base_reg = REG_EMI_CLK_DIV_SEL,
+		.base_bits = 2,
+		.base_shift = 8,
+		.base_values = emi7581_base,
+		.n_base_values = ARRAY_SIZE(emi7581_base),
+
+		.div_bits = 3,
+		.div_shift = 0,
+		.div_step = 1,
+		.div_offset = 1,
+	}, {
+		.id = EN7523_CLK_BUS,
+		.name = "bus",
+
+		.base_reg = REG_BUS_CLK_DIV_SEL,
+		.base_bits = 1,
+		.base_shift = 8,
+		.base_values = bus_base,
+		.n_base_values = ARRAY_SIZE(bus_base),
+
+		.div_bits = 3,
+		.div_shift = 0,
+		.div_step = 1,
+		.div_offset = 1,
+	}, {
+		.id = EN7523_CLK_SLIC,
+		.name = "slic",
+
+		.base_reg = REG_SPI_CLK_FREQ_SEL,
+		.base_bits = 1,
+		.base_shift = 0,
+		.base_values = slic_base,
+		.n_base_values = ARRAY_SIZE(slic_base),
+
+		.div_reg = REG_SPI_CLK_DIV_SEL,
+		.div_bits = 5,
+		.div_shift = 24,
+		.div_val0 = 20,
+		.div_step = 2,
+	}, {
+		.id = EN7523_CLK_SPI,
+		.name = "spi",
+
+		.base_reg = REG_SPI_CLK_DIV_SEL,
+
+		.base_value = 400000000,
+
+		.div_bits = 5,
+		.div_shift = 8,
+		.div_val0 = 40,
+		.div_step = 2,
+	}, {
+		.id = EN7523_CLK_NPU,
+		.name = "npu",
+
+		.base_reg = REG_NPU_CLK_DIV_SEL,
+		.base_bits = 2,
+		.base_shift = 8,
+		.base_values = npu7581_base,
+		.n_base_values = ARRAY_SIZE(npu7581_base),
+
+		.div_bits = 3,
+		.div_shift = 0,
+		.div_step = 1,
+		.div_offset = 1,
+	}, {
+		.id = EN7523_CLK_CRYPTO,
+		.name = "crypto",
+
+		.base_reg = REG_CRYPTO_CLKSRC2,
+		.base_bits = 1,
+		.base_shift = 0,
+		.base_values = crypto_base,
+		.n_base_values = ARRAY_SIZE(crypto_base),
+	}
+};
+
 static const u16 en7581_rst_ofs[] = {
 	REG_RST_CTRL2,
 	REG_RST_CTRL1,
@@ -457,8 +558,8 @@ static void en7581_register_clocks(struct device *dev, struct clk_hw_onecell_dat
 	u32 rate;
 	int i;
 
-	for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
-		const struct en_clk_desc *desc = &en7523_base_clks[i];
+	for (i = 0; i < ARRAY_SIZE(en7581_base_clks); i++) {
+		const struct en_clk_desc *desc = &en7581_base_clks[i];
 		u32 val, reg = desc->div_reg ? desc->div_reg : desc->base_reg;
 		int err;
 

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init()
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
                   ` (4 preceding siblings ...)
  2024-11-12  0:08 ` [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581 Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:02   ` Stephen Boyd
  2024-11-12  0:08 ` [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block Lorenzo Bianconi
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Move en7581_reset_register routine in en7581_clk_hw_init() since reset
feature is supported just by EN7581 SoC.
Get rid of reset struct in en_clk_soc_data data struct.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 93 +++++++++++++++++-------------------------------
 1 file changed, 33 insertions(+), 60 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index fdd8ea989ed24a5967a42091bb3fee59500b4353..60dc938144d75b5fa21c9109ff05ed1083a16678 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -76,11 +76,6 @@ struct en_rst_data {
 
 struct en_clk_soc_data {
 	const struct clk_ops pcie_ops;
-	struct {
-		const u16 *bank_ofs;
-		const u16 *idx_map;
-		u16 idx_map_nr;
-	} reset;
 	int (*hw_init)(struct platform_device *pdev,
 		       struct clk_hw_onecell_data *clk_data);
 };
@@ -595,32 +590,6 @@ static void en7581_register_clocks(struct device *dev, struct clk_hw_onecell_dat
 	clk_data->num = EN7523_NUM_CLOCKS;
 }
 
-static int en7581_clk_hw_init(struct platform_device *pdev,
-			      struct clk_hw_onecell_data *clk_data)
-{
-	void __iomem *np_base;
-	struct regmap *map;
-	u32 val;
-
-	map = syscon_regmap_lookup_by_compatible("airoha,en7581-chip-scu");
-	if (IS_ERR(map))
-		return PTR_ERR(map);
-
-	np_base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(np_base))
-		return PTR_ERR(np_base);
-
-	en7581_register_clocks(&pdev->dev, clk_data, map, np_base);
-
-	val = readl(np_base + REG_NP_SCU_SSTR);
-	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
-	writel(val, np_base + REG_NP_SCU_SSTR);
-	val = readl(np_base + REG_NP_SCU_PCIC);
-	writel(val | 3, np_base + REG_NP_SCU_PCIC);
-
-	return 0;
-}
-
 static int en7523_reset_update(struct reset_controller_dev *rcdev,
 			       unsigned long id, bool assert)
 {
@@ -670,23 +639,18 @@ static int en7523_reset_xlate(struct reset_controller_dev *rcdev,
 	return rst_data->idx_map[reset_spec->args[0]];
 }
 
-static const struct reset_control_ops en7523_reset_ops = {
+static const struct reset_control_ops en7581_reset_ops = {
 	.assert = en7523_reset_assert,
 	.deassert = en7523_reset_deassert,
 	.status = en7523_reset_status,
 };
 
-static int en7523_reset_register(struct platform_device *pdev,
-				 const struct en_clk_soc_data *soc_data)
+static int en7581_reset_register(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 	struct en_rst_data *rst_data;
 	void __iomem *base;
 
-	/* no reset lines available */
-	if (!soc_data->reset.idx_map_nr)
-		return 0;
-
 	base = devm_platform_ioremap_resource(pdev, 1);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
@@ -695,13 +659,13 @@ static int en7523_reset_register(struct platform_device *pdev,
 	if (!rst_data)
 		return -ENOMEM;
 
-	rst_data->bank_ofs = soc_data->reset.bank_ofs;
-	rst_data->idx_map = soc_data->reset.idx_map;
+	rst_data->bank_ofs = en7581_rst_ofs;
+	rst_data->idx_map = en7581_rst_map;
 	rst_data->base = base;
 
-	rst_data->rcdev.nr_resets = soc_data->reset.idx_map_nr;
+	rst_data->rcdev.nr_resets = ARRAY_SIZE(en7581_rst_map);
 	rst_data->rcdev.of_xlate = en7523_reset_xlate;
-	rst_data->rcdev.ops = &en7523_reset_ops;
+	rst_data->rcdev.ops = &en7581_reset_ops;
 	rst_data->rcdev.of_node = dev->of_node;
 	rst_data->rcdev.of_reset_n_cells = 1;
 	rst_data->rcdev.owner = THIS_MODULE;
@@ -710,6 +674,32 @@ static int en7523_reset_register(struct platform_device *pdev,
 	return devm_reset_controller_register(dev, &rst_data->rcdev);
 }
 
+static int en7581_clk_hw_init(struct platform_device *pdev,
+			      struct clk_hw_onecell_data *clk_data)
+{
+	void __iomem *np_base;
+	struct regmap *map;
+	u32 val;
+
+	map = syscon_regmap_lookup_by_compatible("airoha,en7581-chip-scu");
+	if (IS_ERR(map))
+		return PTR_ERR(map);
+
+	np_base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(np_base))
+		return PTR_ERR(np_base);
+
+	en7581_register_clocks(&pdev->dev, clk_data, map, np_base);
+
+	val = readl(np_base + REG_NP_SCU_SSTR);
+	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
+	writel(val, np_base + REG_NP_SCU_SSTR);
+	val = readl(np_base + REG_NP_SCU_PCIC);
+	writel(val | 3, np_base + REG_NP_SCU_PCIC);
+
+	return en7581_reset_register(pdev);
+}
+
 static int en7523_clk_probe(struct platform_device *pdev)
 {
 	struct device_node *node = pdev->dev.of_node;
@@ -728,19 +718,7 @@ static int en7523_clk_probe(struct platform_device *pdev)
 	if (r)
 		return r;
 
-	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
-	if (r)
-		return dev_err_probe(&pdev->dev, r, "Could not register clock provider: %s\n",
-				     pdev->name);
-
-	r = en7523_reset_register(pdev, soc_data);
-	if (r) {
-		of_clk_del_provider(node);
-		return dev_err_probe(&pdev->dev, r, "Could not register reset controller: %s\n",
-				     pdev->name);
-	}
-
-	return 0;
+	return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 }
 
 static const struct en_clk_soc_data en7523_data = {
@@ -758,11 +736,6 @@ static const struct en_clk_soc_data en7581_data = {
 		.enable = en7581_pci_enable,
 		.disable = en7581_pci_disable,
 	},
-	.reset = {
-		.bank_ofs = en7581_rst_ofs,
-		.idx_map = en7581_rst_map,
-		.idx_map_nr = ARRAY_SIZE(en7581_rst_map),
-	},
 	.hw_init = en7581_clk_hw_init,
 };
 

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block
  2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
                   ` (5 preceding siblings ...)
  2024-11-12  0:08 ` [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init() Lorenzo Bianconi
@ 2024-11-12  0:08 ` Lorenzo Bianconi
  2024-11-14 21:02   ` Stephen Boyd
  6 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Bianconi @ 2024-11-12  0:08 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Felix Fietkau, Philipp Zabel
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Map all clock-controller memory region in a single block.
This patch does not introduce any backward incompatibility since the dts
for EN7581 SoC is not upstream yet.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/clk/clk-en7523.c | 32 +++++++++++++-------------------
 1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 60dc938144d75b5fa21c9109ff05ed1083a16678..e52c5460e927f54c6df152c60560f438f89ec928 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -39,8 +39,8 @@
 #define REG_PCIE_XSI1_SEL_MASK		GENMASK(12, 11)
 #define REG_CRYPTO_CLKSRC2		0x20c
 
-#define REG_RST_CTRL2			0x00
-#define REG_RST_CTRL1			0x04
+#define REG_RST_CTRL2			0x830
+#define REG_RST_CTRL1			0x834
 
 struct en_clk_desc {
 	int id;
@@ -645,15 +645,9 @@ static const struct reset_control_ops en7581_reset_ops = {
 	.status = en7523_reset_status,
 };
 
-static int en7581_reset_register(struct platform_device *pdev)
+static int en7581_reset_register(struct device *dev, void __iomem *base)
 {
-	struct device *dev = &pdev->dev;
 	struct en_rst_data *rst_data;
-	void __iomem *base;
-
-	base = devm_platform_ioremap_resource(pdev, 1);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
 
 	rst_data = devm_kzalloc(dev, sizeof(*rst_data), GFP_KERNEL);
 	if (!rst_data)
@@ -677,27 +671,27 @@ static int en7581_reset_register(struct platform_device *pdev)
 static int en7581_clk_hw_init(struct platform_device *pdev,
 			      struct clk_hw_onecell_data *clk_data)
 {
-	void __iomem *np_base;
 	struct regmap *map;
+	void __iomem *base;
 	u32 val;
 
 	map = syscon_regmap_lookup_by_compatible("airoha,en7581-chip-scu");
 	if (IS_ERR(map))
 		return PTR_ERR(map);
 
-	np_base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(np_base))
-		return PTR_ERR(np_base);
+	base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
 
-	en7581_register_clocks(&pdev->dev, clk_data, map, np_base);
+	en7581_register_clocks(&pdev->dev, clk_data, map, base);
 
-	val = readl(np_base + REG_NP_SCU_SSTR);
+	val = readl(base + REG_NP_SCU_SSTR);
 	val &= ~(REG_PCIE_XSI0_SEL_MASK | REG_PCIE_XSI1_SEL_MASK);
-	writel(val, np_base + REG_NP_SCU_SSTR);
-	val = readl(np_base + REG_NP_SCU_PCIC);
-	writel(val | 3, np_base + REG_NP_SCU_PCIC);
+	writel(val, base + REG_NP_SCU_SSTR);
+	val = readl(base + REG_NP_SCU_PCIC);
+	writel(val | 3, base + REG_NP_SCU_PCIC);
 
-	return en7581_reset_register(pdev);
+	return en7581_reset_register(&pdev->dev, base);
 }
 
 static int en7523_clk_probe(struct platform_device *pdev)

-- 
2.47.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC.
  2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
@ 2024-11-12 16:41   ` Rob Herring (Arm)
  2024-11-14 21:01   ` Stephen Boyd
  1 sibling, 0 replies; 16+ messages in thread
From: Rob Herring (Arm) @ 2024-11-12 16:41 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: Stephen Boyd, upstream, Michael Turquette, linux-arm-kernel,
	Conor Dooley, devicetree, Felix Fietkau, ansuelsmth,
	angelogioacchino.delregno, lorenzo.bianconi83, Philipp Zabel,
	Krzysztof Kozlowski, linux-clk


On Tue, 12 Nov 2024 01:08:48 +0100, Lorenzo Bianconi wrote:
> clk-en7523 driver for EN7581 SoC is mapping all the scu memory region
> while it is configuring the chip-scu one via a syscon. Update the reg
> mapping definition for this device. This patch does not introduce any
> backward incompatibility since the dts for EN7581 SoC is not upstream
> yet.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
>  .../bindings/clock/airoha,en7523-scu.yaml          | 23 ++++++++--------------
>  1 file changed, 8 insertions(+), 15 deletions(-)
> 

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC.
  2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
  2024-11-12 16:41   ` Rob Herring (Arm)
@ 2024-11-14 21:01   ` Stephen Boyd
  1 sibling, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:01 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:48)
> clk-en7523 driver for EN7581 SoC is mapping all the scu memory region
> while it is configuring the chip-scu one via a syscon. Update the reg
> mapping definition for this device. This patch does not introduce any
> backward incompatibility since the dts for EN7581 SoC is not upstream
> yet.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration
  2024-11-12  0:08 ` [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration Lorenzo Bianconi
@ 2024-11-14 21:01   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:01 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:49)
> REG_PCIE*_MEM and REG_PCIE*_MEM_MASK regs (PBUS_CSR memory region) are not
> part of the scu block on the EN7581 SoC and they are used to select the
> PCIE ports on the PBUS, so remove this configuration from the clock driver
> and set these registers in the PCIE host driver instead.
> This patch does not introduce any backward incompatibility since the dts
> for EN7581 SoC is not upstream yet.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback
  2024-11-12  0:08 ` [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback Lorenzo Bianconi
@ 2024-11-14 21:01   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:01 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:50)
> Move en7523_register_clocks routine in hw_init callback.
> Introduce en7523_clk_hw_init callback for EN7523 SoC.
> This is a preliminary patch to differentiate IO mapped region between
> EN7523 and EN7581 SoCs in order to access chip-scu IO region
> <0x1fa20000 0x384> on EN7581 SoC as syscon device since it contains
> miscellaneous registers needed by multiple devices (clock, pinctrl ..).
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap
  2024-11-12  0:08 ` [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap Lorenzo Bianconi
@ 2024-11-14 21:01   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:01 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:51)
> Introduce chip_scu regmap pointer since EN7581 SoC will access chip-scu
> memory area via a syscon node. Remove first memory region mapping
> for EN7581 SoC. This patch does not introduce any backward incompatibility
> since the dts for EN7581 SoC is not upstream yet.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581
  2024-11-12  0:08 ` [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581 Lorenzo Bianconi
@ 2024-11-14 21:02   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:02 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:52)
> Introduce en7581_base_clks array in order to define per-SoC fixed-rate
> clock parameters and fix wrong parameters for emi, npu and crypto EN7581
> clocks
> 
> Fixes: 66bc47326ce2 ("clk: en7523: Add EN7581 support")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init()
  2024-11-12  0:08 ` [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init() Lorenzo Bianconi
@ 2024-11-14 21:02   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:02 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:53)
> Move en7581_reset_register routine in en7581_clk_hw_init() since reset
> feature is supported just by EN7581 SoC.
> Get rid of reset struct in en_clk_soc_data data struct.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block
  2024-11-12  0:08 ` [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block Lorenzo Bianconi
@ 2024-11-14 21:02   ` Stephen Boyd
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Boyd @ 2024-11-14 21:02 UTC (permalink / raw)
  To: Conor Dooley, Felix Fietkau, Krzysztof Kozlowski,
	Lorenzo Bianconi, Michael Turquette, Philipp Zabel, Rob Herring
  Cc: linux-clk, devicetree, upstream, angelogioacchino.delregno,
	linux-arm-kernel, lorenzo.bianconi83, ansuelsmth,
	Lorenzo Bianconi

Quoting Lorenzo Bianconi (2024-11-11 16:08:54)
> Map all clock-controller memory region in a single block.
> This patch does not introduce any backward incompatibility since the dts
> for EN7581 SoC is not upstream yet.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2024-11-14 21:02 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-12  0:08 [PATCH RESEND v2 0/7] clk: en7523: Update register mapping for EN7581 Lorenzo Bianconi
2024-11-12  0:08 ` [PATCH RESEND v2 1/7] dt-bindings: clock: airoha: Update reg mapping for EN7581 SoC Lorenzo Bianconi
2024-11-12 16:41   ` Rob Herring (Arm)
2024-11-14 21:01   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 2/7] clk: en7523: remove REG_PCIE*_{MEM,MEM_MASK} configuration Lorenzo Bianconi
2024-11-14 21:01   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 3/7] clk: en7523: move clock_register in hw_init callback Lorenzo Bianconi
2024-11-14 21:01   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 4/7] clk: en7523: introduce chip_scu regmap Lorenzo Bianconi
2024-11-14 21:01   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 5/7] clk: en7523: fix estimation of fixed rate for EN7581 Lorenzo Bianconi
2024-11-14 21:02   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 6/7] clk: en7523: move en7581_reset_register() in en7581_clk_hw_init() Lorenzo Bianconi
2024-11-14 21:02   ` Stephen Boyd
2024-11-12  0:08 ` [PATCH RESEND v2 7/7] clk: en7523: map io region in a single block Lorenzo Bianconi
2024-11-14 21:02   ` Stephen Boyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).