|
@@ -585,3 +585,117 @@ static struct omap_hwmod_dma_info am35xx_uart4_sdma_reqs[] = {
|
|
|
* should not be needed. The functional clock structure of the AM35xx
|
|
|
* UART4 is extremely unclear and opaque; it is unclear what the role
|
|
|
* of uart1/2_fck is for the UART4. Any clarification from either
|
|
|
+ * empirical testing or the AM3505/3517 hardware designers would be
|
|
|
+ * most welcome.
|
|
|
+ */
|
|
|
+static struct omap_hwmod_opt_clk am35xx_uart4_opt_clks[] = {
|
|
|
+ { .role = "softreset_uart1_fck", .clk = "uart1_fck" },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am35xx_uart4_hwmod = {
|
|
|
+ .name = "uart4",
|
|
|
+ .mpu_irqs = am35xx_uart4_mpu_irqs,
|
|
|
+ .sdma_reqs = am35xx_uart4_sdma_reqs,
|
|
|
+ .main_clk = "uart4_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .module_offs = CORE_MOD,
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = AM35XX_EN_UART4_SHIFT,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = AM35XX_ST_UART4_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .opt_clks = am35xx_uart4_opt_clks,
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(am35xx_uart4_opt_clks),
|
|
|
+ .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
|
|
+ .class = &omap2_uart_class,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_class i2c_class = {
|
|
|
+ .name = "i2c",
|
|
|
+ .sysc = &i2c_sysc,
|
|
|
+ .rev = OMAP_I2C_IP_VERSION_1,
|
|
|
+ .reset = &omap_i2c_reset,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {
|
|
|
+ { .name = "dispc", .dma_req = 5 },
|
|
|
+ { .name = "dsi1", .dma_req = 74 },
|
|
|
+ { .dma_req = -1 }
|
|
|
+};
|
|
|
+
|
|
|
+/* dss */
|
|
|
+static struct omap_hwmod_opt_clk dss_opt_clks[] = {
|
|
|
+ /*
|
|
|
+ * The DSS HW needs all DSS clocks enabled during reset. The dss_core
|
|
|
+ * driver does not use these clocks.
|
|
|
+ */
|
|
|
+ { .role = "sys_clk", .clk = "dss2_alwon_fck" },
|
|
|
+ { .role = "tv_clk", .clk = "dss_tv_fck" },
|
|
|
+ /* required only on OMAP3430 */
|
|
|
+ { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap3430es1_dss_core_hwmod = {
|
|
|
+ .name = "dss_core",
|
|
|
+ .class = &omap2_dss_hwmod_class,
|
|
|
+ .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
|
|
|
+ .sdma_reqs = omap3xxx_dss_sdma_chs,
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_DSS1_SHIFT,
|
|
|
+ .module_offs = OMAP3430_DSS_MOD,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_stdby_bit = OMAP3430ES1_ST_DSS_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .opt_clks = dss_opt_clks,
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
|
|
|
+ .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap3xxx_dss_core_hwmod = {
|
|
|
+ .name = "dss_core",
|
|
|
+ .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
|
|
+ .class = &omap2_dss_hwmod_class,
|
|
|
+ .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
|
|
|
+ .sdma_reqs = omap3xxx_dss_sdma_chs,
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_DSS1_SHIFT,
|
|
|
+ .module_offs = OMAP3430_DSS_MOD,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT,
|
|
|
+ .idlest_stdby_bit = OMAP3430ES2_ST_DSS_STDBY_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .opt_clks = dss_opt_clks,
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * 'dispc' class
|
|
|
+ * display controller
|
|
|
+ */
|
|
|
+
|
|
|
+static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
|
|
|
+ .rev_offs = 0x0000,
|
|
|
+ .sysc_offs = 0x0010,
|
|
|
+ .syss_offs = 0x0014,
|
|
|
+ .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
|
|
|
+ SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
|
|
|
+ SYSC_HAS_ENAWAKEUP),
|
|
|
+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
|
|
+ MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
|
|
+ .sysc_fields = &omap_hwmod_sysc_type1,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_class omap3_dispc_hwmod_class = {
|
|
|
+ .name = "dispc",
|
|
|
+ .sysc = &omap3_dispc_sysc,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
|