Lines Matching full:clkout
108 struct exynos_clkout *clkout; in exynos_clkout_probe() local
112 clkout = devm_kzalloc(&pdev->dev, in exynos_clkout_probe()
113 struct_size(clkout, data.hws, EXYNOS_CLKOUT_NR_CLKS), in exynos_clkout_probe()
115 if (!clkout) in exynos_clkout_probe()
122 clkout->np = pdev->dev.of_node; in exynos_clkout_probe()
123 if (!clkout->np) { in exynos_clkout_probe()
128 clkout->np = pdev->dev.parent->of_node; in exynos_clkout_probe()
131 platform_set_drvdata(pdev, clkout); in exynos_clkout_probe()
133 spin_lock_init(&clkout->slock); in exynos_clkout_probe()
139 snprintf(name, sizeof(name), "clkout%d", i); in exynos_clkout_probe()
140 parents[i] = of_clk_get_by_name(clkout->np, name); in exynos_clkout_probe()
153 clkout->reg = of_iomap(clkout->np, 0); in exynos_clkout_probe()
154 if (!clkout->reg) { in exynos_clkout_probe()
159 clkout->gate.reg = clkout->reg + EXYNOS_PMU_DEBUG_REG; in exynos_clkout_probe()
160 clkout->gate.bit_idx = EXYNOS_CLKOUT_DISABLE_SHIFT; in exynos_clkout_probe()
161 clkout->gate.flags = CLK_GATE_SET_TO_DISABLE; in exynos_clkout_probe()
162 clkout->gate.lock = &clkout->slock; in exynos_clkout_probe()
164 clkout->mux.reg = clkout->reg + EXYNOS_PMU_DEBUG_REG; in exynos_clkout_probe()
165 clkout->mux.mask = mux_mask; in exynos_clkout_probe()
166 clkout->mux.shift = EXYNOS_CLKOUT_MUX_SHIFT; in exynos_clkout_probe()
167 clkout->mux.lock = &clkout->slock; in exynos_clkout_probe()
169 clkout->data.hws[0] = clk_hw_register_composite(NULL, "clkout", in exynos_clkout_probe()
170 parent_names, parent_count, &clkout->mux.hw, in exynos_clkout_probe()
171 &clk_mux_ops, NULL, NULL, &clkout->gate.hw, in exynos_clkout_probe()
174 if (IS_ERR(clkout->data.hws[0])) { in exynos_clkout_probe()
175 ret = PTR_ERR(clkout->data.hws[0]); in exynos_clkout_probe()
179 clkout->data.num = EXYNOS_CLKOUT_NR_CLKS; in exynos_clkout_probe()
180 ret = of_clk_add_hw_provider(clkout->np, of_clk_hw_onecell_get, &clkout->data); in exynos_clkout_probe()
187 clk_hw_unregister(clkout->data.hws[0]); in exynos_clkout_probe()
189 iounmap(clkout->reg); in exynos_clkout_probe()
195 dev_err(&pdev->dev, "failed to register clkout clock\n"); in exynos_clkout_probe()
202 struct exynos_clkout *clkout = platform_get_drvdata(pdev); in exynos_clkout_remove() local
204 of_clk_del_provider(clkout->np); in exynos_clkout_remove()
205 clk_hw_unregister(clkout->data.hws[0]); in exynos_clkout_remove()
206 iounmap(clkout->reg); in exynos_clkout_remove()
211 struct exynos_clkout *clkout = dev_get_drvdata(dev); in exynos_clkout_suspend() local
213 clkout->pmu_debug_save = readl(clkout->reg + EXYNOS_PMU_DEBUG_REG); in exynos_clkout_suspend()
220 struct exynos_clkout *clkout = dev_get_drvdata(dev); in exynos_clkout_resume() local
222 writel(clkout->pmu_debug_save, clkout->reg + EXYNOS_PMU_DEBUG_REG); in exynos_clkout_resume()
232 .name = "exynos-clkout",