blob: cb5fb710e8507760608ca2d37d7f29c7e9475a43 [file] [log] [blame]
Uwe Kleine-Königbd455ed2010-11-09 17:52:14 +01001/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include <mach/hardware.h>
10#include <mach/devices-common.h>
11
12#define imx_fsl_usb2_udc_data_entry_single(soc) \
13 { \
14 .iobase = soc ## _USB_OTG_BASE_ADDR, \
15 .irq = soc ## _INT_USB_OTG, \
16 }
17
Uwe Kleine-König224b8c82010-11-10 21:50:07 +010018#ifdef CONFIG_ARCH_MX25
19const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst =
20 imx_fsl_usb2_udc_data_entry_single(MX25);
21#endif
22
Uwe Kleine-Königbd455ed2010-11-09 17:52:14 +010023#ifdef CONFIG_SOC_IMX27
24const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst =
25 imx_fsl_usb2_udc_data_entry_single(MX27);
26#endif /* ifdef CONFIG_SOC_IMX27 */
27
28struct platform_device *__init imx_add_fsl_usb2_udc(
29 const struct imx_fsl_usb2_udc_data *data,
30 const struct fsl_usb2_platform_data *pdata)
31{
32 struct resource res[] = {
33 {
34 .start = data->iobase,
35 .end = data->iobase + SZ_512 - 1,
36 .flags = IORESOURCE_MEM,
37 }, {
38 .start = data->irq,
39 .end = data->irq,
40 .flags = IORESOURCE_IRQ,
41 },
42 };
43 return imx_add_platform_device_dmamask("fsl-usb2-udc", -1,
44 res, ARRAY_SIZE(res),
45 pdata, sizeof(*pdata), DMA_BIT_MASK(32));
46}