• Carl-Daniel Hailfinger's avatar
    Use accessor functions for MMIO · 78185dcb
    Carl-Daniel Hailfinger authored
    
    Some MMIO accesses used volatile, others didn't (and risked
    non-execution of side effects) and even with volatile, some accesses
    looked dubious.
    
    Since the MMIO accessor functions and the onboard flash accessor
    functions are functionally identical (but have different signatures),
    make the flash accessors wrappers for the MMIO accessors.
    
    For some of the conversions, I used Coccinelle. Semantic patch follows:
    
    @@ typedef uint8_t; expression a; volatile uint8_t *b; @@ - b[a] + *(b
    + a) @@ expression a; volatile uint8_t *b; @@ - *(b) |= (a); + *(b) =
    *(b) | (a); @@ expression a; volatile uint8_t *b; @@ - *(b) = (a); +
    mmio_writeb(a, b); @@ volatile uint8_t *b; @@ - *(b) + mmio_readb(b) @@
    type T; T b; @@ ( mmio_readb | mmio_writeb ) (..., - (T) - (b) + b )
    
    Corresponding to flashrom svn r524.
    Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
    
    Uwe tested read, write, erase with this patch on a random board to make
    sure nothing breaks.
    Acked-by: default avatarUwe Hermann <uwe@hermann-uwe.de>
    78185dcb
ichspi.c 19.1 KB