Lines Matching full:clkout
107 struct exynos_clkout *clkout; in exynos_clkout_probe() local
111 clkout = devm_kzalloc(&pdev->dev, in exynos_clkout_probe()
112 struct_size(clkout, data.hws, EXYNOS_CLKOUT_NR_CLKS), in exynos_clkout_probe()
114 if (!clkout) in exynos_clkout_probe()
121 clkout->np = pdev->dev.of_node; in exynos_clkout_probe()
122 if (!clkout->np) { in exynos_clkout_probe()
127 clkout->np = pdev->dev.parent->of_node; in exynos_clkout_probe()
130 platform_set_drvdata(pdev, clkout); in exynos_clkout_probe()
132 spin_lock_init(&clkout->slock); in exynos_clkout_probe()
138 snprintf(name, sizeof(name), "clkout%d", i); in exynos_clkout_probe()
139 parents[i] = of_clk_get_by_name(clkout->np, name); in exynos_clkout_probe()
152 clkout->reg = of_iomap(clkout->np, 0); in exynos_clkout_probe()
153 if (!clkout->reg) { in exynos_clkout_probe()
158 clkout->gate.reg = clkout->reg + EXYNOS_PMU_DEBUG_REG; in exynos_clkout_probe()
159 clkout->gate.bit_idx = EXYNOS_CLKOUT_DISABLE_SHIFT; in exynos_clkout_probe()
160 clkout->gate.flags = CLK_GATE_SET_TO_DISABLE; in exynos_clkout_probe()
161 clkout->gate.lock = &clkout->slock; in exynos_clkout_probe()
163 clkout->mux.reg = clkout->reg + EXYNOS_PMU_DEBUG_REG; in exynos_clkout_probe()
164 clkout->mux.mask = mux_mask; in exynos_clkout_probe()
165 clkout->mux.shift = EXYNOS_CLKOUT_MUX_SHIFT; in exynos_clkout_probe()
166 clkout->mux.lock = &clkout->slock; in exynos_clkout_probe()
168 clkout->data.hws[0] = clk_hw_register_composite(NULL, "clkout", in exynos_clkout_probe()
169 parent_names, parent_count, &clkout->mux.hw, in exynos_clkout_probe()
170 &clk_mux_ops, NULL, NULL, &clkout->gate.hw, in exynos_clkout_probe()
173 if (IS_ERR(clkout->data.hws[0])) { in exynos_clkout_probe()
174 ret = PTR_ERR(clkout->data.hws[0]); in exynos_clkout_probe()
178 clkout->data.num = EXYNOS_CLKOUT_NR_CLKS; in exynos_clkout_probe()
179 ret = of_clk_add_hw_provider(clkout->np, of_clk_hw_onecell_get, &clkout->data); in exynos_clkout_probe()
186 clk_hw_unregister(clkout->data.hws[0]); in exynos_clkout_probe()
188 iounmap(clkout->reg); in exynos_clkout_probe()
194 dev_err(&pdev->dev, "failed to register clkout clock\n"); in exynos_clkout_probe()
201 struct exynos_clkout *clkout = platform_get_drvdata(pdev); in exynos_clkout_remove() local
203 of_clk_del_provider(clkout->np); in exynos_clkout_remove()
204 clk_hw_unregister(clkout->data.hws[0]); in exynos_clkout_remove()
205 iounmap(clkout->reg); in exynos_clkout_remove()
212 struct exynos_clkout *clkout = dev_get_drvdata(dev); in exynos_clkout_suspend() local
214 clkout->pmu_debug_save = readl(clkout->reg + EXYNOS_PMU_DEBUG_REG); in exynos_clkout_suspend()
221 struct exynos_clkout *clkout = dev_get_drvdata(dev); in exynos_clkout_resume() local
223 writel(clkout->pmu_debug_save, clkout->reg + EXYNOS_PMU_DEBUG_REG); in exynos_clkout_resume()
233 .name = "exynos-clkout",