Commit 92967800 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Russell King

ARM: 7459/1: irda/pxa: use readl_relaxed() to access OSCR register

After c00184f9ab4 "ARM: sa11x0/pxa: convert OS timer registers to IOMEM",
magician_defconfig and a few others fail to build because the OSCR
register is accessed by the drivers/net/irda/pxaficp_ir.c but has turned
into a pointer that needs to be read using readl.

There are other registers in the same driver that eventually should
be converted, and it's unclear whether we would want a better interface
to access the OSCR from a device driver.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 3169663a
...@@ -289,7 +289,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id) ...@@ -289,7 +289,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id)
} }
lsr = STLSR; lsr = STLSR;
} }
si->last_oscr = OSCR; si->last_oscr = readl_relaxed(OSCR);
break; break;
case 0x04: /* Received Data Available */ case 0x04: /* Received Data Available */
...@@ -300,7 +300,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id) ...@@ -300,7 +300,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id)
dev->stats.rx_bytes++; dev->stats.rx_bytes++;
async_unwrap_char(dev, &dev->stats, &si->rx_buff, STRBR); async_unwrap_char(dev, &dev->stats, &si->rx_buff, STRBR);
} while (STLSR & LSR_DR); } while (STLSR & LSR_DR);
si->last_oscr = OSCR; si->last_oscr = readl_relaxed(OSCR);
break; break;
case 0x02: /* Transmit FIFO Data Request */ case 0x02: /* Transmit FIFO Data Request */
...@@ -316,7 +316,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id) ...@@ -316,7 +316,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id)
/* We need to ensure that the transmitter has finished. */ /* We need to ensure that the transmitter has finished. */
while ((STLSR & LSR_TEMT) == 0) while ((STLSR & LSR_TEMT) == 0)
cpu_relax(); cpu_relax();
si->last_oscr = OSCR; si->last_oscr = readl_relaxed(OSCR);
/* /*
* Ok, we've finished transmitting. Now enable * Ok, we've finished transmitting. Now enable
...@@ -370,7 +370,7 @@ static void pxa_irda_fir_dma_tx_irq(int channel, void *data) ...@@ -370,7 +370,7 @@ static void pxa_irda_fir_dma_tx_irq(int channel, void *data)
while (ICSR1 & ICSR1_TBY) while (ICSR1 & ICSR1_TBY)
cpu_relax(); cpu_relax();
si->last_oscr = OSCR; si->last_oscr = readl_relaxed(OSCR);
/* /*
* HACK: It looks like the TBY bit is dropped too soon. * HACK: It looks like the TBY bit is dropped too soon.
...@@ -470,7 +470,7 @@ static irqreturn_t pxa_irda_fir_irq(int irq, void *dev_id) ...@@ -470,7 +470,7 @@ static irqreturn_t pxa_irda_fir_irq(int irq, void *dev_id)
/* stop RX DMA */ /* stop RX DMA */
DCSR(si->rxdma) &= ~DCSR_RUN; DCSR(si->rxdma) &= ~DCSR_RUN;
si->last_oscr = OSCR; si->last_oscr = readl_relaxed(OSCR);
icsr0 = ICSR0; icsr0 = ICSR0;
if (icsr0 & (ICSR0_FRE | ICSR0_RAB)) { if (icsr0 & (ICSR0_FRE | ICSR0_RAB)) {
...@@ -546,7 +546,7 @@ static int pxa_irda_hard_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -546,7 +546,7 @@ static int pxa_irda_hard_xmit(struct sk_buff *skb, struct net_device *dev)
skb_copy_from_linear_data(skb, si->dma_tx_buff, skb->len); skb_copy_from_linear_data(skb, si->dma_tx_buff, skb->len);
if (mtt) if (mtt)
while ((unsigned)(OSCR - si->last_oscr)/4 < mtt) while ((unsigned)(readl_relaxed(OSCR) - si->last_oscr)/4 < mtt)
cpu_relax(); cpu_relax();
/* stop RX DMA, disable FICP */ /* stop RX DMA, disable FICP */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment