usb: gadget: fsl-mxc-udc: replace cpu_is_xxx() with platform_device_id
As mach/hardware.h is deleted, we need to use platform_device_id to differentiate SoCs. Besides, one cpu_is_mx35 is useless as it has already used pdata to differentiate runtime Meanwhile we update the platform code accordingly. Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
091a62c9b3
commit
f0ea8834df
@ -63,6 +63,7 @@ struct platform_device *__init imx_add_flexcan(
|
|||||||
|
|
||||||
#include <linux/fsl_devices.h>
|
#include <linux/fsl_devices.h>
|
||||||
struct imx_fsl_usb2_udc_data {
|
struct imx_fsl_usb2_udc_data {
|
||||||
|
const char *devid;
|
||||||
resource_size_t iobase;
|
resource_size_t iobase;
|
||||||
resource_size_t irq;
|
resource_size_t irq;
|
||||||
};
|
};
|
||||||
|
@ -11,35 +11,36 @@
|
|||||||
#include "../hardware.h"
|
#include "../hardware.h"
|
||||||
#include "devices-common.h"
|
#include "devices-common.h"
|
||||||
|
|
||||||
#define imx_fsl_usb2_udc_data_entry_single(soc) \
|
#define imx_fsl_usb2_udc_data_entry_single(soc, _devid) \
|
||||||
{ \
|
{ \
|
||||||
|
.devid = _devid, \
|
||||||
.iobase = soc ## _USB_OTG_BASE_ADDR, \
|
.iobase = soc ## _USB_OTG_BASE_ADDR, \
|
||||||
.irq = soc ## _INT_USB_OTG, \
|
.irq = soc ## _INT_USB_OTG, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX25
|
#ifdef CONFIG_SOC_IMX25
|
||||||
const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst =
|
const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst =
|
||||||
imx_fsl_usb2_udc_data_entry_single(MX25);
|
imx_fsl_usb2_udc_data_entry_single(MX25, "imx-udc-mx27");
|
||||||
#endif /* ifdef CONFIG_SOC_IMX25 */
|
#endif /* ifdef CONFIG_SOC_IMX25 */
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX27
|
#ifdef CONFIG_SOC_IMX27
|
||||||
const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst =
|
const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst =
|
||||||
imx_fsl_usb2_udc_data_entry_single(MX27);
|
imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27");
|
||||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX31
|
#ifdef CONFIG_SOC_IMX31
|
||||||
const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst =
|
const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst =
|
||||||
imx_fsl_usb2_udc_data_entry_single(MX31);
|
imx_fsl_usb2_udc_data_entry_single(MX31, "imx-udc-mx27");
|
||||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX35
|
#ifdef CONFIG_SOC_IMX35
|
||||||
const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst =
|
const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst =
|
||||||
imx_fsl_usb2_udc_data_entry_single(MX35);
|
imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27");
|
||||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX51
|
#ifdef CONFIG_SOC_IMX51
|
||||||
const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst =
|
const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst =
|
||||||
imx_fsl_usb2_udc_data_entry_single(MX51);
|
imx_fsl_usb2_udc_data_entry_single(MX51, "imx-udc-mx51");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct platform_device *__init imx_add_fsl_usb2_udc(
|
struct platform_device *__init imx_add_fsl_usb2_udc(
|
||||||
@ -57,7 +58,7 @@ struct platform_device *__init imx_add_fsl_usb2_udc(
|
|||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
return imx_add_platform_device_dmamask("fsl-usb2-udc", -1,
|
return imx_add_platform_device_dmamask(data->devid, -1,
|
||||||
res, ARRAY_SIZE(res),
|
res, ARRAY_SIZE(res),
|
||||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
|
||||||
|
|
||||||
static struct clk *mxc_ahb_clk;
|
static struct clk *mxc_ahb_clk;
|
||||||
static struct clk *mxc_per_clk;
|
static struct clk *mxc_per_clk;
|
||||||
static struct clk *mxc_ipg_clk;
|
static struct clk *mxc_ipg_clk;
|
||||||
@ -59,7 +57,7 @@ int fsl_udc_clk_init(struct platform_device *pdev)
|
|||||||
clk_prepare_enable(mxc_per_clk);
|
clk_prepare_enable(mxc_per_clk);
|
||||||
|
|
||||||
/* make sure USB_CLK is running at 60 MHz +/- 1000 Hz */
|
/* make sure USB_CLK is running at 60 MHz +/- 1000 Hz */
|
||||||
if (!cpu_is_mx51()) {
|
if (!strcmp(pdev->id_entry->name, "imx-udc-mx27")) {
|
||||||
freq = clk_get_rate(mxc_per_clk);
|
freq = clk_get_rate(mxc_per_clk);
|
||||||
if (pdata->phy_mode != FSL_USB2_PHY_ULPI &&
|
if (pdata->phy_mode != FSL_USB2_PHY_ULPI &&
|
||||||
(freq < 59999000 || freq > 60001000)) {
|
(freq < 59999000 || freq > 60001000)) {
|
||||||
@ -82,17 +80,15 @@ eclkrate:
|
|||||||
void fsl_udc_clk_finalize(struct platform_device *pdev)
|
void fsl_udc_clk_finalize(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data;
|
struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data;
|
||||||
if (cpu_is_mx35()) {
|
unsigned int v;
|
||||||
unsigned int v;
|
|
||||||
|
|
||||||
/* workaround ENGcm09152 for i.MX35 */
|
/* workaround ENGcm09152 for i.MX35 */
|
||||||
if (pdata->workaround & FLS_USB2_WORKAROUND_ENGCM09152) {
|
if (pdata->workaround & FLS_USB2_WORKAROUND_ENGCM09152) {
|
||||||
v = readl(MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
|
v = readl(MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
|
||||||
USBPHYCTRL_OTGBASE_OFFSET));
|
USBPHYCTRL_OTGBASE_OFFSET));
|
||||||
writel(v | USBPHYCTRL_EVDO,
|
writel(v | USBPHYCTRL_EVDO,
|
||||||
MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
|
MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
|
||||||
USBPHYCTRL_OTGBASE_OFFSET));
|
USBPHYCTRL_OTGBASE_OFFSET));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ULPI transceivers don't need usbpll */
|
/* ULPI transceivers don't need usbpll */
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <linux/fsl_devices.h>
|
#include <linux/fsl_devices.h>
|
||||||
#include <linux/dmapool.h>
|
#include <linux/dmapool.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
@ -2438,11 +2439,6 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
u32 dccparams;
|
u32 dccparams;
|
||||||
|
|
||||||
if (strcmp(pdev->name, driver_name)) {
|
|
||||||
VDBG("Wrong device");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
udc_controller = kzalloc(sizeof(struct fsl_udc), GFP_KERNEL);
|
udc_controller = kzalloc(sizeof(struct fsl_udc), GFP_KERNEL);
|
||||||
if (udc_controller == NULL) {
|
if (udc_controller == NULL) {
|
||||||
ERR("malloc udc failed\n");
|
ERR("malloc udc failed\n");
|
||||||
@ -2756,22 +2752,32 @@ static int fsl_udc_otg_resume(struct device *dev)
|
|||||||
|
|
||||||
return fsl_udc_resume(NULL);
|
return fsl_udc_resume(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
Register entry point for the peripheral controller driver
|
Register entry point for the peripheral controller driver
|
||||||
--------------------------------------------------------------------------*/
|
--------------------------------------------------------------------------*/
|
||||||
|
static const struct platform_device_id fsl_udc_devtype[] = {
|
||||||
|
{
|
||||||
|
.name = "imx-udc-mx27",
|
||||||
|
}, {
|
||||||
|
.name = "imx-udc-mx51",
|
||||||
|
}, {
|
||||||
|
/* sentinel */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(platform, fsl_udc_devtype);
|
||||||
static struct platform_driver udc_driver = {
|
static struct platform_driver udc_driver = {
|
||||||
.remove = __exit_p(fsl_udc_remove),
|
.remove = __exit_p(fsl_udc_remove),
|
||||||
|
/* Just for FSL i.mx SoC currently */
|
||||||
|
.id_table = fsl_udc_devtype,
|
||||||
/* these suspend and resume are not usb suspend and resume */
|
/* these suspend and resume are not usb suspend and resume */
|
||||||
.suspend = fsl_udc_suspend,
|
.suspend = fsl_udc_suspend,
|
||||||
.resume = fsl_udc_resume,
|
.resume = fsl_udc_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = (char *)driver_name,
|
.name = (char *)driver_name,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
/* udc suspend/resume called from OTG driver */
|
/* udc suspend/resume called from OTG driver */
|
||||||
.suspend = fsl_udc_otg_suspend,
|
.suspend = fsl_udc_otg_suspend,
|
||||||
.resume = fsl_udc_otg_resume,
|
.resume = fsl_udc_otg_resume,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user