Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d58de28 authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

ARM: mx3: dynamically allocate mxc-ehci devices

parent 9e1dde33
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -53,6 +53,7 @@ config MACH_PCM037
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_W1
	select IMX_HAVE_PLATFORM_MXC_W1
@@ -75,6 +76,7 @@ config MACH_MX31LITE
	select SOC_IMX31
	select SOC_IMX31
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select IMX_HAVE_PLATFORM_SPI_IMX
@@ -109,6 +111,7 @@ config MACH_MX31MOBOARD
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
@@ -120,6 +123,7 @@ config MACH_MX31LILLY
	bool "Support MX31 LILLY-1131 platforms (INCO startec)"
	bool "Support MX31 LILLY-1131 platforms (INCO startec)"
	select SOC_IMX31
	select SOC_IMX31
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
@@ -142,6 +146,7 @@ config MACH_PCM043
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_ESDHC
	select IMX_HAVE_PLATFORM_ESDHC
@@ -155,6 +160,7 @@ config MACH_ARMADILLO5X0
	select SOC_IMX31
	select SOC_IMX31
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
@@ -169,6 +175,7 @@ config MACH_MX35_3DS
	select IMX_HAVE_PLATFORM_ESDHC
	select IMX_HAVE_PLATFORM_ESDHC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	help
	help
	  Include support for MX35PDK platform. This includes specific
	  Include support for MX35PDK platform. This includes specific
@@ -188,6 +195,7 @@ config MACH_EUKREA_CPUIMX35
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_ESDHC
	select IMX_HAVE_PLATFORM_ESDHC
+7 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,13 @@ extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst;
#define imx31_add_imx_uart3(pdata)	imx31_add_imx_uart(3, pdata)
#define imx31_add_imx_uart3(pdata)	imx31_add_imx_uart(3, pdata)
#define imx31_add_imx_uart4(pdata)	imx31_add_imx_uart(4, pdata)
#define imx31_add_imx_uart4(pdata)	imx31_add_imx_uart(4, pdata)


extern const struct imx_mxc_ehci_data imx31_mxc_ehci_otg_data __initconst;
#define imx31_add_mxc_ehci_otg(pdata)	\
	imx_add_mxc_ehci(&imx31_mxc_ehci_otg_data, pdata)
extern const struct imx_mxc_ehci_data imx31_mxc_ehci_hs_data[] __initconst;
#define imx31_add_mxc_ehci_hs(id, pdata)	\
	imx_add_mxc_ehci(&imx31_mxc_ehci_hs_data[id - 1], pdata)

extern const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst;
extern const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst;
#define imx31_add_mxc_mmc(id, pdata)	\
#define imx31_add_mxc_mmc(id, pdata)	\
	imx_add_mxc_mmc(&imx31_mxc_mmc_data[id], pdata)
	imx_add_mxc_mmc(&imx31_mxc_mmc_data[id], pdata)
+7 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,13 @@ extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst;
#define imx35_add_imx_uart1(pdata)	imx35_add_imx_uart(1, pdata)
#define imx35_add_imx_uart1(pdata)	imx35_add_imx_uart(1, pdata)
#define imx35_add_imx_uart2(pdata)	imx35_add_imx_uart(2, pdata)
#define imx35_add_imx_uart2(pdata)	imx35_add_imx_uart(2, pdata)


extern const struct imx_mxc_ehci_data imx35_mxc_ehci_otg_data __initconst;
#define imx35_add_mxc_ehci_otg(pdata)	\
	imx_add_mxc_ehci(&imx35_mxc_ehci_otg_data, pdata)
extern const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data __initconst;
#define imx35_add_mxc_ehci_hs(pdata)	\
	imx_add_mxc_ehci(&imx35_mxc_ehci_hs_data, pdata)

extern const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst;
extern const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst;
#define imx35_add_mxc_nand(pdata)	\
#define imx35_add_mxc_nand(pdata)	\
	imx_add_mxc_nand(&imx35_mxc_nand_data, pdata)
	imx_add_mxc_nand(&imx35_mxc_nand_data, pdata)
+0 −89
Original line number Original line Diff line number Diff line
@@ -95,87 +95,6 @@ struct platform_device mx3_camera = {
	},
	},
};
};


