Skip to content

Commit ff7532c

Browse files
committed
Merge tag 'usb-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull more USB fixes from Greg Kroah-Hartman: "Here are some more USB fixes for the 3.8-rc4 tree. Some gadget driver fixes, and finally resolved the ehci-mxc driver build issues (it's just some code moving around and being deleted)." * tag 'usb-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: USB: EHCI: fix build error in ehci-mxc USB: EHCI: add a name for the platform-private field USB: EHCI: fix incorrect configuration test USB: EHCI: Move definition of EHCI_STATS to ehci.h USB: UHCI: fix IRQ race during initialization usb: gadget: FunctionFS: Fix missing braces in parse_opts usb: dwc3: gadget: fix ep->maxburst for ep0 ARM: i.MX clock: Change the connection-id for fsl-usb2-udc usb: gadget: fsl_mxc_udc: replace MX35_IO_ADDRESS to ioremap usb: gadget: fsl-mxc-udc: replace cpu_is_xxx() with platform_device_id usb: musb: cppi_dma: drop '__init' annotation
2 parents ae763db + dba63b2 commit ff7532c

File tree

19 files changed

+154
-147
lines changed

19 files changed

+154
-147
lines changed

arch/arm/mach-imx/clk-imx25.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ int __init mx25_clocks_init(void)
254254
clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2");
255255
clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.2");
256256
clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2");
257-
clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc");
258-
clk_register_clkdev(clk[usbotg_ahb], "ahb", "fsl-usb2-udc");
259-
clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc");
257+
clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27");
258+
clk_register_clkdev(clk[usbotg_ahb], "ahb", "imx-udc-mx27");
259+
clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27");
260260
clk_register_clkdev(clk[nfc_ipg_per], NULL, "imx25-nand.0");
261261
/* i.mx25 has the i.mx35 type cspi */
262262
clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0");

arch/arm/mach-imx/clk-imx27.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@ int __init mx27_clocks_init(unsigned long fref)
236236
clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0");
237237
clk_register_clkdev(clk[csi_ahb_gate], "ahb", "imx27-camera.0");
238238
clk_register_clkdev(clk[per4_gate], "per", "imx27-camera.0");
239-
clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc");
240-
clk_register_clkdev(clk[usb_ipg_gate], "ipg", "fsl-usb2-udc");
241-
clk_register_clkdev(clk[usb_ahb_gate], "ahb", "fsl-usb2-udc");
239+
clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27");
240+
clk_register_clkdev(clk[usb_ipg_gate], "ipg", "imx-udc-mx27");
241+
clk_register_clkdev(clk[usb_ahb_gate], "ahb", "imx-udc-mx27");
242242
clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0");
243243
clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.0");
244244
clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.0");

arch/arm/mach-imx/clk-imx31.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ int __init mx31_clocks_init(unsigned long fref)
139139
clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.2");
140140
clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.2");
141141
clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2");
142-
clk_register_clkdev(clk[usb_div_post], "per", "fsl-usb2-udc");
143-
clk_register_clkdev(clk[usb_gate], "ahb", "fsl-usb2-udc");
144-
clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc");
142+
clk_register_clkdev(clk[usb_div_post], "per", "imx-udc-mx27");
143+
clk_register_clkdev(clk[usb_gate], "ahb", "imx-udc-mx27");
144+
clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27");
145145
clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0");
146146
/* i.mx31 has the i.mx21 type uart */
147147
clk_register_clkdev(clk[uart1_gate], "per", "imx21-uart.0");

arch/arm/mach-imx/clk-imx35.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@ int __init mx35_clocks_init()
251251
clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2");
252252
clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2");
253253
clk_register_clkdev(clk[usbotg_gate], "ahb", "mxc-ehci.2");
254-
clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc");
255-
clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc");
256-
clk_register_clkdev(clk[usbotg_gate], "ahb", "fsl-usb2-udc");
254+
clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27");
255+
clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27");
256+
clk_register_clkdev(clk[usbotg_gate], "ahb", "imx-udc-mx27");
257257
clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0");
258258
clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0");
259259
clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0");

