|
@@ -1922,3 +1922,166 @@ static struct omap_hwmod am33xx_uart1_hwmod = {
|
|
|
static struct omap_hwmod_irq_info am33xx_uart2_irqs[] = {
|
|
|
{ .irq = 73 + OMAP_INTC_START, },
|
|
|
{ .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_uart2_hwmod = {
|
|
|
+ .name = "uart2",
|
|
|
+ .class = &uart_class,
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
+ .mpu_irqs = am33xx_uart2_irqs,
|
|
|
+ .sdma_reqs = uart1_edma_reqs,
|
|
|
+ .main_clk = "dpll_per_m2_div4_ck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_UART1_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* uart3 */
|
|
|
+static struct omap_hwmod_dma_info uart3_edma_reqs[] = {
|
|
|
+ { .name = "tx", .dma_req = 30, },
|
|
|
+ { .name = "rx", .dma_req = 31, },
|
|
|
+ { .dma_req = -1 }
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_irq_info am33xx_uart3_irqs[] = {
|
|
|
+ { .irq = 74 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_uart3_hwmod = {
|
|
|
+ .name = "uart3",
|
|
|
+ .class = &uart_class,
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
+ .mpu_irqs = am33xx_uart3_irqs,
|
|
|
+ .sdma_reqs = uart3_edma_reqs,
|
|
|
+ .main_clk = "dpll_per_m2_div4_ck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_UART2_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_irq_info am33xx_uart4_irqs[] = {
|
|
|
+ { .irq = 44 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_uart4_hwmod = {
|
|
|
+ .name = "uart4",
|
|
|
+ .class = &uart_class,
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
+ .mpu_irqs = am33xx_uart4_irqs,
|
|
|
+ .sdma_reqs = uart1_edma_reqs,
|
|
|
+ .main_clk = "dpll_per_m2_div4_ck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_UART3_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_irq_info am33xx_uart5_irqs[] = {
|
|
|
+ { .irq = 45 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_uart5_hwmod = {
|
|
|
+ .name = "uart5",
|
|
|
+ .class = &uart_class,
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
+ .mpu_irqs = am33xx_uart5_irqs,
|
|
|
+ .sdma_reqs = uart1_edma_reqs,
|
|
|
+ .main_clk = "dpll_per_m2_div4_ck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_UART4_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_irq_info am33xx_uart6_irqs[] = {
|
|
|
+ { .irq = 46 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_uart6_hwmod = {
|
|
|
+ .name = "uart6",
|
|
|
+ .class = &uart_class,
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
+ .mpu_irqs = am33xx_uart6_irqs,
|
|
|
+ .sdma_reqs = uart1_edma_reqs,
|
|
|
+ .main_clk = "dpll_per_m2_div4_ck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_UART5_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* 'wd_timer' class */
|
|
|
+static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
|
|
|
+ .name = "wd_timer",
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * XXX: device.c file uses hardcoded name for watchdog timer
|
|
|
+ * driver "wd_timer2, so we are also using same name as of now...
|
|
|
+ */
|
|
|
+static struct omap_hwmod am33xx_wd_timer1_hwmod = {
|
|
|
+ .name = "wd_timer2",
|
|
|
+ .class = &am33xx_wd_timer_hwmod_class,
|
|
|
+ .clkdm_name = "l4_wkup_clkdm",
|
|
|
+ .main_clk = "wdt1_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * 'usb_otg' class
|
|
|
+ * high-speed on-the-go universal serial bus (usb_otg) controller
|
|
|
+ */
|
|
|
+static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc = {
|
|
|
+ .rev_offs = 0x0,
|
|
|
+ .sysc_offs = 0x10,
|
|
|
+ .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
|
|
|
+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
|
|
+ MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
|
|
+ .sysc_fields = &omap_hwmod_sysc_type2,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_class am33xx_usbotg_class = {
|
|
|
+ .name = "usbotg",
|
|
|
+ .sysc = &am33xx_usbhsotg_sysc,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_irq_info am33xx_usbss_mpu_irqs[] = {
|
|
|
+ { .name = "usbss-irq", .irq = 17 + OMAP_INTC_START, },
|
|
|
+ { .name = "musb0-irq", .irq = 18 + OMAP_INTC_START, },
|
|
|
+ { .name = "musb1-irq", .irq = 19 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1, },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am33xx_usbss_hwmod = {
|
|
|
+ .name = "usb_otg_hs",
|
|
|
+ .class = &am33xx_usbotg_class,
|
|
|
+ .clkdm_name = "l3s_clkdm",
|
|
|
+ .mpu_irqs = am33xx_usbss_mpu_irqs,
|
|
|
+ .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
|
|
|
+ .main_clk = "usbotg_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap4 = {
|
|
|
+ .clkctrl_offs = AM33XX_CM_PER_USB0_CLKCTRL_OFFSET,
|
|
|
+ .modulemode = MODULEMODE_SWCTRL,
|
|
|
+ },
|