Skip to content

Commit 2307a0e

Browse files
egormangatiwai
authored andcommitted
ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0)
The patch applies the same quirks used for SC-01 at firmware v1.1.0 to the ones running v1.0.0, with respect to hard-coded sample rates. I got two more units and successfully tested the patch series with both firmwares. The support is now complete (not accounting ASIO). Signed-off-by: Egor Vorontsov <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent 4fb7c24 commit 2307a0e

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

sound/usb/quirks-table.h

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4167,6 +4167,138 @@ YAMAHA_DEVICE(0x7010, "UB99"),
41674167
}
41684168
}
41694169
},
4170+
{
4171+
/*
4172+
* Fiero SC-01 (firmware v1.0.0 @ 48 kHz)
4173+
*/
4174+
USB_DEVICE(0x2b53, 0x0023),
4175+
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4176+
.vendor_name = "Fiero",
4177+
.product_name = "SC-01",
4178+
.ifnum = QUIRK_ANY_INTERFACE,
4179+
.type = QUIRK_COMPOSITE,
4180+
.data = &(const struct snd_usb_audio_quirk[]) {
4181+
{
4182+
.ifnum = 0,
4183+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
4184+
},
4185+
/* Playback */
4186+
{
4187+
.ifnum = 1,
4188+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
4189+
.data = &(const struct audioformat) {
4190+
.formats = SNDRV_PCM_FMTBIT_S32_LE,
4191+
.channels = 2,
4192+
.fmt_bits = 24,
4193+
.iface = 1,
4194+
.altsetting = 1,
4195+
.altset_idx = 1,
4196+
.endpoint = 0x01,
4197+
.ep_attr = USB_ENDPOINT_XFER_ISOC |
4198+
USB_ENDPOINT_SYNC_ASYNC,
4199+
.rates = SNDRV_PCM_RATE_48000,
4200+
.rate_min = 48000,
4201+
.rate_max = 48000,
4202+
.nr_rates = 1,
4203+
.rate_table = (unsigned int[]) { 48000 },
4204+
.clock = 0x29
4205+
}
4206+
},
4207+
/* Capture */
4208+
{
4209+
.ifnum = 2,
4210+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
4211+
.data = &(const struct audioformat) {
4212+
.formats = SNDRV_PCM_FMTBIT_S32_LE,
4213+
.channels = 2,
4214+
.fmt_bits = 24,
4215+
.iface = 2,
4216+
.altsetting = 1,
4217+
.altset_idx = 1,
4218+
.endpoint = 0x82,
4219+
.ep_attr = USB_ENDPOINT_XFER_ISOC |
4220+
USB_ENDPOINT_SYNC_ASYNC |
4221+
USB_ENDPOINT_USAGE_IMPLICIT_FB,
4222+
.rates = SNDRV_PCM_RATE_48000,
4223+
.rate_min = 48000,
4224+
.rate_max = 48000,
4225+
.nr_rates = 1,
4226+
.rate_table = (unsigned int[]) { 48000 },
4227+
.clock = 0x29
4228+
}
4229+
},
4230+
{
4231+
.ifnum = -1
4232+
}
4233+
}
4234+
}
4235+
},
4236+
{
4237+
/*
4238+
* Fiero SC-01 (firmware v1.0.0 @ 96 kHz)
4239+
*/
4240+
USB_DEVICE(0x2b53, 0x0024),
4241+
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4242+
.vendor_name = "Fiero",
4243+
.product_name = "SC-01",
4244+
.ifnum = QUIRK_ANY_INTERFACE,
4245+
.type = QUIRK_COMPOSITE,
4246+
.data = &(const struct snd_usb_audio_quirk[]) {
4247+
{
4248+
.ifnum = 0,
4249+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
4250+
},
4251+
/* Playback */
4252+
{
4253+
.ifnum = 1,
4254+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
4255+
.data = &(const struct audioformat) {
4256+
.formats = SNDRV_PCM_FMTBIT_S32_LE,
4257+
.channels = 2,
4258+
.fmt_bits = 24,
4259+
.iface = 1,
4260+
.altsetting = 1,
4261+
.altset_idx = 1,
4262+
.endpoint = 0x01,
4263+
.ep_attr = USB_ENDPOINT_XFER_ISOC |
4264+
USB_ENDPOINT_SYNC_ASYNC,
4265+
.rates = SNDRV_PCM_RATE_96000,
4266+
.rate_min = 96000,
4267+
.rate_max = 96000,
4268+
.nr_rates = 1,
4269+
.rate_table = (unsigned int[]) { 96000 },
4270+
.clock = 0x29
4271+
}
4272+
},
4273+
/* Capture */
4274+
{
4275+
.ifnum = 2,
4276+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
4277+
.data = &(const struct audioformat) {
4278+
.formats = SNDRV_PCM_FMTBIT_S32_LE,
4279+
.channels = 2,
4280+
.fmt_bits = 24,
4281+
.iface = 2,
4282+
.altsetting = 1,
4283+
.altset_idx = 1,
4284+
.endpoint = 0x82,
4285+
.ep_attr = USB_ENDPOINT_XFER_ISOC |
4286+
USB_ENDPOINT_SYNC_ASYNC |
4287+
USB_ENDPOINT_USAGE_IMPLICIT_FB,
4288+
.rates = SNDRV_PCM_RATE_96000,
4289+
.rate_min = 96000,
4290+
.rate_max = 96000,
4291+
.nr_rates = 1,
4292+
.rate_table = (unsigned int[]) { 96000 },
4293+
.clock = 0x29
4294+
}
4295+
},
4296+
{
4297+
.ifnum = -1
4298+
}
4299+
}
4300+
}
4301+
},
41704302
{
41714303
/*
41724304
* Fiero SC-01 (firmware v1.1.0)

sound/usb/quirks.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1915,6 +1915,10 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
19151915
QUIRK_FLAG_ALIGN_TRANSFER),
19161916
DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */
19171917
QUIRK_FLAG_GET_SAMPLE_RATE),
1918+
DEVICE_FLG(0x2b53, 0x0023, /* Fiero SC-01 (firmware v1.0.0 @ 48 kHz) */
1919+
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
1920+
DEVICE_FLG(0x2b53, 0x0024, /* Fiero SC-01 (firmware v1.0.0 @ 96 kHz) */
1921+
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
19181922
DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
19191923
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
19201924

0 commit comments

Comments
 (0)