#define PPU_REG_SIZE 0x1000
+struct sunxi_pck600_pd_desc {
+ const char *name;
+ unsigned int flags;
+};
+
struct sunxi_pck600_desc {
- const char * const *pd_names;
+ const struct sunxi_pck600_pd_desc *pd_descs;
unsigned int num_domains;
u32 logic_power_switch0_delay_offset;
u32 logic_power_switch1_delay_offset;
for (i = 0; i < desc->num_domains; i++) {
struct sunxi_pck600_pd *pd = &pck->pds[i];
+ const struct sunxi_pck600_pd_desc *pd_desc = &desc->pd_descs[i];
- pd->genpd.name = desc->pd_names[i];
+ pd->genpd.name = pd_desc->name;
pd->genpd.power_off = sunxi_pck600_power_off;
pd->genpd.power_on = sunxi_pck600_power_on;
+ pd->genpd.flags = pd_desc->flags;
pd->base = base + PPU_REG_SIZE * i;
sunxi_pck600_pd_setup(pd, desc);
return ret;
}
-static const char * const sun55i_a523_pck600_pd_names[] = {
- "VE", "GPU", "VI", "VO0", "VO1", "DE", "NAND", "PCIE"
+static const struct sunxi_pck600_pd_desc sun55i_a523_pck600_pds[] = {
+ { "VE", }, { "GPU", }, { "VI", }, { "VO0", }, { "VO1", },
+ { "DE", }, { "NAND", }, { "PCIE", },
};
static const struct sunxi_pck600_desc sun55i_a523_pck600_desc = {
- .pd_names = sun55i_a523_pck600_pd_names,
- .num_domains = ARRAY_SIZE(sun55i_a523_pck600_pd_names),
+ .pd_descs = sun55i_a523_pck600_pds,
+ .num_domains = ARRAY_SIZE(sun55i_a523_pck600_pds),
.logic_power_switch0_delay_offset = 0xc00,
.logic_power_switch1_delay_offset = 0xc04,
.off2on_delay_offset = 0xc10,
.has_rst_clk = true,
};
-static const char * const sun60i_a733_pck600_pd_names[] = {
- "VI", "DE_SYS", "VE_DEC", "VE_ENC", "NPU",
- "GPU_TOP", "GPU_CORE", "PCIE", "USB2", "VO", "VO1"
+static const struct sunxi_pck600_pd_desc sun60i_a733_pck600_pds[] = {
+ { "VI", }, { "DE_SYS", }, { "VE_DEC", }, { "VE_ENC", }, { "NPU", },
+ { "GPU_TOP", }, { "GPU_CORE", GENPD_FLAG_ALWAYS_ON },
+ { "PCIE", }, { "USB2", }, { "VO", }, { "VO1", },
};
static const struct sunxi_pck600_desc sun60i_a733_pck600_desc = {
- .pd_names = sun60i_a733_pck600_pd_names,
- .num_domains = ARRAY_SIZE(sun60i_a733_pck600_pd_names),
+ .pd_descs = sun60i_a733_pck600_pds,
+ .num_domains = ARRAY_SIZE(sun60i_a733_pck600_pds),
.logic_power_switch0_delay_offset = 0xc00,
.logic_power_switch1_delay_offset = 0xc04,
.off2on_delay_offset = 0xc10,