• Takashi Sakamoto's avatar
    firewire: core: search descriptor leaf just after vendor directory entry in root directory · 47dc5518
    Takashi Sakamoto authored
    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: default avatarAdam Goldman <adamg@pobox.com>
    Tested-by: default avatarAdam Goldman <adamg@pobox.com>
    Link: https://lore.kernel.org/r/20240130100409.30128-3-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    47dc5518
core-device.c 36 KB