|
@@ -603,3 +603,63 @@ void omap3_cm_restore_context(void)
|
|
|
omap2_cm_write_mod_reg(cm_context.per_cm_clkstctrl, OMAP3430_PER_MOD,
|
|
|
OMAP2_CM_CLKSTCTRL);
|
|
|
omap2_cm_write_mod_reg(cm_context.neon_cm_clkstctrl, OMAP3430_NEON_MOD,
|
|
|
+ OMAP2_CM_CLKSTCTRL);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.usbhost_cm_clkstctrl,
|
|
|
+ OMAP3430ES2_USBHOST_MOD, OMAP2_CM_CLKSTCTRL);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.core_cm_autoidle1, CORE_MOD,
|
|
|
+ CM_AUTOIDLE1);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.core_cm_autoidle2, CORE_MOD,
|
|
|
+ CM_AUTOIDLE2);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.core_cm_autoidle3, CORE_MOD,
|
|
|
+ CM_AUTOIDLE3);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.wkup_cm_autoidle, WKUP_MOD,
|
|
|
+ CM_AUTOIDLE);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.dss_cm_autoidle, OMAP3430_DSS_MOD,
|
|
|
+ CM_AUTOIDLE);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.cam_cm_autoidle, OMAP3430_CAM_MOD,
|
|
|
+ CM_AUTOIDLE);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.per_cm_autoidle, OMAP3430_PER_MOD,
|
|
|
+ CM_AUTOIDLE);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.usbhost_cm_autoidle,
|
|
|
+ OMAP3430ES2_USBHOST_MOD, CM_AUTOIDLE);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.sgx_cm_sleepdep, OMAP3430ES2_SGX_MOD,
|
|
|
+ OMAP3430_CM_SLEEPDEP);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.dss_cm_sleepdep, OMAP3430_DSS_MOD,
|
|
|
+ OMAP3430_CM_SLEEPDEP);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.cam_cm_sleepdep, OMAP3430_CAM_MOD,
|
|
|
+ OMAP3430_CM_SLEEPDEP);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.per_cm_sleepdep, OMAP3430_PER_MOD,
|
|
|
+ OMAP3430_CM_SLEEPDEP);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.usbhost_cm_sleepdep,
|
|
|
+ OMAP3430ES2_USBHOST_MOD, OMAP3430_CM_SLEEPDEP);
|
|
|
+ omap2_cm_write_mod_reg(cm_context.cm_clkout_ctrl, OMAP3430_CCR_MOD,
|
|
|
+ OMAP3_CM_CLKOUT_CTRL_OFFSET);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+static struct cm_ll_data omap3xxx_cm_ll_data = {
|
|
|
+ .split_idlest_reg = &omap3xxx_cm_split_idlest_reg,
|
|
|
+ .wait_module_ready = &omap3xxx_cm_wait_module_ready,
|
|
|
+};
|
|
|
+
|
|
|
+int __init omap3xxx_cm_init(void)
|
|
|
+{
|
|
|
+ if (!cpu_is_omap34xx())
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ return cm_register(&omap3xxx_cm_ll_data);
|
|
|
+}
|
|
|
+
|
|
|
+static void __exit omap3xxx_cm_exit(void)
|
|
|
+{
|
|
|
+ if (!cpu_is_omap34xx())
|
|
|
+ return;
|
|
|
+
|
|
|
+ /* Should never happen */
|
|
|
+ WARN(cm_unregister(&omap3xxx_cm_ll_data),
|
|
|
+ "%s: cm_ll_data function pointer mismatch\n", __func__);
|
|
|
+}
|
|
|
+__exitcall(omap3xxx_cm_exit);
|