• Ping-Ke Shih's avatar
    wifi: rtw89: introduce infrastructure of firmware elements · a337d433
    Ping-Ke Shih authored
    In order to pack more data into firmware file, we introduce firmware
    elements and append BB_MCU firmware first. The first part of new firmware
    file is still unchanged firmware of WiFi CPU, so the new firmware format
    can be backward compatible to old format. The new elements part consists
    of ID and size basically, which can append more elements simply. To avoid
    unaligned access in certain platform and be easy to read, headers of all
    elements start at 16-byte aligned address.
    
     +===========================================+
     |             original firmware             |
     |                             +-------------+
     |                             |   padding   |
     +===========================================+
     | elm ID 1 | elm size |  other header data  |
     +----------+----------+                     |
     |                                           |
     +-------------------------------------------+
     | content (variable length)                 |
     |                             +-------------+
     |                             |   padding   |
     +===========================================+
     | elm ID 2 | elm size |  other header data  |
     +----------+----------+                     |
     |                                           |
     +-------------------------------------------+
     | content (variable length)                 |
     |                   +-----------------------+
     |                   | (no padding for the last one)
     +===================+
    
    More detail of element header is shown below. The additional fields
    'version' and 'element_priv[]' are meta data of elements, so that we can
    know element version easily, and element_priv[] provide specific fields
    for certain element, such as RF path index for RF parameter tables.
    
     +===========================================+
     |  elm ID  | elm size | version  |   rsvd0  |
     +----------+----------+----------+----------+
     |        rsvd1/2      |  element_priv[]     |
     +-------------------------------------------+
    Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
    Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230801021127.15919-7-pkshih@realtek.com
    a337d433
fw.c 124 KB