aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget
diff options
context:
space:
mode:
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>2014-10-16 07:33:28 -0400
committerFelipe Balbi <balbi@ti.com>2014-11-05 14:36:13 -0500
commit32522a51c7f44a48dc298fce738795dca5c8fcd6 (patch)
treec5f4c63d2d312f03c1150af713f47e4d34c3ea7b /drivers/usb/gadget
parentb85e9de9e818de0dcbc50b7b4242192eb6194855 (diff)
usb: gadget: midi: convert to new interface of f_midi
Use the new f_midi interface so that the old can be removed. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r--drivers/usb/gadget/legacy/Kconfig1
-rw-r--r--drivers/usb/gadget/legacy/gmidi.c44
2 files changed, 38 insertions, 7 deletions
diff --git a/drivers/usb/gadget/legacy/Kconfig b/drivers/usb/gadget/legacy/Kconfig
index 24392d269709..8011b190e679 100644
--- a/drivers/usb/gadget/legacy/Kconfig
+++ b/drivers/usb/gadget/legacy/Kconfig
@@ -287,6 +287,7 @@ config USB_MIDI_GADGET
287 depends on SND 287 depends on SND
288 select USB_LIBCOMPOSITE 288 select USB_LIBCOMPOSITE
289 select SND_RAWMIDI 289 select SND_RAWMIDI
290 select USB_F_MIDI
290 help 291 help
291 The MIDI Gadget acts as a USB Audio device, with one MIDI 292 The MIDI Gadget acts as a USB Audio device, with one MIDI
292 input and one MIDI output. These MIDI jacks appear as 293 input and one MIDI output. These MIDI jacks appear as
diff --git a/drivers/usb/gadget/legacy/gmidi.c b/drivers/usb/gadget/legacy/gmidi.c
index f704c5557d19..0d01e467af09 100644
--- a/drivers/usb/gadget/legacy/gmidi.c
+++ b/drivers/usb/gadget/legacy/gmidi.c
@@ -37,8 +37,7 @@
37 37
38#include "gadget_chips.h" 38#include "gadget_chips.h"
39 39
40#define USBF_MIDI_INCLUDED 40#include "u_midi.h"
41#include "f_midi.c"
42 41
43/*-------------------------------------------------------------------------*/ 42/*-------------------------------------------------------------------------*/
44 43
@@ -116,8 +115,13 @@ static struct usb_gadget_strings *dev_strings[] = {
116 NULL, 115 NULL,
117}; 116};
118 117
118struct usb_function_instance *fi_midi;
119struct usb_function *f_midi;
120
119static int __exit midi_unbind(struct usb_composite_dev *dev) 121static int __exit midi_unbind(struct usb_composite_dev *dev)
120{ 122{
123 usb_put_function(f_midi);
124 usb_put_function_instance(fi_midi);
121 return 0; 125 return 0;
122} 126}
123 127
@@ -131,28 +135,54 @@ static struct usb_configuration midi_config = {
131 135
132static int __init midi_bind_config(struct usb_configuration *c) 136static int __init midi_bind_config(struct usb_configuration *c)
133{ 137{
134 return f_midi_bind_config(c, index, id, 138 int status;
135 in_ports, out_ports, 139
136 buflen, qlen); 140 f_midi = usb_get_function(fi_midi);
141 if (IS_ERR(f_midi))
142 return PTR_ERR(f_midi);
143
144 status = usb_add_function(c, f_midi);
145 if (status < 0) {
146 usb_put_function(f_midi);
147 return status;
148 }
149
150 return 0;
137} 151}
138 152
139static int __init midi_bind(struct usb_composite_dev *cdev) 153static int __init midi_bind(struct usb_composite_dev *cdev)
140{ 154{
155 struct f_midi_opts *midi_opts;
141 int status; 156 int status;
142 157
158 fi_midi = usb_get_function_instance("midi");
159 if (IS_ERR(fi_midi))
160 return PTR_ERR(fi_midi);
161
162 midi_opts = container_of(fi_midi, struct f_midi_opts, func_inst);
163 midi_opts->index = index;
164 midi_opts->id = id;
165 midi_opts->in_ports = in_ports;
166 midi_opts->out_ports = out_ports;
167 midi_opts->buflen = buflen;
168 midi_opts->qlen = qlen;
169
143 status = usb_string_ids_tab(cdev, strings_dev); 170 status = usb_string_ids_tab(cdev, strings_dev);
144 if (status < 0) 171 if (status < 0)
145 return status; 172 goto put;
146 device_desc.iManufacturer = strings_dev[USB_GADGET_MANUFACTURER_IDX].id; 173 device_desc.iManufacturer = strings_dev[USB_GADGET_MANUFACTURER_IDX].id;
147 device_desc.iProduct = strings_dev[USB_GADGET_PRODUCT_IDX].id; 174 device_desc.iProduct = strings_dev[USB_GADGET_PRODUCT_IDX].id;
148 midi_config.iConfiguration = strings_dev[STRING_DESCRIPTION_IDX].id; 175 midi_config.iConfiguration = strings_dev[STRING_DESCRIPTION_IDX].id;
149 176
150 status = usb_add_config(cdev, &midi_config, midi_bind_config); 177 status = usb_add_config(cdev, &midi_config, midi_bind_config);
151 if (status < 0) 178 if (status < 0)
152 return status; 179 goto put;
153 usb_composite_overwrite_options(cdev, &coverwrite); 180 usb_composite_overwrite_options(cdev, &coverwrite);
154 pr_info("%s\n", longname); 181 pr_info("%s\n", longname);
155 return 0; 182 return 0;
183put:
184 usb_put_function_instance(fi_midi);
185 return status;
156} 186}
157 187
158static __refdata struct usb_composite_driver midi_driver = { 188static __refdata struct usb_composite_driver midi_driver = {