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>
        for (i = 0; i < ARRAY_SIZE(directories) && !!directories[i]; ++i) {
                int result = fw_csr_string(directories[i], attr->key, buf, bufsize);
                // Detected.
-               if (result >= 0)
+               if (result >= 0) {
                        ret = result;
+               } else if (i == 0 && attr->key == CSR_VENDOR) {
+                       // Sony DVMC-DA1 has configuration ROM such that the descriptor leaf entry
+                       // in the root directory follows to the directory entry for vendor ID
+                       // instead of the immediate value for vendor ID.
+                       result = fw_csr_string(directories[i], CSR_DIRECTORY | attr->key, buf,
+                                              bufsize);
+                       if (result >= 0)
+                               ret = result;
+               }
        }
 
        if (ret >= 0) {