diff options
author | Alan <alan@linux.intel.com> | 2014-05-12 16:56:56 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-05-15 13:20:41 -0700 |
commit | f6279717bbb20bf90ec414af17d2a31d843f5eb5 (patch) | |
tree | 988fc73f7f259b323b48bd022dddd412a293517a | |
parent | 9b17aeec232a5f0a61ce3952c2e728a0eeddda8b (diff) | |
download | op-kernel-dev-f6279717bbb20bf90ec414af17d2a31d843f5eb5.zip op-kernel-dev-f6279717bbb20bf90ec414af17d2a31d843f5eb5.tar.gz |
goldfish: clean up staging ifdefs
Use the write helpers and add an audio helper
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/goldfish/goldfish_audio.c | 44 | ||||
-rw-r--r-- | drivers/staging/goldfish/goldfish_nand.c | 7 | ||||
-rw-r--r-- | drivers/staging/goldfish/goldfish_nand_reg.h | 2 |
3 files changed, 13 insertions, 40 deletions
diff --git a/drivers/staging/goldfish/goldfish_audio.c b/drivers/staging/goldfish/goldfish_audio.c index 383bee68..cbd4567 100644 --- a/drivers/staging/goldfish/goldfish_audio.c +++ b/drivers/staging/goldfish/goldfish_audio.c @@ -26,6 +26,7 @@ #include <linux/sched.h> #include <linux/dma-mapping.h> #include <linux/uaccess.h> +#include <linux/goldfish.h> MODULE_AUTHOR("Google, Inc."); MODULE_DESCRIPTION("Android QEMU Audio Driver"); @@ -60,6 +61,8 @@ struct goldfish_audio { #define AUDIO_READ(data, addr) (readl(data->reg_base + addr)) #define AUDIO_WRITE(data, addr, x) (writel(x, data->reg_base + addr)) +#define AUDIO_WRITE64(data, addr, addr2, x) \ + (gf_write64((u64)(x), data->reg_base + addr, data->reg_base+addr2)) /* * temporary variable used between goldfish_audio_probe() and @@ -78,18 +81,14 @@ enum { /* set number of bytes in buffer to write */ AUDIO_WRITE_BUFFER_1 = 0x10, AUDIO_WRITE_BUFFER_2 = 0x14, -#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT AUDIO_SET_WRITE_BUFFER_1_HIGH = 0x28, AUDIO_SET_WRITE_BUFFER_2_HIGH = 0x30, -#endif /* true if audio input is supported */ AUDIO_READ_SUPPORTED = 0x18, /* buffer to use for audio input */ AUDIO_SET_READ_BUFFER = 0x1C, -#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT AUDIO_SET_READ_BUFFER_HIGH = 0x34, -#endif /* driver writes number of bytes to read */ AUDIO_START_READ = 0x20, @@ -274,9 +273,6 @@ static int goldfish_audio_probe(struct platform_device *pdev) struct resource *r; struct goldfish_audio *data; dma_addr_t buf_addr; -#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT - u32 buf_addr_high, buf_addr_low; -#endif data = kzalloc(sizeof(*data), GFP_KERNEL); if (data == NULL) { @@ -332,37 +328,19 @@ static int goldfish_audio_probe(struct platform_device *pdev) goto err_misc_register_failed; } -#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT - buf_addr_low = (u32)(buf_addr); - buf_addr_high = (u32)((buf_addr) >> 32); + AUDIO_WRITE64(data, AUDIO_SET_WRITE_BUFFER_1, + AUDIO_SET_WRITE_BUFFER_1_HIGH, buf_addr); + buf_addr += WRITE_BUFFER_SIZE; - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_1, buf_addr_low); - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_1_HIGH, buf_addr_high); + AUDIO_WRITE64(data, AUDIO_SET_WRITE_BUFFER_2, + AUDIO_SET_WRITE_BUFFER_2_HIGH, buf_addr); - buf_addr_low = (u32)(buf_addr + WRITE_BUFFER_SIZE); - buf_addr_high = (u32)((buf_addr + WRITE_BUFFER_SIZE) >> 32); - - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_2, buf_addr_low); - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_2_HIGH, buf_addr_high); - - buf_addr_low = (u32)(buf_addr + 2 * WRITE_BUFFER_SIZE); - buf_addr_high = (u32)((buf_addr + 2 * WRITE_BUFFER_SIZE) >> 32); - - data->read_supported = AUDIO_READ(data, AUDIO_READ_SUPPORTED); - if (data->read_supported){ - AUDIO_WRITE(data, AUDIO_SET_READ_BUFFER, buf_addr_low); - AUDIO_WRITE(data, AUDIO_SET_READ_BUFFER_HIGH, buf_addr_high); - } -#else - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_1, buf_addr); - AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_2, - buf_addr + WRITE_BUFFER_SIZE); + buf_addr += WRITE_BUFFER_SIZE; data->read_supported = AUDIO_READ(data, AUDIO_READ_SUPPORTED); if (data->read_supported) - AUDIO_WRITE(data, AUDIO_SET_READ_BUFFER, - buf_addr + 2 * WRITE_BUFFER_SIZE); -#endif + AUDIO_WRITE64(data, AUDIO_SET_READ_BUFFER, + AUDIO_SET_READ_BUFFER_HIGH, buf_addr); audio_data = data; return 0; diff --git a/drivers/staging/goldfish/goldfish_nand.c b/drivers/staging/goldfish/goldfish_nand.c index b7ca553..092604c 100644 --- a/drivers/staging/goldfish/goldfish_nand.c +++ b/drivers/staging/goldfish/goldfish_nand.c @@ -25,7 +25,7 @@ #include <linux/mtd/mtd.h> #include <linux/platform_device.h> #include <linux/mutex.h> - +#include <linux/goldfish.h> #include <asm/div64.h> #include "goldfish_nand_reg.h" @@ -86,10 +86,7 @@ static u32 goldfish_nand_cmd(struct mtd_info *mtd, enum nand_cmd cmd, writel((u32)(addr >> 32), base + NAND_ADDR_HIGH); writel((u32)addr, base + NAND_ADDR_LOW); writel(len, base + NAND_TRANSFER_SIZE); - writel((u32)ptr, base + NAND_DATA); -#ifdef CONFIG_64BIT - writel((u32)((u64)ptr >> 32), base + NAND_DATA_HIGH); -#endif + gf_write64((u64)ptr, base + NAND_DATA, base + NAND_DATA_HIGH); writel(cmd, base + NAND_COMMAND); rv = readl(base + NAND_RESULT); } diff --git a/drivers/staging/goldfish/goldfish_nand_reg.h b/drivers/staging/goldfish/goldfish_nand_reg.h index 60ab91f..fe7f47c 100644 --- a/drivers/staging/goldfish/goldfish_nand_reg.h +++ b/drivers/staging/goldfish/goldfish_nand_reg.h @@ -57,9 +57,7 @@ enum nand_reg { NAND_RESULT = 0x040, NAND_COMMAND = 0x044, NAND_DATA = 0x048, -#ifdef CONFIG_64BIT NAND_DATA_HIGH = 0x100, -#endif NAND_TRANSFER_SIZE = 0x04c, NAND_ADDR_LOW = 0x050, NAND_ADDR_HIGH = 0x054, |