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

Commit 9e1dde33 authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

ARM: mx3: dynamically allocate fsl-usb2-udc devices



While adapting the #defines for this I noticed that the offset
used for USB HS on i.MX35 differs from the documented offset.
I kept the working offset and commented that the documentation
differs.

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent fed3d35b
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ config MACH_MX31ADS_WM1133_EV1
config MACH_PCM037
	bool "Support Phytec pcm037 (i.MX31) platforms"
	select SOC_IMX31
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_MMC
@@ -85,6 +86,7 @@ config MACH_MX31_3DS
	bool "Support MX31PDK (3DS)"
	select SOC_IMX31
	select MXC_DEBUG_BOARD
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
@@ -104,6 +106,7 @@ config MACH_MX31_3DS_MXC_NAND_USE_BBT
config MACH_MX31MOBOARD
	bool "Support mx31moboard platforms (EPFL Mobots group)"
	select SOC_IMX31
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_MMC
@@ -135,6 +138,7 @@ config MACH_QONG
config MACH_PCM043
	bool "Support Phytec pcm043 (i.MX35) platforms"
	select SOC_IMX35
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
@@ -162,10 +166,10 @@ config MACH_MX35_3DS
	bool "Support MX35PDK platform"
	select SOC_IMX35
	select MXC_DEBUG_BOARD
	select IMX_HAVE_PLATFORM_ESDHC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_ESDHC
	default n
	help
	  Include support for MX35PDK platform. This includes specific
	  configurations for the board and its peripherals.
@@ -181,6 +185,7 @@ config MACH_KZM_ARM11_01
config MACH_EUKREA_CPUIMX35
	bool "Support Eukrea CPUIMX35 Platform"
	select SOC_IMX35
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_NAND
+4 −0
Original line number Diff line number Diff line
@@ -9,6 +9,10 @@
#include <mach/mx31.h>
#include <mach/devices-common.h>

extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst;
#define imx31_add_fsl_usb2_udc(pdata)	\
	imx_add_fsl_usb2_udc(&imx31_fsl_usb2_udc_data, pdata)

extern const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst;
#define imx31_add_imx_i2c(id, pdata)	\
	imx_add_imx_i2c(&imx31_imx_i2c_data[id], pdata)
+4 −0
Original line number Diff line number Diff line
@@ -13,6 +13,10 @@ extern const struct imx_fec_data imx35_fec_data __initconst;
#define imx35_add_fec(pdata)	\
	imx_add_fec(&imx35_fec_data, pdata)

extern const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst;
#define imx35_add_fsl_usb2_udc(pdata)	\
	imx_add_fsl_usb2_udc(&imx35_fsl_usb2_udc_data, pdata)

extern const struct imx_flexcan_data imx35_flexcan_data[] __initconst;
#define imx35_add_flexcan(id, pdata)	\
	imx_add_flexcan(&imx35_flexcan_data[id], pdata)
+20 −32
Original line number Diff line number Diff line
@@ -97,30 +97,18 @@ struct platform_device mx3_camera = {

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

static u64 otg_dmamask = DMA_BIT_MASK(32);

/* OTG gadget device */
struct platform_device mxc_otg_udc_device = {
	.name		= "fsl-usb2-udc",
	.id		= -1,
	.dev		= {
		.dma_mask		= &otg_dmamask,
		.coherent_dma_mask	= DMA_BIT_MASK(32),
	},
	.resource	= otg_resources,
	.num_resources	= ARRAY_SIZE(otg_resources),
};

/* OTG host */
struct platform_device mxc_otg_host = {
	.name = "mxc-ehci",
@@ -139,12 +127,12 @@ static u64 usbh1_dmamask = ~(u32)0;

static struct resource mxc_usbh1_resources[] = {
	{
		.start = MX31_OTG_BASE_ADDR + 0x200,
		.end = MX31_OTG_BASE_ADDR + 0x3ff,
		.start = MX31_USB_HS1_BASE_ADDR,
		.end = MX31_USB_HS1_BASE_ADDR + 0x1ff,
		.flags = IORESOURCE_MEM,
	}, {
		.start = MX31_INT_USB1,
		.end = MX31_INT_USB1,
		.start = MX31_INT_USB_HS1,
		.end = MX31_INT_USB_HS1,
		.flags = IORESOURCE_IRQ,
	},
};
@@ -166,12 +154,12 @@ static u64 usbh2_dmamask = ~(u32)0;

static struct resource mxc_usbh2_resources[] = {
	{
		.start = MX31_OTG_BASE_ADDR + 0x400,
		.end = MX31_OTG_BASE_ADDR + 0x5ff,
		.start = MX31_USB_HS2_BASE_ADDR,
		.end = MX31_USB_HS2_BASE_ADDR + 0x1ff,
		.flags = IORESOURCE_MEM,
	}, {
		.start = MX31_INT_USB2,
		.end = MX31_INT_USB2,
		.start = MX31_INT_USB_HS2,
		.end = MX31_INT_USB_HS2,
		.flags = IORESOURCE_IRQ,
	},
};
@@ -249,14 +237,14 @@ static int __init mx3_devices_init(void)
#endif
#if defined(CONFIG_ARCH_MX35)
	if (cpu_is_mx35()) {
		otg_resources[0].start = MX35_OTG_BASE_ADDR;
		otg_resources[0].end = MX35_OTG_BASE_ADDR + 0x1ff;
		otg_resources[1].start = MX35_INT_USBOTG;
		otg_resources[1].end = MX35_INT_USBOTG;
		mxc_usbh1_resources[0].start = MX35_OTG_BASE_ADDR + 0x400;
		mxc_usbh1_resources[0].end = MX35_OTG_BASE_ADDR + 0x5ff;
		mxc_usbh1_resources[1].start = MX35_INT_USBHS;
		mxc_usbh1_resources[1].end = MX35_INT_USBHS;
		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].end = MX35_WDOG_BASE_ADDR + 0x3fff;
	}
+0 −1
Original line number Diff line number Diff line
extern struct platform_device mx3_ipu;
extern struct platform_device mx3_fb;
extern struct platform_device mx3_camera;
extern struct platform_device mxc_otg_udc_device;
extern struct platform_device mxc_otg_host;
extern struct platform_device mxc_usbh1;
extern struct platform_device mxc_usbh2;
Loading