|
@@ -1571,3 +1571,161 @@ static struct omap_hwmod omap34xx_mcspi1 = {
|
|
|
/* mcspi2 */
|
|
|
static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
|
|
|
.num_chipselect = 2,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap34xx_mcspi2 = {
|
|
|
+ .name = "mcspi2",
|
|
|
+ .mpu_irqs = omap2_mcspi2_mpu_irqs,
|
|
|
+ .sdma_reqs = omap2_mcspi2_sdma_reqs,
|
|
|
+ .main_clk = "mcspi2_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .module_offs = CORE_MOD,
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_MCSPI2_SHIFT,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .class = &omap34xx_mcspi_class,
|
|
|
+ .dev_attr = &omap_mcspi2_dev_attr,
|
|
|
+};
|
|
|
+
|
|
|
+/* mcspi3 */
|
|
|
+static struct omap_hwmod_irq_info omap34xx_mcspi3_mpu_irqs[] = {
|
|
|
+ { .name = "irq", .irq = 91 + OMAP_INTC_START, }, /* 91 */
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_dma_info omap34xx_mcspi3_sdma_reqs[] = {
|
|
|
+ { .name = "tx0", .dma_req = 15 },
|
|
|
+ { .name = "rx0", .dma_req = 16 },
|
|
|
+ { .name = "tx1", .dma_req = 23 },
|
|
|
+ { .name = "rx1", .dma_req = 24 },
|
|
|
+ { .dma_req = -1 }
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
|
|
|
+ .num_chipselect = 2,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap34xx_mcspi3 = {
|
|
|
+ .name = "mcspi3",
|
|
|
+ .mpu_irqs = omap34xx_mcspi3_mpu_irqs,
|
|
|
+ .sdma_reqs = omap34xx_mcspi3_sdma_reqs,
|
|
|
+ .main_clk = "mcspi3_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .module_offs = CORE_MOD,
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_MCSPI3_SHIFT,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .class = &omap34xx_mcspi_class,
|
|
|
+ .dev_attr = &omap_mcspi3_dev_attr,
|
|
|
+};
|
|
|
+
|
|
|
+/* mcspi4 */
|
|
|
+static struct omap_hwmod_irq_info omap34xx_mcspi4_mpu_irqs[] = {
|
|
|
+ { .name = "irq", .irq = 48 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_dma_info omap34xx_mcspi4_sdma_reqs[] = {
|
|
|
+ { .name = "tx0", .dma_req = 70 }, /* DMA_SPI4_TX0 */
|
|
|
+ { .name = "rx0", .dma_req = 71 }, /* DMA_SPI4_RX0 */
|
|
|
+ { .dma_req = -1 }
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap2_mcspi_dev_attr omap_mcspi4_dev_attr = {
|
|
|
+ .num_chipselect = 1,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap34xx_mcspi4 = {
|
|
|
+ .name = "mcspi4",
|
|
|
+ .mpu_irqs = omap34xx_mcspi4_mpu_irqs,
|
|
|
+ .sdma_reqs = omap34xx_mcspi4_sdma_reqs,
|
|
|
+ .main_clk = "mcspi4_fck",
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .module_offs = CORE_MOD,
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_MCSPI4_SHIFT,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .class = &omap34xx_mcspi_class,
|
|
|
+ .dev_attr = &omap_mcspi4_dev_attr,
|
|
|
+};
|
|
|
+
|
|
|
+/* usbhsotg */
|
|
|
+static struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = {
|
|
|
+ .rev_offs = 0x0400,
|
|
|
+ .sysc_offs = 0x0404,
|
|
|
+ .syss_offs = 0x0408,
|
|
|
+ .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
|
|
|
+ SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
|
|
|
+ SYSC_HAS_AUTOIDLE),
|
|
|
+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
|
|
+ MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
|
|
+ .sysc_fields = &omap_hwmod_sysc_type1,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_class usbotg_class = {
|
|
|
+ .name = "usbotg",
|
|
|
+ .sysc = &omap3xxx_usbhsotg_sysc,
|
|
|
+};
|
|
|
+
|
|
|
+/* usb_otg_hs */
|
|
|
+static struct omap_hwmod_irq_info omap3xxx_usbhsotg_mpu_irqs[] = {
|
|
|
+
|
|
|
+ { .name = "mc", .irq = 92 + OMAP_INTC_START, },
|
|
|
+ { .name = "dma", .irq = 93 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
|
|
|
+ .name = "usb_otg_hs",
|
|
|
+ .mpu_irqs = omap3xxx_usbhsotg_mpu_irqs,
|
|
|
+ .main_clk = "hsotgusb_ick",
|
|
|
+ .prcm = {
|
|
|
+ .omap2 = {
|
|
|
+ .prcm_reg_id = 1,
|
|
|
+ .module_bit = OMAP3430_EN_HSOTGUSB_SHIFT,
|
|
|
+ .module_offs = CORE_MOD,
|
|
|
+ .idlest_reg_id = 1,
|
|
|
+ .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT,
|
|
|
+ .idlest_stdby_bit = OMAP3430ES2_ST_HSOTGUSB_STDBY_SHIFT
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .class = &usbotg_class,
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Erratum ID: i479 idle_req / idle_ack mechanism potentially
|
|
|
+ * broken when autoidle is enabled
|
|
|
+ * workaround is to disable the autoidle bit at module level.
|
|
|
+ */
|
|
|
+ .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
|
|
|
+ | HWMOD_SWSUP_MSTANDBY,
|
|
|
+};
|
|
|
+
|
|
|
+/* usb_otg_hs */
|
|
|
+static struct omap_hwmod_irq_info am35xx_usbhsotg_mpu_irqs[] = {
|
|
|
+ { .name = "mc", .irq = 71 + OMAP_INTC_START, },
|
|
|
+ { .irq = -1 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod_class am35xx_usbotg_class = {
|
|
|
+ .name = "am35xx_usbotg",
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_hwmod am35xx_usbhsotg_hwmod = {
|
|
|
+ .name = "am35x_otg_hs",
|
|
|
+ .mpu_irqs = am35xx_usbhsotg_mpu_irqs,
|
|
|
+ .main_clk = "hsotgusb_fck",
|
|
|
+ .class = &am35xx_usbotg_class,
|
|
|
+ .flags = HWMOD_NO_IDLEST,
|
|
|
+};
|