struct generic_pm_domain *dev_to_genpd(struct device *dev) { if (IS_ERR_OR_NULL(dev->pm_domain)) return ERR_PTR(-EINVAL); return pd_to_genpd(dev->pm_domain); }
static bool scpsys_active_wakeup(struct device *dev) { struct generic_pm_domain *genpd; struct scp_domain *scpd; genpd = pd_to_genpd(dev->pm_domain); scpd = container_of(genpd, struct scp_domain, genpd); return scpd->data->active_wakeup; }
static ssize_t railgate_delay_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct gk20a_platform *platform = dev_get_drvdata(dev); int railgate_delay = 0, ret = 0; if (!platform->can_railgate) { dev_info(dev, "does not support power-gating\n"); return count; } ret = sscanf(buf, "%d", &railgate_delay); if (ret == 1 && railgate_delay >= 0) { struct generic_pm_domain *genpd = pd_to_genpd(dev->pm_domain); platform->railgate_delay = railgate_delay; pm_genpd_set_poweroff_delay(genpd, platform->railgate_delay); } else dev_err(dev, "Invalid powergate delay\n"); return count; }