Lines Matching +full:low +full:- +full:level
28 * cm_ll_data: function pointers to SoC-specific implementations of
44 * omap2_set_globals_cm - set the CM/CM2 base addresses (for early use)
57 * cm_split_idlest_reg - split CM_IDLEST reg addr into its components
64 * via the @prcm_inst and @idlest_reg_id. Returns -EINVAL upon error,
72 if (!cm_ll_data->split_idlest_reg) { in cm_split_idlest_reg()
73 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in cm_split_idlest_reg()
75 return -EINVAL; in cm_split_idlest_reg()
78 ret = cm_ll_data->split_idlest_reg(idlest_reg, prcm_inst, in cm_split_idlest_reg()
80 *prcm_inst -= cm_base.offset; in cm_split_idlest_reg()
85 * omap_cm_wait_module_ready - wait for a module to leave idle or standby
93 * success, -EBUSY if the module doesn't enable in time, or -EINVAL if
94 * no per-SoC wait_module_ready() function pointer has been registered
100 if (!cm_ll_data->wait_module_ready) { in omap_cm_wait_module_ready()
101 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in omap_cm_wait_module_ready()
103 return -EINVAL; in omap_cm_wait_module_ready()
106 return cm_ll_data->wait_module_ready(part, prcm_mod, idlest_reg, in omap_cm_wait_module_ready()
111 * omap_cm_wait_module_idle - wait for a module to enter idle or standby
119 * 0 upon success, -EBUSY if the module doesn't enable in time, or
120 * -EINVAL if no per-SoC wait_module_idle() function pointer has been
126 if (!cm_ll_data->wait_module_idle) { in omap_cm_wait_module_idle()
127 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in omap_cm_wait_module_idle()
129 return -EINVAL; in omap_cm_wait_module_idle()
132 return cm_ll_data->wait_module_idle(part, prcm_mod, idlest_reg, in omap_cm_wait_module_idle()
137 * omap_cm_module_enable - enable a module
144 * making its IO space accessible. Return 0 upon success, -EINVAL if no
145 * per-SoC module_enable() function pointer has been registered.
149 if (!cm_ll_data->module_enable) { in omap_cm_module_enable()
150 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in omap_cm_module_enable()
152 return -EINVAL; in omap_cm_module_enable()
155 cm_ll_data->module_enable(mode, part, inst, clkctrl_offs); in omap_cm_module_enable()
160 * omap_cm_module_disable - disable a module
166 * makings its IO space inaccessible. Return 0 upon success, -EINVAL if
167 * no per-SoC module_disable() function pointer has been registered.
171 if (!cm_ll_data->module_disable) { in omap_cm_module_disable()
172 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in omap_cm_module_disable()
174 return -EINVAL; in omap_cm_module_disable()
177 cm_ll_data->module_disable(part, inst, clkctrl_offs); in omap_cm_module_disable()
183 if (!cm_ll_data->xlate_clkctrl) { in omap_cm_xlate_clkctrl()
184 WARN_ONCE(1, "cm: %s: no low-level function defined\n", in omap_cm_xlate_clkctrl()
188 return cm_ll_data->xlate_clkctrl(part, inst, clkctrl_offs); in omap_cm_xlate_clkctrl()
192 * cm_register - register per-SoC low-level data with the CM
193 * @cld: low-level per-SoC OMAP CM data & function pointers to register
195 * Register per-SoC low-level OMAP CM data and function pointers with
198 * it returns successfully. Returns 0 upon success, -EINVAL if @cld
199 * is NULL, or -EEXIST if cm_register() has already been called
205 return -EINVAL; in cm_register()
208 return -EEXIST; in cm_register()
216 * cm_unregister - unregister per-SoC low-level data & function pointers
217 * @cld: low-level per-SoC OMAP CM data & function pointers to unregister
219 * Unregister per-SoC low-level OMAP CM data and function pointers
223 * -EINVAL if @cld is NULL or if @cld does not match the struct
229 return -EINVAL; in cm_unregister()
267 .offset = -OMAP3430_IVA2_MOD,
289 { .compatible = "ti,omap2-prcm", .data = &omap2_prcm_data },
292 { .compatible = "ti,omap3-cm", .data = &omap3_cm_data },
295 { .compatible = "ti,omap4-cm1", .data = &cm_data },
296 { .compatible = "ti,omap4-cm2", .data = &cm2_data },
299 { .compatible = "ti,omap5-cm-core-aon", .data = &cm_data },
300 { .compatible = "ti,omap5-cm-core", .data = &cm2_data },
303 { .compatible = "ti,dra7-cm-core-aon", .data = &cm_data },
304 { .compatible = "ti,dra7-cm-core", .data = &cm2_data },
307 { .compatible = "ti,am3-prcm", .data = &am3_prcm_data },
310 { .compatible = "ti,am4-prcm", .data = &am4_prcm_data },
313 { .compatible = "ti,dm814-prcm", .data = &am3_prcm_data },
314 { .compatible = "ti,dm816-prcm", .data = &am3_prcm_data },
320 * omap2_cm_base_init - initialize iomappings for the CM drivers
336 data = (struct omap_prcm_init_data *)match->data; in omap2_cm_base_init()
342 if (data->index == TI_CLKM_CM) in omap2_cm_base_init()
345 if (data->index == TI_CLKM_CM2) in omap2_cm_base_init()
348 data->mem = ioremap(res.start, resource_size(&res)); in omap2_cm_base_init()
351 mem->pa = res.start + data->offset; in omap2_cm_base_init()
352 mem->va = data->mem + data->offset; in omap2_cm_base_init()
353 mem->offset = data->offset; in omap2_cm_base_init()
356 data->np = np; in omap2_cm_base_init()
358 if (data->init && (data->flags & CM_SINGLE_INSTANCE || in omap2_cm_base_init()
360 data->init(data); in omap2_cm_base_init()
367 * omap_cm_init - low level init for the CM drivers
369 * Initializes the low level clock infrastructure for CM drivers.
380 data = match->data; in omap_cm_init()
382 if (data->flags & CM_NO_CLOCKS) in omap_cm_init()
385 ret = omap2_clk_provider_init(np, data->index, NULL, data->mem); in omap_cm_init()