1e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König/* 2e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * Copyright (C) 2010 Pengutronix 3e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> 4e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * 5e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * This program is free software; you can redistribute it and/or modify it under 6e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * the terms of the GNU General Public License version 2 as published by the 7e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König * Free Software Foundation. 8e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König */ 9e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#include <mach/hardware.h> 10e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#include <mach/devices-common.h> 11e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König 12e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#define imx_imx_udc_data_entry_single(soc, _size) \ 13e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König { \ 14e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .iobase = soc ## _USBD_BASE_ADDR, \ 15e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .iosize = _size, \ 16e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq0 = soc ## _INT_USBD0, \ 17e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq1 = soc ## _INT_USBD1, \ 18e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq2 = soc ## _INT_USBD2, \ 19e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq3 = soc ## _INT_USBD3, \ 20e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq4 = soc ## _INT_USBD4, \ 21e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq5 = soc ## _INT_USBD5, \ 22e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .irq6 = soc ## _INT_USBD6, \ 23e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König } 24e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König 25e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#define imx_imx_udc_data_entry(soc, _size) \ 26e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König [_id] = imx_imx_udc_data_entry_single(soc, _size) 27e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König 28e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#ifdef CONFIG_SOC_IMX1 29e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-Königconst struct imx_imx_udc_data imx1_imx_udc_data __initconst = 30e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König imx_imx_udc_data_entry_single(MX1, SZ_4K); 31e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX1 */ 32e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König 33e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-Königstruct platform_device *__init imx_add_imx_udc( 34e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König const struct imx_imx_udc_data *data, 35e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König const struct imxusb_platform_data *pdata) 36e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König{ 37e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König struct resource res[] = { 38e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König { 39e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->iobase, 40e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->iobase + data->iosize - 1, 41e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_MEM, 42e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 43e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq0, 44e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq0, 45e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 46e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 47e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq1, 48e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq1, 49e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 50e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 51e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq2, 52e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq2, 53e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 54e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 55e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq3, 56e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq3, 57e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 58e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 59e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq4, 60e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq4, 61e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 62e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 63e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq5, 64e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq5, 65e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 66e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, { 67e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .start = data->irq6, 68e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .end = data->irq6, 69e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König .flags = IORESOURCE_IRQ, 70e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }, 71e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König }; 72e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König 73e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König return imx_add_platform_device("imx_udc", 0, 74e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König res, ARRAY_SIZE(res), pdata, sizeof(*pdata)); 75e08300043ee4e2df10be551b76e126d6c02f26ccUwe Kleine-König} 76