Searched refs:clk_wzrd (Results 1 - 1 of 1) sorted by relevance
/linux-4.4.14/drivers/staging/clocking-wizard/ |
H A D | clk-xlnx-clock-wizard.c | 52 * struct clk_wzrd: 63 struct clk_wzrd { struct 74 #define to_clk_wzrd(_nb) container_of(_nb, struct clk_wzrd, nb) 88 struct clk_wzrd *clk_wzrd = to_clk_wzrd(nb); clk_wzrd_clk_notifier() local 90 if (clk_wzrd->suspended) clk_wzrd_clk_notifier() 93 if (ndata->clk == clk_wzrd->clk_in1) clk_wzrd_clk_notifier() 94 max = clk_wzrd_max_freq[clk_wzrd->speed_grade - 1]; clk_wzrd_clk_notifier() 95 else if (ndata->clk == clk_wzrd->axi_clk) clk_wzrd_clk_notifier() 114 struct clk_wzrd *clk_wzrd = dev_get_drvdata(dev); clk_wzrd_suspend() local 116 clk_disable_unprepare(clk_wzrd->axi_clk); clk_wzrd_suspend() 117 clk_wzrd->suspended = true; clk_wzrd_suspend() 125 struct clk_wzrd *clk_wzrd = dev_get_drvdata(dev); clk_wzrd_resume() local 127 ret = clk_prepare_enable(clk_wzrd->axi_clk); clk_wzrd_resume() 133 clk_wzrd->suspended = false; clk_wzrd_resume() 147 struct clk_wzrd *clk_wzrd; clk_wzrd_probe() local 151 clk_wzrd = devm_kzalloc(&pdev->dev, sizeof(*clk_wzrd), GFP_KERNEL); clk_wzrd_probe() 152 if (!clk_wzrd) clk_wzrd_probe() 154 platform_set_drvdata(pdev, clk_wzrd); clk_wzrd_probe() 157 clk_wzrd->base = devm_ioremap_resource(&pdev->dev, mem); clk_wzrd_probe() 158 if (IS_ERR(clk_wzrd->base)) clk_wzrd_probe() 159 return PTR_ERR(clk_wzrd->base); clk_wzrd_probe() 161 ret = of_property_read_u32(np, "speed-grade", &clk_wzrd->speed_grade); clk_wzrd_probe() 163 if (clk_wzrd->speed_grade < 1 || clk_wzrd->speed_grade > 3) { clk_wzrd_probe() 165 clk_wzrd->speed_grade); clk_wzrd_probe() 166 clk_wzrd->speed_grade = 0; clk_wzrd_probe() 170 clk_wzrd->clk_in1 = devm_clk_get(&pdev->dev, "clk_in1"); clk_wzrd_probe() 171 if (IS_ERR(clk_wzrd->clk_in1)) { clk_wzrd_probe() 172 if (clk_wzrd->clk_in1 != ERR_PTR(-EPROBE_DEFER)) clk_wzrd_probe() 174 return PTR_ERR(clk_wzrd->clk_in1); clk_wzrd_probe() 177 clk_wzrd->axi_clk = devm_clk_get(&pdev->dev, "s_axi_aclk"); clk_wzrd_probe() 178 if (IS_ERR(clk_wzrd->axi_clk)) { clk_wzrd_probe() 179 if (clk_wzrd->axi_clk != ERR_PTR(-EPROBE_DEFER)) clk_wzrd_probe() 181 return PTR_ERR(clk_wzrd->axi_clk); clk_wzrd_probe() 183 ret = clk_prepare_enable(clk_wzrd->axi_clk); clk_wzrd_probe() 188 rate = clk_get_rate(clk_wzrd->axi_clk); clk_wzrd_probe() 197 reg = readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)) & clk_wzrd_probe() 199 reg |= readl(clk_wzrd->base + WZRD_CLK_CFG_REG(2)) & clk_wzrd_probe() 205 reg = (readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)) & clk_wzrd_probe() 212 clk_wzrd->clks_internal[wzrd_clk_mul] = clk_register_fixed_factor( clk_wzrd_probe() 214 __clk_get_name(clk_wzrd->clk_in1), clk_wzrd_probe() 217 if (IS_ERR(clk_wzrd->clks_internal[wzrd_clk_mul])) { clk_wzrd_probe() 219 ret = PTR_ERR(clk_wzrd->clks_internal[wzrd_clk_mul]); clk_wzrd_probe() 224 reg = (readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)) & clk_wzrd_probe() 232 clk_wzrd->clks_internal[wzrd_clk_mul_div] = clk_register_fixed_factor( clk_wzrd_probe() 234 __clk_get_name(clk_wzrd->clks_internal[wzrd_clk_mul]), clk_wzrd_probe() 236 if (IS_ERR(clk_wzrd->clks_internal[wzrd_clk_mul_div])) { clk_wzrd_probe() 238 ret = PTR_ERR(clk_wzrd->clks_internal[wzrd_clk_mul_div]); clk_wzrd_probe() 253 reg = readl(clk_wzrd->base + WZRD_CLK_CFG_REG(2) + i * 12); clk_wzrd_probe() 256 clk_wzrd->clkout[i] = clk_register_fixed_factor(&pdev->dev, clk_wzrd_probe() 258 if (IS_ERR(clk_wzrd->clkout[i])) { clk_wzrd_probe() 262 clk_unregister(clk_wzrd->clkout[j]); clk_wzrd_probe() 265 ret = PTR_ERR(clk_wzrd->clkout[i]); clk_wzrd_probe() 272 clk_wzrd->clk_data.clks = clk_wzrd->clkout; clk_wzrd_probe() 273 clk_wzrd->clk_data.clk_num = ARRAY_SIZE(clk_wzrd->clkout); clk_wzrd_probe() 274 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_wzrd->clk_data); clk_wzrd_probe() 276 if (clk_wzrd->speed_grade) { clk_wzrd_probe() 277 clk_wzrd->nb.notifier_call = clk_wzrd_clk_notifier; clk_wzrd_probe() 279 ret = clk_notifier_register(clk_wzrd->clk_in1, clk_wzrd_probe() 280 &clk_wzrd->nb); clk_wzrd_probe() 285 ret = clk_notifier_register(clk_wzrd->axi_clk, &clk_wzrd->nb); clk_wzrd_probe() 294 clk_unregister(clk_wzrd->clks_internal[1]); clk_wzrd_probe() 297 clk_unregister(clk_wzrd->clks_internal[0]); clk_wzrd_probe() 299 clk_disable_unprepare(clk_wzrd->axi_clk); clk_wzrd_probe() 307 struct clk_wzrd *clk_wzrd = platform_get_drvdata(pdev); clk_wzrd_remove() local 312 clk_unregister(clk_wzrd->clkout[i]); clk_wzrd_remove() 314 clk_unregister(clk_wzrd->clks_internal[i]); clk_wzrd_remove() 316 if (clk_wzrd->speed_grade) { clk_wzrd_remove() 317 clk_notifier_unregister(clk_wzrd->axi_clk, &clk_wzrd->nb); clk_wzrd_remove() 318 clk_notifier_unregister(clk_wzrd->clk_in1, &clk_wzrd->nb); clk_wzrd_remove() 321 clk_disable_unprepare(clk_wzrd->axi_clk); clk_wzrd_remove()
|
Completed in 585 milliseconds