Lines Matching refs:clock

76 static int ipa_interconnect_init(struct ipa_clock *clock, struct device *dev)  in ipa_interconnect_init()  argument
83 clock->memory_path = path; in ipa_interconnect_init()
88 clock->imem_path = path; in ipa_interconnect_init()
93 clock->config_path = path; in ipa_interconnect_init()
98 icc_put(clock->imem_path); in ipa_interconnect_init()
100 icc_put(clock->memory_path); in ipa_interconnect_init()
106 static void ipa_interconnect_exit(struct ipa_clock *clock) in ipa_interconnect_exit() argument
108 icc_put(clock->config_path); in ipa_interconnect_exit()
109 icc_put(clock->imem_path); in ipa_interconnect_exit()
110 icc_put(clock->memory_path); in ipa_interconnect_exit()
116 struct ipa_clock *clock = ipa->clock; in ipa_interconnect_enable() local
119 ret = icc_set_bw(clock->memory_path, IPA_MEMORY_AVG, IPA_MEMORY_PEAK); in ipa_interconnect_enable()
123 ret = icc_set_bw(clock->imem_path, IPA_IMEM_AVG, IPA_IMEM_PEAK); in ipa_interconnect_enable()
127 ret = icc_set_bw(clock->config_path, IPA_CONFIG_AVG, IPA_CONFIG_PEAK); in ipa_interconnect_enable()
134 (void)icc_set_bw(clock->imem_path, 0, 0); in ipa_interconnect_enable()
136 (void)icc_set_bw(clock->memory_path, 0, 0); in ipa_interconnect_enable()
144 struct ipa_clock *clock = ipa->clock; in ipa_interconnect_disable() local
147 ret = icc_set_bw(clock->memory_path, 0, 0); in ipa_interconnect_disable()
151 ret = icc_set_bw(clock->imem_path, 0, 0); in ipa_interconnect_disable()
155 ret = icc_set_bw(clock->config_path, 0, 0); in ipa_interconnect_disable()
162 (void)icc_set_bw(clock->imem_path, IPA_IMEM_AVG, IPA_IMEM_PEAK); in ipa_interconnect_disable()
164 (void)icc_set_bw(clock->memory_path, IPA_MEMORY_AVG, IPA_MEMORY_PEAK); in ipa_interconnect_disable()
178 ret = clk_prepare_enable(ipa->clock->core); in ipa_clock_enable()
188 clk_disable_unprepare(ipa->clock->core); in ipa_clock_disable()
198 return refcount_inc_not_zero(&ipa->clock->count); in ipa_clock_get_additional()
211 struct ipa_clock *clock = ipa->clock; in ipa_clock_get() local
219 mutex_lock(&clock->mutex); in ipa_clock_get()
231 refcount_set(&clock->count, 1); in ipa_clock_get()
234 mutex_unlock(&clock->mutex); in ipa_clock_get()
242 struct ipa_clock *clock = ipa->clock; in ipa_clock_put() local
245 if (!refcount_dec_and_mutex_lock(&clock->count, &clock->mutex)) in ipa_clock_put()
250 mutex_unlock(&clock->mutex); in ipa_clock_put()
256 return ipa->clock ? (u32)clk_get_rate(ipa->clock->core) : 0; in ipa_clock_rate()
262 struct ipa_clock *clock; in ipa_clock_init() local
279 clock = kzalloc(sizeof(*clock), GFP_KERNEL); in ipa_clock_init()
280 if (!clock) { in ipa_clock_init()
284 clock->core = clk; in ipa_clock_init()
286 ret = ipa_interconnect_init(clock, dev); in ipa_clock_init()
290 mutex_init(&clock->mutex); in ipa_clock_init()
291 refcount_set(&clock->count, 0); in ipa_clock_init()
293 return clock; in ipa_clock_init()
296 kfree(clock); in ipa_clock_init()
304 void ipa_clock_exit(struct ipa_clock *clock) in ipa_clock_exit() argument
306 struct clk *clk = clock->core; in ipa_clock_exit()
308 WARN_ON(refcount_read(&clock->count) != 0); in ipa_clock_exit()
309 mutex_destroy(&clock->mutex); in ipa_clock_exit()
310 ipa_interconnect_exit(clock); in ipa_clock_exit()
311 kfree(clock); in ipa_clock_exit()