Lines Matching refs:ps

55 	struct apple_pmgr_ps *ps = genpd_to_apple_pmgr_ps(genpd);
58 ret = regmap_read(ps->regmap, ps->offset, &reg);
64 dev_err(ps->dev, "PS %s: powering off with RESET active\n",
70 dev_dbg(ps->dev, "PS %s: pwrstate = 0x%x: 0x%x\n", genpd->name, pstate, reg);
72 regmap_write(ps->regmap, ps->offset, reg);
75 ps->regmap, ps->offset, reg,
79 dev_err(ps->dev, "PS %s: Failed to reach power state 0x%x (now: 0x%x)\n",
86 regmap_write(ps->regmap, ps->offset, reg);
92 static bool apple_pmgr_ps_is_active(struct apple_pmgr_ps *ps)
96 regmap_read(ps->regmap, ps->offset, &reg);
118 struct apple_pmgr_ps *ps = rcdev_to_apple_pmgr_ps(rcdev);
121 spin_lock_irqsave(&ps->genpd.slock, flags);
123 if (ps->genpd.status == GENPD_STATE_OFF)
124 dev_err(ps->dev, "PS 0x%x: asserting RESET while powered down\n", ps->offset);
126 dev_dbg(ps->dev, "PS 0x%x: assert reset\n", ps->offset);
128 regmap_update_bits(ps->regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_DEV_DISABLE,
130 regmap_update_bits(ps->regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_RESET,
133 spin_unlock_irqrestore(&ps->genpd.slock, flags);
140 struct apple_pmgr_ps *ps = rcdev_to_apple_pmgr_ps(rcdev);
143 spin_lock_irqsave(&ps->genpd.slock, flags);
145 dev_dbg(ps->dev, "PS 0x%x: deassert reset\n", ps->offset);
146 regmap_update_bits(ps->regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_RESET, 0);
147 regmap_update_bits(ps->regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_DEV_DISABLE, 0);
149 if (ps->genpd.status == GENPD_STATE_OFF)
150 dev_err(ps->dev, "PS 0x%x: RESET was deasserted while powered down\n", ps->offset);
152 spin_unlock_irqrestore(&ps->genpd.slock, flags);
172 struct apple_pmgr_ps *ps = rcdev_to_apple_pmgr_ps(rcdev);
175 regmap_read(ps->regmap, ps->offset, &reg);
197 struct apple_pmgr_ps *ps;
208 ps = devm_kzalloc(dev, sizeof(*ps), GFP_KERNEL);
209 if (!ps)
212 ps->dev = dev;
213 ps->regmap = regmap;
221 ret = of_property_read_u32(node, "reg", &ps->offset);
227 ps->genpd.flags |= GENPD_FLAG_IRQ_SAFE;
228 ps->genpd.name = name;
229 ps->genpd.power_on = apple_pmgr_ps_power_on;
230 ps->genpd.power_off = apple_pmgr_ps_power_off;
232 ret = of_property_read_u32(node, "apple,min-state", &ps->min_state);
233 if (ret == 0 && ps->min_state <= APPLE_PMGR_PS_ACTIVE)
234 regmap_update_bits(regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_PS_MIN,
235 FIELD_PREP(APPLE_PMGR_PS_MIN, ps->min_state));
237 active = apple_pmgr_ps_is_active(ps);
239 ps->genpd.flags |= GENPD_FLAG_ALWAYS_ON;
243 active = apple_pmgr_ps_power_on(&ps->genpd) == 0;
249 regmap_update_bits(regmap, ps->offset, APPLE_PMGR_FLAGS | APPLE_PMGR_AUTO_ENABLE,
252 ret = pm_genpd_init(&ps->genpd, NULL, !active);
258 ret = of_genpd_add_provider_simple(node, &ps->genpd);
290 ps->rcdev.owner = THIS_MODULE;
291 ps->rcdev.nr_resets = 1;
292 ps->rcdev.ops = &apple_pmgr_reset_ops;
293 ps->rcdev.of_node = dev->of_node;
294 ps->rcdev.of_reset_n_cells = 0;
295 ps->rcdev.of_xlate = apple_pmgr_reset_xlate;
297 ret = devm_reset_controller_register(dev, &ps->rcdev);
304 pm_genpd_remove(&ps->genpd);