| From 92d89dd2b2076ea2d981596de7753ce0ded0fb17 Mon Sep 17 00:00:00 2001 |
| From: Simon Horman <horms@verge.net.au> |
| Date: Tue, 21 Jun 2011 08:00:09 +0900 |
| Subject: mmc: tmio: Share register access functions |
| |
| Move register access functions into a shared header. |
| Use sd_ctrl_write16 in tmio_mmc_dma.c:tmio_mmc_enable_dma(). |
| |
| Other than avoiding (trivial) open-coding, the motivation for |
| this is to allow platform-hooks in access functions to |
| be applied across all applicable accesses. |
| |
| Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de> |
| Cc: Magnus Damm <magnus.damm@gmail.com> |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| Signed-off-by: Chris Ball <cjb@laptop.org> |
| (cherry picked from commit a11862d3389d4304211eed0758f510d5e573f93c) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/mmc/host/tmio_mmc.h | 35 +++++++++++++++++++++++++++++++++++ |
| drivers/mmc/host/tmio_mmc_dma.c | 2 +- |
| drivers/mmc/host/tmio_mmc_pio.c | 34 ---------------------------------- |
| 3 files changed, 36 insertions(+), 35 deletions(-) |
| |
| diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h |
| index 8260bc2..0c22df0 100644 |
| --- a/drivers/mmc/host/tmio_mmc.h |
| +++ b/drivers/mmc/host/tmio_mmc.h |
| @@ -134,4 +134,39 @@ int tmio_mmc_host_resume(struct device *dev); |
| int tmio_mmc_host_runtime_suspend(struct device *dev); |
| int tmio_mmc_host_runtime_resume(struct device *dev); |
| |
| +static inline u16 sd_ctrl_read16(struct tmio_mmc_host *host, int addr) |
| +{ |
| + return readw(host->ctl + (addr << host->bus_shift)); |
| +} |
| + |
| +static inline void sd_ctrl_read16_rep(struct tmio_mmc_host *host, int addr, |
| + u16 *buf, int count) |
| +{ |
| + readsw(host->ctl + (addr << host->bus_shift), buf, count); |
| +} |
| + |
| +static inline u32 sd_ctrl_read32(struct tmio_mmc_host *host, int addr) |
| +{ |
| + return readw(host->ctl + (addr << host->bus_shift)) | |
| + readw(host->ctl + ((addr + 2) << host->bus_shift)) << 16; |
| +} |
| + |
| +static inline void sd_ctrl_write16(struct tmio_mmc_host *host, int addr, u16 val) |
| +{ |
| + writew(val, host->ctl + (addr << host->bus_shift)); |
| +} |
| + |
| +static inline void sd_ctrl_write16_rep(struct tmio_mmc_host *host, int addr, |
| + u16 *buf, int count) |
| +{ |
| + writesw(host->ctl + (addr << host->bus_shift), buf, count); |
| +} |
| + |
| +static inline void sd_ctrl_write32(struct tmio_mmc_host *host, int addr, u32 val) |
| +{ |
| + writew(val, host->ctl + (addr << host->bus_shift)); |
| + writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift)); |
| +} |
| + |
| + |
| #endif |
| diff --git a/drivers/mmc/host/tmio_mmc_dma.c b/drivers/mmc/host/tmio_mmc_dma.c |
| index 9c4da66..f24a029 100644 |
| --- a/drivers/mmc/host/tmio_mmc_dma.c |
| +++ b/drivers/mmc/host/tmio_mmc_dma.c |
| @@ -26,7 +26,7 @@ static void tmio_mmc_enable_dma(struct tmio_mmc_host *host, bool enable) |
| { |
| #if defined(CONFIG_SUPERH) || defined(CONFIG_ARCH_SHMOBILE) |
| /* Switch DMA mode on or off - SuperH specific? */ |
| - writew(enable ? 2 : 0, host->ctl + (CTL_DMA_ENABLE << host->bus_shift)); |
| + sd_ctrl_write16(host, enable ? 2 : 0, CTL_DMA_ENABLE); |
| #endif |
| } |
| |
| diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c |
| index 0b09e82..4d17807 100644 |
| --- a/drivers/mmc/host/tmio_mmc_pio.c |
| +++ b/drivers/mmc/host/tmio_mmc_pio.c |
| @@ -46,40 +46,6 @@ |
| |
| #include "tmio_mmc.h" |
| |
| -static u16 sd_ctrl_read16(struct tmio_mmc_host *host, int addr) |
| -{ |
| - return readw(host->ctl + (addr << host->bus_shift)); |
| -} |
| - |
| -static void sd_ctrl_read16_rep(struct tmio_mmc_host *host, int addr, |
| - u16 *buf, int count) |
| -{ |
| - readsw(host->ctl + (addr << host->bus_shift), buf, count); |
| -} |
| - |
| -static u32 sd_ctrl_read32(struct tmio_mmc_host *host, int addr) |
| -{ |
| - return readw(host->ctl + (addr << host->bus_shift)) | |
| - readw(host->ctl + ((addr + 2) << host->bus_shift)) << 16; |
| -} |
| - |
| -static void sd_ctrl_write16(struct tmio_mmc_host *host, int addr, u16 val) |
| -{ |
| - writew(val, host->ctl + (addr << host->bus_shift)); |
| -} |
| - |
| -static void sd_ctrl_write16_rep(struct tmio_mmc_host *host, int addr, |
| - u16 *buf, int count) |
| -{ |
| - writesw(host->ctl + (addr << host->bus_shift), buf, count); |
| -} |
| - |
| -static void sd_ctrl_write32(struct tmio_mmc_host *host, int addr, u32 val) |
| -{ |
| - writew(val, host->ctl + (addr << host->bus_shift)); |
| - writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift)); |
| -} |
| - |
| void tmio_mmc_enable_mmc_irqs(struct tmio_mmc_host *host, u32 i) |
| { |
| u32 mask = sd_ctrl_read32(host, CTL_IRQ_MASK) & ~(i & TMIO_MASK_IRQ); |
| -- |
| 1.7.10.2.565.gbd578b5 |
| |