| /* |
| * Copyright (C) 2010 Pengutronix |
| * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> |
| * |
| * This program is free software; you can redistribute it and/or modify it under |
| * the terms of the GNU General Public License version 2 as published by the |
| * Free Software Foundation. |
| */ |
| #include "../hardware.h" |
| #include "devices-common.h" |
| |
| #define imx_imx_udc_data_entry_single(soc, _size) \ |
| { \ |
| .iobase = soc ## _USBD_BASE_ADDR, \ |
| .iosize = _size, \ |
| .irq0 = soc ## _INT_USBD0, \ |
| .irq1 = soc ## _INT_USBD1, \ |
| .irq2 = soc ## _INT_USBD2, \ |
| .irq3 = soc ## _INT_USBD3, \ |
| .irq4 = soc ## _INT_USBD4, \ |
| .irq5 = soc ## _INT_USBD5, \ |
| .irq6 = soc ## _INT_USBD6, \ |
| } |
| |
| #define imx_imx_udc_data_entry(soc, _size) \ |
| [_id] = imx_imx_udc_data_entry_single(soc, _size) |
| |
| #ifdef CONFIG_SOC_IMX1 |
| const struct imx_imx_udc_data imx1_imx_udc_data __initconst = |
| imx_imx_udc_data_entry_single(MX1, SZ_4K); |
| #endif /* ifdef CONFIG_SOC_IMX1 */ |
| |
| struct platform_device *__init imx_add_imx_udc( |
| const struct imx_imx_udc_data *data, |
| const struct imxusb_platform_data *pdata) |
| { |
| struct resource res[] = { |
| { |
| .start = data->iobase, |
| .end = data->iobase + data->iosize - 1, |
| .flags = IORESOURCE_MEM, |
| }, { |
| .start = data->irq0, |
| .end = data->irq0, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq1, |
| .end = data->irq1, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq2, |
| .end = data->irq2, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq3, |
| .end = data->irq3, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq4, |
| .end = data->irq4, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq5, |
| .end = data->irq5, |
| .flags = IORESOURCE_IRQ, |
| }, { |
| .start = data->irq6, |
| .end = data->irq6, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }; |
| |
| return imx_add_platform_device("imx_udc", 0, |
| res, ARRAY_SIZE(res), pdata, sizeof(*pdata)); |
| } |