[oe-commits] org.oe.dev gumstix-kernel : Add files to build a kernel for gumstix machines. These are

crofton commit openembedded-commits at lists.openembedded.org
Fri Feb 15 14:08:40 UTC 2008


gumstix-kernel : Add files to build a kernel for gumstix machines. These are
                 copied verbatim from the gumstix OE based build system.

Author: crofton at openembedded.org
Branch: org.openembedded.dev
Revision: 526c9e72d15bccf66661d22de2d55cadf50af1a6
ViewMTN: http://monotone.openembedded.org/revision/info/526c9e72d15bccf66661d22de2d55cadf50af1a6
Files:
1
packages/linux/gumstix-kernel-2.6.21
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex
packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch
packages/linux/gumstix-kernel-2.6.21/arch-config.patch
packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch
packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch
packages/linux/gumstix-kernel-2.6.21/board-init.patch
packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch
packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch
packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch
packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch
packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch
packages/linux/gumstix-kernel-2.6.21/compact-flash.patch
packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch
packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch
packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch
packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch
packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch
packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch
packages/linux/gumstix-kernel-2.6.21/flash.patch
packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig
packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb
packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch
packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch
packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch
packages/linux/gumstix-kernel-2.6.21/header.patch
packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch
packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch
packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch
packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch
packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch
packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch
packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch
packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch
packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch
packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch
packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch
packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch
packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch
packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch
packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch
packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch
packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch
packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff
packages/linux/gumstix-kernel-2.6.21/tsc2003.c
packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch
packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch
packages/linux/gumstix-kernel_2.6.21.bb
packages/linux/gumstix-linux.inc
Diffs:

