Lines Matching full:pd
71 static int sunxi_pck600_pd_set_power(struct sunxi_pck600_pd *pd, bool on) in sunxi_pck600_pd_set_power() argument
73 struct sunxi_pck600 *pck = pd->pck; in sunxi_pck600_pd_set_power()
74 struct generic_pm_domain *genpd = &pd->genpd; in sunxi_pck600_pd_set_power()
80 reg = readl(pd->base + PPU_PWPR); in sunxi_pck600_pd_set_power()
82 writel(reg, pd->base + PPU_PWPR); in sunxi_pck600_pd_set_power()
85 reg = readl(pd->base + PPU_PWPR); in sunxi_pck600_pd_set_power()
87 ret = readl_poll_timeout_atomic(pd->base + PPU_PWSR, reg, in sunxi_pck600_pd_set_power()
99 struct sunxi_pck600_pd *pd = to_sunxi_pd(domain); in sunxi_pck600_power_on() local
101 return sunxi_pck600_pd_set_power(pd, true); in sunxi_pck600_power_on()
106 struct sunxi_pck600_pd *pd = to_sunxi_pd(domain); in sunxi_pck600_power_off() local
108 return sunxi_pck600_pd_set_power(pd, false); in sunxi_pck600_power_off()
111 static void sunxi_pck600_pd_setup(struct sunxi_pck600_pd *pd, in sunxi_pck600_pd_setup() argument
114 writel(desc->device_ctrl0_delay, pd->base + PPU_DCDR0); in sunxi_pck600_pd_setup()
115 writel(desc->device_ctrl1_delay, pd->base + PPU_DCDR1); in sunxi_pck600_pd_setup()
117 pd->base + desc->logic_power_switch0_delay_offset); in sunxi_pck600_pd_setup()
119 pd->base + desc->logic_power_switch1_delay_offset); in sunxi_pck600_pd_setup()
120 writel(desc->off2on_delay, pd->base + desc->off2on_delay_offset); in sunxi_pck600_pd_setup()
163 struct sunxi_pck600_pd *pd = &pck->pds[i]; in sunxi_pck600_probe() local
165 pd->genpd.name = desc->pd_names[i]; in sunxi_pck600_probe()
166 pd->genpd.power_off = sunxi_pck600_power_off; in sunxi_pck600_probe()
167 pd->genpd.power_on = sunxi_pck600_power_on; in sunxi_pck600_probe()
168 pd->base = base + PPU_REG_SIZE * i; in sunxi_pck600_probe()
170 sunxi_pck600_pd_setup(pd, desc); in sunxi_pck600_probe()
171 ret = pm_genpd_init(&pd->genpd, NULL, false); in sunxi_pck600_probe()
177 genpds->domains[i] = &pd->genpd; in sunxi_pck600_probe()
182 dev_err_probe(dev, ret, "failed to add PD provider\n"); in sunxi_pck600_probe()