Lines Matching refs:lpsc

109 static void davinci_lpsc_config(struct davinci_lpsc_clk *lpsc,  in davinci_lpsc_config()  argument
114 regmap_write_bits(lpsc->regmap, MDCTL(lpsc->md), MDSTAT_STATE_MASK, in davinci_lpsc_config()
117 if (lpsc->flags & LPSC_FORCE) in davinci_lpsc_config()
118 regmap_write_bits(lpsc->regmap, MDCTL(lpsc->md), MDCTL_FORCE, in davinci_lpsc_config()
121 regmap_read(lpsc->regmap, PDSTAT(lpsc->pd), &pdstat); in davinci_lpsc_config()
123 regmap_write_bits(lpsc->regmap, PDCTL(lpsc->pd), PDCTL_NEXT, in davinci_lpsc_config()
126 regmap_write(lpsc->regmap, PTCMD, BIT(lpsc->pd)); in davinci_lpsc_config()
128 regmap_read_poll_timeout(lpsc->regmap, EPCPR, epcpr, in davinci_lpsc_config()
129 epcpr & BIT(lpsc->pd), 0, 0); in davinci_lpsc_config()
131 regmap_write_bits(lpsc->regmap, PDCTL(lpsc->pd), PDCTL_EPCGOOD, in davinci_lpsc_config()
134 regmap_write(lpsc->regmap, PTCMD, BIT(lpsc->pd)); in davinci_lpsc_config()
137 regmap_read_poll_timeout(lpsc->regmap, PTSTAT, ptstat, in davinci_lpsc_config()
138 !(ptstat & BIT(lpsc->pd)), 0, 0); in davinci_lpsc_config()
140 regmap_read_poll_timeout(lpsc->regmap, MDSTAT(lpsc->md), mdstat, in davinci_lpsc_config()
147 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(hw); in davinci_lpsc_clk_enable() local
149 davinci_lpsc_config(lpsc, LPSC_STATE_ENABLE); in davinci_lpsc_clk_enable()
156 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(hw); in davinci_lpsc_clk_disable() local
158 davinci_lpsc_config(lpsc, LPSC_STATE_DISABLE); in davinci_lpsc_clk_disable()
163 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(hw); in davinci_lpsc_clk_is_enabled() local
166 regmap_read(lpsc->regmap, MDSTAT(lpsc->md), &mdstat); in davinci_lpsc_clk_is_enabled()
180 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(pm_domain); in davinci_psc_genpd_attach_dev() local
188 clk = clk_get_sys(best_dev_name(lpsc->dev), clk_hw_get_name(&lpsc->hw)); in davinci_psc_genpd_attach_dev()
200 lpsc->genpd_clk = clk; in davinci_psc_genpd_attach_dev()
215 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(pm_domain); in davinci_psc_genpd_detach_dev() local
217 pm_clk_remove_clk(dev, lpsc->genpd_clk); in davinci_psc_genpd_detach_dev()
220 lpsc->genpd_clk = NULL; in davinci_psc_genpd_detach_dev()
239 struct davinci_lpsc_clk *lpsc; in davinci_lpsc_clk_register() local
243 lpsc = kzalloc(sizeof(*lpsc), GFP_KERNEL); in davinci_lpsc_clk_register()
244 if (!lpsc) in davinci_lpsc_clk_register()
259 lpsc->dev = dev; in davinci_lpsc_clk_register()
260 lpsc->regmap = regmap; in davinci_lpsc_clk_register()
261 lpsc->hw.init = &init; in davinci_lpsc_clk_register()
262 lpsc->md = md; in davinci_lpsc_clk_register()
263 lpsc->pd = pd; in davinci_lpsc_clk_register()
264 lpsc->flags = flags; in davinci_lpsc_clk_register()
266 ret = clk_hw_register(dev, &lpsc->hw); in davinci_lpsc_clk_register()
268 kfree(lpsc); in davinci_lpsc_clk_register()
274 return lpsc; in davinci_lpsc_clk_register()
277 ret = clk_hw_register_clkdev(&lpsc->hw, name, best_dev_name(dev)); in davinci_lpsc_clk_register()
279 lpsc->pm_domain.name = devm_kasprintf(dev, GFP_KERNEL, "%s: %s", in davinci_lpsc_clk_register()
281 lpsc->pm_domain.attach_dev = davinci_psc_genpd_attach_dev; in davinci_lpsc_clk_register()
282 lpsc->pm_domain.detach_dev = davinci_psc_genpd_detach_dev; in davinci_lpsc_clk_register()
283 lpsc->pm_domain.flags = GENPD_FLAG_PM_CLK; in davinci_lpsc_clk_register()
285 is_on = davinci_lpsc_clk_is_enabled(&lpsc->hw); in davinci_lpsc_clk_register()
286 pm_genpd_init(&lpsc->pm_domain, NULL, is_on); in davinci_lpsc_clk_register()
288 return lpsc; in davinci_lpsc_clk_register()
294 struct davinci_lpsc_clk *lpsc = to_davinci_lpsc_clk(hw); in davinci_lpsc_clk_reset() local
297 if (IS_ERR_OR_NULL(lpsc)) in davinci_lpsc_clk_reset()
301 regmap_write_bits(lpsc->regmap, MDCTL(lpsc->md), MDCTL_LRESET, mdctl); in davinci_lpsc_clk_reset()
335 struct davinci_lpsc_clk *lpsc; in davinci_psc_reset_of_xlate() local
343 lpsc = to_davinci_lpsc_clk(hw); in davinci_psc_reset_of_xlate()
347 if (!(lpsc->flags & LPSC_LOCAL_RESET)) in davinci_psc_reset_of_xlate()
350 return lpsc->md; in davinci_psc_reset_of_xlate()
407 struct davinci_lpsc_clk *lpsc; in __davinci_psc_register_clocks() local
409 lpsc = davinci_lpsc_clk_register(dev, info->name, info->parent, in __davinci_psc_register_clocks()
412 if (IS_ERR(lpsc)) { in __davinci_psc_register_clocks()
414 info->name, PTR_ERR(lpsc)); in __davinci_psc_register_clocks()
418 clks[info->md] = lpsc->hw.clk; in __davinci_psc_register_clocks()
419 pm_domains[info->md] = &lpsc->pm_domain; in __davinci_psc_register_clocks()