Lines Matching refs:pmc
156 static struct tegra_pmc *pmc = &(struct tegra_pmc) { variable
163 return readl(pmc->base + offset); in tegra_pmc_readl()
168 writel(value, pmc->base + offset); in tegra_pmc_writel()
180 mutex_lock(&pmc->powergates_lock); in tegra_powergate_set()
185 mutex_unlock(&pmc->powergates_lock); in tegra_powergate_set()
191 mutex_unlock(&pmc->powergates_lock); in tegra_powergate_set()
202 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_power_on()
214 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_power_off()
229 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_is_powered()
244 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_remove_clamping()
252 if (pmc->soc->has_gpu_clamps) { in tegra_powergate_remove_clamping()
328 if (pmc->soc && cpuid > 0 && cpuid < pmc->soc->num_cpu_powergates) in tegra_get_cpu_powergate_id()
329 return pmc->soc->cpu_powergates[cpuid]; in tegra_get_cpu_powergate_id()
417 for (i = 0; i < pmc->soc->num_powergates; i++) { in powergate_show()
418 if (!pmc->soc->powergates[i]) in powergate_show()
421 seq_printf(s, " %9s %7s\n", pmc->soc->powergates[i], in powergate_show()
574 return pmc->suspend_mode; in tegra_pmc_get_suspend_mode()
582 pmc->suspend_mode = mode; in tegra_pmc_set_suspend_mode()
596 rate = clk_get_rate(pmc->clk); in tegra_pmc_enter_suspend_mode()
606 if (rate != pmc->rate) { in tegra_pmc_enter_suspend_mode()
609 ticks = pmc->cpu_good_time * rate + USEC_PER_SEC - 1; in tegra_pmc_enter_suspend_mode()
613 ticks = pmc->cpu_off_time * rate + USEC_PER_SEC - 1; in tegra_pmc_enter_suspend_mode()
619 pmc->rate = rate; in tegra_pmc_enter_suspend_mode()
629 static int tegra_pmc_parse_dt(struct tegra_pmc *pmc, struct device_node *np) in tegra_pmc_parse_dt() argument
637 pmc->suspend_mode = TEGRA_SUSPEND_LP0; in tegra_pmc_parse_dt()
641 pmc->suspend_mode = TEGRA_SUSPEND_LP1; in tegra_pmc_parse_dt()
645 pmc->suspend_mode = TEGRA_SUSPEND_LP2; in tegra_pmc_parse_dt()
649 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
654 pmc->suspend_mode = tegra_pm_validate_suspend_mode(pmc->suspend_mode); in tegra_pmc_parse_dt()
657 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
659 pmc->cpu_good_time = value; in tegra_pmc_parse_dt()
662 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
664 pmc->cpu_off_time = value; in tegra_pmc_parse_dt()
668 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
670 pmc->core_osc_time = values[0]; in tegra_pmc_parse_dt()
671 pmc->core_pmu_time = values[1]; in tegra_pmc_parse_dt()
674 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
676 pmc->core_off_time = value; in tegra_pmc_parse_dt()
678 pmc->corereq_high = of_property_read_bool(np, in tegra_pmc_parse_dt()
681 pmc->sysclkreq_high = of_property_read_bool(np, in tegra_pmc_parse_dt()
684 pmc->combined_req = of_property_read_bool(np, in tegra_pmc_parse_dt()
687 pmc->cpu_pwr_good_en = of_property_read_bool(np, in tegra_pmc_parse_dt()
692 if (pmc->suspend_mode == TEGRA_SUSPEND_LP0) in tegra_pmc_parse_dt()
693 pmc->suspend_mode = TEGRA_SUSPEND_LP1; in tegra_pmc_parse_dt()
695 pmc->lp0_vec_phys = values[0]; in tegra_pmc_parse_dt()
696 pmc->lp0_vec_size = values[1]; in tegra_pmc_parse_dt()
701 static void tegra_pmc_init(struct tegra_pmc *pmc) in tegra_pmc_init() argument
712 if (pmc->sysclkreq_high) in tegra_pmc_init()
726 void tegra_pmc_init_tsense_reset(struct tegra_pmc *pmc) in tegra_pmc_init_tsense_reset() argument
730 struct device *dev = pmc->dev; in tegra_pmc_init_tsense_reset()
734 if (!pmc->soc->has_tsense_reset) in tegra_pmc_init_tsense_reset()
737 np = of_find_node_by_name(pmc->dev->of_node, "i2c-thermtrip"); in tegra_pmc_init_tsense_reset()
796 dev_info(pmc->dev, "emergency thermal reset enabled\n"); in tegra_pmc_init_tsense_reset()
805 void __iomem *base = pmc->base; in tegra_pmc_probe()
809 err = tegra_pmc_parse_dt(pmc, pdev->dev.of_node); in tegra_pmc_probe()
815 pmc->base = devm_ioremap_resource(&pdev->dev, res); in tegra_pmc_probe()
816 if (IS_ERR(pmc->base)) in tegra_pmc_probe()
817 return PTR_ERR(pmc->base); in tegra_pmc_probe()
821 pmc->clk = devm_clk_get(&pdev->dev, "pclk"); in tegra_pmc_probe()
822 if (IS_ERR(pmc->clk)) { in tegra_pmc_probe()
823 err = PTR_ERR(pmc->clk); in tegra_pmc_probe()
828 pmc->dev = &pdev->dev; in tegra_pmc_probe()
830 tegra_pmc_init(pmc); in tegra_pmc_probe()
832 tegra_pmc_init_tsense_reset(pmc); in tegra_pmc_probe()
1040 pmc->soc = match->data; in tegra_pmc_early_init()
1048 pmc->base = ioremap_nocache(regs.start, resource_size(®s)); in tegra_pmc_early_init()
1049 if (!pmc->base) { in tegra_pmc_early_init()
1054 mutex_init(&pmc->powergates_lock); in tegra_pmc_early_init()