|
@@ -3480,3 +3480,147 @@ static struct omap_hwmod_ocp_if am35xx_l4_core__mdio = {
|
|
static struct omap_hwmod_irq_info am35xx_emac_mpu_irqs[] = {
|
|
static struct omap_hwmod_irq_info am35xx_emac_mpu_irqs[] = {
|
|
{ .name = "rxthresh", .irq = 67 + OMAP_INTC_START, },
|
|
{ .name = "rxthresh", .irq = 67 + OMAP_INTC_START, },
|
|
{ .name = "rx_pulse", .irq = 68 + OMAP_INTC_START, },
|
|
{ .name = "rx_pulse", .irq = 68 + OMAP_INTC_START, },
|
|
|
|
+ { .name = "tx_pulse", .irq = 69 + OMAP_INTC_START },
|
|
|
|
+ { .name = "misc_pulse", .irq = 70 + OMAP_INTC_START },
|
|
|
|
+ { .irq = -1 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_hwmod_class am35xx_emac_class = {
|
|
|
|
+ .name = "davinci_emac",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_hwmod am35xx_emac_hwmod = {
|
|
|
|
+ .name = "davinci_emac",
|
|
|
|
+ .mpu_irqs = am35xx_emac_mpu_irqs,
|
|
|
|
+ .class = &am35xx_emac_class,
|
|
|
|
+ .flags = HWMOD_NO_IDLEST,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* l3_core -> davinci emac interface */
|
|
|
|
+/*
|
|
|
|
+ * XXX Should be connected to an IPSS hwmod, not the L3 directly;
|
|
|
|
+ * but this will probably require some additional hwmod core support,
|
|
|
|
+ * so is left as a future to-do item.
|
|
|
|
+ */
|
|
|
|
+static struct omap_hwmod_ocp_if am35xx_emac__l3 = {
|
|
|
|
+ .master = &am35xx_emac_hwmod,
|
|
|
|
+ .slave = &omap3xxx_l3_main_hwmod,
|
|
|
|
+ .clk = "emac_ick",
|
|
|
|
+ .user = OCP_USER_MPU,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_hwmod_addr_space am35xx_emac_addrs[] = {
|
|
|
|
+ {
|
|
|
|
+ .pa_start = AM35XX_IPSS_EMAC_BASE,
|
|
|
|
+ .pa_end = AM35XX_IPSS_EMAC_BASE + 0x30000 - 1,
|
|
|
|
+ .flags = ADDR_TYPE_RT,
|
|
|
|
+ },
|
|
|
|
+ { }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* l4_core -> davinci emac */
|
|
|
|
+/*
|
|
|
|
+ * XXX Should be connected to an IPSS hwmod, not the L4_CORE directly;
|
|
|
|
+ * but this will probably require some additional hwmod core support,
|
|
|
|
+ * so is left as a future to-do item.
|
|
|
|
+ */
|
|
|
|
+static struct omap_hwmod_ocp_if am35xx_l4_core__emac = {
|
|
|
|
+ .master = &omap3xxx_l4_core_hwmod,
|
|
|
|
+ .slave = &am35xx_emac_hwmod,
|
|
|
|
+ .clk = "emac_ick",
|
|
|
|
+ .addr = am35xx_emac_addrs,
|
|
|
|
+ .user = OCP_USER_MPU,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_hwmod_ocp_if omap3xxx_l3_main__gpmc = {
|
|
|
|
+ .master = &omap3xxx_l3_main_hwmod,
|
|
|
|
+ .slave = &omap3xxx_gpmc_hwmod,
|
|
|
|
+ .clk = "core_l3_ick",
|
|
|
|
+ .addr = omap3xxx_gpmc_addrs,
|
|
|
|
+ .user = OCP_USER_MPU | OCP_USER_SDMA,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {
|
|
|
|
+ &omap3xxx_l3_main__l4_core,
|
|
|
|
+ &omap3xxx_l3_main__l4_per,
|
|
|
|
+ &omap3xxx_mpu__l3_main,
|
|
|
|
+ &omap3xxx_l3_main__l4_debugss,
|
|
|
|
+ &omap3xxx_l4_core__l4_wkup,
|
|
|
|
+ &omap3xxx_l4_core__mmc3,
|
|
|
|
+ &omap3_l4_core__uart1,
|
|
|
|
+ &omap3_l4_core__uart2,
|
|
|
|
+ &omap3_l4_per__uart3,
|
|
|
|
+ &omap3_l4_core__i2c1,
|
|
|
|
+ &omap3_l4_core__i2c2,
|
|
|
|
+ &omap3_l4_core__i2c3,
|
|
|
|
+ &omap3xxx_l4_wkup__l4_sec,
|
|
|
|
+ &omap3xxx_l4_wkup__timer1,
|
|
|
|
+ &omap3xxx_l4_per__timer2,
|
|
|
|
+ &omap3xxx_l4_per__timer3,
|
|
|
|
+ &omap3xxx_l4_per__timer4,
|
|
|
|
+ &omap3xxx_l4_per__timer5,
|
|
|
|
+ &omap3xxx_l4_per__timer6,
|
|
|
|
+ &omap3xxx_l4_per__timer7,
|
|
|
|
+ &omap3xxx_l4_per__timer8,
|
|
|
|
+ &omap3xxx_l4_per__timer9,
|
|
|
|
+ &omap3xxx_l4_core__timer10,
|
|
|
|
+ &omap3xxx_l4_core__timer11,
|
|
|
|
+ &omap3xxx_l4_wkup__wd_timer2,
|
|
|
|
+ &omap3xxx_l4_wkup__gpio1,
|
|
|
|
+ &omap3xxx_l4_per__gpio2,
|
|
|
|
+ &omap3xxx_l4_per__gpio3,
|
|
|
|
+ &omap3xxx_l4_per__gpio4,
|
|
|
|
+ &omap3xxx_l4_per__gpio5,
|
|
|
|
+ &omap3xxx_l4_per__gpio6,
|
|
|
|
+ &omap3xxx_dma_system__l3,
|
|
|
|
+ &omap3xxx_l4_core__dma_system,
|
|
|
|
+ &omap3xxx_l4_core__mcbsp1,
|
|
|
|
+ &omap3xxx_l4_per__mcbsp2,
|
|
|
|
+ &omap3xxx_l4_per__mcbsp3,
|
|
|
|
+ &omap3xxx_l4_per__mcbsp4,
|
|
|
|
+ &omap3xxx_l4_core__mcbsp5,
|
|
|
|
+ &omap3xxx_l4_per__mcbsp2_sidetone,
|
|
|
|
+ &omap3xxx_l4_per__mcbsp3_sidetone,
|
|
|
|
+ &omap34xx_l4_core__mcspi1,
|
|
|
|
+ &omap34xx_l4_core__mcspi2,
|
|
|
|
+ &omap34xx_l4_core__mcspi3,
|
|
|
|
+ &omap34xx_l4_core__mcspi4,
|
|
|
|
+ &omap3xxx_l4_wkup__counter_32k,
|
|
|
|
+ &omap3xxx_l3_main__gpmc,
|
|
|
|
+ NULL,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* GP-only hwmod links */
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3xxx_gp_hwmod_ocp_ifs[] __initdata = {
|
|
|
|
+ &omap3xxx_l4_sec__timer12,
|
|
|
|
+ NULL
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* 3430ES1-only hwmod links */
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3430es1_hwmod_ocp_ifs[] __initdata = {
|
|
|
|
+ &omap3430es1_dss__l3,
|
|
|
|
+ &omap3430es1_l4_core__dss,
|
|
|
|
+ NULL
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* 3430ES2+-only hwmod links */
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3430es2plus_hwmod_ocp_ifs[] __initdata = {
|
|
|
|
+ &omap3xxx_dss__l3,
|
|
|
|
+ &omap3xxx_l4_core__dss,
|
|
|
|
+ &omap3xxx_usbhsotg__l3,
|
|
|
|
+ &omap3xxx_l4_core__usbhsotg,
|
|
|
|
+ &omap3xxx_usb_host_hs__l3_main_2,
|
|
|
|
+ &omap3xxx_l4_core__usb_host_hs,
|
|
|
|
+ &omap3xxx_l4_core__usb_tll_hs,
|
|
|
|
+ NULL
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* <= 3430ES3-only hwmod links */
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3430_pre_es3_hwmod_ocp_ifs[] __initdata = {
|
|
|
|
+ &omap3xxx_l4_core__pre_es3_mmc1,
|
|
|
|
+ &omap3xxx_l4_core__pre_es3_mmc2,
|
|
|
|
+ NULL
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* 3430ES3+-only hwmod links */
|
|
|
|
+static struct omap_hwmod_ocp_if *omap3430_es3plus_hwmod_ocp_ifs[] __initdata = {
|