arch/arm/mach-imx/clk-imx51-imx53.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,9 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
269269
clk_register_clkdev(clk[usboh3_per_gate], "per", "mxc-ehci.2");
270270
clk_register_clkdev(clk[usboh3_gate], "ipg", "mxc-ehci.2");
271271
clk_register_clkdev(clk[usboh3_gate], "ahb", "mxc-ehci.2");
272-
clk_register_clkdev(clk[usboh3_per_gate], "per", "fsl-usb2-udc");
273-
clk_register_clkdev(clk[usboh3_gate], "ipg", "fsl-usb2-udc");
274-
clk_register_clkdev(clk[usboh3_gate], "ahb", "fsl-usb2-udc");
272+
clk_register_clkdev(clk[usboh3_per_gate], "per", "imx-udc-mx51");
273+
clk_register_clkdev(clk[usboh3_gate], "ipg", "imx-udc-mx51");
274+
clk_register_clkdev(clk[usboh3_gate], "ahb", "imx-udc-mx51");
275275
clk_register_clkdev(clk[nfc_gate], NULL, "imx51-nand");
276276
clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0");
277277
clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1");

arch/arm/mach-imx/devices/devices-common.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ struct platform_device *__init imx_add_flexcan(
6363

6464
#include <linux/fsl_devices.h>
6565
struct imx_fsl_usb2_udc_data {
66+
const char *devid;
6667
resource_size_t iobase;
6768
resource_size_t irq;
6869
};

arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,36 @@
1111
#include "../hardware.h"
1212
#include "devices-common.h"
1313

14-
#define imx_fsl_usb2_udc_data_entry_single(soc) \
14+
#define imx_fsl_usb2_udc_data_entry_single(soc, _devid) \
1515
{ \
16+
.devid = _devid, \
1617
.iobase = soc ## _USB_OTG_BASE_ADDR, \
1718
.irq = soc ## _INT_USB_OTG, \
1819
}
1920

2021
#ifdef CONFIG_SOC_IMX25
2122
const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst =
22-
imx_fsl_usb2_udc_data_entry_single(MX25);
23+
imx_fsl_usb2_udc_data_entry_single(MX25, "imx-udc-mx27");
2324
#endif /* ifdef CONFIG_SOC_IMX25 */
2425

2526
#ifdef CONFIG_SOC_IMX27
2627
const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst =
27-
imx_fsl_usb2_udc_data_entry_single(MX27);
28+
imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27");
2829
#endif /* ifdef CONFIG_SOC_IMX27 */
2930

3031
#ifdef CONFIG_SOC_IMX31
3132
const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst =
32-
imx_fsl_usb2_udc_data_entry_single(MX31);
33+
imx_fsl_usb2_udc_data_entry_single(MX31, "imx-udc-mx27");
3334
#endif /* ifdef CONFIG_SOC_IMX31 */
3435

3536
#ifdef CONFIG_SOC_IMX35
3637
const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst =
37-
imx_fsl_usb2_udc_data_entry_single(MX35);
38+
imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27");
3839
#endif /* ifdef CONFIG_SOC_IMX35 */
3940

4041
#ifdef CONFIG_SOC_IMX51
4142
const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst =
42-
imx_fsl_usb2_udc_data_entry_single(MX51);
43+
imx_fsl_usb2_udc_data_entry_single(MX51, "imx-udc-mx51");
4344
#endif
4445

4546
struct platform_device *__init imx_add_fsl_usb2_udc(
@@ -57,7 +58,7 @@ struct platform_device *__init imx_add_fsl_usb2_udc(
5758
.flags = IORESOURCE_IRQ,
5859
},
5960
};
60-
return imx_add_platform_device_dmamask("fsl-usb2-udc", -1,
61+
return imx_add_platform_device_dmamask(data->devid, -1,
6162
res, ARRAY_SIZE(res),
6263
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
6364
}

drivers/usb/dwc3/gadget.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,7 @@ static int dwc3_gadget_init_endpoints(struct dwc3 *dwc)
16051605

16061606
if (epnum == 0 || epnum == 1) {
16071607
dep->endpoint.maxpacket = 512;
1608+
dep->endpoint.maxburst = 1;
16081609
dep->endpoint.ops = &dwc3_gadget_ep0_ops;
16091610
if (!epnum)
16101611
dwc->gadget.ep0 = &dep->endpoint;

drivers/usb/gadget/f_fs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,15 +1153,15 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts)
11531153
pr_err("%s: unmapped value: %lu\n", opts, value);
11541154
return -EINVAL;
11551155
}
1156-
}
1157-
else if (!memcmp(opts, "gid", 3))
1156+
} else if (!memcmp(opts, "gid", 3)) {
11581157
data->perms.gid = make_kgid(current_user_ns(), value);
11591158
if (!gid_valid(data->perms.gid)) {
11601159
pr_err("%s: unmapped value: %lu\n", opts, value);
11611160
return -EINVAL;
11621161
}
1163-
else
1162+
} else {
11641163
goto invalid;
1164+
}
11651165
break;
11661166

