Commit 4eb9560b authored by Chen-Yu Tsai's avatar Chen-Yu Tsai Committed by Lee Jones

mfd: sun6i-prcm: Add support for Allwinner A23 PRCM

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

This patch adds a compatible with a modified subdevice list for
the A23.
Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
Acked-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 4362175d
...@@ -4,7 +4,7 @@ PRCM is an MFD device exposing several Power Management related devices ...@@ -4,7 +4,7 @@ PRCM is an MFD device exposing several Power Management related devices
(like clks and reset controllers). (like clks and reset controllers).
Required properties: Required properties:
- compatible: "allwinner,sun6i-a31-prcm" - compatible: "allwinner,sun6i-a31-prcm" or "allwinner,sun8i-a23-prcm"
- reg: The PRCM registers range - reg: The PRCM registers range
The prcm node may contain several subdevices definitions: The prcm node may contain several subdevices definitions:
......
...@@ -76,16 +76,46 @@ static const struct mfd_cell sun6i_a31_prcm_subdevs[] = { ...@@ -76,16 +76,46 @@ static const struct mfd_cell sun6i_a31_prcm_subdevs[] = {
}, },
}; };
static const struct mfd_cell sun8i_a23_prcm_subdevs[] = {
{
.name = "sun8i-a23-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,sun8i-a23-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 = { static const struct prcm_data sun6i_a31_prcm_data = {
.nsubdevs = ARRAY_SIZE(sun6i_a31_prcm_subdevs), .nsubdevs = ARRAY_SIZE(sun6i_a31_prcm_subdevs),
.subdevs = 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[] = { static const struct of_device_id sun6i_prcm_dt_ids[] = {
{ {
.compatible = "allwinner,sun6i-a31-prcm", .compatible = "allwinner,sun6i-a31-prcm",
.data = &sun6i_a31_prcm_data, .data = &sun6i_a31_prcm_data,
}, },
{
.compatible = "allwinner,sun8i-a23-prcm",
.data = &sun8i_a23_prcm_data,
},
{ /* sentinel */ }, { /* sentinel */ },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment