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>
This commit is contained in:
parent
9b17aeec23
commit
f6279717bb
3 changed files with 13 additions and 40 deletions
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/goldfish.h>
|
||||||
|
|
||||||
MODULE_AUTHOR("Google, Inc.");
|
MODULE_AUTHOR("Google, Inc.");
|
||||||
MODULE_DESCRIPTION("Android QEMU Audio Driver");
|
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_READ(data, addr) (readl(data->reg_base + addr))
|
||||||
#define AUDIO_WRITE(data, addr, x) (writel(x, 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
|
* temporary variable used between goldfish_audio_probe() and
|
||||||
|
@ -78,18 +81,14 @@ enum {
|
||||||
/* set number of bytes in buffer to write */
|
/* set number of bytes in buffer to write */
|
||||||
AUDIO_WRITE_BUFFER_1 = 0x10,
|
AUDIO_WRITE_BUFFER_1 = 0x10,
|
||||||
AUDIO_WRITE_BUFFER_2 = 0x14,
|
AUDIO_WRITE_BUFFER_2 = 0x14,
|
||||||
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
|
|
||||||
AUDIO_SET_WRITE_BUFFER_1_HIGH = 0x28,
|
AUDIO_SET_WRITE_BUFFER_1_HIGH = 0x28,
|
||||||
AUDIO_SET_WRITE_BUFFER_2_HIGH = 0x30,
|
AUDIO_SET_WRITE_BUFFER_2_HIGH = 0x30,
|
||||||
#endif
|
|
||||||
|
|
||||||
/* true if audio input is supported */
|
/* true if audio input is supported */
|
||||||
AUDIO_READ_SUPPORTED = 0x18,
|
AUDIO_READ_SUPPORTED = 0x18,
|
||||||
/* buffer to use for audio input */
|
/* buffer to use for audio input */
|
||||||
AUDIO_SET_READ_BUFFER = 0x1C,
|
AUDIO_SET_READ_BUFFER = 0x1C,
|
||||||
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
|
|
||||||
AUDIO_SET_READ_BUFFER_HIGH = 0x34,
|
AUDIO_SET_READ_BUFFER_HIGH = 0x34,
|
||||||
#endif
|
|
||||||
|
|
||||||
/* driver writes number of bytes to read */
|
/* driver writes number of bytes to read */
|
||||||
AUDIO_START_READ = 0x20,
|
AUDIO_START_READ = 0x20,
|
||||||
|
@ -274,9 +273,6 @@ static int goldfish_audio_probe(struct platform_device *pdev)
|
||||||
struct resource *r;
|
struct resource *r;
|
||||||
struct goldfish_audio *data;
|
struct goldfish_audio *data;
|
||||||
dma_addr_t buf_addr;
|
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);
|
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
|
@ -332,37 +328,19 @@ static int goldfish_audio_probe(struct platform_device *pdev)
|
||||||
goto err_misc_register_failed;
|
goto err_misc_register_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
|
AUDIO_WRITE64(data, AUDIO_SET_WRITE_BUFFER_1,
|
||||||
buf_addr_low = (u32)(buf_addr);
|
AUDIO_SET_WRITE_BUFFER_1_HIGH, buf_addr);
|
||||||
buf_addr_high = (u32)((buf_addr) >> 32);
|
buf_addr += WRITE_BUFFER_SIZE;
|
||||||
|
|
||||||
AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_1, buf_addr_low);
|
AUDIO_WRITE64(data, AUDIO_SET_WRITE_BUFFER_2,
|
||||||
AUDIO_WRITE(data, AUDIO_SET_WRITE_BUFFER_1_HIGH, buf_addr_high);
|
AUDIO_SET_WRITE_BUFFER_2_HIGH, buf_addr);
|
||||||
|
|
||||||
buf_addr_low = (u32)(buf_addr + WRITE_BUFFER_SIZE);
|
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);
|
|
||||||
|
|
||||||
data->read_supported = AUDIO_READ(data, AUDIO_READ_SUPPORTED);
|
data->read_supported = AUDIO_READ(data, AUDIO_READ_SUPPORTED);
|
||||||
if (data->read_supported)
|
if (data->read_supported)
|
||||||
AUDIO_WRITE(data, AUDIO_SET_READ_BUFFER,
|
AUDIO_WRITE64(data, AUDIO_SET_READ_BUFFER,
|
||||||
buf_addr + 2 * WRITE_BUFFER_SIZE);
|
AUDIO_SET_READ_BUFFER_HIGH, buf_addr);
|
||||||
#endif
|
|
||||||
|
|
||||||
audio_data = data;
|
audio_data = data;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/goldfish.h>
|
||||||
#include <asm/div64.h>
|
#include <asm/div64.h>
|
||||||
|
|
||||||
#include "goldfish_nand_reg.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 >> 32), base + NAND_ADDR_HIGH);
|
||||||
writel((u32)addr, base + NAND_ADDR_LOW);
|
writel((u32)addr, base + NAND_ADDR_LOW);
|
||||||
writel(len, base + NAND_TRANSFER_SIZE);
|
writel(len, base + NAND_TRANSFER_SIZE);
|
||||||
writel((u32)ptr, base + NAND_DATA);
|
gf_write64((u64)ptr, base + NAND_DATA, base + NAND_DATA_HIGH);
|
||||||
#ifdef CONFIG_64BIT
|
|
||||||
writel((u32)((u64)ptr >> 32), base + NAND_DATA_HIGH);
|
|
||||||
#endif
|
|
||||||
writel(cmd, base + NAND_COMMAND);
|
writel(cmd, base + NAND_COMMAND);
|
||||||
rv = readl(base + NAND_RESULT);
|
rv = readl(base + NAND_RESULT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,9 +57,7 @@ enum nand_reg {
|
||||||
NAND_RESULT = 0x040,
|
NAND_RESULT = 0x040,
|
||||||
NAND_COMMAND = 0x044,
|
NAND_COMMAND = 0x044,
|
||||||
NAND_DATA = 0x048,
|
NAND_DATA = 0x048,
|
||||||
#ifdef CONFIG_64BIT
|
|
||||||
NAND_DATA_HIGH = 0x100,
|
NAND_DATA_HIGH = 0x100,
|
||||||
#endif
|
|
||||||
NAND_TRANSFER_SIZE = 0x04c,
|
NAND_TRANSFER_SIZE = 0x04c,
|
||||||
NAND_ADDR_LOW = 0x050,
|
NAND_ADDR_LOW = 0x050,
|
||||||
NAND_ADDR_HIGH = 0x054,
|
NAND_ADDR_HIGH = 0x054,
|
||||||
|
|
Loading…
Add table
Reference in a new issue