* ALSA Support for Roland Gaia SH-01
@ 2011-11-21 0:24 John F Leach
2011-11-21 11:10 ` Daniel Mack
2011-11-21 12:37 ` Grant Diffey
0 siblings, 2 replies; 6+ messages in thread
From: John F Leach @ 2011-11-21 0:24 UTC (permalink / raw)
To: alsa-devel; +Cc: clemens, zonque
All,
Can someone please help to add ALSA support for the Roland Gaia (SH-01)
Synthesizer?
http://www.rolandus.com/products/productdetails.php?ProductId=1074
I started a sample patch for usbquirks.h (see below) but am not sure if
the USB_DEVICE address is correct or what to use for the types. What
should the quirk table entry look like for this device? Does quirks.c
need a special case added?
{
/* Roland Gaia SH-01 */
USB_DEVICE(0x0582, 0x0111),
.driver_info = (unsigned long) & (const struct
snd_usb_audio_quirk) {
.vendor_name = "Roland",
.product_name = "Gaia",
.ifnum = QUIRK_ANY_INTERFACE,
.type = QUIRK_COMPOSITE,
.data = (const struct snd_usb_audio_quirk[]) {
{
.ifnum = 0,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 1,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 2,
.type = QUIRK_STANDARD_MIDI_INTERFACE,
}
},
{
.ifnum = -1
}
}
}
Below is the output of 'lsusb -vv' for the device. Please let me know
if additional information is required.
Bus 001 Device 013: ID 0582:0111 Roland Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 255
bMaxPacketSize0 64
idVendor 0x0582 Roland Corp.
idProduct 0x0111
bcdDevice 0.01
iManufacturer 1 Roland
iProduct 2 SH-01
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 167
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 06 24 f1 01 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 07 24 01 01 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0070 1x 112 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
** UNRECOGNIZED: 07 24 01 07 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 37
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Implicit feedback Data
wMaxPacketSize 0x0070 1x 112 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 06 24 f1 02 02 02
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 8 Mass Storage
bDeviceSubClass 6 SCSI
bDeviceProtocol 80 Bulk (Zip)
bMaxPacketSize0 64
bNumConfigurations 0
Device Status: 0x0001
Self Powered
Regards,
John F Leach
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: ALSA Support for Roland Gaia SH-01
2011-11-21 0:24 ALSA Support for Roland Gaia SH-01 John F Leach
@ 2011-11-21 11:10 ` Daniel Mack
2011-11-21 12:37 ` Grant Diffey
1 sibling, 0 replies; 6+ messages in thread
From: Daniel Mack @ 2011-11-21 11:10 UTC (permalink / raw)
To: John F Leach; +Cc: alsa-devel, clemens
On 11/21/2011 01:24 AM, John F Leach wrote:
> All,
>
> Can someone please help to add ALSA support for the Roland Gaia (SH-01)
> Synthesizer?
>
> http://www.rolandus.com/products/productdetails.php?ProductId=1074
>
> I started a sample patch for usbquirks.h (see below) but am not sure if
> the USB_DEVICE address is correct or what to use for the types. What
> should the quirk table entry look like for this device? Does quirks.c
> need a special case added?
>
> {
> /* Roland Gaia SH-01 */
> USB_DEVICE(0x0582, 0x0111),
> .driver_info = (unsigned long) & (const struct
> snd_usb_audio_quirk) {
> .vendor_name = "Roland",
> .product_name = "Gaia",
> .ifnum = QUIRK_ANY_INTERFACE,
> .type = QUIRK_COMPOSITE,
> .data = (const struct snd_usb_audio_quirk[]) {
> {
> .ifnum = 0,
> .type = QUIRK_AUDIO_STANDARD_INTERFACE
> },
> {
> .ifnum = 1,
> .type = QUIRK_AUDIO_STANDARD_INTERFACE
> },
> {
> .ifnum = 2,
> .type = QUIRK_STANDARD_MIDI_INTERFACE,
> }
> },
> {
> .ifnum = -1
> }
> }
> }
That doesn't look too bad except for a syntactial error in the MIDI
block (an extra "}"). Did you try it? What was the result?
Daniel
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: ALSA Support for Roland Gaia SH-01
2011-11-21 0:24 ALSA Support for Roland Gaia SH-01 John F Leach
2011-11-21 11:10 ` Daniel Mack
@ 2011-11-21 12:37 ` Grant Diffey
2011-11-21 12:50 ` Clemens Ladisch
1 sibling, 1 reply; 6+ messages in thread
From: Grant Diffey @ 2011-11-21 12:37 UTC (permalink / raw)
To: John F Leach; +Cc: alsa-devel, clemens, zonque
On Mon, Nov 21, 2011 at 11:24 AM, John F Leach <jfleach@jfleach.com> wrote:
> All,
>
> Can someone please help to add ALSA support for the Roland Gaia (SH-01)
> Synthesizer?
>
> http://www.rolandus.com/products/productdetails.php?ProductId=1074
>
> I started a sample patch for usbquirks.h (see below) but am not sure if
> the USB_DEVICE address is correct or what to use for the types. What
> should the quirk table entry look like for this device? Does quirks.c
> need a special case added?
>
> {
> /* Roland Gaia SH-01 */
> USB_DEVICE(0x0582, 0x0111),
> .driver_info = (unsigned long) & (const struct
> snd_usb_audio_quirk) {
> .vendor_name = "Roland",
> .product_name = "Gaia",
> .ifnum = QUIRK_ANY_INTERFACE,
> .type = QUIRK_COMPOSITE,
> .data = (const struct snd_usb_audio_quirk[]) {
> {
> .ifnum = 0,
> .type = QUIRK_AUDIO_STANDARD_INTERFACE
> },
> {
> .ifnum = 1,
> .type = QUIRK_AUDIO_STANDARD_INTERFACE
> },
> {
> .ifnum = 2,
> .type = QUIRK_STANDARD_MIDI_INTERFACE,
> }
> },
> {
> .ifnum = -1
> }
> }
> }
>
>
>
> I've looked at this a little and from my poor understanding I may have
given John a red herring wrt:
> .type = QUIRK_STANDARD_MIDI_INTERFACE,
>From the looks of interface 2 which I'm guessing is the midi subinterface
it doesn't seem to conform to the UAC spec
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
This might need to be QUIRK_FIXED_MIDI_ENDPOINT maybe?
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: ALSA Support for Roland Gaia SH-01
2011-11-21 12:37 ` Grant Diffey
@ 2011-11-21 12:50 ` Clemens Ladisch
2011-11-21 17:19 ` John F Leach
0 siblings, 1 reply; 6+ messages in thread
From: Clemens Ladisch @ 2011-11-21 12:50 UTC (permalink / raw)
To: John F Leach, Grant Diffey; +Cc: alsa-devel, zonque
Grant Diffey wrote:
> On Mon, Nov 21, 2011 at 11:24 AM, John F Leach <jfleach@jfleach.com> wrote:
> > .type = QUIRK_STANDARD_MIDI_INTERFACE,
>
> From the looks of interface 2 which I'm guessing is the midi subinterface
> it doesn't seem to conform to the UAC spec
Yes; Roland's MIDI interfaces use different descriptors.
> This might need to be QUIRK_FIXED_MIDI_ENDPOINT maybe?
...
{
.ifnum = 2,
.type = QUIRK_MIDI_FIXED_ENDPOINT,
.data = & (const struct snd_usb_midi_endpoint_info) {
.out_cables = 0x0003,
.in_cables = 0x0003
}
},
...
Regards,
Clemens
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: ALSA Support for Roland Gaia SH-01
2011-11-21 12:50 ` Clemens Ladisch
@ 2011-11-21 17:19 ` John F Leach
2011-11-21 17:34 ` Daniel Mack
0 siblings, 1 reply; 6+ messages in thread
From: John F Leach @ 2011-11-21 17:19 UTC (permalink / raw)
To: alsa-devel; +Cc: Grant Diffey, clemens, zonque
Thanks for the help everyone. I was able to get the device's USB audio
and MIDI to work, but need additional time for testing and tweaking of
the code.
Here's the patch so far, please let me know if there are any other
enhancements I should consider.
{
/* Roland GAIA SH-01 */
USB_DEVICE(0x0582, 0x0111),
.driver_info = (unsigned long) & (const struct
snd_usb_audio_quirk) {
.vendor_name = "Roland",
.product_name = "SH-01",
.ifnum = QUIRK_ANY_INTERFACE,
.type = QUIRK_COMPOSITE,
.data = (const struct snd_usb_audio_quirk[]) {
{
.ifnum = 0,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 1,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 2,
.type = QUIRK_MIDI_FIXED_ENDPOINT,
.data = & (const struct
snd_usb_midi_endpoint_info) {
.out_cables = 0x0003,
.in_cables = 0x0003
}
},
{
.ifnum = -1
}
}
}
},
Regards,
John F Leach
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: ALSA Support for Roland Gaia SH-01
2011-11-21 17:19 ` John F Leach
@ 2011-11-21 17:34 ` Daniel Mack
0 siblings, 0 replies; 6+ messages in thread
From: Daniel Mack @ 2011-11-21 17:34 UTC (permalink / raw)
To: John F Leach; +Cc: alsa-devel, clemens, Grant Diffey
On 11/21/2011 06:19 PM, John F Leach wrote:
> Thanks for the help everyone. I was able to get the device's USB audio
> and MIDI to work, but need additional time for testing and tweaking of
> the code.
>
> Here's the patch so far, please let me know if there are any other
> enhancements I should consider.
The patch's content seems to be fine, just make sure you follow the
rules described in Documentation/SubmittingPatches when posting the
final version. git helps a lot in the preparation :)
Daniel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-11-21 17:34 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-21 0:24 ALSA Support for Roland Gaia SH-01 John F Leach
2011-11-21 11:10 ` Daniel Mack
2011-11-21 12:37 ` Grant Diffey
2011-11-21 12:50 ` Clemens Ladisch
2011-11-21 17:19 ` John F Leach
2011-11-21 17:34 ` Daniel Mack
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.