Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 334422
b: refs/heads/master
c: 0dd4d5c
h: refs/heads/master
v: v3
  • Loading branch information
Paul Mundt committed Oct 15, 2012
1 parent d203b18 commit b078e93
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cf7599322a6052dae7353f6d986eae06dc7759f5
refs/heads/master: 0dd4d5cbe4c38165dc9b3ad329ebb23f24d74fdb
45 changes: 27 additions & 18 deletions trunk/drivers/sh/intc/access.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,80 +75,89 @@ unsigned long intc_get_field_from_handle(unsigned int value, unsigned int handle
static unsigned long test_8(unsigned long addr, unsigned long h,
unsigned long ignore)
{
return intc_get_field_from_handle(__raw_readb(addr), h);
void __iomem *ptr = (void __iomem *)addr;
return intc_get_field_from_handle(__raw_readb(ptr), h);
}

static unsigned long test_16(unsigned long addr, unsigned long h,
unsigned long ignore)
{
return intc_get_field_from_handle(__raw_readw(addr), h);
void __iomem *ptr = (void __iomem *)addr;
return intc_get_field_from_handle(__raw_readw(ptr), h);
}

static unsigned long test_32(unsigned long addr, unsigned long h,
unsigned long ignore)
{
return intc_get_field_from_handle(__raw_readl(addr), h);
void __iomem *ptr = (void __iomem *)addr;
return intc_get_field_from_handle(__raw_readl(ptr), h);
}

static unsigned long write_8(unsigned long addr, unsigned long h,
unsigned long data)
{
__raw_writeb(intc_set_field_from_handle(0, data, h), addr);
(void)__raw_readb(addr); /* Defeat write posting */
void __iomem *ptr = (void __iomem *)addr;
__raw_writeb(intc_set_field_from_handle(0, data, h), ptr);
(void)__raw_readb(ptr); /* Defeat write posting */
return 0;
}

static unsigned long write_16(unsigned long addr, unsigned long h,
unsigned long data)
{
__raw_writew(intc_set_field_from_handle(0, data, h), addr);
(void)__raw_readw(addr); /* Defeat write posting */
void __iomem *ptr = (void __iomem *)addr;
__raw_writew(intc_set_field_from_handle(0, data, h), ptr);
(void)__raw_readw(ptr); /* Defeat write posting */
return 0;
}

static unsigned long write_32(unsigned long addr, unsigned long h,
unsigned long data)
{
__raw_writel(intc_set_field_from_handle(0, data, h), addr);
(void)__raw_readl(addr); /* Defeat write posting */
void __iomem *ptr = (void __iomem *)addr;
__raw_writel(intc_set_field_from_handle(0, data, h), ptr);
(void)__raw_readl(ptr); /* Defeat write posting */
return 0;
}

static unsigned long modify_8(unsigned long addr, unsigned long h,
unsigned long data)
{
void __iomem *ptr = (void __iomem *)addr;
unsigned long flags;
unsigned int value;
local_irq_save(flags);
value = intc_set_field_from_handle(__raw_readb(addr), data, h);
__raw_writeb(value, addr);
(void)__raw_readb(addr); /* Defeat write posting */
value = intc_set_field_from_handle(__raw_readb(ptr), data, h);
__raw_writeb(value, ptr);
(void)__raw_readb(ptr); /* Defeat write posting */
local_irq_restore(flags);
return 0;
}

static unsigned long modify_16(unsigned long addr, unsigned long h,
unsigned long data)
{
void __iomem *ptr = (void __iomem *)addr;
unsigned long flags;
unsigned int value;
local_irq_save(flags);
value = intc_set_field_from_handle(__raw_readw(addr), data, h);
__raw_writew(value, addr);
(void)__raw_readw(addr); /* Defeat write posting */
value = intc_set_field_from_handle(__raw_readw(ptr), data, h);
__raw_writew(value, ptr);
(void)__raw_readw(ptr); /* Defeat write posting */
local_irq_restore(flags);
return 0;
}

static unsigned long modify_32(unsigned long addr, unsigned long h,
unsigned long data)
{
void __iomem *ptr = (void __iomem *)addr;
unsigned long flags;
unsigned int value;
local_irq_save(flags);
value = intc_set_field_from_handle(__raw_readl(addr), data, h);
__raw_writel(value, addr);
(void)__raw_readl(addr); /* Defeat write posting */
value = intc_set_field_from_handle(__raw_readl(ptr), data, h);
__raw_writel(value, ptr);
(void)__raw_readl(ptr); /* Defeat write posting */
local_irq_restore(flags);
return 0;
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/sh/intc/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,15 @@ static void intc_mask_ack(struct irq_data *data)
unsigned int irq = data->irq;
struct intc_desc_int *d = get_intc_desc(irq);
unsigned long handle = intc_get_ack_handle(irq);
unsigned long addr;
void __iomem *addr;

intc_disable(data);

/* read register and write zero only to the associated bit */
if (handle) {
unsigned int value;

addr = INTC_REG(d, _INTC_ADDR_D(handle), 0);
addr = (void __iomem *)INTC_REG(d, _INTC_ADDR_D(handle), 0);
value = intc_set_field_from_handle(0, 1, handle);

switch (_INTC_FN(handle)) {
Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/tty/serial/sh-sci.c
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,8 @@ static inline int sci_rxd_in(struct uart_port *port)
if (s->cfg->port_reg <= 0)
return 1;

return !!__raw_readb(s->cfg->port_reg);
/* Cast for ARM damage */
return !!__raw_readb((void __iomem *)s->cfg->port_reg);
}

/* ********************************************************************** *
Expand Down

0 comments on commit b078e93

Please sign in to comment.