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