2019-05-29 16:57:59 -07:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
2015-09-29 17:39:16 -07:00
|
|
|
/*
|
|
|
|
* digi00x.c - a part of driver for Digidesign Digi 002/003 family
|
|
|
|
*
|
|
|
|
* Copyright (c) 2014-2015 Takashi Sakamoto
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "digi00x.h"
|
|
|
|
|
|
|
|
MODULE_DESCRIPTION("Digidesign Digi 002/003 family Driver");
|
|
|
|
MODULE_AUTHOR("Takashi Sakamoto <o-takashi@sakamocchi.jp>");
|
2023-06-11 07:44:44 -07:00
|
|
|
MODULE_LICENSE("GPL");
|
2015-09-29 17:39:16 -07:00
|
|
|
|
|
|
|
#define VENDOR_DIGIDESIGN 0x00a07e
|
ALSA: firewire-digi00x: add support for console models of Digi00x series
Digi00x series includes two types of unit; rack and console. As long as
reading information on config rom of Digi 002 console, 'MODEL_ID' field
has a different value from the one on Digi 002 rack.
We've already got a test report from users with Digi 003 rack. We can
assume that console type and rack type has different value in the field.
This commit adds a device entry for console type. For following commits,
this commit also adds a member to 'struct snd_digi00x' to identify console
type.
$ cd linux-firewire-utils/src
$ python2 ./crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
-----------------------------------------------------------------
400 0404f9d0 bus_info_length 4, crc_length 4, crc 63952
404 31333934 bus_name "1394"
408 60647002 irmc 0, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 7 (256)
40c 00a07e00 company_id 00a07e |
410 00a30000 device_id 0000a30000 | EUI-64 00a07e0000a30000
root directory
-----------------------------------------------------------------
414 00058a39 directory_length 5, crc 35385
418 0c0043a0 node capabilities
41c 04000001 hardware version
420 0300a07e vendor
424 81000007 --> descriptor leaf at 440
428 d1000001 --> unit directory at 42c
unit directory at 42c
-----------------------------------------------------------------
42c 00046674 directory_length 4, crc 26228
430 120000a3 specifier id
434 13000001 version
438 17000001 model
43c 81000007 --> descriptor leaf at 458
descriptor leaf at 440
-----------------------------------------------------------------
440 00055913 leaf_length 5, crc 22803
444 000050f2 descriptor_type 00, specifier_ID 50f2
448 80000000
44c 44696769
450 64657369
454 676e0000
descriptor leaf at 458
-----------------------------------------------------------------
458 0004a6fd leaf_length 4, crc 42749
45c 00000000 textual descriptor
460 00000000 minimal ASCII
464 44696769 "Digi"
468 20303032 " 002"
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-04-02 07:48:24 -07:00
|
|
|
#define MODEL_CONSOLE 0x000001
|
|
|
|
#define MODEL_RACK 0x000002
|
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
However, as long as he investigated, the design of this model is hardly
similar to the one of Digi 00x family. It's better to exclude the model
from modalias of ALSA firewire-digi00x driver.
This commit changes device entries so that the model is excluded.
$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
ROM header and bus information block
-----------------------------------------------------------------
400 04203a9c bus_info_length 4, crc_length 32, crc 15004
404 31333934 bus_name "1394"
408 e064a002 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
40c 00a07e01 company_id 00a07e |
410 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
root directory
-----------------------------------------------------------------
414 0005d08c directory_length 5, crc 53388
418 0300a07e vendor
41c 8100000c --> descriptor leaf at 44c
420 0c008380 node capabilities
424 8d000002 --> eui-64 leaf at 42c
428 d1000004 --> unit directory at 438
eui-64 leaf at 42c
-----------------------------------------------------------------
42c 0002410f leaf_length 2, crc 16655
430 00a07e01 company_id 00a07e |
434 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
unit directory at 438
-----------------------------------------------------------------
438 0004d6c9 directory_length 4, crc 54985
43c 1200a02d specifier id: 1394 TA
440 13014001 version: Vender Unique and AV/C
444 17000001 model
448 81000009 --> descriptor leaf at 46c
descriptor leaf at 44c
-----------------------------------------------------------------
44c 00077205 leaf_length 7, crc 29189
450 00000000 textual descriptor
454 00000000 minimal ASCII
458 41766964 "Avid"
45c 20546563 " Tec"
460 686e6f6c "hnol"
464 6f677900 "ogy"
468 00000000
descriptor leaf at 46c
-----------------------------------------------------------------
46c 000599a5 leaf_length 5, crc 39333
470 00000000 textual descriptor
474 00000000 minimal ASCII
478 41647265 "Adre"
47c 6e616c69 "nali"
480 6e650000 "ne"
Reported-by: Simon Wood <simon@mungewell.org>
Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
Cc: <stable@vger.kernel.org> # 4.4+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-08-23 00:55:45 -07:00
|
|
|
#define SPEC_VERSION 0x000001
|
2015-09-29 17:39:16 -07:00
|
|
|
|
|
|
|
static int name_card(struct snd_dg00x *dg00x)
|
|
|
|
{
|
|
|
|
struct fw_device *fw_dev = fw_parent_device(dg00x->unit);
|
|
|
|
char name[32] = {0};
|
|
|
|
char *model;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
err = fw_csr_string(dg00x->unit->directory, CSR_MODEL, name,
|
|
|
|
sizeof(name));
|
|
|
|
if (err < 0)
|
|
|
|
return err;
|
|
|
|
|
|
|
|
model = skip_spaces(name);
|
|
|
|
|
|
|
|
strcpy(dg00x->card->driver, "Digi00x");
|
|
|
|
strcpy(dg00x->card->shortname, model);
|
|
|
|
strcpy(dg00x->card->mixername, model);
|
|
|
|
snprintf(dg00x->card->longname, sizeof(dg00x->card->longname),
|
|
|
|
"Digidesign %s, GUID %08x%08x at %s, S%d", model,
|
2015-10-18 06:39:53 -07:00
|
|
|
fw_dev->config_rom[3], fw_dev->config_rom[4],
|
2015-09-29 17:39:16 -07:00
|
|
|
dev_name(&dg00x->unit->device), 100 << fw_dev->max_speed);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2018-10-09 23:35:02 -07:00
|
|
|
static void dg00x_card_free(struct snd_card *card)
|
2015-09-29 17:39:16 -07:00
|
|
|
{
|
2018-10-09 23:35:02 -07:00
|
|
|
struct snd_dg00x *dg00x = card->private_data;
|
|
|
|
|
2015-09-29 17:39:18 -07:00
|
|
|
snd_dg00x_stream_destroy_duplex(dg00x);
|
2015-09-29 17:39:22 -07:00
|
|
|
snd_dg00x_transaction_unregister(dg00x);
|
2021-06-07 01:12:46 -07:00
|
|
|
|
|
|
|
mutex_destroy(&dg00x->mutex);
|
|
|
|
fw_unit_put(dg00x->unit);
|
2015-09-29 17:39:16 -07:00
|
|
|
}
|
|
|
|
|
2021-06-07 01:12:46 -07:00
|
|
|
static int snd_dg00x_probe(struct fw_unit *unit, const struct ieee1394_device_id *entry)
|
2016-03-30 16:47:08 -07:00
|
|
|
{
|
2021-06-07 01:12:46 -07:00
|
|
|
struct snd_card *card;
|
|
|
|
struct snd_dg00x *dg00x;
|
2016-03-30 16:47:08 -07:00
|
|
|
int err;
|
2015-09-29 17:39:16 -07:00
|
|
|
|
2021-06-07 01:12:46 -07:00
|
|
|
err = snd_card_new(&unit->device, -1, NULL, THIS_MODULE, sizeof(*dg00x), &card);
|
2016-03-30 16:47:08 -07:00
|
|
|
if (err < 0)
|
2021-06-07 01:12:46 -07:00
|
|
|
return err;
|
|
|
|
card->private_free = dg00x_card_free;
|
|
|
|
|
|
|
|
dg00x = card->private_data;
|
|
|
|
dg00x->unit = fw_unit_get(unit);
|
|
|
|
dev_set_drvdata(&unit->device, dg00x);
|
|
|
|
dg00x->card = card;
|
|
|
|
|
|
|
|
mutex_init(&dg00x->mutex);
|
|
|
|
spin_lock_init(&dg00x->lock);
|
|
|
|
init_waitqueue_head(&dg00x->hwdep_wait);
|
|
|
|
|
|
|
|
dg00x->is_console = entry->model_id == MODEL_CONSOLE;
|
2015-09-29 17:39:16 -07:00
|
|
|
|
|
|
|
err = name_card(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2015-09-29 17:39:18 -07:00
|
|
|
err = snd_dg00x_stream_init_duplex(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2015-09-29 17:39:19 -07:00
|
|
|
snd_dg00x_proc_init(dg00x);
|
|
|
|
|
2015-09-29 17:39:20 -07:00
|
|
|
err = snd_dg00x_create_pcm_devices(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2015-10-10 20:30:16 -07:00
|
|
|
err = snd_dg00x_create_midi_devices(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2015-09-29 17:39:21 -07:00
|
|
|
err = snd_dg00x_create_hwdep_device(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2015-09-29 17:39:22 -07:00
|
|
|
err = snd_dg00x_transaction_register(dg00x);
|
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2021-06-07 01:12:46 -07:00
|
|
|
err = snd_card_register(card);
|
2015-09-29 17:39:16 -07:00
|
|
|
if (err < 0)
|
|
|
|
goto error;
|
|
|
|
|
2016-03-30 16:47:08 -07:00
|
|
|
return 0;
|
2021-06-07 01:12:46 -07:00
|
|
|
error:
|
|
|
|
snd_card_free(card);
|
|
|
|
return err;
|
2015-09-29 17:39:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void snd_dg00x_update(struct fw_unit *unit)
|
|
|
|
{
|
2015-09-29 17:39:18 -07:00
|
|
|
struct snd_dg00x *dg00x = dev_get_drvdata(&unit->device);
|
|
|
|
|
2015-09-29 17:39:22 -07:00
|
|
|
snd_dg00x_transaction_reregister(dg00x);
|
|
|
|
|
2021-06-07 01:12:46 -07:00
|
|
|
mutex_lock(&dg00x->mutex);
|
|
|
|
snd_dg00x_stream_update_duplex(dg00x);
|
|
|
|
mutex_unlock(&dg00x->mutex);
|
2015-09-29 17:39:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void snd_dg00x_remove(struct fw_unit *unit)
|
|
|
|
{
|
|
|
|
struct snd_dg00x *dg00x = dev_get_drvdata(&unit->device);
|
|
|
|
|
2021-06-07 01:12:46 -07:00
|
|
|
// Block till all of ALSA character devices are released.
|
|
|
|
snd_card_free(dg00x->card);
|
2015-09-29 17:39:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static const struct ieee1394_device_id snd_dg00x_id_table[] = {
|
|
|
|
/* Both of 002/003 use the same ID. */
|
|
|
|
{
|
|
|
|
.match_flags = IEEE1394_MATCH_VENDOR_ID |
|
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
However, as long as he investigated, the design of this model is hardly
similar to the one of Digi 00x family. It's better to exclude the model
from modalias of ALSA firewire-digi00x driver.
This commit changes device entries so that the model is excluded.
$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
ROM header and bus information block
-----------------------------------------------------------------
400 04203a9c bus_info_length 4, crc_length 32, crc 15004
404 31333934 bus_name "1394"
408 e064a002 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
40c 00a07e01 company_id 00a07e |
410 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
root directory
-----------------------------------------------------------------
414 0005d08c directory_length 5, crc 53388
418 0300a07e vendor
41c 8100000c --> descriptor leaf at 44c
420 0c008380 node capabilities
424 8d000002 --> eui-64 leaf at 42c
428 d1000004 --> unit directory at 438
eui-64 leaf at 42c
-----------------------------------------------------------------
42c 0002410f leaf_length 2, crc 16655
430 00a07e01 company_id 00a07e |
434 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
unit directory at 438
-----------------------------------------------------------------
438 0004d6c9 directory_length 4, crc 54985
43c 1200a02d specifier id: 1394 TA
440 13014001 version: Vender Unique and AV/C
444 17000001 model
448 81000009 --> descriptor leaf at 46c
descriptor leaf at 44c
-----------------------------------------------------------------
44c 00077205 leaf_length 7, crc 29189
450 00000000 textual descriptor
454 00000000 minimal ASCII
458 41766964 "Avid"
45c 20546563 " Tec"
460 686e6f6c "hnol"
464 6f677900 "ogy"
468 00000000
descriptor leaf at 46c
-----------------------------------------------------------------
46c 000599a5 leaf_length 5, crc 39333
470 00000000 textual descriptor
474 00000000 minimal ASCII
478 41647265 "Adre"
47c 6e616c69 "nali"
480 6e650000 "ne"
Reported-by: Simon Wood <simon@mungewell.org>
Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
Cc: <stable@vger.kernel.org> # 4.4+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-08-23 00:55:45 -07:00
|
|
|
IEEE1394_MATCH_VERSION |
|
2015-09-29 17:39:16 -07:00
|
|
|
IEEE1394_MATCH_MODEL_ID,
|
|
|
|
.vendor_id = VENDOR_DIGIDESIGN,
|
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
However, as long as he investigated, the design of this model is hardly
similar to the one of Digi 00x family. It's better to exclude the model
from modalias of ALSA firewire-digi00x driver.
This commit changes device entries so that the model is excluded.
$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
ROM header and bus information block
-----------------------------------------------------------------
400 04203a9c bus_info_length 4, crc_length 32, crc 15004
404 31333934 bus_name "1394"
408 e064a002 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
40c 00a07e01 company_id 00a07e |
410 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
root directory
-----------------------------------------------------------------
414 0005d08c directory_length 5, crc 53388
418 0300a07e vendor
41c 8100000c --> descriptor leaf at 44c
420 0c008380 node capabilities
424 8d000002 --> eui-64 leaf at 42c
428 d1000004 --> unit directory at 438
eui-64 leaf at 42c
-----------------------------------------------------------------
42c 0002410f leaf_length 2, crc 16655
430 00a07e01 company_id 00a07e |
434 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
unit directory at 438
-----------------------------------------------------------------
438 0004d6c9 directory_length 4, crc 54985
43c 1200a02d specifier id: 1394 TA
440 13014001 version: Vender Unique and AV/C
444 17000001 model
448 81000009 --> descriptor leaf at 46c
descriptor leaf at 44c
-----------------------------------------------------------------
44c 00077205 leaf_length 7, crc 29189
450 00000000 textual descriptor
454 00000000 minimal ASCII
458 41766964 "Avid"
45c 20546563 " Tec"
460 686e6f6c "hnol"
464 6f677900 "ogy"
468 00000000
descriptor leaf at 46c
-----------------------------------------------------------------
46c 000599a5 leaf_length 5, crc 39333
470 00000000 textual descriptor
474 00000000 minimal ASCII
478 41647265 "Adre"
47c 6e616c69 "nali"
480 6e650000 "ne"
Reported-by: Simon Wood <simon@mungewell.org>
Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
Cc: <stable@vger.kernel.org> # 4.4+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-08-23 00:55:45 -07:00
|
|
|
.version = SPEC_VERSION,
|
ALSA: firewire-digi00x: add support for console models of Digi00x series
Digi00x series includes two types of unit; rack and console. As long as
reading information on config rom of Digi 002 console, 'MODEL_ID' field
has a different value from the one on Digi 002 rack.
We've already got a test report from users with Digi 003 rack. We can
assume that console type and rack type has different value in the field.
This commit adds a device entry for console type. For following commits,
this commit also adds a member to 'struct snd_digi00x' to identify console
type.
$ cd linux-firewire-utils/src
$ python2 ./crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
-----------------------------------------------------------------
400 0404f9d0 bus_info_length 4, crc_length 4, crc 63952
404 31333934 bus_name "1394"
408 60647002 irmc 0, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 7 (256)
40c 00a07e00 company_id 00a07e |
410 00a30000 device_id 0000a30000 | EUI-64 00a07e0000a30000
root directory
-----------------------------------------------------------------
414 00058a39 directory_length 5, crc 35385
418 0c0043a0 node capabilities
41c 04000001 hardware version
420 0300a07e vendor
424 81000007 --> descriptor leaf at 440
428 d1000001 --> unit directory at 42c
unit directory at 42c
-----------------------------------------------------------------
42c 00046674 directory_length 4, crc 26228
430 120000a3 specifier id
434 13000001 version
438 17000001 model
43c 81000007 --> descriptor leaf at 458
descriptor leaf at 440
-----------------------------------------------------------------
440 00055913 leaf_length 5, crc 22803
444 000050f2 descriptor_type 00, specifier_ID 50f2
448 80000000
44c 44696769
450 64657369
454 676e0000
descriptor leaf at 458
-----------------------------------------------------------------
458 0004a6fd leaf_length 4, crc 42749
45c 00000000 textual descriptor
460 00000000 minimal ASCII
464 44696769 "Digi"
468 20303032 " 002"
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-04-02 07:48:24 -07:00
|
|
|
.model_id = MODEL_CONSOLE,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.match_flags = IEEE1394_MATCH_VENDOR_ID |
|
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
However, as long as he investigated, the design of this model is hardly
similar to the one of Digi 00x family. It's better to exclude the model
from modalias of ALSA firewire-digi00x driver.
This commit changes device entries so that the model is excluded.
$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
ROM header and bus information block
-----------------------------------------------------------------
400 04203a9c bus_info_length 4, crc_length 32, crc 15004
404 31333934 bus_name "1394"
408 e064a002 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
40c 00a07e01 company_id 00a07e |
410 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
root directory
-----------------------------------------------------------------
414 0005d08c directory_length 5, crc 53388
418 0300a07e vendor
41c 8100000c --> descriptor leaf at 44c
420 0c008380 node capabilities
424 8d000002 --> eui-64 leaf at 42c
428 d1000004 --> unit directory at 438
eui-64 leaf at 42c
-----------------------------------------------------------------
42c 0002410f leaf_length 2, crc 16655
430 00a07e01 company_id 00a07e |
434 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
unit directory at 438
-----------------------------------------------------------------
438 0004d6c9 directory_length 4, crc 54985
43c 1200a02d specifier id: 1394 TA
440 13014001 version: Vender Unique and AV/C
444 17000001 model
448 81000009 --> descriptor leaf at 46c
descriptor leaf at 44c
-----------------------------------------------------------------
44c 00077205 leaf_length 7, crc 29189
450 00000000 textual descriptor
454 00000000 minimal ASCII
458 41766964 "Avid"
45c 20546563 " Tec"
460 686e6f6c "hnol"
464 6f677900 "ogy"
468 00000000
descriptor leaf at 46c
-----------------------------------------------------------------
46c 000599a5 leaf_length 5, crc 39333
470 00000000 textual descriptor
474 00000000 minimal ASCII
478 41647265 "Adre"
47c 6e616c69 "nali"
480 6e650000 "ne"
Reported-by: Simon Wood <simon@mungewell.org>
Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
Cc: <stable@vger.kernel.org> # 4.4+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-08-23 00:55:45 -07:00
|
|
|
IEEE1394_MATCH_VERSION |
|
ALSA: firewire-digi00x: add support for console models of Digi00x series
Digi00x series includes two types of unit; rack and console. As long as
reading information on config rom of Digi 002 console, 'MODEL_ID' field
has a different value from the one on Digi 002 rack.
We've already got a test report from users with Digi 003 rack. We can
assume that console type and rack type has different value in the field.
This commit adds a device entry for console type. For following commits,
this commit also adds a member to 'struct snd_digi00x' to identify console
type.
$ cd linux-firewire-utils/src
$ python2 ./crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
-----------------------------------------------------------------
400 0404f9d0 bus_info_length 4, crc_length 4, crc 63952
404 31333934 bus_name "1394"
408 60647002 irmc 0, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 7 (256)
40c 00a07e00 company_id 00a07e |
410 00a30000 device_id 0000a30000 | EUI-64 00a07e0000a30000
root directory
-----------------------------------------------------------------
414 00058a39 directory_length 5, crc 35385
418 0c0043a0 node capabilities
41c 04000001 hardware version
420 0300a07e vendor
424 81000007 --> descriptor leaf at 440
428 d1000001 --> unit directory at 42c
unit directory at 42c
-----------------------------------------------------------------
42c 00046674 directory_length 4, crc 26228
430 120000a3 specifier id
434 13000001 version
438 17000001 model
43c 81000007 --> descriptor leaf at 458
descriptor leaf at 440
-----------------------------------------------------------------
440 00055913 leaf_length 5, crc 22803
444 000050f2 descriptor_type 00, specifier_ID 50f2
448 80000000
44c 44696769
450 64657369
454 676e0000
descriptor leaf at 458
-----------------------------------------------------------------
458 0004a6fd leaf_length 4, crc 42749
45c 00000000 textual descriptor
460 00000000 minimal ASCII
464 44696769 "Digi"
468 20303032 " 002"
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-04-02 07:48:24 -07:00
|
|
|
IEEE1394_MATCH_MODEL_ID,
|
|
|
|
.vendor_id = VENDOR_DIGIDESIGN,
|
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
However, as long as he investigated, the design of this model is hardly
similar to the one of Digi 00x family. It's better to exclude the model
from modalias of ALSA firewire-digi00x driver.
This commit changes device entries so that the model is excluded.
$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
ROM header and bus information block
-----------------------------------------------------------------
400 04203a9c bus_info_length 4, crc_length 32, crc 15004
404 31333934 bus_name "1394"
408 e064a002 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
40c 00a07e01 company_id 00a07e |
410 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
root directory
-----------------------------------------------------------------
414 0005d08c directory_length 5, crc 53388
418 0300a07e vendor
41c 8100000c --> descriptor leaf at 44c
420 0c008380 node capabilities
424 8d000002 --> eui-64 leaf at 42c
428 d1000004 --> unit directory at 438
eui-64 leaf at 42c
-----------------------------------------------------------------
42c 0002410f leaf_length 2, crc 16655
430 00a07e01 company_id 00a07e |
434 00085257 device_id 0100085257 | EUI-64 00a07e0100085257
unit directory at 438
-----------------------------------------------------------------
438 0004d6c9 directory_length 4, crc 54985
43c 1200a02d specifier id: 1394 TA
440 13014001 version: Vender Unique and AV/C
444 17000001 model
448 81000009 --> descriptor leaf at 46c
descriptor leaf at 44c
-----------------------------------------------------------------
44c 00077205 leaf_length 7, crc 29189
450 00000000 textual descriptor
454 00000000 minimal ASCII
458 41766964 "Avid"
45c 20546563 " Tec"
460 686e6f6c "hnol"
464 6f677900 "ogy"
468 00000000
descriptor leaf at 46c
-----------------------------------------------------------------
46c 000599a5 leaf_length 5, crc 39333
470 00000000 textual descriptor
474 00000000 minimal ASCII
478 41647265 "Adre"
47c 6e616c69 "nali"
480 6e650000 "ne"
Reported-by: Simon Wood <simon@mungewell.org>
Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
Cc: <stable@vger.kernel.org> # 4.4+
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-08-23 00:55:45 -07:00
|
|
|
.version = SPEC_VERSION,
|
ALSA: firewire-digi00x: add support for console models of Digi00x series
Digi00x series includes two types of unit; rack and console. As long as
reading information on config rom of Digi 002 console, 'MODEL_ID' field
has a different value from the one on Digi 002 rack.
We've already got a test report from users with Digi 003 rack. We can
assume that console type and rack type has different value in the field.
This commit adds a device entry for console type. For following commits,
this commit also adds a member to 'struct snd_digi00x' to identify console
type.
$ cd linux-firewire-utils/src
$ python2 ./crpp < /sys/bus/firewire/devices/fw1/config_rom
ROM header and bus information block
-----------------------------------------------------------------
400 0404f9d0 bus_info_length 4, crc_length 4, crc 63952
404 31333934 bus_name "1394"
408 60647002 irmc 0, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 7 (256)
40c 00a07e00 company_id 00a07e |
410 00a30000 device_id 0000a30000 | EUI-64 00a07e0000a30000
root directory
-----------------------------------------------------------------
414 00058a39 directory_length 5, crc 35385
418 0c0043a0 node capabilities
41c 04000001 hardware version
420 0300a07e vendor
424 81000007 --> descriptor leaf at 440
428 d1000001 --> unit directory at 42c
unit directory at 42c
-----------------------------------------------------------------
42c 00046674 directory_length 4, crc 26228
430 120000a3 specifier id
434 13000001 version
438 17000001 model
43c 81000007 --> descriptor leaf at 458
descriptor leaf at 440
-----------------------------------------------------------------
440 00055913 leaf_length 5, crc 22803
444 000050f2 descriptor_type 00, specifier_ID 50f2
448 80000000
44c 44696769
450 64657369
454 676e0000
descriptor leaf at 458
-----------------------------------------------------------------
458 0004a6fd leaf_length 4, crc 42749
45c 00000000 textual descriptor
460 00000000 minimal ASCII
464 44696769 "Digi"
468 20303032 " 002"
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-04-02 07:48:24 -07:00
|
|
|
.model_id = MODEL_RACK,
|
2015-09-29 17:39:16 -07:00
|
|
|
},
|
|
|
|
{}
|
|
|
|
};
|
|
|
|
MODULE_DEVICE_TABLE(ieee1394, snd_dg00x_id_table);
|
|
|
|
|
|
|
|
static struct fw_driver dg00x_driver = {
|
|
|
|
.driver = {
|
|
|
|
.owner = THIS_MODULE,
|
2020-03-06 06:52:29 -07:00
|
|
|
.name = KBUILD_MODNAME,
|
2015-09-29 17:39:16 -07:00
|
|
|
.bus = &fw_bus_type,
|
|
|
|
},
|
|
|
|
.probe = snd_dg00x_probe,
|
|
|
|
.update = snd_dg00x_update,
|
|
|
|
.remove = snd_dg00x_remove,
|
|
|
|
.id_table = snd_dg00x_id_table,
|
|
|
|
};
|
|
|
|
|
|
|
|
static int __init snd_dg00x_init(void)
|
|
|
|
{
|
|
|
|
return driver_register(&dg00x_driver.driver);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void __exit snd_dg00x_exit(void)
|
|
|
|
{
|
|
|
|
driver_unregister(&dg00x_driver.driver);
|
|
|
|
}
|
|
|
|
|
|
|
|
module_init(snd_dg00x_init);
|
|
|
|
module_exit(snd_dg00x_exit);
|