| From 7dc661bd8d3261053b69e4e2d0050cd1ee540fc1 Mon Sep 17 00:00:00 2001 |
| From: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| Date: Tue, 26 Feb 2019 13:38:16 +0900 |
| Subject: ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against Liquid Saffire 56 |
| |
| From: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| |
| commit 7dc661bd8d3261053b69e4e2d0050cd1ee540fc1 upstream. |
| |
| ALSA bebob driver has an entry for Focusrite Saffire Pro 10 I/O. The |
| entry matches vendor_id in root directory and model_id in unit |
| directory of configuration ROM for IEEE 1394 bus. |
| |
| On the other hand, configuration ROM of Focusrite Liquid Saffire 56 |
| has the same vendor_id and model_id. This device is an application of |
| TCAT Dice (TCD2220 a.k.a Dice Jr.) however ALSA bebob driver can be |
| bound to it randomly instead of ALSA dice driver. At present, drivers |
| in ALSA firewire stack can not handle this situation appropriately. |
| |
| This commit uses more identical mod_alias for Focusrite Saffire Pro 10 |
| I/O in ALSA bebob driver. |
| |
| $ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom |
| ROM header and bus information block |
| ----------------------------------------------------------------- |
| 400 042a829d bus_info_length 4, crc_length 42, crc 33437 |
| 404 31333934 bus_name "1394" |
| 408 f0649222 irmc 1, cmc 1, isc 1, bmc 1, pmc 0, cyc_clk_acc 100, |
| max_rec 9 (1024), max_rom 2, gen 2, spd 2 (S400) |
| 40c 00130e01 company_id 00130e | |
| 410 000606e0 device_id 01000606e0 | EUI-64 00130e01000606e0 |
| |
| root directory |
| ----------------------------------------------------------------- |
| 414 0009d31c directory_length 9, crc 54044 |
| 418 04000014 hardware version |
| 41c 0c0083c0 node capabilities per IEEE 1394 |
| 420 0300130e vendor |
| 424 81000012 --> descriptor leaf at 46c |
| 428 17000006 model |
| 42c 81000016 --> descriptor leaf at 484 |
| 430 130120c2 version |
| 434 d1000002 --> unit directory at 43c |
| 438 d4000006 --> dependent info directory at 450 |
| |
| unit directory at 43c |
| ----------------------------------------------------------------- |
| 43c 0004707c directory_length 4, crc 28796 |
| 440 1200a02d specifier id: 1394 TA |
| 444 13010001 version: AV/C |
| 448 17000006 model |
| 44c 81000013 --> descriptor leaf at 498 |
| |
| dependent info directory at 450 |
| ----------------------------------------------------------------- |
| 450 000637c7 directory_length 6, crc 14279 |
| 454 120007f5 specifier id |
| 458 13000001 version |
| 45c 3affffc7 (immediate value) |
| 460 3b100000 (immediate value) |
| 464 3cffffc7 (immediate value) |
| 468 3d600000 (immediate value) |
| |
| descriptor leaf at 46c |
| ----------------------------------------------------------------- |
| 46c 00056f3b leaf_length 5, crc 28475 |
| 470 00000000 textual descriptor |
| 474 00000000 minimal ASCII |
| 478 466f6375 "Focu" |
| 47c 73726974 "srit" |
| 480 65000000 "e" |
| |
| descriptor leaf at 484 |
| ----------------------------------------------------------------- |
| 484 0004a165 leaf_length 4, crc 41317 |
| 488 00000000 textual descriptor |
| 48c 00000000 minimal ASCII |
| 490 50726f31 "Pro1" |
| 494 30494f00 "0IO" |
| |
| descriptor leaf at 498 |
| ----------------------------------------------------------------- |
| 498 0004a165 leaf_length 4, crc 41317 |
| 49c 00000000 textual descriptor |
| 4a0 00000000 minimal ASCII |
| 4a4 50726f31 "Pro1" |
| 4a8 30494f00 "0IO" |
| |
| $ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom |
| ROM header and bus information block |
| ----------------------------------------------------------------- |
| 400 040442e4 bus_info_length 4, crc_length 4, crc 17124 |
| 404 31333934 bus_name "1394" |
| 408 e0ff8112 irmc 1, cmc 1, isc 1, bmc 0, pmc 0, cyc_clk_acc 255, |
| max_rec 8 (512), max_rom 1, gen 1, spd 2 (S400) |
| 40c 00130e04 company_id 00130e | |
| 410 018001e9 device_id 04018001e9 | EUI-64 00130e04018001e9 |
| |
| root directory |
| ----------------------------------------------------------------- |
| 414 00065612 directory_length 6, crc 22034 |
| 418 0300130e vendor |
| 41c 8100000a --> descriptor leaf at 444 |
| 420 17000006 model |
| 424 8100000e --> descriptor leaf at 45c |
| 428 0c0087c0 node capabilities per IEEE 1394 |
| 42c d1000001 --> unit directory at 430 |
| |
| unit directory at 430 |
| ----------------------------------------------------------------- |
| 430 000418a0 directory_length 4, crc 6304 |
| 434 1200130e specifier id |
| 438 13000001 version |
| 43c 17000006 model |
| 440 8100000f --> descriptor leaf at 47c |
| |
| descriptor leaf at 444 |
| ----------------------------------------------------------------- |
| 444 00056f3b leaf_length 5, crc 28475 |
| 448 00000000 textual descriptor |
| 44c 00000000 minimal ASCII |
| 450 466f6375 "Focu" |
| 454 73726974 "srit" |
| 458 65000000 "e" |
| |
| descriptor leaf at 45c |
| ----------------------------------------------------------------- |
| 45c 000762c6 leaf_length 7, crc 25286 |
| 460 00000000 textual descriptor |
| 464 00000000 minimal ASCII |
| 468 4c495155 "LIQU" |
| 46c 49445f53 "ID_S" |
| 470 41464649 "AFFI" |
| 474 52455f35 "RE_5" |
| 478 36000000 "6" |
| |
| descriptor leaf at 47c |
| ----------------------------------------------------------------- |
| 47c 000762c6 leaf_length 7, crc 25286 |
| 480 00000000 textual descriptor |
| 484 00000000 minimal ASCII |
| 488 4c495155 "LIQU" |
| 48c 49445f53 "ID_S" |
| 490 41464649 "AFFI" |
| 494 52455f35 "RE_5" |
| 498 36000000 "6" |
| |
| Cc: <stable@vger.kernel.org> # v3.16+ |
| Fixes: 25784ec2d034 ("ALSA: bebob: Add support for Focusrite Saffire/SaffirePro series") |
| Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/firewire/bebob/bebob.c | 14 +++++++++++++- |
| 1 file changed, 13 insertions(+), 1 deletion(-) |
| |
| --- a/sound/firewire/bebob/bebob.c |
| +++ b/sound/firewire/bebob/bebob.c |
| @@ -474,7 +474,19 @@ static const struct ieee1394_device_id b |
| /* Focusrite, SaffirePro 26 I/O */ |
| SND_BEBOB_DEV_ENTRY(VEN_FOCUSRITE, 0x00000003, &saffirepro_26_spec), |
| /* Focusrite, SaffirePro 10 I/O */ |
| - SND_BEBOB_DEV_ENTRY(VEN_FOCUSRITE, 0x00000006, &saffirepro_10_spec), |
| + { |
| + // The combination of vendor_id and model_id is the same as the |
| + // same as the one of Liquid Saffire 56. |
| + .match_flags = IEEE1394_MATCH_VENDOR_ID | |
| + IEEE1394_MATCH_MODEL_ID | |
| + IEEE1394_MATCH_SPECIFIER_ID | |
| + IEEE1394_MATCH_VERSION, |
| + .vendor_id = VEN_FOCUSRITE, |
| + .model_id = 0x000006, |
| + .specifier_id = 0x00a02d, |
| + .version = 0x010001, |
| + .driver_data = (kernel_ulong_t)&saffirepro_10_spec, |
| + }, |
| /* Focusrite, Saffire(no label and LE) */ |
| SND_BEBOB_DEV_ENTRY(VEN_FOCUSRITE, MODEL_FOCUSRITE_SAFFIRE_BOTH, |
| &saffire_spec), |