On 10/30/2013 04:06 AM, Peter Chen wrote: > Due to imx28 needs ARM swp instruction for writing, we set > CI_HDRC_IMX28_WRITE_FIX for imx28. > > Signed-off-by: Peter Chen <peter.chen@xxxxxxxxxxxxx> > --- > drivers/usb/chipidea/ci_hdrc_imx.c | 32 ++++++++++++++++++++++++++------ > 1 files changed, 26 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > index 023d3cb..68f7f5e 100644 > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > @@ -23,6 +23,26 @@ > #include "ci.h" > #include "ci_hdrc_imx.h" > > +#define CI_HDRC_IMX_IMX28_WRITE_FIX BIT(0) > + > +struct ci_hdrc_imx_platform_flag { > + unsigned int flags; > +}; > + > +static const struct ci_hdrc_imx_platform_flag imx27_usb_data = { > +}; > + > +static const struct ci_hdrc_imx_platform_flag imx28_usb_data = { > + .flags = CI_HDRC_IMX_IMX28_WRITE_FIX, > +}; > + > +static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > + { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data}, > + { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data}, ^^^ Nitpick, please add ", " or a single space. Marc > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); > + > struct ci_hdrc_imx_data { > struct usb_phy *phy; > struct platform_device *ci_pdev; > @@ -82,6 +102,9 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) > CI_HDRC_DISABLE_STREAMING, > }; > int ret; > + const struct of_device_id *of_id = > + of_match_device(ci_hdrc_imx_dt_ids, &pdev->dev); > + const struct ci_hdrc_imx_platform_flag *imx_platform_flag = of_id->data; > > data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > if (!data) { > @@ -115,6 +138,9 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) > > pdata.phy = data->phy; > > + if (imx_platform_flag->flags & CI_HDRC_IMX_IMX28_WRITE_FIX) > + pdata.flags |= CI_HDRC_IMX28_WRITE_FIX; > + > if (!pdev->dev.dma_mask) > pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; > if (!pdev->dev.coherent_dma_mask) > @@ -174,12 +200,6 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev) > return 0; > } > > -static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > - { .compatible = "fsl,imx27-usb", }, > - { /* sentinel */ } > -}; > -MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); > - > static struct platform_driver ci_hdrc_imx_driver = { > .probe = ci_hdrc_imx_probe, > .remove = ci_hdrc_imx_remove, > -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
Attachment:
signature.asc
Description: OpenPGP digital signature