Message ID | 20230809002631.750120-1-o-takashi@sakamocchi.jp |
---|---|
State | Accepted |
Commit | ff7a0b4016cb349f9148d0bf9c664e604167128c |
Headers | show |
Series | ALSA: dice: add stream format parameters for Weiss devices | expand |
On Wed, 09 Aug 2023 16:18:54 +0200, Takashi Sakamoto wrote: > > Hi, > > On Wed, Aug 09, 2023 at 04:03:00PM +0200, Takashi Iwai wrote: > > On Wed, 09 Aug 2023 02:26:31 +0200, > > Takashi Sakamoto wrote: > > > > > > This patch is for kernel prepatch v6.5. > > > > Why it must be included in 6.5? This sounds more like a new > > implementation, rather than an urgent but fix that is needed for rc. > > Thanks for your notice to the patch. Indeed, it is neither urgent nor > bug fix. It is a kind of 'adding support for new device with slight > change', like adding new entries in mod device table. The overall change > and new lines are quite typical in ALSA dice driver, like TC Electronic > devices in 'sound/firewire/dice/dice-tcelectronic.c'. Things are > prepared and not brand-new. > > Precisely, current ALSA dice driver supports the Weiss models already, > while the functionality is limited that the part of sampling transfer > frequencies are available as the initial author said (e.g. when 44.1/48.0 > kHz are available, 88.2/96.0 kHz are not, vise versa). The patch extends > the functionality by hard-coding stream formats following to the design > of ALSA dice driver. > > Of cource, I don't mind postponing the patch to v6.6 kernel, but in my > point of view, it is worth to v6.5 since users got benefits from the > code which is not so novel. OK, then I'd rather put it to 6.6. If it were for rc2, I could take it. But it's already in a second half turn, and I'd rather like to limit the changes for later rcs. Takashi
On Wed, Aug 09, 2023 at 04:39:55PM +0200, Takashi Iwai wrote: > On Wed, 09 Aug 2023 16:18:54 +0200, > Takashi Sakamoto wrote: > > > > Hi, > > > > On Wed, Aug 09, 2023 at 04:03:00PM +0200, Takashi Iwai wrote: > > > On Wed, 09 Aug 2023 02:26:31 +0200, > > > Takashi Sakamoto wrote: > > > > > > > > This patch is for kernel prepatch v6.5. > > > > > > Why it must be included in 6.5? This sounds more like a new > > > implementation, rather than an urgent but fix that is needed for rc. > > > > Thanks for your notice to the patch. Indeed, it is neither urgent nor > > bug fix. It is a kind of 'adding support for new device with slight > > change', like adding new entries in mod device table. The overall change > > and new lines are quite typical in ALSA dice driver, like TC Electronic > > devices in 'sound/firewire/dice/dice-tcelectronic.c'. Things are > > prepared and not brand-new. > > > > Precisely, current ALSA dice driver supports the Weiss models already, > > while the functionality is limited that the part of sampling transfer > > frequencies are available as the initial author said (e.g. when 44.1/48.0 > > kHz are available, 88.2/96.0 kHz are not, vise versa). The patch extends > > the functionality by hard-coding stream formats following to the design > > of ALSA dice driver. > > > > Of cource, I don't mind postponing the patch to v6.6 kernel, but in my > > point of view, it is worth to v6.5 since users got benefits from the > > code which is not so novel. > > OK, then I'd rather put it to 6.6. > If it were for rc2, I could take it. But it's already in a second > half turn, and I'd rather like to limit the changes for later rcs. It sounds reasonable. So should I post the patch on your for-next branch? Thanks Takashi Sakamoto
On Thu, 10 Aug 2023 00:57:22 +0200, Takashi Sakamoto wrote: > > On Wed, Aug 09, 2023 at 04:39:55PM +0200, Takashi Iwai wrote: > > On Wed, 09 Aug 2023 16:18:54 +0200, > > Takashi Sakamoto wrote: > > > > > > Hi, > > > > > > On Wed, Aug 09, 2023 at 04:03:00PM +0200, Takashi Iwai wrote: > > > > On Wed, 09 Aug 2023 02:26:31 +0200, > > > > Takashi Sakamoto wrote: > > > > > > > > > > This patch is for kernel prepatch v6.5. > > > > > > > > Why it must be included in 6.5? This sounds more like a new > > > > implementation, rather than an urgent but fix that is needed for rc. > > > > > > Thanks for your notice to the patch. Indeed, it is neither urgent nor > > > bug fix. It is a kind of 'adding support for new device with slight > > > change', like adding new entries in mod device table. The overall change > > > and new lines are quite typical in ALSA dice driver, like TC Electronic > > > devices in 'sound/firewire/dice/dice-tcelectronic.c'. Things are > > > prepared and not brand-new. > > > > > > Precisely, current ALSA dice driver supports the Weiss models already, > > > while the functionality is limited that the part of sampling transfer > > > frequencies are available as the initial author said (e.g. when 44.1/48.0 > > > kHz are available, 88.2/96.0 kHz are not, vise versa). The patch extends > > > the functionality by hard-coding stream formats following to the design > > > of ALSA dice driver. > > > > > > Of cource, I don't mind postponing the patch to v6.6 kernel, but in my > > > point of view, it is worth to v6.5 since users got benefits from the > > > code which is not so novel. > > > > OK, then I'd rather put it to 6.6. > > If it were for rc2, I could take it. But it's already in a second > > half turn, and I'd rather like to limit the changes for later rcs. > > It sounds reasonable. So should I post the patch on your for-next branch? No need for that, the patch itself is applicable cleanly. I just need to drop the commit log line indicating 6.5-rc. thanks, Takashi
On Thu, Aug 10, 2023 at 08:36:20AM +0200, Takashi Iwai wrote: > On Thu, 10 Aug 2023 00:57:22 +0200, > Takashi Sakamoto wrote: > > > > On Wed, Aug 09, 2023 at 04:39:55PM +0200, Takashi Iwai wrote: > > > On Wed, 09 Aug 2023 16:18:54 +0200, > > > Takashi Sakamoto wrote: > > > > > > > > Hi, > > > > > > > > On Wed, Aug 09, 2023 at 04:03:00PM +0200, Takashi Iwai wrote: > > > > > On Wed, 09 Aug 2023 02:26:31 +0200, > > > > > Takashi Sakamoto wrote: > > > > > > > > > > > > This patch is for kernel prepatch v6.5. > > > > > > > > > > Why it must be included in 6.5? This sounds more like a new > > > > > implementation, rather than an urgent but fix that is needed for rc. > > > > > > > > Thanks for your notice to the patch. Indeed, it is neither urgent nor > > > > bug fix. It is a kind of 'adding support for new device with slight > > > > change', like adding new entries in mod device table. The overall change > > > > and new lines are quite typical in ALSA dice driver, like TC Electronic > > > > devices in 'sound/firewire/dice/dice-tcelectronic.c'. Things are > > > > prepared and not brand-new. > > > > > > > > Precisely, current ALSA dice driver supports the Weiss models already, > > > > while the functionality is limited that the part of sampling transfer > > > > frequencies are available as the initial author said (e.g. when 44.1/48.0 > > > > kHz are available, 88.2/96.0 kHz are not, vise versa). The patch extends > > > > the functionality by hard-coding stream formats following to the design > > > > of ALSA dice driver. > > > > > > > > Of cource, I don't mind postponing the patch to v6.6 kernel, but in my > > > > point of view, it is worth to v6.5 since users got benefits from the > > > > code which is not so novel. > > > > > > OK, then I'd rather put it to 6.6. > > > If it were for rc2, I could take it. But it's already in a second > > > half turn, and I'd rather like to limit the changes for later rcs. > > > > It sounds reasonable. So should I post the patch on your for-next branch? > > No need for that, the patch itself is applicable cleanly. > I just need to drop the commit log line indicating 6.5-rc. Okay, thank you for your application to for-next branch. (I see no log in public sound.git tree yet, while I guess that it is in your local tree. It is the reason to ask you in the previous message.) Thanks Takashi Sakamoto
diff --git a/sound/firewire/dice/Makefile b/sound/firewire/dice/Makefile index a5f3fbf28b8c..bac8712f9014 100644 --- a/sound/firewire/dice/Makefile +++ b/sound/firewire/dice/Makefile @@ -2,5 +2,5 @@ snd-dice-objs := dice-transaction.o dice-stream.o dice-proc.o dice-midi.o \ dice-pcm.o dice-hwdep.o dice.o dice-tcelectronic.o \ dice-alesis.o dice-extension.o dice-mytek.o dice-presonus.o \ - dice-harman.o dice-focusrite.o + dice-harman.o dice-focusrite.o dice-weiss.o obj-$(CONFIG_SND_DICE) += snd-dice.o diff --git a/sound/firewire/dice/dice-weiss.c b/sound/firewire/dice/dice-weiss.c new file mode 100644 index 000000000000..129d43408956 --- /dev/null +++ b/sound/firewire/dice/dice-weiss.c @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0 +// dice-weiss.c - a part of driver for DICE based devices +// +// Copyright (c) 2023 Rolf Anderegg and Michele Perrone + +#include "dice.h" + +struct dice_weiss_spec { + unsigned int tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT]; + unsigned int rx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT]; +}; + +// Weiss DAC202: 192kHz 2-channel DAC +static const struct dice_weiss_spec dac202 = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss MAN301: 192kHz 2-channel music archive network player +static const struct dice_weiss_spec man301 = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss INT202: 192kHz unidirectional 2-channel digital Firewire nterface +static const struct dice_weiss_spec int202 = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss INT203: 192kHz bidirectional 2-channel digital Firewire nterface +static const struct dice_weiss_spec int203 = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss ADC2: 192kHz A/D converter with microphone preamps and line nputs +static const struct dice_weiss_spec adc2 = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss DAC2/Minerva: 192kHz 2-channel DAC +static const struct dice_weiss_spec dac2_minerva = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss Vesta: 192kHz 2-channel Firewire to AES/EBU interface +static const struct dice_weiss_spec vesta = { + .tx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, + .rx_pcm_chs = {{2, 2, 2}, {0, 0, 0} }, +}; + +// Weiss AFI1: 192kHz 24-channel Firewire to ADAT or AES/EBU interface +static const struct dice_weiss_spec afi1 = { + .tx_pcm_chs = {{24, 16, 8}, {0, 0, 0} }, + .rx_pcm_chs = {{24, 16, 8}, {0, 0, 0} }, +}; + +int snd_dice_detect_weiss_formats(struct snd_dice *dice) +{ + static const struct { + u32 model_id; + const struct dice_weiss_spec *spec; + } *entry, entries[] = { + {0x000007, &dac202}, + {0x000008, &dac202}, // Maya edition: same audio I/O as DAC202. + {0x000006, &int202}, + {0x00000a, &int203}, + {0x00000b, &man301}, + {0x000001, &adc2}, + {0x000003, &dac2_minerva}, + {0x000002, &vesta}, + {0x000004, &afi1}, + }; + struct fw_csr_iterator it; + int key, val, model_id; + int i; + + model_id = 0; + fw_csr_iterator_init(&it, dice->unit->directory); + while (fw_csr_iterator_next(&it, &key, &val)) { + if (key == CSR_MODEL) { + model_id = val; + break; + } + } + + for (i = 0; i < ARRAY_SIZE(entries); ++i) { + entry = entries + i; + if (entry->model_id == model_id) + break; + } + if (i == ARRAY_SIZE(entries)) + return -ENODEV; + + memcpy(dice->tx_pcm_chs, entry->spec->tx_pcm_chs, + MAX_STREAMS * SND_DICE_RATE_MODE_COUNT * sizeof(unsigned int)); + memcpy(dice->rx_pcm_chs, entry->spec->rx_pcm_chs, + MAX_STREAMS * SND_DICE_RATE_MODE_COUNT * sizeof(unsigned int)); + + return 0; +} diff --git a/sound/firewire/dice/dice.c b/sound/firewire/dice/dice.c index 6c93e6e4982c..d362e4251c68 100644 --- a/sound/firewire/dice/dice.c +++ b/sound/firewire/dice/dice.c @@ -392,6 +392,69 @@ static const struct ieee1394_device_id dice_id_table[] = { .model_id = 0x0000de, .driver_data = (kernel_ulong_t)snd_dice_detect_focusrite_pro40_tcd3070_formats, }, + // Weiss DAC202: 192kHz 2-channel DAC + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000007, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss DAC202: 192kHz 2-channel DAC (Maya edition) + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000008, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss MAN301: 192kHz 2-channel music archive network player + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x00000b, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss INT202: 192kHz unidirectional 2-channel digital Firewire face + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000006, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss INT203: 192kHz bidirectional 2-channel digital Firewire face + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x00000a, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss ADC2: 192kHz A/D converter with microphone preamps and inputs + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000001, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss DAC2/Minerva: 192kHz 2-channel DAC + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000003, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss Vesta: 192kHz 2-channel Firewire to AES/EBU interface + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000002, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, + // Weiss AFI1: 192kHz 24-channel Firewire to ADAT or AES/EBU face + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID, + .vendor_id = OUI_WEISS, + .model_id = 0x000004, + .driver_data = (kernel_ulong_t)snd_dice_detect_weiss_formats, + }, { .match_flags = IEEE1394_MATCH_VERSION, .version = DICE_INTERFACE, diff --git a/sound/firewire/dice/dice.h b/sound/firewire/dice/dice.h index 674f7d552c2e..4c0ad7335998 100644 --- a/sound/firewire/dice/dice.h +++ b/sound/firewire/dice/dice.h @@ -232,5 +232,6 @@ int snd_dice_detect_mytek_formats(struct snd_dice *dice); int snd_dice_detect_presonus_formats(struct snd_dice *dice); int snd_dice_detect_harman_formats(struct snd_dice *dice); int snd_dice_detect_focusrite_pro40_tcd3070_formats(struct snd_dice *dice); +int snd_dice_detect_weiss_formats(struct snd_dice *dice); #endif