Skip to content
  • Arnd Bergmann's avatar
    mmc: dw_mmc: use resource_size_t to store physical address · 260b3164
    Arnd Bergmann authored
    
    
    The dw_mmc driver stores the physical address of the MMIO registers
    in a pointer, which requires the use of type casts, and is actually
    broken if anyone ever has this device on a 32-bit SoC in registers
    above 4GB. Gcc warns about this possibility when the driver is built
    with ARM LPAE enabled:
    
    mmc/host/dw_mmc.c: In function 'dw_mci_edmac_start_dma':
    mmc/host/dw_mmc.c:702:17: warning: cast from pointer to integer of different size
      cfg.dst_addr = (dma_addr_t)(host->phy_regs + fifo_offset);
                     ^
    mmc/host/dw_mmc-pltfm.c: In function 'dw_mci_pltfm_register':
    mmc/host/dw_mmc-pltfm.c:63:19: warning: cast to pointer from integer of different size
      host->phy_regs = (void *)(regs->start);
    
    This changes the code to use resource_size_t, which gets rid of the
    warning, the bug and the useless casts.
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    260b3164