• Home
  • Raw
  • Download

Lines Matching +full:init +full:- +full:delay

5  * Copyright (c) 2013-2014 Texas Instruments, Inc.
21 #include <linux/clk-provider.h>
39 int delay; member
66 ret = palmas_update_bits(cinfo->palmas, PALMAS_RESOURCE_BASE, in palmas_clks_prepare()
67 cinfo->clk_desc->control_reg, in palmas_clks_prepare()
68 cinfo->clk_desc->enable_mask, in palmas_clks_prepare()
69 cinfo->clk_desc->enable_mask); in palmas_clks_prepare()
71 dev_err(cinfo->dev, "Reg 0x%02x update failed, %d\n", in palmas_clks_prepare()
72 cinfo->clk_desc->control_reg, ret); in palmas_clks_prepare()
73 else if (cinfo->clk_desc->delay) in palmas_clks_prepare()
74 udelay(cinfo->clk_desc->delay); in palmas_clks_prepare()
88 if (cinfo->ext_control_pin) in palmas_clks_unprepare()
91 ret = palmas_update_bits(cinfo->palmas, PALMAS_RESOURCE_BASE, in palmas_clks_unprepare()
92 cinfo->clk_desc->control_reg, in palmas_clks_unprepare()
93 cinfo->clk_desc->enable_mask, 0); in palmas_clks_unprepare()
95 dev_err(cinfo->dev, "Reg 0x%02x update failed, %d\n", in palmas_clks_unprepare()
96 cinfo->clk_desc->control_reg, ret); in palmas_clks_unprepare()
105 if (cinfo->ext_control_pin) in palmas_clks_is_prepared()
108 ret = palmas_read(cinfo->palmas, PALMAS_RESOURCE_BASE, in palmas_clks_is_prepared()
109 cinfo->clk_desc->control_reg, &val); in palmas_clks_is_prepared()
111 dev_err(cinfo->dev, "Reg 0x%02x read failed, %d\n", in palmas_clks_is_prepared()
112 cinfo->clk_desc->control_reg, ret); in palmas_clks_is_prepared()
115 return !!(val & cinfo->clk_desc->enable_mask); in palmas_clks_is_prepared()
126 struct clk_init_data init; member
131 .init = {
142 .delay = 200,
147 .init = {
158 .delay = 200,
164 .compatible = "ti,palmas-clk32kg",
168 .compatible = "ti,palmas-clk32kgaudio",
178 struct device_node *node = pdev->dev.of_node; in palmas_clks_get_clk_data()
182 ret = of_property_read_u32(node, "ti,external-sleep-control", in palmas_clks_get_clk_data()
198 dev_warn(&pdev->dev, "%pOFn: Invalid ext control option: %u\n", in palmas_clks_get_clk_data()
203 cinfo->ext_control_pin = prop; in palmas_clks_get_clk_data()
210 ret = palmas_update_bits(cinfo->palmas, PALMAS_RESOURCE_BASE, in palmas_clks_init_configure()
211 cinfo->clk_desc->control_reg, in palmas_clks_init_configure()
212 cinfo->clk_desc->sleep_mask, 0); in palmas_clks_init_configure()
214 dev_err(cinfo->dev, "Reg 0x%02x update failed, %d\n", in palmas_clks_init_configure()
215 cinfo->clk_desc->control_reg, ret); in palmas_clks_init_configure()
219 if (cinfo->ext_control_pin) { in palmas_clks_init_configure()
220 ret = clk_prepare(cinfo->hw.clk); in palmas_clks_init_configure()
222 dev_err(cinfo->dev, "Clock prep failed, %d\n", ret); in palmas_clks_init_configure()
226 ret = palmas_ext_control_req_config(cinfo->palmas, in palmas_clks_init_configure()
227 cinfo->clk_desc->sleep_reqstr_id, in palmas_clks_init_configure()
228 cinfo->ext_control_pin, true); in palmas_clks_init_configure()
230 dev_err(cinfo->dev, "Ext config for %s failed, %d\n", in palmas_clks_init_configure()
231 cinfo->clk_desc->clk_name, ret); in palmas_clks_init_configure()
232 clk_unprepare(cinfo->hw.clk); in palmas_clks_init_configure()
241 struct palmas *palmas = dev_get_drvdata(pdev->dev.parent); in palmas_clks_probe()
242 struct device_node *node = pdev->dev.of_node; in palmas_clks_probe()
247 match_data = of_device_get_match_data(&pdev->dev); in palmas_clks_probe()
251 cinfo = devm_kzalloc(&pdev->dev, sizeof(*cinfo), GFP_KERNEL); in palmas_clks_probe()
253 return -ENOMEM; in palmas_clks_probe()
258 cinfo->dev = &pdev->dev; in palmas_clks_probe()
259 cinfo->palmas = palmas; in palmas_clks_probe()
261 cinfo->clk_desc = &match_data->desc; in palmas_clks_probe()
262 cinfo->hw.init = &match_data->init; in palmas_clks_probe()
263 ret = devm_clk_hw_register(&pdev->dev, &cinfo->hw); in palmas_clks_probe()
265 dev_err(&pdev->dev, "Fail to register clock %s, %d\n", in palmas_clks_probe()
266 match_data->desc.clk_name, ret); in palmas_clks_probe()
272 dev_err(&pdev->dev, "Clock config failed, %d\n", ret); in palmas_clks_probe()
276 ret = of_clk_add_hw_provider(node, of_clk_hw_simple_get, &cinfo->hw); in palmas_clks_probe()
278 dev_err(&pdev->dev, "Fail to add clock driver, %d\n", ret); in palmas_clks_probe()
284 of_clk_del_provider(pdev->dev.of_node); in palmas_clks_remove()
290 .name = "palmas-clk",
300 MODULE_ALIAS("platform:palmas-clk");