summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kiryanov <rkir@google.com>2018-04-06 16:51:19 -0700
committerRoman Kiryanov <rkir@google.com>2018-04-09 16:09:13 -0700
commitc758d68c867897aca58ca38ac947893b1e0af78e (patch)
tree0e18bb64c346e9389bdcc648fecd837683b26826
parentd6bbe8be6bda0f7ea62fa6b891dcf01a3b977391 (diff)
Reduce amount of casting in drivers/tty/goldfish.c.
Change-Id: I8be0ff52a4c3a5bfcc72971f79df8d1c0b5a0eec Signed-off-by: Roman Kiryanov <rkir@google.com>
-rw-r--r--drivers/tty/goldfish.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index dc5c0e6cdb84..4686e93aaf94 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -87,32 +87,35 @@ static void do_rw_io(struct goldfish_tty *qtty,
}
static void goldfish_tty_rw(struct goldfish_tty *qtty,
- unsigned long addr,
+ const void *address_ptr,
unsigned int count,
int is_write)
{
dma_addr_t dma_handle;
enum dma_data_direction dma_dir;
+ uintptr_t address;
+ address = (uintptr_t)address_ptr;
dma_dir = (is_write ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
+
if (qtty->version > 0) {
/*
* Goldfish TTY for Ranchu platform uses
* physical addresses and DMA for read/write operations
*/
- unsigned long addr_end = addr + count;
+ uintptr_t address_end = address + count;
- while (addr < addr_end) {
- unsigned long pg_end = (addr & PAGE_MASK) + PAGE_SIZE;
- unsigned long next =
- pg_end < addr_end ? pg_end : addr_end;
- unsigned long avail = next - addr;
+ while (address < address_end) {
+ uintptr_t page_end = (address & PAGE_MASK) + PAGE_SIZE;
+ uintptr_t next = page_end < address_end ?
+ page_end : address_end;
+ uintptr_t avail = next - address;
/*
* Map the buffer's virtual address to the DMA address
* so the buffer can be accessed by the device.
*/
- dma_handle = dma_map_single(qtty->dev, (void *)addr,
+ dma_handle = dma_map_single(qtty->dev, (void *)address,
avail, dma_dir);
if (dma_mapping_error(qtty->dev, dma_handle)) {
@@ -127,31 +130,30 @@ static void goldfish_tty_rw(struct goldfish_tty *qtty,
*/
dma_unmap_single(qtty->dev, dma_handle, avail, dma_dir);
- addr += avail;
+ address += avail;
}
} else {
/*
* Old style Goldfish TTY used on the Goldfish platform
* uses virtual addresses.
*/
- do_rw_io(qtty, addr, count, is_write);
+ do_rw_io(qtty, address, count, is_write);
}
+
}
static void goldfish_tty_do_write(int line, const char *buf,
unsigned int count)
{
struct goldfish_tty *qtty = &goldfish_ttys[line];
- unsigned long address = (unsigned long)(void *)buf;
- goldfish_tty_rw(qtty, address, count, 1);
+ goldfish_tty_rw(qtty, buf, count, 1);
}
static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
{
struct goldfish_tty *qtty = dev_id;
void __iomem *base = qtty->base;
- unsigned long address;
unsigned char *buf;
u32 count;
@@ -160,9 +162,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
return IRQ_NONE;
count = tty_prepare_flip_string(&qtty->port, &buf, count);
-
- address = (unsigned long)(void *)buf;
- goldfish_tty_rw(qtty, address, count, 0);
+ goldfish_tty_rw(qtty, buf, count, 0);
tty_schedule_flip(&qtty->port);
return IRQ_HANDLED;