On Feb 7, 2007, at 9:19 PM, Li Yang-r58472 wrote:

>> -----Original Message-----
>> From: Kumar Gala [mailto:[EMAIL PROTECTED]
>> Sent: Thursday, February 08, 2007 7:57 AM
>> To: Li Yang-r58472
>> Cc: [EMAIL PROTECTED]; Schmid Bruce-R62923;
>> linux-usb-devel@lists.sourceforge.net
>> Subject: Re: [PATCH 1/2] USB: add Freescale high-speed USB SOC device
> controller
>> driver
>>
>> On Mon, 5 Feb 2007, Li Yang wrote:
>>
>>> Freescale high-speed USB SOC can be found on some Freescale
> processors
>>> among different architectures.  It supports both host and device
> functions.
>>> This driver adds its device support for Linux USB Gadget layer.
>>> It is tested for MPC834x DR module, but should work on other
> platforms
>>> with minor tweaks.  The driver passed USBCV 1.3 compliance tests.
>>>
>>> Signed-off-by: Li Yang <[EMAIL PROTECTED]>
>>> Signed-off-by: Jiang Bo <[EMAIL PROTECTED]>
>>> Signed-off-by: Bruce Schmid <[EMAIL PROTECTED]>
>>>
>>> ---
>>> The latest udc driver after massive enhancement and cleanup.
>>>
>>> drivers/usb/gadget/Kconfig        |   21 +
>>> drivers/usb/gadget/Makefile       |    1 +
>>> drivers/usb/gadget/fsl_usb2_udc.c | 2489
> +++++++++++++++++++++++++++++++++++++
>>> drivers/usb/gadget/fsl_usb2_udc.h |  577 +++++++++
>>> drivers/usb/gadget/gadget_chips.h |    8 +
>>> 5 files changed, 3096 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
>>> index 4097a86..601e8d1 100644
>>> --- a/drivers/usb/gadget/Kconfig
>>> +++ b/drivers/usb/gadget/Kconfig
>>> @@ -68,6 +68,27 @@ choice
>>>        Many controller drivers are platform-specific; these
>>>        often need board-specific hooks.
>>>
>>> +config USB_GADGET_FSL_USB2
>>> +   boolean "Freescale MPC834x DR"
>>> +   depends on MPC834x
>>
>> The same controller exists on MPC831x, this should be made more
> generic.
>> We have the host support as MPC83xx.  This is a general comment for
> the
>> rest of the code.
>
> I have only tested it on 8349, but Bruce and I are working to  
> expend it
> to all Freescale Highspeed SOCs including ARM and MCU.  More will be
> added once tested.

MCU?  I know the MX line shared the same USB block as on 83xx.

Fair enough, we should figure out how we want to clean this up.   
Maybe we should introduce a FSL_SOC_EHCI_USB or something like that  
to specify the IP block more generically.  Than have these config's  
depend on it being set.

>>> +   select USB_GADGET_DUALSPEED
>>> +   help
>>> +      Some of Freescale PowerPC processors have a High Speed
>>> +      Dual-Role(DR) USB controller, which support device mode
>>> +      with 5 programmable endpoints. This driver supports the
>>> +      controller in the MPC834x, and should work with DR module
>>> +      in other Freescale processors too, given minor tweaks.
>>> +
>>> +      Say "y" to link the driver statically, or "m" to build a
>>> +      dynamically linked module called "fsl_usb2_udc" and force
>>> +      all gadget drivers to also be dynamically linked.
>>> +
>>> +config USB_FSL_USB2
>>> +   tristate
>>> +   depends on USB_GADGET_FSL_USB2
>>> +   default USB_GADGET
>>> +   select USB_GADGET_SELECTED
>>> +
>>> config USB_GADGET_NET2280
>>>     boolean "NetChip 228x"
>>>     depends on PCI
>>> diff --git a/drivers/usb/gadget/Makefile
> b/drivers/usb/gadget/Makefile
>>> index e71e086..5db1939 100644
>>> --- a/drivers/usb/gadget/Makefile
>>> +++ b/drivers/usb/gadget/Makefile
>>> @@ -8,6 +8,7 @@ obj-$(CONFIG_USB_GOKU)              += goku_udc.o
>>> obj-$(CONFIG_USB_OMAP)              += omap_udc.o
>>> obj-$(CONFIG_USB_LH7A40X)   += lh7a40x_udc.o
>>> obj-$(CONFIG_USB_AT91)              += at91_udc.o
>>> +obj-$(CONFIG_USB_FSL_USB2) += fsl_usb2_udc.o
>>>
>>> #
>>> # USB gadget drivers
>>> diff --git a/drivers/usb/gadget/fsl_usb2_udc.c
>> b/drivers/usb/gadget/fsl_usb2_udc.c
>>> new file mode 100644
>>> index 0000000..db3fabc
>>> --- /dev/null
>>> +++ b/drivers/usb/gadget/fsl_usb2_udc.c
>>> @@ -0,0 +1,2489 @@
>>> +/*
>>> + * Copyright (C) 2004-2007 Freescale Semicondutor, Inc. All rights
> reserved.
>>> + *
>>> + * Author: Li Yang <[EMAIL PROTECTED]>
>>> + *         Jiang Bo <[EMAIL PROTECTED]>
>>> + *
>>> + * Description:
>>> + * Freescale high-speed USB SOC DR module device controller driver.
>>> + * This SOC can be found on MPC8349E cpu.  The driver is previously
> named
>>> + * as mpc_udc.  Based on bare board code from Dave Liu and Shlomi
> Gridish.
>>> + *
>>> + * Note: The driver will not work with old gadget drivers, as the
> API
>>> + * parameter endian has changed.
>>> + *
>>> + * Changelog:
>>> + * Aug 1, 2005
>>> + * - initial release
>>> + * Jul 13, 2006 Li Yang
>>> + * - adopted to powerpc arch and gadget drivers in latest kernel
>>> + * - add otg support, and minor style fixes
>>> + * Feb 5, 2007 Li Yang
>>> + * - massive enhancement and cleanup
>>> + * - verified through USBCV tests
>>> + *
>>> + * This program is free software; you can redistribute  it and/or
> modify it
>>> + * under  the terms of  the GNU General  Public License as
> published by the
>>> + * Free Software Foundation;  either version 2 of the  License, or
> (at your
>>> + * option) any later version.
>>> + */
>>> +
>>> +#undef DEBUG
>>> +#undef VERBOSE
>>> +
>>> +#include <linux/module.h>
>>> +#include <linux/kernel.h>
>>> +#include <linux/ioport.h>
>>> +#include <linux/types.h>
>>> +#include <linux/errno.h>
>>> +#include <linux/delay.h>
>>> +#include <linux/sched.h>
>>> +#include <linux/slab.h>
>>> +#include <linux/init.h>
>>> +#include <linux/timer.h>
>>> +#include <linux/list.h>
>>> +#include <linux/interrupt.h>
>>> +#include <linux/proc_fs.h>
>>> +#include <linux/mm.h>
>>> +#include <linux/moduleparam.h>
>>> +#include <linux/device.h>
>>> +#include <linux/usb_ch9.h>
>>> +#include <linux/usb_gadget.h>
>>> +#include <linux/usb/otg.h>
>>> +#include <linux/dma-mapping.h>
>>> +#include <linux/platform_device.h>
>>> +#include <linux/fsl_devices.h>
>>> +#include <linux/dmapool.h>
>>> +
>>> +#include <asm/byteorder.h>
>>> +#include <asm/io.h>
>>> +#include <asm/irq.h>
>>> +#include <asm/system.h>
>>> +#include <asm/unaligned.h>
>>> +#include <asm/dma.h>
>>> +#include <asm/cacheflush.h>
>>> +
>>> +#include "fsl_usb2_udc.h"
>>> +
>>> +#define    DRIVER_DESC     "Freescale High-Speed USB SOC Device
> Controller
>> driver"
>>> +#define    DRIVER_AUTHOR   "Li Yang/Jiang Bo"
>>> +#define    DRIVER_VERSION  "Feb 5, 2007"
>>> +
>>> +#define    DMA_ADDR_INVALID        (~(dma_addr_t)0)
>>> +
>>> +static const char driver_name[] = "fsl-usb2-udc";
>>> +static const char driver_desc[] = DRIVER_DESC;
>>> +
>>> +volatile static struct usb_dr_device *dr_regs = NULL;
>>> +volatile static struct usb_sys_interface *usb_sys_regs = NULL;
>>> +
>>> +/* it is initialized in probe()  */
>>> +static struct fsl_udc *udc_controller = NULL;
>>> +
>>> +/*ep name should comply to the convention of ep_match()*/
>>> +static const char *const ep_name[] = {
>>> +   "ep0-control", NULL,    /* everyone has ep0 */
>>> +   /* 5 IN eps and 5 OUT eps */
>>> +   "ep1out",
>>> +   "ep1in",
>>> +   "ep2out",
>>> +   "ep2in",
>>> +   "ep3out",
>>> +   "ep3in",
>>> +   "ep4out",
>>> +   "ep4in",
>>> +   "ep5out",
>>> +   "ep5in"
>>> +};
>>> +static struct usb_endpoint_descriptor
>>> +fsl_ep0_desc = {
>>> +   .bLength =              USB_DT_ENDPOINT_SIZE,
>>> +   .bDescriptorType =      USB_DT_ENDPOINT,
>>> +   .bEndpointAddress =     0,
>>> +   .bmAttributes =         USB_ENDPOINT_XFER_CONTROL,
>>> +   .wMaxPacketSize =       USB_MAX_CTRL_PAYLOAD,
>>> +};
>>> +
>>> +static int fsl_udc_suspend(struct platform_device *pdev,
> pm_message_t state);
>>> +static int fsl_udc_resume(struct platform_device *pdev);
>>> +static void fsl_ep_fifo_flush(struct usb_ep *_ep);
>>> +
>>> +#ifdef CONFIG_PPC32
>>
>> Any reason we need to protect these with CONFIG_PPC32?
>>
>>> +#undef     NO_SNOOPING
>>> +#define fsl_readl(addr)            in_le32(addr)
>>> +#define fsl_writel(addr, val32) out_le32(val32, addr)
>>> +#endif
>
> For example, MX31 doesn't have the SNOOPING feature and will use other
> I/O accessors.

The snooping makes sense.  How are the accessors on MX31 different?

- k

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to