1bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König/* 2bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * Copyright (C) 2010 Pengutronix 3bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> 4bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * 5bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * This program is free software; you can redistribute it and/or modify it under 6bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * the terms of the GNU General Public License version 2 as published by the 7bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König * Free Software Foundation. 8bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König */ 9b7f080cfe223b3b7424872639d153695615a9255Alexey Dobriyan#include <linux/dma-mapping.h> 10bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König#include <mach/hardware.h> 11bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König#include <mach/devices-common.h> 12bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König 13bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König#define imx_fsl_usb2_udc_data_entry_single(soc) \ 14bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König { \ 15bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .iobase = soc ## _USB_OTG_BASE_ADDR, \ 16bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .irq = soc ## _INT_USB_OTG, \ 17bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König } 18bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König 19972cc48207450ce6aeed416ac176fe4d0482a4a3Uwe Kleine-König#ifdef CONFIG_SOC_IMX25 20224b8c83641c2f31e3efc9bc5956636cc42cadf7Uwe Kleine-Königconst struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst = 21224b8c83641c2f31e3efc9bc5956636cc42cadf7Uwe Kleine-König imx_fsl_usb2_udc_data_entry_single(MX25); 22972cc48207450ce6aeed416ac176fe4d0482a4a3Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX25 */ 23224b8c83641c2f31e3efc9bc5956636cc42cadf7Uwe Kleine-König 24bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König#ifdef CONFIG_SOC_IMX27 25bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-Königconst struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst = 26bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König imx_fsl_usb2_udc_data_entry_single(MX27); 27bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX27 */ 28bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König 299e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König#ifdef CONFIG_SOC_IMX31 309e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-Königconst struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst = 319e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König imx_fsl_usb2_udc_data_entry_single(MX31); 329e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX31 */ 339e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König 349e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König#ifdef CONFIG_SOC_IMX35 359e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-Königconst struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst = 369e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König imx_fsl_usb2_udc_data_entry_single(MX35); 379e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX35 */ 389e1dde33876ba83ad586c336647fff133d0f5472Uwe Kleine-König 396cafe48a6bfa8934d5564fbf9976a51040dac819Uwe Kleine-König#ifdef CONFIG_SOC_IMX51 406cafe48a6bfa8934d5564fbf9976a51040dac819Uwe Kleine-Königconst struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst = 416cafe48a6bfa8934d5564fbf9976a51040dac819Uwe Kleine-König imx_fsl_usb2_udc_data_entry_single(MX51); 426cafe48a6bfa8934d5564fbf9976a51040dac819Uwe Kleine-König#endif 436cafe48a6bfa8934d5564fbf9976a51040dac819Uwe Kleine-König 44bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-Königstruct platform_device *__init imx_add_fsl_usb2_udc( 45bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König const struct imx_fsl_usb2_udc_data *data, 46bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König const struct fsl_usb2_platform_data *pdata) 47bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König{ 48bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König struct resource res[] = { 49bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König { 50bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .start = data->iobase, 51bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .end = data->iobase + SZ_512 - 1, 52bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .flags = IORESOURCE_MEM, 53bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König }, { 54bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .start = data->irq, 55bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .end = data->irq, 56bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König .flags = IORESOURCE_IRQ, 57bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König }, 58bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König }; 59bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König return imx_add_platform_device_dmamask("fsl-usb2-udc", -1, 60bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König res, ARRAY_SIZE(res), 61bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König pdata, sizeof(*pdata), DMA_BIT_MASK(32)); 62bd455ed36c487b949068182bfee478b785ee090bUwe Kleine-König} 63