Lines Matching refs:pmc
158 static struct tegra_pmc *pmc = &(struct tegra_pmc) { variable
165 return readl(pmc->base + offset); in tegra_pmc_readl()
170 writel(value, pmc->base + offset); in tegra_pmc_writel()
182 mutex_lock(&pmc->powergates_lock); in tegra_powergate_set()
187 mutex_unlock(&pmc->powergates_lock); in tegra_powergate_set()
193 mutex_unlock(&pmc->powergates_lock); in tegra_powergate_set()
204 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_power_on()
216 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_power_off()
231 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_is_powered()
246 if (!pmc->soc || id < 0 || id >= pmc->soc->num_powergates) in tegra_powergate_remove_clamping()
254 if (pmc->soc->has_gpu_clamps) { in tegra_powergate_remove_clamping()
330 if (pmc->soc && cpuid > 0 && cpuid < pmc->soc->num_cpu_powergates) in tegra_get_cpu_powergate_id()
331 return pmc->soc->cpu_powergates[cpuid]; in tegra_get_cpu_powergate_id()
423 for (i = 0; i < pmc->soc->num_powergates; i++) { in powergate_show()
424 if (!pmc->soc->powergates[i]) in powergate_show()
427 seq_printf(s, " %9s %7s\n", pmc->soc->powergates[i], in powergate_show()
480 rate = clk_get_rate(pmc->clk); in tegra_io_rail_prepare()
578 return pmc->suspend_mode; in tegra_pmc_get_suspend_mode()
586 pmc->suspend_mode = mode; in tegra_pmc_set_suspend_mode()
600 rate = clk_get_rate(pmc->clk); in tegra_pmc_enter_suspend_mode()
610 if (rate != pmc->rate) { in tegra_pmc_enter_suspend_mode()
613 ticks = pmc->cpu_good_time * rate + USEC_PER_SEC - 1; in tegra_pmc_enter_suspend_mode()
617 ticks = pmc->cpu_off_time * rate + USEC_PER_SEC - 1; in tegra_pmc_enter_suspend_mode()
623 pmc->rate = rate; in tegra_pmc_enter_suspend_mode()
633 static int tegra_pmc_parse_dt(struct tegra_pmc *pmc, struct device_node *np) in tegra_pmc_parse_dt() argument
641 pmc->suspend_mode = TEGRA_SUSPEND_LP0; in tegra_pmc_parse_dt()
645 pmc->suspend_mode = TEGRA_SUSPEND_LP1; in tegra_pmc_parse_dt()
649 pmc->suspend_mode = TEGRA_SUSPEND_LP2; in tegra_pmc_parse_dt()
653 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
658 pmc->suspend_mode = tegra_pm_validate_suspend_mode(pmc->suspend_mode); in tegra_pmc_parse_dt()
661 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
663 pmc->cpu_good_time = value; in tegra_pmc_parse_dt()
666 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
668 pmc->cpu_off_time = value; in tegra_pmc_parse_dt()
672 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
674 pmc->core_osc_time = values[0]; in tegra_pmc_parse_dt()
675 pmc->core_pmu_time = values[1]; in tegra_pmc_parse_dt()
678 pmc->suspend_mode = TEGRA_SUSPEND_NONE; in tegra_pmc_parse_dt()
680 pmc->core_off_time = value; in tegra_pmc_parse_dt()
682 pmc->corereq_high = of_property_read_bool(np, in tegra_pmc_parse_dt()
685 pmc->sysclkreq_high = of_property_read_bool(np, in tegra_pmc_parse_dt()
688 pmc->combined_req = of_property_read_bool(np, in tegra_pmc_parse_dt()
691 pmc->cpu_pwr_good_en = of_property_read_bool(np, in tegra_pmc_parse_dt()
696 if (pmc->suspend_mode == TEGRA_SUSPEND_LP0) in tegra_pmc_parse_dt()
697 pmc->suspend_mode = TEGRA_SUSPEND_LP1; in tegra_pmc_parse_dt()
699 pmc->lp0_vec_phys = values[0]; in tegra_pmc_parse_dt()
700 pmc->lp0_vec_size = values[1]; in tegra_pmc_parse_dt()
705 static void tegra_pmc_init(struct tegra_pmc *pmc) in tegra_pmc_init() argument
716 if (pmc->sysclkreq_high) in tegra_pmc_init()
730 void tegra_pmc_init_tsense_reset(struct tegra_pmc *pmc) in tegra_pmc_init_tsense_reset() argument
734 struct device *dev = pmc->dev; in tegra_pmc_init_tsense_reset()
738 if (!pmc->soc->has_tsense_reset) in tegra_pmc_init_tsense_reset()
741 np = of_find_node_by_name(pmc->dev->of_node, "i2c-thermtrip"); in tegra_pmc_init_tsense_reset()
800 dev_info(pmc->dev, "emergency thermal reset enabled\n"); in tegra_pmc_init_tsense_reset()
808 void __iomem *base = pmc->base; in tegra_pmc_probe()
812 err = tegra_pmc_parse_dt(pmc, pdev->dev.of_node); in tegra_pmc_probe()
818 pmc->base = devm_ioremap_resource(&pdev->dev, res); in tegra_pmc_probe()
819 if (IS_ERR(pmc->base)) in tegra_pmc_probe()
820 return PTR_ERR(pmc->base); in tegra_pmc_probe()
824 pmc->clk = devm_clk_get(&pdev->dev, "pclk"); in tegra_pmc_probe()
825 if (IS_ERR(pmc->clk)) { in tegra_pmc_probe()
826 err = PTR_ERR(pmc->clk); in tegra_pmc_probe()
831 pmc->dev = &pdev->dev; in tegra_pmc_probe()
833 tegra_pmc_init(pmc); in tegra_pmc_probe()
835 tegra_pmc_init_tsense_reset(pmc); in tegra_pmc_probe()
1123 pmc->soc = match->data; in tegra_pmc_early_init()
1126 pmc->base = ioremap_nocache(regs.start, resource_size(®s)); in tegra_pmc_early_init()
1127 if (!pmc->base) { in tegra_pmc_early_init()
1132 mutex_init(&pmc->powergates_lock); in tegra_pmc_early_init()