• A
    cfi_flash: Fix devicetree address determination · 492b9917
    Andre Przywara 提交于
    The cfi-flash driver uses an open-coded version of the generic
    algorithm to decode and translate multiple frames of a "reg" property.
    
    This starts off the wrong foot by using the address-cells and size-cells
    properties of *this* very node, and not of the parent. This somewhat
    happened to work back when we were using a wrong default size of 2,
    but broke about a year ago with commit 0ba41ce1 ("libfdt: return
    correct value if #size-cells property is not present").
    
    Instead of fixing the reinvented wheel, just use the generic function
    that does all of this properly.
    
    This fixes U-Boot on QEMU (-arm64), which was crashing due to decoding
    a wrong flash base address:
    DRAM:  1 GiB
    Flash: "Synchronous Abort" handler, esr 0x96000044
    elr: 00000000000211dc lr : 00000000000211b0 (reloc)
    elr: 000000007ff5e1dc lr : 000000007ff5e1b0
    x0 : 00000000000000f0 x1 : 000000007ff5e1d8
    x2 : 000000007edfbc48 x3 : 0000000000000000
    x4 : 0000000000000000 x5 : 00000000000000f0
    x6 : 000000007edfbc2c x7 : 0000000000000000
    x8 : 000000007ffd8d70 x9 : 000000000000000c
    x10: 0400000000000003 x11: 0000000000000055
         ^^^^^^^^^^^^^^^^
    Signed-off-by: NAndre Przywara <andre.przywara@arm.com>
    Reviewed-by: NStefan Roese <sr@denx.de>
    492b9917
cfi_flash.c 63.5 KB