David Brownell
a4c39c41bf
usb gadget: descriptor copying support
...
Define three new descriptor manipulation utilities, for use when
setting up functions that may have multiple instances:
usb_copy_descriptors() to copy a vector of descriptors
usb_free_descriptors() to free the copy
usb_find_endpoint() to find a copied version
These will be used as follows. Functions will continue to have static
tables of descriptors they update, now used as __initdata templates.
When a function creates a new instance, it patches those tables with
relevant interface and string IDs, plus endpoint assignments. Then it
copies those morphed descriptors, associates the copies with the new
function instance, and records the endpoint descriptors to use when
activating the endpoints. When initialization is done, only the copies
remain in memory. The copies are freed on driver removal.
This ensures that each instance has descriptors which hold the right
instance-specific data. Two instances in the same configuration will
obviously never share the same interface IDs or use the same endpoints.
Instances in different configurations won't do so either, which means
this is slightly less memory-efficient in some cases.
This also includes a bugfix to the epautoconf code that shows up with
this usage model. It must replace the previous endpoint number when
updating the template descriptors, not just mask in a few more bits.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-07-21 15:16:00 -07:00
..
amba
byteorder
can
dvb
hdlc
i2c
i2c: New-style EEPROM driver using device IDs
2008-07-14 22:38:35 +02:00
isdn
lockd
lockd: Pass "struct sockaddr *" to new failover-by-IP function
2008-07-15 16:11:29 -04:00
mfd
mfd: let asic3 use mem resource instead of bus_shift
2008-07-20 19:56:44 +02:00
mlx4
IB/mlx4: Add support for blocking multicast loopback packets
2008-07-14 23:48:48 -07:00
mmc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
2008-07-16 15:17:52 -07:00
mtd
netfilter
netfilter: nfnetlink_log: send complete hardware header
2008-07-21 10:11:00 -07:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
md: Protect access to mddev->disks list using RCU
2008-07-21 17:05:25 +10:00
rtc
spi
mmc_spi: add support for card-detection polling
2008-07-15 14:14:41 +02:00
ssb
ssb: Include dma-mapping.h
2008-07-14 14:52:56 -04:00
sunrpc
Merge branch 'for-2.6.27' of git://linux-nfs.org/~bfields/linux
2008-07-20 21:21:46 -07:00
tc_act
tc_ematch
unaligned
usb
usb gadget: descriptor copying support
2008-07-21 15:16:00 -07:00
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
2008-07-16 17:25:46 -07:00
acpi_pmtmr.h
adb.h
adfs_fs.h
adfs_fs_i.h
adfs_fs_sb.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio.h
aio_abi.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async_tx.h
ata.h
ata_platform.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel-ssc.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blkdev.h
block: Trivial fix for blk_integrity_rq()
2008-07-16 14:51:41 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h
bottom_half.h
bpqether.h
brcmphy.h
bsg.h
buffer_head.h
bug.h
cache.h
can.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h
cgroup_subsys.h
cgroupstats.h
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h
cm4000_cs.h
cn_proc.h
coda.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coff.h
com20020.h
compat.h
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
configfs.h
configfs: Allow ->make_item() and ->make_group() to return detailed errors.
2008-07-17 15:21:29 -07:00
connector.h
console.h
console_struct.h
consolemap.h
const.h
cpu.h
cpufreq.h
cpuidle.h
cpumask.h
cpuset.h
cramfs_fs.h
cramfs_fs_sb.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc16.h
crc32.h
crc32c.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
tty: add more tty_port fields
2008-07-20 17:12:38 -07:00
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
x86: Add a arch directory for x86 under debugfs
2008-07-18 17:22:04 -07:00
debugobjects.h
delay.h
delayacct.h
device-mapper.h
dm: introduce merge_bvec_fn
2008-07-21 12:00:37 +01:00
device.h
device_cgroup.h
devpts_fs.h
dio.h
dirent.h
display.h
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-dirty-log.h
dm-io.h
dm-ioctl.h
dm: introduce merge_bvec_fn
2008-07-21 12:00:37 +01:00
dm-kcopyd.h
dm9000.h
dma-attrs.h
dma-mapping.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1wm.h
ds1286.h
ds17287rtc.h
dtlk.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
f75375s.h
fadvise.h
falloc.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fd1772.h
fddidevice.h
fdreg.h
fdtable.h
fib_rules.h
file.h
filter.h
firewire-cdev.h
firewire-constants.h
firmware-map.h
firmware.h
flat.h
font.h
freezer.h
Freezer: Introduce PF_FREEZER_NOSIG
2008-07-16 23:27:03 +02:00
fs.h
Merge branch 'for-2.6.27' of git://linux-nfs.org/~bfields/linux
2008-07-20 21:21:46 -07:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fsl_devices.h
fsnotify.h
ftrace.h
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
gs: use tty_port
2008-07-20 17:12:36 -07:00
genetlink.h
genhd.h
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gpio_keys.h
gpio_mouse.h
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
esp: use tty_port
2008-07-20 17:12:36 -07:00
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hid-debug.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h
htirq.h
hugetlb.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-pcf: Drop unused struct members
2008-07-14 22:38:31 +02:00
i2c-algo-sgi.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
V4L/DVB (8246): tvaudio: Stop I2C driver ID abuse
2008-07-20 07:18:38 -03:00
i2c-ocores.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2c: Add detection capability to new-style drivers
2008-07-14 22:38:36 +02:00
i2o-dev.h
i2o.h
i8k.h
i8042.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
IDE: Remove unused code
2008-07-16 20:33:48 +02:00
idr.h
ieee80211.h
if.h
if_addr.h
if_addrlabel.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
packet: add PACKET_RESERVE sockopt
2008-07-18 18:05:19 -07:00
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
tun: Fix/rewrite packet filtering logic
2008-07-14 22:18:19 -07:00
if_tunnel.h
if_vlan.h
vlan: Don't store VLAN tag in cb
2008-07-14 22:49:06 -07:00
igmp.h
ihex.h
in.h
in6.h
in_route.h
inet.h
inet_diag.h
inet_lro.h
inetdevice.h
init.h
init_ohci1394_dma.h
init_task.h
ptrace children revamp
2008-07-16 18:02:33 -07:00
initrd.h
inotify.h
input-polldev.h
input.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 into next
2008-07-21 00:55:14 -04:00
interrupt.h
Merge branch 'genirq' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-07-15 10:39:22 -07:00
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
iommu-helper.h
ioport.h
PNP: support optional IRQ resources
2008-07-16 23:27:07 +02:00
ioprio.h
ip.h
ip6_tunnel.h
ipc.h
ipc_namespace.h
ipmi.h
ipmi_msgdefs.h
ipmi_smi.h
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irqflags.h
irqreturn.h
isa.h
isapnp.h
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
istallion: use tty_port
2008-07-20 17:12:37 -07:00
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h
jbd2.h
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
Kbuild
kbuild.h
kd.h
kdebug.h
kdev_t.h
kernel.h
kernel_stat.h
kernelcapi.h
kexec.h
key-type.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
kgdb.h
klist.h
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h
kprobes.h
kref.h
ks0108.h
kthread.h
ktime.h
kvm.h
KVM: Support mixed endian machines
2008-07-20 12:42:32 +03:00
kvm_host.h
KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction
2008-07-20 12:42:40 +03:00
kvm_para.h
kvm_types.h
lapb.h
latencytop.h
lcd.h
leds.h
lguest.h
lguest_launcher.h
libata.h
libata/ahci: enclosure management support
2008-07-14 15:59:33 -04:00
libps2.h
license.h
limits.h
linkage.h
Merge branch 'auto-ftrace-next' into tracing/for-linus
2008-07-14 16:11:52 +02:00
linux_logo.h
list.h
llc.h
lm_interface.h
lmb.h
lockdep.h
log2.h
loop.h
lp.h
lzo.h
m48t86.h
magic.h
major.h
maple.h
marker.h
math64.h
matroxfb.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
memcontrol.h
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
memstick.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mm.h
Merge commit ' 85082fd7cb' into test-build
2008-07-15 15:44:51 +10:00
mm_inline.h
mm_types.h
mman.h
mmiotrace.h
mmtimer.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
[S390] css: Use css_device_id for bus matching.
2008-07-14 10:02:12 +02:00
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
n_r3964.h
namei.h
nbd.h
ncp.h
ncp_fs.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
netdevice.h
pkt_sched: Manage qdisc list inside of root qdisc.
2008-07-18 22:50:15 -07:00
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
netrom.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_acl.h
nfs4_mount.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_idmap.h
nfs_iostat.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfsacl.h
nfsd_idmap.h
nl80211.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
of.h
of_device.h
of_gpio.h
of_i2c.h
of_platform.h
oom.h
oprofile.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport.h
parport_pc.h
parser.h
patchkey.h
path.h
pci-acpi.h
pci-aspm.h
pci.h
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
2008-07-16 17:25:46 -07:00
pci_hotplug.h
pci_ids.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
2008-07-18 02:39:39 -07:00
pci_regs.h
pcieport_if.h
pda_power.h
percpu.h
percpu_counter.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h
phonedev.h
phy.h
phy_fixed.h
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h
pkt_cls.h
net-sched: cls_flow: add perturbation support
2008-07-14 20:36:32 -07:00
pkt_sched.h
net_sched: Add size table for qdiscs
2008-07-20 00:08:47 -07:00
pktcdvd.h
platform_device.h
plist.h
pm.h
pm_legacy.h
pm_qos_params.h
pm_wakeup.h
PCI: include linux/pm_wakeup.h for device_set_wakeup_capable
2008-07-14 14:30:21 -07:00
pmu.h
pnp.h
PNP: convert resource options to single linked list
2008-07-16 23:27:07 +02:00
poison.h
poll.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
prctl.h
preempt.h
prefetch.h
prio_heap.h
prio_tree.h
proc_fs.h
profile.h
proportions.h
ptrace.h
Security: split proc ptrace checking into read vs. attach
2008-07-14 15:01:47 +10:00
pwm.h
pwm_backlight.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
raw.h
rbtree.h
rcuclassic.h
rculist.h
rcupdate.h
rcupreempt.h
rcupreempt_trace.h
reboot.h
reciprocal_div.h
regset.h
reiserfs_acl.h
reiserfs_fs.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_xattr.h
relay.h
res_counter.h
resource.h
resume-trace.h
rfkill.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
net_sched: Add size table for qdiscs
2008-07-20 00:08:47 -07:00
rwsem-spinlock.h
rwsem.h
rxrpc.h
sc26198.h
scatterlist.h
scc.h
sched.h
ptrace children revamp
2008-07-16 18:02:33 -07:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h
security: remove register_security hook
2008-07-14 15:04:06 +10:00
selection.h
selinux.h
selinux_netlink.h
sem.h
semaphore.h
seq_file.h
seq_file_net.h
proc: consolidate per-net single-release callers
2008-07-18 04:07:44 -07:00
seqlock.h
serial.h
serial167.h
serial_8250.h
serial_core.h
serial: use tty_port
2008-07-20 17:12:35 -07:00
serial_pnx8xxx.h
serial_reg.h
serial_sci.h
serialP.h
serio.h
shm.h
shmem_fs.h
signal.h
signalfd.h
skbuff.h
vlan: Don't store VLAN tag in cb
2008-07-14 22:49:06 -07:00
slab.h
slab_def.h
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smb.h
smb_fs.h
smb_fs_i.h
smb_fs_sb.h
smb_mount.h
smbno.h
smc91x.h
smc911x.h
smp.h
smp_lock.h
snmp.h
socket.h
net: Use standard structures for generic socket address structures.
2008-07-19 22:35:47 -07:00
sockios.h
som.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h
srcu.h
stacktrace.h
stallion.h
stallion: use tty_port
2008-07-20 17:12:37 -07:00
start_kernel.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h
suspend_ioctls.h
svga.h
swap.h
swapops.h
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h
taskstats_kern.h
tc.h
tcp.h
tcp: Remove redundant checks when setting eff_sacks
2008-07-19 00:07:02 -07:00
telephony.h
termios.h
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
tick.h
tifm.h
time.h
timer.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
toshiba.h
transport_class.h
trdevice.h
tsacct_kern.h
tty.h
tty: add more tty_port fields
2008-07-20 17:12:38 -07:00
tty_driver.h
tty_flip.h
tty_ldisc.h
tty: Ldisc revamp
2008-07-20 17:12:34 -07:00
types.h
uaccess.h
udf_fs_i.h
udp.h
uinput.h
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unwind.h
usb.h
USB: implement "soft" unbinding
2008-07-21 15:15:54 -07:00
usb_usual.h
usbdevice_fs.h
USB: remove CVS keywords
2008-07-21 15:15:55 -07:00
user.h
user_namespace.h
utime.h
uts.h
utsname.h
vermagic.h
veth.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev.h
videodev2.h
V4L/DVB (8197): gspca: pac207 frames no more decoded in the subdriver.
2008-07-20 07:17:02 -03:00
videotext.h
virtio.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_net.h
virtio_pci.h
virtio_ring.h
virtio_rng.h
vmalloc.h
vmstat.h
vt.h
vt_buffer.h
vt_kern.h
w1-gpio.h
wait.h
wanrouter.h
watchdog.h
wireless.h
wm97xx.h
workqueue.h
writeback.h
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
2008-07-15 08:36:38 -07:00
x25.h
xattr.h
xfrm.h
xilinxfb.h
yam.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h