* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings @ 2010-03-23 4:35 Steve Bennett 2010-03-23 8:30 ` Hendrik Sattler 2010-03-23 8:52 ` Krzysztof Halasa 0 siblings, 2 replies; 8+ messages in thread From: Steve Bennett @ 2010-03-23 4:35 UTC (permalink / raw) To: linux-arm-kernel Here is a trivial patch to add support pxa25x_udc for additional IXP steppings. Please let me know if I should send this anywhere else/instead. Cheers, Steve -- ?Web: Embedded Web Framework - http://uweb.workware.net.au/ -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-USB-gadget-pxa25x-support-additional-IXP425-stepping.patch Type: application/octet-stream Size: 1167 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100323/4d800319/attachment.obj> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 4:35 [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings Steve Bennett @ 2010-03-23 8:30 ` Hendrik Sattler 2010-03-23 8:37 ` Steve Bennett 2010-03-23 8:52 ` Krzysztof Halasa 1 sibling, 1 reply; 8+ messages in thread From: Hendrik Sattler @ 2010-03-23 8:30 UTC (permalink / raw) To: linux-arm-kernel Zitat von Steve Bennett <steveb@workware.net.au>: > Here is a trivial patch to add support pxa25x_udc for additional IXP > steppings. > > Please let me know if I should send this anywhere else/instead. Your patch really is not the right approach. I had a similar patch some time ago[1]. This driver part should actually be reworked to not use that ifdef and switch-case thing (and not read the cpu id register itself, either). [1]: http://www.spinics.net/lists/arm-kernel/msg62009.html I am not up-to-date how far Russell got with his proposed changes. HS ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 8:30 ` Hendrik Sattler @ 2010-03-23 8:37 ` Steve Bennett 2010-03-23 9:20 ` Russell King - ARM Linux 0 siblings, 1 reply; 8+ messages in thread From: Steve Bennett @ 2010-03-23 8:37 UTC (permalink / raw) To: linux-arm-kernel On 23/03/2010, at 6:30 PM, Hendrik Sattler wrote: > Zitat von Steve Bennett <steveb@workware.net.au>: > >> Here is a trivial patch to add support pxa25x_udc for additional IXP >> steppings. >> >> Please let me know if I should send this anywhere else/instead. > > Your patch really is not the right approach. > > I had a similar patch some time ago[1]. This driver part should actually be reworked to not use that ifdef and switch-case thing (and not read the cpu id register itself, either). > > [1]: http://www.spinics.net/lists/arm-kernel/msg62009.html > > I am not up-to-date how far Russell got with his proposed changes. > > HS Thanks. I see Russell's proposed patch at http://www.spinics.net/lists/arm-kernel/msg63303.html Doesn't look like this got any further. It's been a year now (which is why I missed this thread). Russell, is there something stopping us going with your patch? Does it just need some updating/testing? Cheers, Steve -- ?Web: Embedded Web Framework - http://uweb.workware.net.au/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 8:37 ` Steve Bennett @ 2010-03-23 9:20 ` Russell King - ARM Linux 2010-03-23 12:58 ` Steve Bennett 0 siblings, 1 reply; 8+ messages in thread From: Russell King - ARM Linux @ 2010-03-23 9:20 UTC (permalink / raw) To: linux-arm-kernel On Tue, Mar 23, 2010 at 06:37:36PM +1000, Steve Bennett wrote: > Russell, is there something stopping us going with your patch? Nothing really - only lack of motivation and sufficient reason to make the change. > Does it just need some updating/testing? After a year, it certainly will do. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 9:20 ` Russell King - ARM Linux @ 2010-03-23 12:58 ` Steve Bennett 2010-04-23 1:48 ` Steve Bennett 0 siblings, 1 reply; 8+ messages in thread From: Steve Bennett @ 2010-03-23 12:58 UTC (permalink / raw) To: linux-arm-kernel On 23/03/2010, at 7:20 PM, Russell King - ARM Linux wrote: > On Tue, Mar 23, 2010 at 06:37:36PM +1000, Steve Bennett wrote: >> Russell, is there something stopping us going with your patch? > > Nothing really - only lack of motivation and sufficient reason to make > the change. > >> Does it just need some updating/testing? > > After a year, it certainly will do. OK. Your patch and Hendrik's are largely independent. If I update Hendrik's patch will that do? Something like this: diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index be5fb34..b63b65c 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c @@ -2096,39 +2096,11 @@ static struct pxa25x_udc memory = { #endif /* !CONFIG_USB_PXA25X_SMALL */ }; -#define CP15R0_VENDOR_MASK 0xffffe000 - -#if defined(CONFIG_ARCH_PXA) -#define CP15R0_XSCALE_VALUE 0x69052000 /* intel/arm/xscale */ - -#elif defined(CONFIG_ARCH_IXP4XX) -#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/ixp4xx */ - -#endif - #define CP15R0_PROD_MASK 0x000003f0 -#define PXA25x 0x00000100 /* and PXA26x */ -#define PXA210 0x00000120 - #define CP15R0_REV_MASK 0x0000000f - #define CP15R0_PRODREV_MASK (CP15R0_PROD_MASK | CP15R0_REV_MASK) #define PXA255_A0 0x00000106 /* or PXA260_B1 */ -#define PXA250_C0 0x00000105 /* or PXA26x_B0 */ -#define PXA250_B2 0x00000104 -#define PXA250_B1 0x00000103 /* or PXA260_A0 */ -#define PXA250_B0 0x00000102 -#define PXA250_A1 0x00000101 -#define PXA250_A0 0x00000100 - -#define PXA210_C0 0x00000125 -#define PXA210_B2 0x00000124 -#define PXA210_B1 0x00000123 -#define PXA210_B0 0x00000122 -#define IXP425_A0 0x000001c1 -#define IXP425_B0 0x000001f1 -#define IXP465_AD 0x00000200 /* * probe - binds to the platform device @@ -2137,42 +2109,24 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev) { struct pxa25x_udc *dev = &memory; int retval, vbus_irq, irq; - u32 chiprev; - /* insist on Intel/ARM/XScale */ - asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev)); - if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) { - pr_err("%s: not XScale!\n", driver_name); - return -ENODEV; - } +#if defined(CONFIG_ARCH_PXA) + if (cpu_is_pxa210() || cpu_is_pxa25x()) { + if ((read_cpuid_id() & CP15R0_PRODREV_MASK) == PXA255_A0) + dev->has_cfr = 1; + /* PXA250_A0/A1 "not released"; ep 13, 15 unusable */ + /* PXA21x/PXA25x with stepping < C0: OUT-DMA is broken ... */ + } else { - /* trigger chiprev-specific logic */ - switch (chiprev & CP15R0_PRODREV_MASK) { -#if defined(CONFIG_ARCH_PXA) - case PXA255_A0: - dev->has_cfr = 1; - break; - case PXA250_A0: - case PXA250_A1: - /* A0/A1 "not released"; ep 13, 15 unusable */ - /* fall through */ - case PXA250_B2: case PXA210_B2: - case PXA250_B1: case PXA210_B1: - case PXA250_B0: case PXA210_B0: - /* OUT-DMA is broken ... */ - /* fall through */ - case PXA250_C0: case PXA210_C0: - break; -#elif defined(CONFIG_ARCH_IXP4XX) - case IXP425_A0: - case IXP425_B0: - case IXP465_AD: +#elif defined(CONFIG_ARCH_IXP4XX) + if (cpu_is_ixp42x() || cpu_is_ixp43x() || cpu_is_ixp46x()) dev->has_cfr = 1; - break; + else { + +#else + { #endif - default: - pr_err("%s: unrecognized processor: %08x\n", - driver_name, chiprev); + pr_err("%s: unrecognized processor\n", driver_name); /* iop3xx, ixp4xx, ... */ return -ENODEV; } Steve -- ?Web: Embedded Web Framework - http://uweb.workware.net.au/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 12:58 ` Steve Bennett @ 2010-04-23 1:48 ` Steve Bennett 2010-04-23 4:36 ` Hendrik Sattler 0 siblings, 1 reply; 8+ messages in thread From: Steve Bennett @ 2010-04-23 1:48 UTC (permalink / raw) To: linux-arm-kernel Use generic cpu_is_... Modified version of patch by Hendrik Sattler Signed-off-by: Steve Bennett <steveb@workware.net.au> --- drivers/usb/gadget/pxa25x_udc.c | 74 +++++++------------------------------- 1 files changed, 14 insertions(+), 60 deletions(-) diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index be5fb34..b63b65c 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c @@ -2096,39 +2096,11 @@ static struct pxa25x_udc memory = { #endif /* !CONFIG_USB_PXA25X_SMALL */ }; -#define CP15R0_VENDOR_MASK 0xffffe000 - -#if defined(CONFIG_ARCH_PXA) -#define CP15R0_XSCALE_VALUE 0x69052000 /* intel/arm/xscale */ - -#elif defined(CONFIG_ARCH_IXP4XX) -#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/ixp4xx */ - -#endif - #define CP15R0_PROD_MASK 0x000003f0 -#define PXA25x 0x00000100 /* and PXA26x */ -#define PXA210 0x00000120 - #define CP15R0_REV_MASK 0x0000000f - #define CP15R0_PRODREV_MASK (CP15R0_PROD_MASK | CP15R0_REV_MASK) #define PXA255_A0 0x00000106 /* or PXA260_B1 */ -#define PXA250_C0 0x00000105 /* or PXA26x_B0 */ -#define PXA250_B2 0x00000104 -#define PXA250_B1 0x00000103 /* or PXA260_A0 */ -#define PXA250_B0 0x00000102 -#define PXA250_A1 0x00000101 -#define PXA250_A0 0x00000100 - -#define PXA210_C0 0x00000125 -#define PXA210_B2 0x00000124 -#define PXA210_B1 0x00000123 -#define PXA210_B0 0x00000122 -#define IXP425_A0 0x000001c1 -#define IXP425_B0 0x000001f1 -#define IXP465_AD 0x00000200 /* * probe - binds to the platform device @@ -2137,42 +2109,24 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev) { struct pxa25x_udc *dev = &memory; int retval, vbus_irq, irq; - u32 chiprev; - /* insist on Intel/ARM/XScale */ - asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev)); - if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) { - pr_err("%s: not XScale!\n", driver_name); - return -ENODEV; - } +#if defined(CONFIG_ARCH_PXA) + if (cpu_is_pxa210() || cpu_is_pxa25x()) { + if ((read_cpuid_id() & CP15R0_PRODREV_MASK) == PXA255_A0) + dev->has_cfr = 1; + /* PXA250_A0/A1 "not released"; ep 13, 15 unusable */ + /* PXA21x/PXA25x with stepping < C0: OUT-DMA is broken ... */ + } else { - /* trigger chiprev-specific logic */ - switch (chiprev & CP15R0_PRODREV_MASK) { -#if defined(CONFIG_ARCH_PXA) - case PXA255_A0: - dev->has_cfr = 1; - break; - case PXA250_A0: - case PXA250_A1: - /* A0/A1 "not released"; ep 13, 15 unusable */ - /* fall through */ - case PXA250_B2: case PXA210_B2: - case PXA250_B1: case PXA210_B1: - case PXA250_B0: case PXA210_B0: - /* OUT-DMA is broken ... */ - /* fall through */ - case PXA250_C0: case PXA210_C0: - break; -#elif defined(CONFIG_ARCH_IXP4XX) - case IXP425_A0: - case IXP425_B0: - case IXP465_AD: +#elif defined(CONFIG_ARCH_IXP4XX) + if (cpu_is_ixp42x() || cpu_is_ixp43x() || cpu_is_ixp46x()) dev->has_cfr = 1; - break; + else { + +#else + { #endif - default: - pr_err("%s: unrecognized processor: %08x\n", - driver_name, chiprev); + pr_err("%s: unrecognized processor\n", driver_name); /* iop3xx, ixp4xx, ... */ return -ENODEV; } -- 1.7.0.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-04-23 1:48 ` Steve Bennett @ 2010-04-23 4:36 ` Hendrik Sattler 0 siblings, 0 replies; 8+ messages in thread From: Hendrik Sattler @ 2010-04-23 4:36 UTC (permalink / raw) To: linux-arm-kernel Am Freitag 23 April 2010 03:48:59 schrieb Steve Bennett: > Use generic cpu_is_... > Modified version of patch by Hendrik Sattler > > Signed-off-by: Steve Bennett <steveb@workware.net.au> I'd really like to see this go in. Signed-off-by: Hendrik Sattler<post@hendrik-sattler.de> > --- > drivers/usb/gadget/pxa25x_udc.c | 74 > +++++++------------------------------- 1 files changed, 14 insertions(+), > 60 deletions(-) > > diff --git a/drivers/usb/gadget/pxa25x_udc.c > b/drivers/usb/gadget/pxa25x_udc.c index be5fb34..b63b65c 100644 > --- a/drivers/usb/gadget/pxa25x_udc.c > +++ b/drivers/usb/gadget/pxa25x_udc.c > @@ -2096,39 +2096,11 @@ static struct pxa25x_udc memory = { > #endif /* !CONFIG_USB_PXA25X_SMALL */ > }; > > -#define CP15R0_VENDOR_MASK 0xffffe000 > - > -#if defined(CONFIG_ARCH_PXA) > -#define CP15R0_XSCALE_VALUE 0x69052000 /* intel/arm/xscale */ > - > -#elif defined(CONFIG_ARCH_IXP4XX) > -#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/ixp4xx */ > - > -#endif > - > #define CP15R0_PROD_MASK 0x000003f0 > -#define PXA25x 0x00000100 /* and PXA26x */ > -#define PXA210 0x00000120 > - > #define CP15R0_REV_MASK 0x0000000f > - > #define CP15R0_PRODREV_MASK (CP15R0_PROD_MASK | CP15R0_REV_MASK) > > #define PXA255_A0 0x00000106 /* or PXA260_B1 */ > -#define PXA250_C0 0x00000105 /* or PXA26x_B0 */ > -#define PXA250_B2 0x00000104 > -#define PXA250_B1 0x00000103 /* or PXA260_A0 */ > -#define PXA250_B0 0x00000102 > -#define PXA250_A1 0x00000101 > -#define PXA250_A0 0x00000100 > - > -#define PXA210_C0 0x00000125 > -#define PXA210_B2 0x00000124 > -#define PXA210_B1 0x00000123 > -#define PXA210_B0 0x00000122 > -#define IXP425_A0 0x000001c1 > -#define IXP425_B0 0x000001f1 > -#define IXP465_AD 0x00000200 > > /* > * probe - binds to the platform device > @@ -2137,42 +2109,24 @@ static int __init pxa25x_udc_probe(struct > platform_device *pdev) { > struct pxa25x_udc *dev = &memory; > int retval, vbus_irq, irq; > - u32 chiprev; > > - /* insist on Intel/ARM/XScale */ > - asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev)); > - if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) { > - pr_err("%s: not XScale!\n", driver_name); > - return -ENODEV; > - } > +#if defined(CONFIG_ARCH_PXA) > + if (cpu_is_pxa210() || cpu_is_pxa25x()) { > + if ((read_cpuid_id() & CP15R0_PRODREV_MASK) == PXA255_A0) > + dev->has_cfr = 1; > + /* PXA250_A0/A1 "not released"; ep 13, 15 unusable */ > + /* PXA21x/PXA25x with stepping < C0: OUT-DMA is broken ... */ > + } else { > > - /* trigger chiprev-specific logic */ > - switch (chiprev & CP15R0_PRODREV_MASK) { > -#if defined(CONFIG_ARCH_PXA) > - case PXA255_A0: > - dev->has_cfr = 1; > - break; > - case PXA250_A0: > - case PXA250_A1: > - /* A0/A1 "not released"; ep 13, 15 unusable */ > - /* fall through */ > - case PXA250_B2: case PXA210_B2: > - case PXA250_B1: case PXA210_B1: > - case PXA250_B0: case PXA210_B0: > - /* OUT-DMA is broken ... */ > - /* fall through */ > - case PXA250_C0: case PXA210_C0: > - break; > -#elif defined(CONFIG_ARCH_IXP4XX) > - case IXP425_A0: > - case IXP425_B0: > - case IXP465_AD: > +#elif defined(CONFIG_ARCH_IXP4XX) > + if (cpu_is_ixp42x() || cpu_is_ixp43x() || cpu_is_ixp46x()) > dev->has_cfr = 1; > - break; > + else { > + > +#else > + { > #endif > - default: > - pr_err("%s: unrecognized processor: %08x\n", > - driver_name, chiprev); > + pr_err("%s: unrecognized processor\n", driver_name); > /* iop3xx, ixp4xx, ... */ > return -ENODEV; > } ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings 2010-03-23 4:35 [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings Steve Bennett 2010-03-23 8:30 ` Hendrik Sattler @ 2010-03-23 8:52 ` Krzysztof Halasa 1 sibling, 0 replies; 8+ messages in thread From: Krzysztof Halasa @ 2010-03-23 8:52 UTC (permalink / raw) To: linux-arm-kernel Steve Bennett <steveb@workware.net.au> writes: > Here is a trivial patch to add support pxa25x_udc for additional IXP > steppings. > > Please let me know if I should send this anywhere else/instead. Looks good. You also need to provide the "Signed-off-by" line as per Documentation/SubmittingPatches. -- Krzysztof Halasa ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-04-23 4:36 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-03-23 4:35 [PATCH] USB: gadget: pxa25x: support additional IXP425 steppings Steve Bennett 2010-03-23 8:30 ` Hendrik Sattler 2010-03-23 8:37 ` Steve Bennett 2010-03-23 9:20 ` Russell King - ARM Linux 2010-03-23 12:58 ` Steve Bennett 2010-04-23 1:48 ` Steve Bennett 2010-04-23 4:36 ` Hendrik Sattler 2010-03-23 8:52 ` Krzysztof Halasa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox