Lines Matching +full:reg +full:- +full:names

1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Murali Karicheri <m-karicheri2@ti.com>
9 #include <linux/clk-provider.h>
44 * struct clk_psc_data - PSC data
56 * struct clk_psc - PSC clock structure
96 } while (((ptstat >> domain_id) & 1) && count--); in psc_config()
101 } while (!((mdstat & MDSTAT_STATE_MASK) == next_state) && count--); in psc_config()
107 struct clk_psc_data *data = psc->psc_data; in keystone_clk_is_enabled()
108 u32 mdstat = readl(data->control_base + MDSTAT); in keystone_clk_is_enabled()
116 struct clk_psc_data *data = psc->psc_data; in keystone_clk_enable()
119 if (psc->lock) in keystone_clk_enable()
120 spin_lock_irqsave(psc->lock, flags); in keystone_clk_enable()
122 psc_config(data->control_base, data->domain_base, in keystone_clk_enable()
123 PSC_STATE_ENABLE, data->domain_id); in keystone_clk_enable()
125 if (psc->lock) in keystone_clk_enable()
126 spin_unlock_irqrestore(psc->lock, flags); in keystone_clk_enable()
134 struct clk_psc_data *data = psc->psc_data; in keystone_clk_disable()
137 if (psc->lock) in keystone_clk_disable()
138 spin_lock_irqsave(psc->lock, flags); in keystone_clk_disable()
140 psc_config(data->control_base, data->domain_base, in keystone_clk_disable()
141 PSC_STATE_DISABLE, data->domain_id); in keystone_clk_disable()
143 if (psc->lock) in keystone_clk_disable()
144 spin_unlock_irqrestore(psc->lock, flags); in keystone_clk_disable()
154 * clk_register_psc - register psc clock
173 return ERR_PTR(-ENOMEM); in clk_register_psc()
181 psc->psc_data = psc_data; in clk_register_psc()
182 psc->lock = lock; in clk_register_psc()
183 psc->hw.init = &init; in clk_register_psc()
185 clk = clk_register(NULL, &psc->hw); in clk_register_psc()
193 * of_psc_clk_init - initialize psc clock through DT
199 const char *clk_name = node->name; in of_psc_clk_init()
211 i = of_property_match_string(node, "reg-names", "control"); in of_psc_clk_init()
212 data->control_base = of_iomap(node, i); in of_psc_clk_init()
213 if (!data->control_base) { in of_psc_clk_init()
218 i = of_property_match_string(node, "reg-names", "domain"); in of_psc_clk_init()
219 data->domain_base = of_iomap(node, i); in of_psc_clk_init()
220 if (!data->domain_base) { in of_psc_clk_init()
225 of_property_read_u32(node, "domain-id", &data->domain_id); in of_psc_clk_init()
228 if (!domain_transition_base && !data->domain_id) in of_psc_clk_init()
229 domain_transition_base = data->domain_base; in of_psc_clk_init()
231 of_property_read_string(node, "clock-output-names", &clk_name); in of_psc_clk_init()
247 iounmap(data->domain_base); in of_psc_clk_init()
249 iounmap(data->control_base); in of_psc_clk_init()
256 * of_keystone_psc_clk_init - initialize psc clock through DT
263 CLK_OF_DECLARE(keystone_gate_clk, "ti,keystone,psc-clock",
268 MODULE_AUTHOR("Murali Karicheri <m-karicheri2@ti.com>");