11671167
default:

drivers/usb/gadget/fsl_mxc_udc.c

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,13 @@
1818
#include <linux/platform_device.h>
1919
#include <linux/io.h>
2020

21-
#include <mach/hardware.h>
22-
2321
static struct clk *mxc_ahb_clk;
2422
static struct clk *mxc_per_clk;
2523
static struct clk *mxc_ipg_clk;
2624

2725
/* workaround ENGcm09152 for i.MX35 */
28-
#define USBPHYCTRL_OTGBASE_OFFSET 0x608
26+
#define MX35_USBPHYCTRL_OFFSET 0x600
27+
#define USBPHYCTRL_OTGBASE_OFFSET 0x8
2928
#define USBPHYCTRL_EVDO (1 << 23)
3029

3130
int fsl_udc_clk_init(struct platform_device *pdev)
@@ -59,7 +58,7 @@ int fsl_udc_clk_init(struct platform_device *pdev)
5958
clk_prepare_enable(mxc_per_clk);
6059

6160
/* make sure USB_CLK is running at 60 MHz +/- 1000 Hz */
62-
if (!cpu_is_mx51()) {
61+
if (!strcmp(pdev->id_entry->name, "imx-udc-mx27")) {
6362
freq = clk_get_rate(mxc_per_clk);
6463
if (pdata->phy_mode != FSL_USB2_PHY_ULPI &&
6564
(freq < 59999000 || freq > 60001000)) {
@@ -79,27 +78,40 @@ int fsl_udc_clk_init(struct platform_device *pdev)
7978
return ret;
8079
}
8180

82-
void fsl_udc_clk_finalize(struct platform_device *pdev)
81+
int fsl_udc_clk_finalize(struct platform_device *pdev)
8382
{
8483
struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data;
85-
if (cpu_is_mx35()) {
86-
unsigned int v;
84+
int ret = 0;
8785

88-
/* workaround ENGcm09152 for i.MX35 */
89-
if (pdata->workaround & FLS_USB2_WORKAROUND_ENGCM09152) {
90-
v = readl(MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
91-
USBPHYCTRL_OTGBASE_OFFSET));
92-
writel(v | USBPHYCTRL_EVDO,
93-
MX35_IO_ADDRESS(MX35_USB_BASE_ADDR +
94-
USBPHYCTRL_OTGBASE_OFFSET));
86+
/* workaround ENGcm09152 for i.MX35 */
87+
if (pdata->workaround & FLS_USB2_WORKAROUND_ENGCM09152) {
88+
unsigned int v;
89+
struct resource *res = platform_get_resource
90+
(pdev, IORESOURCE_MEM, 0);
91+
void __iomem *phy_regs = ioremap(res->start +
92+
MX35_USBPHYCTRL_OFFSET, 512);
93+
if (!phy_regs) {
94+
dev_err(&pdev->dev, "ioremap for phy address fails\n");
95+
ret = -EINVAL;
96+
goto ioremap_err;
9597
}
98+
99+
v = readl(phy_regs + USBPHYCTRL_OTGBASE_OFFSET);
100+
writel(v | USBPHYCTRL_EVDO,
101+
phy_regs + USBPHYCTRL_OTGBASE_OFFSET);
102+
103+
iounmap(phy_regs);
96104
}
97105

106+
107+
ioremap_err:
98108
/* ULPI transceivers don't need usbpll */
99109
if (pdata->phy_mode == FSL_USB2_PHY_ULPI) {
100110
clk_disable_unprepare(mxc_per_clk);
101111
mxc_per_clk = NULL;
102112
}
113+
114+
return ret;
103115
}
104116

105117
void fsl_udc_clk_release(void)

0 commit comments

Comments
 (0)