bcd2k              92 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = substream->rmidi->private_data;
bcd2k              93 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_receive_substream = up ? substream : NULL;
bcd2k              96 sound/usb/bcd2000/bcd2000.c static void bcd2000_midi_handle_input(struct bcd2000 *bcd2k,
bcd2k             102 sound/usb/bcd2000/bcd2000.c 	midi_receive_substream = READ_ONCE(bcd2k->midi_receive_substream);
bcd2k             126 sound/usb/bcd2000/bcd2000.c static void bcd2000_midi_send(struct bcd2000 *bcd2k)
bcd2k             133 sound/usb/bcd2000/bcd2000.c 	midi_out_substream = READ_ONCE(bcd2k->midi_out_substream);
bcd2k             138 sound/usb/bcd2000/bcd2000.c 	memcpy(bcd2k->midi_out_buf, device_cmd_prefix,
bcd2k             146 sound/usb/bcd2000/bcd2000.c 				bcd2k->midi_out_buf + 3, BUFSIZE - 3);
bcd2k             149 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, "%s: snd_rawmidi_transmit error %d\n",
bcd2k             156 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_out_buf[2] = len;
bcd2k             157 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_out_urb->transfer_buffer_length = BUFSIZE;
bcd2k             160 sound/usb/bcd2000/bcd2000.c 			bcd2k->midi_out_buf, len+3);
bcd2k             163 sound/usb/bcd2000/bcd2000.c 	ret = usb_submit_urb(bcd2k->midi_out_urb, GFP_ATOMIC);
bcd2k             165 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, PREFIX
bcd2k             169 sound/usb/bcd2000/bcd2000.c 		bcd2k->midi_out_active = 1;
bcd2k             179 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = substream->rmidi->private_data;
bcd2k             181 sound/usb/bcd2000/bcd2000.c 	if (bcd2k->midi_out_active) {
bcd2k             182 sound/usb/bcd2000/bcd2000.c 		usb_kill_urb(bcd2k->midi_out_urb);
bcd2k             183 sound/usb/bcd2000/bcd2000.c 		bcd2k->midi_out_active = 0;
bcd2k             193 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = substream->rmidi->private_data;
bcd2k             196 sound/usb/bcd2000/bcd2000.c 		bcd2k->midi_out_substream = substream;
bcd2k             198 sound/usb/bcd2000/bcd2000.c 		if (!bcd2k->midi_out_active)
bcd2k             199 sound/usb/bcd2000/bcd2000.c 			bcd2000_midi_send(bcd2k);
bcd2k             201 sound/usb/bcd2000/bcd2000.c 		bcd2k->midi_out_substream = NULL;
bcd2k             207 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = urb->context;
bcd2k             209 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_out_active = 0;
bcd2k             219 sound/usb/bcd2000/bcd2000.c 	bcd2000_midi_send(bcd2k);
bcd2k             225 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = urb->context;
bcd2k             231 sound/usb/bcd2000/bcd2000.c 	if (!bcd2k || urb->status == -ESHUTDOWN)
bcd2k             235 sound/usb/bcd2000/bcd2000.c 		bcd2000_midi_handle_input(bcd2k, urb->transfer_buffer,
bcd2k             239 sound/usb/bcd2000/bcd2000.c 	ret = usb_submit_urb(bcd2k->midi_in_urb, GFP_ATOMIC);
bcd2k             241 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, PREFIX
bcd2k             258 sound/usb/bcd2000/bcd2000.c static void bcd2000_init_device(struct bcd2000 *bcd2k)
bcd2k             262 sound/usb/bcd2000/bcd2000.c 	init_usb_anchor(&bcd2k->anchor);
bcd2k             263 sound/usb/bcd2000/bcd2000.c 	usb_anchor_urb(bcd2k->midi_out_urb, &bcd2k->anchor);
bcd2k             264 sound/usb/bcd2000/bcd2000.c 	usb_anchor_urb(bcd2k->midi_in_urb, &bcd2k->anchor);
bcd2k             267 sound/usb/bcd2000/bcd2000.c 	memcpy(bcd2k->midi_out_buf, bcd2000_init_sequence, 52);
bcd2k             268 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_out_urb->transfer_buffer_length = 52;
bcd2k             271 sound/usb/bcd2000/bcd2000.c 	ret = usb_submit_urb(bcd2k->midi_out_urb, GFP_KERNEL);
bcd2k             273 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, PREFIX
bcd2k             277 sound/usb/bcd2000/bcd2000.c 		bcd2k->midi_out_active = 1;
bcd2k             280 sound/usb/bcd2000/bcd2000.c 	ret = usb_submit_urb(bcd2k->midi_in_urb, GFP_KERNEL);
bcd2k             282 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, PREFIX
bcd2k             287 sound/usb/bcd2000/bcd2000.c 	usb_wait_anchor_empty_timeout(&bcd2k->anchor, 1000);
bcd2k             290 sound/usb/bcd2000/bcd2000.c static int bcd2000_init_midi(struct bcd2000 *bcd2k)
bcd2k             295 sound/usb/bcd2000/bcd2000.c 	ret = snd_rawmidi_new(bcd2k->card, bcd2k->card->shortname, 0,
bcd2k             303 sound/usb/bcd2000/bcd2000.c 	strlcpy(rmidi->name, bcd2k->card->shortname, sizeof(rmidi->name));
bcd2k             306 sound/usb/bcd2000/bcd2000.c 	rmidi->private_data = bcd2k;
bcd2k             316 sound/usb/bcd2000/bcd2000.c 	bcd2k->rmidi = rmidi;
bcd2k             318 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_in_urb = usb_alloc_urb(0, GFP_KERNEL);
bcd2k             319 sound/usb/bcd2000/bcd2000.c 	bcd2k->midi_out_urb = usb_alloc_urb(0, GFP_KERNEL);
bcd2k             321 sound/usb/bcd2000/bcd2000.c 	if (!bcd2k->midi_in_urb || !bcd2k->midi_out_urb) {
bcd2k             322 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, PREFIX "usb_alloc_urb failed\n");
bcd2k             326 sound/usb/bcd2000/bcd2000.c 	usb_fill_int_urb(bcd2k->midi_in_urb, bcd2k->dev,
bcd2k             327 sound/usb/bcd2000/bcd2000.c 				usb_rcvintpipe(bcd2k->dev, 0x81),
bcd2k             328 sound/usb/bcd2000/bcd2000.c 				bcd2k->midi_in_buf, BUFSIZE,
bcd2k             329 sound/usb/bcd2000/bcd2000.c 				bcd2000_input_complete, bcd2k, 1);
bcd2k             331 sound/usb/bcd2000/bcd2000.c 	usb_fill_int_urb(bcd2k->midi_out_urb, bcd2k->dev,
bcd2k             332 sound/usb/bcd2000/bcd2000.c 				usb_sndintpipe(bcd2k->dev, 0x1),
bcd2k             333 sound/usb/bcd2000/bcd2000.c 				bcd2k->midi_out_buf, BUFSIZE,
bcd2k             334 sound/usb/bcd2000/bcd2000.c 				bcd2000_output_complete, bcd2k, 1);
bcd2k             337 sound/usb/bcd2000/bcd2000.c 	if (usb_urb_ep_type_check(bcd2k->midi_in_urb) ||
bcd2k             338 sound/usb/bcd2000/bcd2000.c 	    usb_urb_ep_type_check(bcd2k->midi_out_urb)) {
bcd2k             339 sound/usb/bcd2000/bcd2000.c 		dev_err(&bcd2k->dev->dev, "invalid MIDI EP\n");
bcd2k             343 sound/usb/bcd2000/bcd2000.c 	bcd2000_init_device(bcd2k);
bcd2k             348 sound/usb/bcd2000/bcd2000.c static void bcd2000_free_usb_related_resources(struct bcd2000 *bcd2k,
bcd2k             353 sound/usb/bcd2000/bcd2000.c 	usb_free_urb(bcd2k->midi_out_urb);
bcd2k             354 sound/usb/bcd2000/bcd2000.c 	usb_free_urb(bcd2k->midi_in_urb);
bcd2k             356 sound/usb/bcd2000/bcd2000.c 	if (bcd2k->intf) {
bcd2k             357 sound/usb/bcd2000/bcd2000.c 		usb_set_intfdata(bcd2k->intf, NULL);
bcd2k             358 sound/usb/bcd2000/bcd2000.c 		bcd2k->intf = NULL;
bcd2k             366 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k;
bcd2k             383 sound/usb/bcd2000/bcd2000.c 			THIS_MODULE, sizeof(*bcd2k), &card);
bcd2k             389 sound/usb/bcd2000/bcd2000.c 	bcd2k = card->private_data;
bcd2k             390 sound/usb/bcd2000/bcd2000.c 	bcd2k->dev = interface_to_usbdev(interface);
bcd2k             391 sound/usb/bcd2000/bcd2000.c 	bcd2k->card = card;
bcd2k             392 sound/usb/bcd2000/bcd2000.c 	bcd2k->card_index = card_index;
bcd2k             393 sound/usb/bcd2000/bcd2000.c 	bcd2k->intf = interface;
bcd2k             399 sound/usb/bcd2000/bcd2000.c 	usb_make_path(bcd2k->dev, usb_path, sizeof(usb_path));
bcd2k             400 sound/usb/bcd2000/bcd2000.c 	snprintf(bcd2k->card->longname, sizeof(bcd2k->card->longname),
bcd2k             404 sound/usb/bcd2000/bcd2000.c 	err = bcd2000_init_midi(bcd2k);
bcd2k             412 sound/usb/bcd2000/bcd2000.c 	usb_set_intfdata(interface, bcd2k);
bcd2k             419 sound/usb/bcd2000/bcd2000.c 	dev_info(&bcd2k->dev->dev, PREFIX "error during probing");
bcd2k             420 sound/usb/bcd2000/bcd2000.c 	bcd2000_free_usb_related_resources(bcd2k, interface);
bcd2k             428 sound/usb/bcd2000/bcd2000.c 	struct bcd2000 *bcd2k = usb_get_intfdata(interface);
bcd2k             430 sound/usb/bcd2000/bcd2000.c 	if (!bcd2k)
bcd2k             436 sound/usb/bcd2000/bcd2000.c 	snd_card_disconnect(bcd2k->card);
bcd2k             438 sound/usb/bcd2000/bcd2000.c 	bcd2000_free_usb_related_resources(bcd2k, interface);
bcd2k             440 sound/usb/bcd2000/bcd2000.c 	clear_bit(bcd2k->card_index, devices_used);
bcd2k             442 sound/usb/bcd2000/bcd2000.c 	snd_card_free_when_closed(bcd2k->card);