linux/drivers/usb/gadget
Sebastian Andrzej Siewior 9bb2859f8a usb: gadget: composite: introduce usb_gstrings_attach()
The USB strings don't (yet) fully work in multiple configs/gadget
environment. The string id is assigned to the descriptor and the struct
usb_strings. We create a copy of the individual descriptor so we don't
clash if we use a function more than once. However, we have only one
struct usb_string for each string.

Currently each function which is used multiple times checks for
"id != 0" and only assigns string ids if it did not happen yet. This
works well if we use the same function multiple times as long as we do
it within the "one" gadget we have. Trouble starts once we use the same
function in a second gadget.

In order to solve this I introduce usb_gstrings_attach(). This function will
crate a copy all structs except for the strings which are not copied.
After the copy it will assign USB ids and attach it to cdev.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-21 20:52:48 +02:00
..
acm_ms.c usb: gadget: acm_ms: use function framework for ACM 2013-01-21 20:52:44 +02:00
amd5536udc.c usb: gadget: remove global variable composite in composite.c 2012-09-10 15:35:41 +03:00
amd5536udc.h
at91_udc.c USB: gadget: at91_adc: fix pullup pin validity check 2013-01-10 12:41:01 +02:00
at91_udc.h
atmel_usba_udc.c arm: at91: move platfarm_data to include/linux/platform_data/atmel.h 2012-11-06 20:29:33 +08:00
atmel_usba_udc.h
audio.c usb: gadget: remove usb_gadget_controller_number() 2012-09-10 16:43:24 +03:00
bcm63xx_udc.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
cdc2.c usb: gadget: cdc2: use function framework for ACM 2013-01-21 20:52:45 +02:00
composite.c usb: gadget: composite: introduce usb_gstrings_attach() 2013-01-21 20:52:48 +02:00
config.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
dbgp.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
dummy_hcd.c usb: gadget: dummy_hcd: remove global the_controller variable 2012-10-31 15:18:01 +02:00
epautoconf.c usb: gadget: libcomposite: add epautoconf.c to libcomposite 2012-09-10 15:37:51 +03:00
ether.c usb: gadget: remove usb_gadget_controller_number() 2012-09-10 16:43:24 +03:00
f_acm.c usb: gadget: f_acm: convert to new function interface with backwards compatibility 2013-01-21 20:52:43 +02:00
f_ecm.c usb: gadget: let f_* use usb_string_ids_tab() where it makes sense 2012-10-31 15:11:47 +02:00
f_eem.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_fs.c usb: gadget: FunctionFS: Use kstrtoul() 2013-01-10 12:42:14 +02:00
f_hid.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_loopback.c usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
f_mass_storage.c usb: gadget: mass_storage: remove >= 0 check for unsigned type 2013-01-10 12:36:47 +02:00
f_midi.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_ncm.c usb: gadget: ncm: make global variable ndp*_opts read only 2013-01-10 12:25:12 +02:00
f_obex.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
f_phonet.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_rndis.c usb: gadget: let f_* use usb_string_ids_tab() where it makes sense 2012-10-31 15:11:47 +02:00
f_serial.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
f_sourcesink.c usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
f_subset.c usb: gadget: let f_* use usb_string_ids_tab() where it makes sense 2012-10-31 15:11:47 +02:00
f_uac1.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_uac2.c usb: gadget: remove unused variable in uac2_pcm_trigger() 2013-01-10 12:35:47 +02:00
f_uvc.c usb: gadget: let f_* use usb_string_ids_tab() where it makes sense 2012-10-31 15:11:47 +02:00
f_uvc.h
fsl_mxc_udc.c usb: gadget: fsl_mxc_udc: do not depend on grouped clocks 2012-06-22 13:09:52 +03:00
fsl_qe_udc.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
fsl_qe_udc.h usb: gadget: Complete fsl qe/udc driver conversion 2012-06-12 13:32:29 +03:00
fsl_udc_core.c usb: fix typo in drivers/usb 2012-11-06 15:04:14 +02:00
fsl_usb2_udc.h usb: gadget: regression fix - usage of usb_ep 2012-06-04 18:24:49 +03:00
functions.c usb: gadget: add a forward pointer from usb_function to its "instance" 2013-01-21 20:52:46 +02:00
fusb300_udc.c usb: gadget: remove global variable composite in composite.c 2012-09-10 15:35:41 +03:00
fusb300_udc.h
g_ffs.c usb: gadget: libcomposite: move composite.c into libcomposite 2012-09-10 16:13:03 +03:00
g_zero.h usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
gadget_chips.h usb: gadget: remove usb_gadget_controller_number() 2012-09-10 16:43:24 +03:00
gmidi.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
goku_udc.c usb: gadget: remove global variable composite in composite.c 2012-09-10 15:35:41 +03:00
goku_udc.h
hid.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
imx_udc.c ARM: imx: move platform_data definitions 2012-09-14 11:17:21 +02:00
imx_udc.h
inode.c usb: gadget: remove DMA_ADDR_INVALID from f_uac2 and gadgetfs 2012-10-31 15:10:06 +02:00
Kconfig usb: gadget: multi: use function framework for ACM 2013-01-21 20:52:45 +02:00
lpc32xx_udc.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
m66592-udc.c usb: gadget: remove global variable composite in composite.c 2012-09-10 15:35:41 +03:00
m66592-udc.h gadget/m66592: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
Makefile usb: gadget: f_acm: convert to new function interface with backwards compatibility 2013-01-21 20:52:43 +02:00
mass_storage.c usb: gadget: libcomposite: move composite.c into libcomposite 2012-09-10 16:13:03 +03:00
multi.c usb: gadget: multi: use function framework for ACM 2013-01-21 20:52:45 +02:00
mv_u3d_core.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
mv_u3d.h usb: gadget: mv: Add USB 3.0 device driver for Marvell PXA2128 chip. 2012-06-22 13:08:21 +03:00
mv_udc_core.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
mv_udc.h
ncm.c usb: gadget: remove usb_gadget_controller_number() 2012-09-10 16:43:24 +03:00
ndis.h
net2272.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
net2272.h
net2280.c usb: gadget: Remove File-backed Storage Gadget (g_file_storage). 2012-11-08 16:01:04 +02:00
net2280.h
nokia.c usb: gadget: f_acm: convert to new function interface with backwards compatibility 2013-01-21 20:52:43 +02:00
omap_udc.c ARM: arm-soc: power management and clock changes 2012-12-13 10:58:20 -08:00
omap_udc.h
pch_udc.c usb: gadget: remove global variable composite in composite.c 2012-09-10 15:35:41 +03:00
printer.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
pxa25x_udc.c ARM: move udc_pxa2xx.h to linux/platform_data 2012-11-16 11:35:30 +00:00
pxa25x_udc.h usb: gadget: pxa25x: make it compile with debug again 2012-09-10 15:35:58 +03:00
pxa27x_udc.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
pxa27x_udc.h usb: gadget: Remove File-backed Storage Gadget (g_file_storage). 2012-11-08 16:01:04 +02:00
r8a66597-udc.c gadget/r8a66597: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
r8a66597-udc.h gadget/r8a66597: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
rndis.c usb: gadget: use native print_hex_dump_bytes() 2012-08-23 11:04:18 +03:00
rndis.h
s3c2410_udc.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
s3c2410_udc.h
s3c-hsotg.c usb: gadget: s3c-hsotg: Use devm_regulator_bulk_get API 2013-01-10 12:41:56 +02:00
s3c-hsotg.h
s3c-hsudc.c usb: gadget: remove u32 castings of address passed to readl() 2013-01-21 20:52:37 +02:00
serial.c usb: gadget: f_acm: convert to new function interface with backwards compatibility 2013-01-21 20:52:43 +02:00
storage_common.c usb: gadget: file_storage: remove its last pieces 2013-01-10 12:24:30 +02:00
tcm_usb_gadget.c treewide: fix printk typo in multiple drivers 2012-11-19 11:08:17 +01:00
tcm_usb_gadget.h usb: gadget: make sure each gadget is using same index for Product, Serial,… 2012-09-10 16:13:00 +03:00
u_ether.c usb: gadget: g_ether: fix frame size check 2012-11-08 16:04:50 +02:00
u_ether.h
u_phonet.h
u_serial.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
u_serial.h usb: gadget: f_acm: convert to new function interface with backwards compatibility 2013-01-21 20:52:43 +02:00
u_uac1.c gadgetfs: clean up 2012-07-29 21:24:21 +04:00
u_uac1.h
udc-core.c usb: gadget: udc-core: introduce UDC binding by name 2013-01-21 20:52:46 +02:00
usbstring.c usb: gadget: libcomposite: move MODULE_VERSION to composite.c 2012-09-10 16:13:03 +03:00
uvc_queue.c
uvc_queue.h
uvc_v4l2.c
uvc_video.c
uvc.h
webcam.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
zero.c usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00