The Allwinner A23 SoC has a PRCM unit like the previous A31 SoC.
The differences are the AR100 clock can no longer be modified,
and the APB0 clock has different divisors.

This patch adds a compatible with a modified subdevice list for
the A23.

Signed-off-by: Chen-Yu Tsai <w...@csie.org>
---
 .../devicetree/bindings/mfd/sun6i-prcm.txt         |  2 +-
 drivers/mfd/sun6i-prcm.c                           | 30 ++++++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt 
b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt
index 1f5a31f..03c5a55 100644
--- a/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt
+++ b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt
@@ -4,7 +4,7 @@ PRCM is an MFD device exposing several Power Management related 
devices
 (like clks and reset controllers).
 
 Required properties:
- - compatible: "allwinner,sun6i-a31-prcm"
+ - compatible: "allwinner,sun6i-a31-prcm" or "allwinner,sun8i-a23-prcm"
  - reg: The PRCM registers range
 
 The prcm node may contain several subdevices definitions:
diff --git a/drivers/mfd/sun6i-prcm.c b/drivers/mfd/sun6i-prcm.c
index 718fc4d..c96bb6c 100644
--- a/drivers/mfd/sun6i-prcm.c
+++ b/drivers/mfd/sun6i-prcm.c
@@ -76,16 +76,46 @@ static const struct mfd_cell sun6i_a31_prcm_subdevs[] = {
        },
 };
 
+static const struct mfd_cell sun8i_a23_prcm_subdevs[] = {
+       {
+               .name = "sun6i-a31-apb0-clk",
+               .of_compatible = "allwinner,sun8i-a23-apb0-clk",
+               .num_resources = ARRAY_SIZE(sun6i_a31_apb0_clk_res),
+               .resources = sun6i_a31_apb0_clk_res,
+       },
+       {
+               .name = "sun6i-a31-apb0-gates-clk",
+               .of_compatible = "allwinner,sun6i-a31-apb0-gates-clk",
+               .num_resources = ARRAY_SIZE(sun6i_a31_apb0_gates_clk_res),
+               .resources = sun6i_a31_apb0_gates_clk_res,
+       },
+       {
+               .name = "sun6i-a31-apb0-clock-reset",
+               .of_compatible = "allwinner,sun6i-a31-clock-reset",
+               .num_resources = ARRAY_SIZE(sun6i_a31_apb0_rstc_res),
+               .resources = sun6i_a31_apb0_rstc_res,
+       },
+};
+
 static const struct prcm_data sun6i_a31_prcm_data = {
        .nsubdevs = ARRAY_SIZE(sun6i_a31_prcm_subdevs),
        .subdevs = sun6i_a31_prcm_subdevs,
 };
 
+static const struct prcm_data sun8i_a23_prcm_data = {
+       .nsubdevs = ARRAY_SIZE(sun8i_a23_prcm_subdevs),
+       .subdevs = sun8i_a23_prcm_subdevs,
+};
+
 static const struct of_device_id sun6i_prcm_dt_ids[] = {
        {
                .compatible = "allwinner,sun6i-a31-prcm",
                .data = &sun6i_a31_prcm_data,
        },
+       {
+               .compatible = "allwinner,sun8i-a23-prcm",
+               .data = &sun8i_a23_prcm_data,
+       },
        { /* sentinel */ },
 };
 
-- 
2.0.0.rc2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to