firewire: core: search descriptor leaf just after vendor directory entry in root directory
It appears that Sony DVMC-DA1 has a quirk that the descriptor leaf entry
locates just after the vendor directory entry in root directory. This is
not conformant to the legacy layout of configuration ROM described in
Configuration ROM for AV/C Devices 1.0 (1394 Trading Association, Dec 2000,
TA Document
1999027).
This commit changes current implementation to parse configuration ROM for
device attributes so that the descriptor leaf entry can be detected for
the vendor name.
$ config-rom-pretty-printer < Sony-DVMC-DA1.img
ROM header and bus information block
-----------------------------------------------------------------
1024
041ee7fb bus_info_length 4, crc_length 30, crc 59387
1028
31333934 bus_name "1394"
1032
e0644000 irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 4 (32)
1036
08004603 company_id 080046 |
1040
0014193c device_id
12886219068 | EUI-64
576537731003586876
root directory
-----------------------------------------------------------------
1044
0006b681 directory_length 6, crc 46721
1048
03080046 vendor
1052
0c0083c0 node capabilities: per IEEE 1394
1056
8d00000a --> eui-64 leaf at 1096
1060
d1000003 --> unit directory at 1072
1064
c3000005 --> vendor directory at 1084
1068
8100000a --> descriptor leaf at 1108
unit directory at 1072
-----------------------------------------------------------------
1072
0002cdbf directory_length 2, crc 52671
1076
1200a02d specifier id
1080
13010000 version
vendor directory at 1084
-----------------------------------------------------------------
1084
00020cfe directory_length 2, crc 3326
1088
17fa0000 model
1092
81000008 --> descriptor leaf at 1124
eui-64 leaf at 1096
-----------------------------------------------------------------
1096
0002c66e leaf_length 2, crc 50798
1100
08004603 company_id 080046 |
1104
0014193c device_id
12886219068 | EUI-64
576537731003586876
descriptor leaf at 1108
-----------------------------------------------------------------
1108
00039e26 leaf_length 3, crc 40486
1112
00000000 textual descriptor
1116
00000000 minimal ASCII
1120
536f6e79 "Sony"
descriptor leaf at 1124
-----------------------------------------------------------------
1124
0005001d leaf_length 5, crc 29
1128
00000000 textual descriptor
1132
00000000 minimal ASCII
1136
44564d43 "DVMC"
1140
2d444131 "-DA1"
1144
00000000
Suggested-by: Adam Goldman <adamg@pobox.com>
Tested-by: Adam Goldman <adamg@pobox.com>
Link: https://lore.kernel.org/r/20240130100409.30128-3-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>