Lines Matching refs:midi2
499 struct f_midi2 *midi2 = ep->card;
530 if (midi2->info.req_buf_size - req->length < UMP_STREAM_PKT_BYTES)
608 struct f_midi2 *midi2 = ep->card;
631 DBG(midi2, "Switching Protocol to MIDI2\n");
634 DBG(midi2, "Switching Protocol to MIDI1\n");
678 struct f_midi2 *midi2 = ep->card;
682 DBG(midi2, "%s complete error %d: %d/%d\n",
690 if (midi2->info.process_ump)
695 if (midi2->operation_mode != MIDI_OP_MODE_MIDI2)
710 struct f_midi2 *midi2 = ep->card;
722 midi2->info.req_buf_size);
740 struct f_midi2 *midi2 = ep->card;
746 DBG(midi2, "%s complete error %d: %d/%d\n",
763 static bool process_midi1_byte(struct f_midi2 *midi2, u8 cable, u8 b,
766 struct f_midi2_midi1_port *port = &midi2->midi1_port[cable];
916 if (midi2->info.req_buf_size - req->length <= 4) {
931 static bool process_midi1_pending_buf(struct f_midi2 *midi2,
936 for (cable = 0; cable < midi2->num_midi1_in; cable++) {
937 struct f_midi2_midi1_port *port = &midi2->midi1_port[cable];
942 if (process_midi1_byte(midi2, cable, port->buf[c],
959 static void fill_midi1_pending_buf(struct f_midi2 *midi2, u8 cable, u8 *buf,
962 struct f_midi2_midi1_port *port = &midi2->midi1_port[cable];
971 static void process_midi1_transmit(struct f_midi2 *midi2)
973 struct f_midi2_usb_ep *usb_ep = &midi2->midi1_ep_in;
974 struct f_midi2_ep *ep = &midi2->midi2_eps[0];
992 if (process_midi1_pending_buf(midi2, &req))
1008 fill_midi1_pending_buf(midi2, cable, outbuf, size);
1024 struct f_midi2 *midi2 = ctx->usb_ep->card;
1030 DBG(midi2, "%s complete error %d: %d/%d\n",
1035 process_midi1_transmit(midi2);
1043 struct f_midi2 *midi2 = ctx->usb_ep->card;
1045 struct ump_cvt_to_ump *cvt = &midi2->midi1_ump_cvt;
1054 DBG(midi2, "%s complete error %d: %d/%d\n",
1062 ep = midi2->out_cable_mapping[cable].ep;
1065 group = midi2->out_cable_mapping[cable].group;
1078 if (midi2->operation_mode != MIDI_OP_MODE_MIDI1)
1128 struct f_midi2 *midi2 = usb_ep->card;
1136 for (i = 0; i < midi2->info.num_reqs; i++) {
1140 midi2->info.req_buf_size);
1151 struct f_midi2 *midi2 = usb_ep->card;
1154 for (i = 0; i < midi2->info.num_reqs; i++) {
1163 static int f_midi2_init_ep(struct f_midi2 *midi2, struct f_midi2_ep *ep,
1171 usb_ep->card = midi2;
1173 usb_ep->usb_ep = usb_ep_autoconfig(midi2->gadget, desc);
1178 usb_ep->reqs = kcalloc(midi2->info.num_reqs, sizeof(*usb_ep->reqs),
1182 for (i = 0; i < midi2->info.num_reqs; i++) {
1267 struct f_midi2 *midi2 = func_to_midi2(fn);
1271 if (intf != midi2->midi_if || alt > 1)
1281 if (midi2->operation_mode == op_mode)
1284 midi2->operation_mode = op_mode;
1287 f_midi2_stop_eps(&midi2->midi1_ep_in, &midi2->midi1_ep_out);
1290 for (i = 0; i < midi2->num_eps; i++) {
1291 ep = &midi2->midi2_eps[i];
1297 return f_midi2_start_eps(&midi2->midi1_ep_in,
1298 &midi2->midi1_ep_out, fn);
1301 for (i = 0; i < midi2->num_eps; i++) {
1302 ep = &midi2->midi2_eps[i];
1316 struct f_midi2 *midi2 = func_to_midi2(fn);
1318 if (intf == midi2->midi_if &&
1319 midi2->operation_mode == MIDI_OP_MODE_MIDI2)
1338 static void assign_block_descriptors(struct f_midi2 *midi2,
1349 len = sizeof(gtb_header_desc) + sizeof(gtb_desc) * midi2->total_blocks;
1350 if (WARN_ON(len > midi2->info.req_buf_size))
1365 for (i = 0; i < midi2->num_eps; i++) {
1366 ep = &midi2->midi2_eps[i];
1400 struct f_midi2 *midi2 = func_to_midi2(fn);
1419 assign_block_descriptors(midi2, req, length);
1426 struct f_midi2 *midi2 = func_to_midi2(fn);
1428 midi2->operation_mode = MIDI_OP_MODE_UNSET;
1446 struct f_midi2 *midi2 = ep->card;
1449 switch (midi2->operation_mode) {
1451 process_midi1_transmit(midi2);
1487 struct f_midi2 *midi2 = snd_kcontrol_chip(kcontrol);
1489 ucontrol->value.integer.value[0] = midi2->operation_mode;
1504 static void f_midi2_free_card(struct f_midi2 *midi2)
1506 if (midi2->card) {
1507 snd_card_free_when_closed(midi2->card);
1508 midi2->card = NULL;
1521 static int f_midi2_create_card(struct f_midi2 *midi2)
1529 err = snd_card_new(&midi2->gadget->dev, -1, NULL, THIS_MODULE, 0,
1533 midi2->card = card;
1540 for (i = 0; i < midi2->num_eps; i++) {
1541 ep = &midi2->midi2_eps[i];
1552 if (midi2->info.static_block)
1590 for (i = 0; i < midi2->num_eps; i++) {
1591 err = snd_ump_attach_legacy_rawmidi(midi2->midi2_eps[i].ump,
1598 err = snd_ctl_add(card, snd_ctl_new1(&operation_mode_ctl, midi2));
1609 f_midi2_free_card(midi2);
1659 static int append_midi1_in_jack(struct f_midi2 *midi2,
1684 static int append_midi1_out_jack(struct f_midi2 *midi2,
1712 static int f_midi2_create_usb_configs(struct f_midi2 *midi2,
1725 for (i = 0; i < midi2->num_eps; i++)
1736 for (i = 0; i < midi2->num_eps; i++)
1748 if (midi2->num_midi1_in && midi2->num_midi1_out)
1758 if (midi2->num_midi1_out) {
1760 USB_DT_MS_ENDPOINT_SIZE(midi2->num_midi1_out);
1763 midi2->num_midi1_out;
1764 total += midi2->num_midi1_out *
1766 for (i = 0; i < midi2->num_midi1_out; i++) {
1767 jack = append_midi1_in_jack(midi2, config,
1768 &midi2->in_cable_mapping[i],
1773 jack = append_midi1_out_jack(midi2, config,
1774 &midi2->in_cable_mapping[i],
1781 if (midi2->num_midi1_in) {
1783 USB_DT_MS_ENDPOINT_SIZE(midi2->num_midi1_in);
1786 midi2->num_midi1_in;
1787 total += midi2->num_midi1_in *
1789 for (i = 0; i < midi2->num_midi1_in; i++) {
1790 jack = append_midi1_in_jack(midi2, config,
1791 &midi2->out_cable_mapping[i],
1795 jack = append_midi1_out_jack(midi2, config,
1796 &midi2->out_cable_mapping[i],
1806 if (midi2->num_midi1_out) {
1811 if (midi2->num_midi1_in) {
1821 for (i = 0; i < midi2->num_eps; i++) {
1873 static int f_midi2_init_midi2_ep_in(struct f_midi2 *midi2, int index)
1875 struct f_midi2_ep *ep = &midi2->midi2_eps[index];
1887 return f_midi2_init_ep(midi2, ep, &ep->ep_in, desc,
1892 static int f_midi2_init_midi2_ep_out(struct f_midi2 *midi2, int index)
1894 struct f_midi2_ep *ep = &midi2->midi2_eps[index];
1904 return f_midi2_init_ep(midi2, ep, &ep->ep_out, desc,
1912 struct f_midi2 *midi2 = func_to_midi2(f);
1917 .strings = midi2->string_defs,
1925 midi2->gadget = cdev->gadget;
1926 midi2->operation_mode = MIDI_OP_MODE_UNSET;
1928 status = f_midi2_create_card(midi2);
1933 midi2->strings = usb_gstrings_attach(c->cdev, strings,
1934 midi2->total_blocks + 1);
1935 if (IS_ERR(midi2->strings)) {
1936 status = PTR_ERR(midi2->strings);
1941 midi2_midi1_if_desc.iInterface = midi2->strings[STR_IFACE].id;
1942 midi2_midi2_if_desc.iInterface = midi2->strings[STR_IFACE].id;
1943 for (i = 0; i < midi2->num_eps; i++) {
1944 ep = &midi2->midi2_eps[i];
1947 midi2->strings[gtb_to_str_id(ep->blks[blk].gtb_id)].id;
1950 midi2_midi2_if_desc.bNumEndpoints = midi2->num_eps * 2;
1962 midi2->midi_if = status;
1968 if (midi2->midi2_eps[0].blks[0].info.direction != SNDRV_UMP_DIR_OUTPUT) {
1969 status = f_midi2_init_ep(midi2, NULL, &midi2->midi1_ep_in,
1976 if (midi2->midi2_eps[0].blks[0].info.direction != SNDRV_UMP_DIR_INPUT) {
1977 status = f_midi2_init_ep(midi2, NULL, &midi2->midi1_ep_out,
1984 for (i = 0; i < midi2->num_eps; i++) {
1985 status = f_midi2_init_midi2_ep_in(midi2, i);
1988 status = f_midi2_init_midi2_ep_out(midi2, i);
1993 status = f_midi2_create_usb_configs(midi2, &config, USB_SPEED_FULL);
2003 status = f_midi2_create_usb_configs(midi2, &config, USB_SPEED_HIGH);
2013 status = f_midi2_create_usb_configs(midi2, &config, USB_SPEED_SUPER);
2031 f_midi2_free_card(midi2);
2033 ERROR(midi2, "%s: can't bind, err %d\n", f->name, status);
2040 struct f_midi2 *midi2 = func_to_midi2(f);
2043 f_midi2_free_card(midi2);
2045 f_midi2_free_ep(&midi2->midi1_ep_in);
2046 f_midi2_free_ep(&midi2->midi1_ep_out);
2047 for (i = 0; i < midi2->num_eps; i++) {
2048 f_midi2_free_ep(&midi2->midi2_eps[i].ep_in);
2049 f_midi2_free_ep(&midi2->midi2_eps[i].ep_out);
2677 static void do_f_midi2_free(struct f_midi2 *midi2, struct f_midi2_opts *opts)
2682 kfree(midi2->string_defs);
2683 kfree(midi2);
2747 static void fill_midi1_cable_mapping(struct f_midi2 *midi2,
2759 map = midi2->in_cable_mapping + midi2->num_midi1_in;
2761 if (midi2->num_midi1_in >= MAX_CABLES)
2766 midi2->num_midi1_in++;
2768 ep->in_group_to_cable[group] = midi2->num_midi1_in;
2774 map = midi2->out_cable_mapping + midi2->num_midi1_out;
2776 if (midi2->num_midi1_out >= MAX_CABLES)
2781 midi2->num_midi1_out++;
2789 struct f_midi2 *midi2;
2795 midi2 = kzalloc(sizeof(*midi2), GFP_KERNEL);
2796 if (!midi2)
2804 kfree(midi2);
2810 spin_lock_init(&midi2->queue_lock);
2812 midi2->func.name = "midi2_func";
2813 midi2->func.bind = f_midi2_bind;
2814 midi2->func.unbind = f_midi2_unbind;
2815 midi2->func.get_alt = f_midi2_get_alt;
2816 midi2->func.set_alt = f_midi2_set_alt;
2817 midi2->func.setup = f_midi2_setup;
2818 midi2->func.disable = f_midi2_disable;
2819 midi2->func.free_func = f_midi2_free;
2821 midi2->info = opts->info;
2822 midi2->num_eps = num_eps;
2825 ep = &midi2->midi2_eps[i];
2827 ep->card = midi2;
2833 bp->gtb_id = ++midi2->total_blocks;
2837 midi2->string_defs = kcalloc(midi2->total_blocks + 1,
2838 sizeof(*midi2->string_defs), GFP_KERNEL);
2839 if (!midi2->string_defs) {
2840 do_f_midi2_free(midi2, opts);
2845 midi2->string_defs[STR_IFACE].s = opts->info.iface_name;
2847 midi2->string_defs[STR_IFACE].s = ump_ep_name(&midi2->midi2_eps[0]);
2849 for (i = 0; i < midi2->num_eps; i++) {
2850 ep = &midi2->midi2_eps[i];
2853 midi2->string_defs[gtb_to_str_id(bp->gtb_id)].s =
2856 fill_midi1_cable_mapping(midi2, ep, blk);
2860 if (!midi2->num_midi1_in && !midi2->num_midi1_out) {
2862 do_f_midi2_free(midi2, opts);
2866 return &midi2->func;
2869 DECLARE_USB_FUNCTION_INIT(midi2, f_midi2_alloc_inst, f_midi2_alloc);