static struct resource otg_resources[] = {
	{
		.start	= MX31_USB_OTG_BASE_ADDR,
		.end	= MX31_USB_OTG_BASE_ADDR + 0x1ff,
		.flags	= IORESOURCE_MEM,
	}, {
		.start	= MX31_INT_USB_OTG,
		.end	= MX31_INT_USB_OTG,
		.flags	= IORESOURCE_IRQ,
	},
};

static u64 otg_dmamask = DMA_BIT_MASK(32);

/* OTG host */
struct platform_device mxc_otg_host = {
	.name = "mxc-ehci",
	.id = 0,
	.dev = {
		.coherent_dma_mask = 0xffffffff,
		.dma_mask = &otg_dmamask,
	},
	.resource = otg_resources,
	.num_resources = ARRAY_SIZE(otg_resources),
};

/* USB host 1 */

static u64 usbh1_dmamask = ~(u32)0;

static struct resource mxc_usbh1_resources[] = {
	{
		.start = MX31_USB_HS1_BASE_ADDR,
		.end = MX31_USB_HS1_BASE_ADDR + 0x1ff,
		.flags = IORESOURCE_MEM,
	}, {
		.start = MX31_INT_USB_HS1,
		.end = MX31_INT_USB_HS1,
		.flags = IORESOURCE_IRQ,
	},
};

struct platform_device mxc_usbh1 = {
	.name = "mxc-ehci",
	.id = 1,
	.dev = {
		.coherent_dma_mask = 0xffffffff,
		.dma_mask = &usbh1_dmamask,
	},
	.resource = mxc_usbh1_resources,
	.num_resources = ARRAY_SIZE(mxc_usbh1_resources),
};

#ifdef CONFIG_ARCH_MX31
/* USB host 2 */
static u64 usbh2_dmamask = ~(u32)0;

static struct resource mxc_usbh2_resources[] = {
	{
		.start = MX31_USB_HS2_BASE_ADDR,
		.end = MX31_USB_HS2_BASE_ADDR + 0x1ff,
		.flags = IORESOURCE_MEM,
	}, {
		.start = MX31_INT_USB_HS2,
		.end = MX31_INT_USB_HS2,
		.flags = IORESOURCE_IRQ,
	},
};

struct platform_device mxc_usbh2 = {
	.name = "mxc-ehci",
	.id = 2,
	.dev = {
		.coherent_dma_mask = 0xffffffff,
		.dma_mask = &usbh2_dmamask,
	},
	.resource = mxc_usbh2_resources,
	.num_resources = ARRAY_SIZE(mxc_usbh2_resources),
};
#endif

static struct resource imx_wdt_resources[] = {
static struct resource imx_wdt_resources[] = {
	{
	{
		.flags = IORESOURCE_MEM,
		.flags = IORESOURCE_MEM,
@@ -237,14 +156,6 @@ static int __init mx3_devices_init(void)
#endif
#endif
#if defined(CONFIG_ARCH_MX35)
#if defined(CONFIG_ARCH_MX35)
	if (cpu_is_mx35()) {
	if (cpu_is_mx35()) {
		otg_resources[0].start = MX35_USB_OTG_BASE_ADDR;
		otg_resources[0].end = MX35_USB_OTG_BASE_ADDR + 0x1ff;
		otg_resources[1].start = MX35_INT_USB_OTG;
		otg_resources[1].end = MX35_INT_USB_OTG;
		mxc_usbh1_resources[0].start = MX35_USB_HS_BASE_ADDR;
		mxc_usbh1_resources[0].end = MX35_USB_HS_BASE_ADDR + 0x1ff;
		mxc_usbh1_resources[1].start = MX35_INT_USB_HS;
		mxc_usbh1_resources[1].end = MX35_INT_USB_HS;
		imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR;
		imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR;
		imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff;
		imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff;
	}
	}
+0 −3
Original line number Original line Diff line number Diff line
extern struct platform_device mx3_ipu;
extern struct platform_device mx3_ipu;
extern struct platform_device mx3_fb;
extern struct platform_device mx3_fb;
extern struct platform_device mx3_camera;
extern struct platform_device mx3_camera;
extern struct platform_device mxc_otg_host;
extern struct platform_device mxc_usbh1;
extern struct platform_device mxc_usbh2;
extern struct platform_device imx_wdt_device0;
extern struct platform_device imx_wdt_device0;
extern struct platform_device imx_rtc_device0;
extern struct platform_device imx_rtc_device0;
extern struct platform_device imx_kpp_device;
extern struct platform_device imx_kpp_device;
Loading