Lines Matching refs:power
61 /* The power gates must be enabled with this bit before enabling the LDO in the
109 #define PM_READ(reg) readl(power->base + (reg))
110 #define PM_WRITE(reg, val) writel(PM_PASSWORD | (val), power->base + (reg))
129 #define ASB_READ(reg) readl(power->asb + (reg))
130 #define ASB_WRITE(reg, val) writel(PM_PASSWORD | (val), power->asb + (reg))
134 struct bcm2835_power *power;
151 static int bcm2835_asb_enable(struct bcm2835_power *power, u32 reg)
171 static int bcm2835_asb_disable(struct bcm2835_power *power, u32 reg)
193 struct bcm2835_power *power = pd->power;
201 /* Open the power switches. */
209 struct bcm2835_power *power = pd->power;
210 struct device *dev = power->dev;
220 /* Enable power. Allowing too much current at once may result
239 dev_err(dev, "Timeout waiting for %s power OK\n",
279 struct bcm2835_power *power = pd->power;
284 dev_err(power->dev, "Failed to enable clock for %s\n",
299 dev_err(power->dev, "Failed to enable clock for %s\n",
304 ret = bcm2835_asb_enable(power, asb_m_reg);
306 dev_err(power->dev, "Failed to enable ASB master for %s\n",
310 ret = bcm2835_asb_enable(power, asb_s_reg);
312 dev_err(power->dev, "Failed to enable ASB slave for %s\n",
320 bcm2835_asb_disable(power, asb_m_reg);
334 struct bcm2835_power *power = pd->power;
337 ret = bcm2835_asb_disable(power, asb_s_reg);
339 dev_warn(power->dev, "Failed to disable ASB slave for %s\n",
343 ret = bcm2835_asb_disable(power, asb_m_reg);
345 dev_warn(power->dev, "Failed to disable ASB master for %s\n",
347 bcm2835_asb_enable(power, asb_s_reg);
363 struct bcm2835_power *power = pd->power;
420 dev_err(power->dev, "Invalid domain %d\n", pd->domain);
429 struct bcm2835_power *power = pd->power;
483 dev_err(power->dev, "Invalid domain %d\n", pd->domain);
489 bcm2835_init_power_domain(struct bcm2835_power *power,
492 struct device *dev = power->dev;
493 struct bcm2835_power_domain *dom = &power->domains[pd_xlate_index];
513 dom->power = power;
518 power->pd_xlate.domains[pd_xlate_index] = &dom->base;
526 * The consumer of the reset controller must have the power domain up
527 * -- there's no reset ability with the power domain down. To reset
534 struct bcm2835_power *power = container_of(rcdev, struct bcm2835_power,
541 pd = &power->domains[BCM2835_POWER_DOMAIN_GRAFX_V3D];
544 pd = &power->domains[BCM2835_POWER_DOMAIN_IMAGE_H264];
547 pd = &power->domains[BCM2835_POWER_DOMAIN_IMAGE_ISP];
550 dev_err(power->dev, "Bad reset id %ld\n", id);
564 struct bcm2835_power *power = container_of(rcdev, struct bcm2835_power,
606 struct bcm2835_power *power;
621 power = devm_kzalloc(dev, sizeof(*power), GFP_KERNEL);
622 if (!power)
624 platform_set_drvdata(pdev, power);
626 power->dev = dev;
627 power->base = pm->base;
628 power->asb = pm->asb;
636 power->pd_xlate.domains = devm_kcalloc(dev,
638 sizeof(*power->pd_xlate.domains),
640 if (!power->pd_xlate.domains)
643 power->pd_xlate.num_domains = ARRAY_SIZE(power_domain_names);
646 ret = bcm2835_init_power_domain(power, i, power_domain_names[i]);
652 pm_genpd_add_subdomain(&power->domains[domain_deps[i].parent].base,
653 &power->domains[domain_deps[i].child].base);
656 power->reset.owner = THIS_MODULE;
657 power->reset.nr_resets = BCM2835_RESET_COUNT;
658 power->reset.ops = &bcm2835_reset_ops;
659 power->reset.of_node = dev->parent->of_node;
661 ret = devm_reset_controller_register(dev, &power->reset);
665 of_genpd_add_provider_onecell(dev->parent->of_node, &power->pd_xlate);
667 dev_info(dev, "Broadcom BCM2835 power domains driver");
672 struct generic_pm_domain *dom = &power->domains[i].base;
689 .name = "bcm2835-power",
695 MODULE_DESCRIPTION("Driver for Broadcom BCM2835 PM power domains and reset");