#
# mt diff -ra9ec71b4b3a7b6500927fc2c0f61184d610a91e6 -r526c9e72d15bccf66661d22de2d55cadf50af1a6
#
# 
# 
# add_dir "packages/linux/gumstix-kernel-2.6.21"
# 
# add_dir "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex"
# 
# add_dir "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex"
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch"
#  content [46d1e25ee8c6b2057ad12fef37ecff405ac5e046]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/arch-config.patch"
#  content [77e962d186fbf986a7150fcf92fc7e9a2f2e3c6c]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch"
#  content [61c42220d83235a7ed992b29a5be2b15f23c0022]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch"
#  content [189b51b1ebd33e9e49934cc272a151dd27314737]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/board-init.patch"
#  content [d713b018e314e882ff245ce9fb326a9614bee226]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch"
#  content [2cc5db320546c0c376dc4ce82183109232b4a4a7]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch"
#  content [453917381c5760514750f165957c49b478ffc65c]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch"
#  content [7107883474ca1adbd13644873540c034005a19ed]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch"
#  content [61a140ba63e9d2a85c0a659d7db18f46f661fddd]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch"
#  content [5947e11a809c8053638b1e70b3f5f544fa60af64]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/compact-flash.patch"
#  content [9915fcdaa91588e41ef5531aaff3ff45a0f17ed6]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch"
#  content [922480ad3b67a47f4da75e43d52f036c56074b4e]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch"
#  content [8c8edc8e89041dd1b031e376970c2c3f594b215f]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch"
#  content [2db68113b34b6973ceae2dfdec52a59c3d1e558a]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch"
#  content [44a99a89c462703ccc42e071e63960a550d025c0]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch"
#  content [db4d24d8f7d6449fc24795635b90d0df15c97bc1]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch"
#  content [0debcec19adacd79ffaab0baea1f8bee70fcb16c]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/flash.patch"
#  content [028683f763c8358b0f1c076926660440cc783c3d]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch"
#  content [672e82d740da0eefc64b737ada85c935d289999c]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig"
#  content [c68249c5af26ba1934586a39d104122d8f9866db]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb"
#  content [6ba15dc60b3f98cbb67e726cc4adf75d4cfeab13]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig"
#  content [a172027521556198c8ba69d3b4cd86d42ca2b1fa]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb"
#  content [199cea2b71e4ecdb6f9955a9c28eb586a0b0c0d7]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch"
#  content [a28f1499776f44a83ad92ed1ad935d24910ed98b]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch"
#  content [89dcd8fb19af97d9d8c273e2325242cb06cddb22]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch"
#  content [0e1e4ac42a0f99a75833ee8a79996e7e46ee7f80]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/header.patch"
#  content [314b5357903ac812ee8535475165b4ec8a0b785c]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch"
#  content [18d504ef0214d52e33d2b8a577e0c2dfb8aa0663]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch"
#  content [27f8266aa43f862763f684ed8d6ef944d5883850]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch"
#  content [b2be6748c4f6d4d6f369b35bae315387667d6020]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch"
#  content [7121c06e9b7abb1bead874386960934fc97e824b]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch"
#  content [95c46437bdc083831d12dfbc91ddc43a092fe687]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch"
#  content [e2c91ef570684c54b0ff393820b15d0fcd5812dd]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch"
#  content [8c06dbae7910651bbcd8731d6851454f1c47d459]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch"
#  content [acee1853db81391f396464e4f2db3b5464f92172]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch"
#  content [ee3725192f4fc6fcad730b0bbbe7374351e551f9]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch"
#  content [c0c412734d4bc015112b1d6eb7b6a56359b772fc]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch"
#  content [16ea985d508ff9f01b790060b0dd95a8ad2b7969]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch"
#  content [6082e8350f43437141e8c5b574266f732f29e601]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch"
#  content [f85a97524a544a4224f583f1c3417c4b38c23e56]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch"
#  content [75684ee587587dacdb2a0ccfeeb394be85cdee49]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch"
#  content [e93b779ef26803beb9c01abaf035039df4dfdb11]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch"
#  content [3e7823c1cf361019e3536add7917cb5f60278370]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch"
#  content [d63f61fe6cd3193973005fef9c9a160fdef9cd74]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff"
#  content [6e834f1d2f675943a3b12ee0abcfcd2d8a6ef5c7]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/tsc2003.c"
#  content [eeb2850bcc15f83ff22d7cbf2e881f98b77081ab]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch"
#  content [440fe8c2946d0f307271094a940cdcd50526f92d]
# 
# add_file "packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch"
#  content [8cfa72221d4f919c218f0b665ec1e43d64e68633]
# 
# add_file "packages/linux/gumstix-kernel_2.6.21.bb"
#  content [f8f775865e8b332af75c61be2a993ddb23996bf0]
# 
# add_file "packages/linux/gumstix-linux.inc"
#  content [1832359f059ffffee7e93ddf8254be7269d927a5]
# 
============================================================
--- packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch	46d1e25ee8c6b2057ad12fef37ecff405ac5e046
+++ packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch	46d1e25ee8c6b2057ad12fef37ecff405ac5e046
@@ -0,0 +1,2739 @@
+Index: linux-2.6.21gum/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Kconfig
++++ linux-2.6.21gum/drivers/usb/gadget/Kconfig
+@@ -129,6 +129,28 @@ config USB_PXA2XX_SMALL
+ 	default y if USB_ETH
+ 	default y if USB_G_SERIAL
+ 
++config USB_GADGET_PXA27X
++        boolean "PXA 27x"
++        depends on ARCH_PXA && PXA27x
++        help
++           Intel's PXA 27x series XScale ARM-5TE processors include
++           an integrated full speed USB 1.1 device controller.  
++
++           Say "y" to link the driver statically, or "m" to build a
++           dynamically linked module called "pxa27x_udc" and force all
++           gadget drivers to also be dynamically linked.
++
++config USB_PXA27X
++        tristate
++        depends on USB_GADGET_PXA27X
++        default USB_GADGET
++        select USB_GADGET_SELECTED
++
++config USB_PXA27X_DMA
++        bool # "Use DMA support"
++        depends on USB_GADGET_PXA27X
++        default n
++
+ config USB_GADGET_GOKU
+ 	boolean "Toshiba TC86C001 'Goku-S'"
+ 	depends on PCI
+Index: linux-2.6.21gum/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Makefile
++++ linux-2.6.21gum/drivers/usb/gadget/Makefile
+@@ -7,6 +7,7 @@ obj-$(CONFIG_USB_PXA2XX)	+= pxa2xx_udc.o
+ obj-$(CONFIG_USB_GOKU)		+= goku_udc.o
+ obj-$(CONFIG_USB_OMAP)		+= omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X)	+= lh7a40x_udc.o
++obj-$(CONFIG_USB_PXA27X)	+= pxa27x_udc.o
+ obj-$(CONFIG_USB_AT91)		+= at91_udc.o
+ obj-$(CONFIG_USB_GADGET_GUMSTIX)	+= gumstix_gadget.o
+ 
+Index: linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.c
+@@ -0,0 +1,2352 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.c
++ * Intel PXA2xx and IXP4xx on-chip full speed USB device controllers
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2005 SDG Systems, LLC  (Aric Blumer)
++ *
++ * 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.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ *
++ */
++
++#undef	DEBUG
++ // #define DEBUG 1
++ //#define	VERBOSE	DBG_VERBOSE
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.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/platform_device.h>
++#include <linux/dma-mapping.h>
++#include <linux/irq.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++#include <asm/mach/irq.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb/ch9.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/arch/udc.h>
++
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27777777x
++ * series processors.
++ * Such controller drivers work with a gadget driver.  The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces.  The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol, so
++ * it constrains the sorts of USB configuration change events that work.
++ * The errata for these chips are misleading; some "fixed" bugs from
++ * pxa250 a0/a1 b0/b1/b2 sure act like they're still there.
++ */
++
++#define	DRIVER_VERSION	"21-Jul-2005"
++#define	DRIVER_DESC	"PXA 27x USB Device Controller driver"
++
++
++static const char driver_name [] = "pxa27x_udc";
++
++static const char ep0name [] = "ep0";
++
++
++#define	USE_DMA
++//#define	DISABLE_TEST_MODE
++
++#ifdef CONFIG_PROC_FS
++#define	UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#if 0
++#ifdef CONFIG_EMBEDDED
++/* few strings, and little code to use them */
++#undef	DEBUG
++#undef	UDC_PROC_FILE
++#endif
++#endif
++
++#ifdef	USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC (use_dma, "true to use dma");
++
++static void dma_nodesc_handler (int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define	DMASTR " (dma support)"
++
++#else	/* !USE_DMA */
++#define	DMASTR " (pio only)"
++#endif
++
++#ifdef	CONFIG_USB_PXA27X_SMALL
++#define SIZE_STR	" (small)"
++#else
++#define SIZE_STR	""
++#endif
++
++#ifdef DISABLE_TEST_MODE
++/* (mode == 0) == no undocumented chip tweaks
++ * (mode & 1)  == double buffer bulk IN
++ * (mode & 2)  == double buffer bulk OUT
++ * ... so mode = 3 (or 7, 15, etc) does it for both
++ */
++static ushort fifo_mode = 0;
++module_param(fifo_mode, ushort, 0);
++MODULE_PARM_DESC (fifo_mode, "pxa27x udc fifo mode");
++#endif
++
++#define UDCISR0_IR0	 0x3
++#define UDCISR_INT_MASK	 (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK	 UDCISR_INT_MASK
++
++#define UDCCSR_MASK	(UDCCSR_FST | UDCCSR_DME)
++/* ---------------------------------------------------------------------------
++ * 	endpoint related parts of the api to the usb controller hardware,
++ *	used by gadget driver; and the inner talker-to-hardware core.
++ * ---------------------------------------------------------------------------
++ */
++
++static void pxa27x_ep_fifo_flush (struct usb_ep *ep);
++static void nuke (struct pxa27x_ep *, int status);
++
++static void pio_irq_enable(int ep_num)
++{
++        if (ep_num < 16)
++                UDCICR0 |= 3 << (ep_num * 2);
++        else {
++                ep_num -= 16;
++                UDCICR1 |= 3 << (ep_num * 2);
++	}
++}
++
++static void pio_irq_disable(int ep_num)
++{
++        ep_num &= 0xf;
++        if (ep_num < 16)
++                UDCICR0 &= ~(3 << (ep_num * 2));
++        else {
++                ep_num -= 16;
++                UDCICR1 &= ~(3 << (ep_num * 2));
++        }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS         (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++	UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++	UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++	/* udccr contains the bits we dont want to change */
++	__u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++	UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * endpoint enable/disable
++ *
++ * we need to verify the descriptors used to enable endpoints.  since pxa27x
++ * endpoint configurations are fixed, and are pretty much always enabled,
++ * there's not a lot to manage here.
++ *
++ * because pxa27x can't selectively initialize bulk (or interrupt) endpoints,
++ * (resetting endpoint halt and toggle), SET_INTERFACE is unusable except
++ * for a single interface (with only the default altsetting) and for gadget
++ * drivers that don't halt endpoints (not reset by set_interface).  that also
++ * means that if you use ISO, you must violate the USB spec rule that all
++ * iso endpoints must be in non-default altsettings.
++ */
++static int pxa27x_ep_enable (struct usb_ep *_ep,
++		const struct usb_endpoint_descriptor *desc)
++{
++	struct pxa27x_ep        *ep;
++	struct pxa27x_udc       *dev;
++
++	ep = container_of (_ep, struct pxa27x_ep, ep);
++	if (!_ep || !desc || _ep->name == ep0name
++			|| desc->bDescriptorType != USB_DT_ENDPOINT
++			|| ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++		DMSG("%s, bad ep or descriptor\n", __FUNCTION__);
++		return -EINVAL;
++	}
++
++	/* xfer types must match, except that interrupt ~= bulk */
++	if( ep->ep_type != USB_ENDPOINT_XFER_BULK
++			&& desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++		DMSG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++		return -EINVAL;
++	}
++
++	/* hardware _could_ do smaller, but driver doesn't */
++	if ((desc->bmAttributes == USB_E%s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list