• Rafał Miłecki's avatar
    brcmfmac: analyze descriptors of current component only · a4f4abd0
    Rafał Miłecki authored
    So far we were looking for address descriptors without a check for
    crossing current component border. In case of dealing with unsupported
    descriptor or descriptor missing at all the code would incorrectly get
    data from another component.
    
    Consider this binary-described component from BCM4366 EROM:
    4bf83b01	TAG==CI		CID==0x83b
    20080201	TAG==CI		PORTS==0+1	WRAPPERS==0+1
    18400035	TAG==ADDR	SZ_SZD		TYPE_SLAVE
    00050000
    18107085	TAG==ADDR	SZ_4K		TYPE_SWRAP
    
    Driver was assigning invalid base address to this core:
    brcmfmac:  [6 ] core 0x83b:32 base 0x18109000 wrap 0x18107000
    which came from totally different component defined in EROM:
    43b36701	TAG==CI		CID==0x367
    00000201	TAG==CI		PORTS==0+1	WRAPPERS==0+0
    18109005	TAG==ADDR	SZ_4K		TYPE_SLAVE
    
    This change will also allow us to support components without wrapper
    address in the future.
    Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    a4f4abd0
chip.c 35 KB