This patch changes the lm32 io.h header to use asm-generic variant. As a result of this the non-stadard macros out_be32 and in_be32 are removed, drivers are adjusted accordingly to use iowrite32be and ioread32be.
Signed-off-by: Lars-Peter Clausen <[email protected]> --- arch/lm32/Kconfig | 4 - arch/lm32/include/asm/hw/sysctl.h | 28 +++--- arch/lm32/include/asm/hw/uart.h | 8 +- arch/lm32/include/asm/io.h | 201 +------------------------------------ arch/lm32/include/asm/pci.h | 1 + arch/lm32/kernel/process.c | 2 +- arch/lm32/kernel/setup.c | 6 +- arch/lm32/kernel/time.c | 1 + arch/lm32/mm/Makefile | 2 +- drivers/input/keyboard/softusb.c | 6 +- drivers/input/serio/milkbd.c | 6 +- drivers/input/serio/milkmouse.c | 6 +- drivers/net/milkymist_minimac.c | 38 ++++---- drivers/serial/milkymist_uart.c | 14 ++-- 14 files changed, 64 insertions(+), 259 deletions(-) diff --git a/arch/lm32/Kconfig b/arch/lm32/Kconfig index dbc20c9..0152450 100644 --- a/arch/lm32/Kconfig +++ b/arch/lm32/Kconfig @@ -21,10 +21,6 @@ config ZONE_DMA_FLAG int default 0 -config GENERIC_IOMAP - bool - default y - config RWSEM_GENERIC_SPINLOCK bool default y diff --git a/arch/lm32/include/asm/hw/sysctl.h b/arch/lm32/include/asm/hw/sysctl.h index ba6a1da..f402a55 100644 --- a/arch/lm32/include/asm/hw/sysctl.h +++ b/arch/lm32/include/asm/hw/sysctl.h @@ -18,19 +18,21 @@ #ifndef __HW_SYSCTL_H #define __HW_SYSCTL_H -#define CSR_GPIO_IN (0xe0001000) -#define CSR_GPIO_OUT (0xe0001004) -#define CSR_GPIO_INTEN (0xe0001008) +#define CSR_REG(x) ((void __iomem *)(x)) -#define CSR_TIMER0_CONTROL (0xe0001010) -#define CSR_TIMER0_COMPARE (0xe0001014) -#define CSR_TIMER0_COUNTER (0xe0001018) +#define CSR_GPIO_IN CSR_REG(0xe0001000) +#define CSR_GPIO_OUT CSR_REG(0xe0001004) +#define CSR_GPIO_INTEN CSR_REG(0xe0001008) -#define CSR_TIMER1_CONTROL (0xe0001020) -#define CSR_TIMER1_COMPARE (0xe0001024) -#define CSR_TIMER1_COUNTER (0xe0001028) +#define CSR_TIMER0_CONTROL CSR_REG(0xe0001010) +#define CSR_TIMER0_COMPARE CSR_REG(0xe0001014) +#define CSR_TIMER0_COUNTER CSR_REG(0xe0001018) -#define CSR_TIMER(id, reg) (0xe0001010 + (0x10 * (id)) + (reg)) +#define CSR_TIMER1_CONTROL CSR_REG(0xe0001020) +#define CSR_TIMER1_COMPARE CSR_REG(0xe0001024) +#define CSR_TIMER1_COUNTER CSR_REG(0xe0001028) + +#define CSR_TIMER(id, reg) CSR_REG(0xe0001010 + (0x10 * (id)) + (reg)) #define CSR_TIMER_CONTROL(id) CSR_TIMER(id, 0x0) #define CSR_TIMER_COMPARE(id) CSR_TIMER(id, 0x4) @@ -39,14 +41,14 @@ #define TIMER_ENABLE (0x01) #define TIMER_AUTORESTART (0x02) -#define CSR_ICAP (0xe0001034) +#define CSR_ICAP CSR_REG(0xe0001034) #define ICAP_READY (0x01) #define ICAP_CE (0x10000) #define ICAP_WRITE (0x20000) -#define CSR_CAPABILITIES (0xe0001038) -#define CSR_SYSTEM_ID (0xe000103c) +#define CSR_CAPABILITIES CSR_REG(0xe0001038) +#define CSR_SYSTEM_ID CSR_REG(0xe000103c) #endif /* __HW_SYSCTL_H */ diff --git a/arch/lm32/include/asm/hw/uart.h b/arch/lm32/include/asm/hw/uart.h index 5057c22..599f958 100644 --- a/arch/lm32/include/asm/hw/uart.h +++ b/arch/lm32/include/asm/hw/uart.h @@ -18,8 +18,10 @@ #ifndef __HW_UART_H #define __HW_UART_H -#define CSR_UART_RXTX (0xe0000000) -#define CSR_UART_DIVISOR (0xe0000004) -#define CSR_UART_THRU (0xe0000008) +#define CSR_REG(x) ((void __iomem *)(x)) + +#define CSR_UART_RXTX CSR_REG(0xe0000000) +#define CSR_UART_DIVISOR CSR_REG(0xe0000004) +#define CSR_UART_THRU CSR_REG(0xe0000008) #endif /* __HW_UART_H */ diff --git a/arch/lm32/include/asm/io.h b/arch/lm32/include/asm/io.h index e866c77..4ee5d09 100644 --- a/arch/lm32/include/asm/io.h +++ b/arch/lm32/include/asm/io.h @@ -1,200 +1 @@ -/* - * Based on: - * include/asm-m68knommu/io.h - */ - -#ifndef _LM32_ASM_IO_H -#define _LM32_ASM_IO_H - -/* TODO: #include <asm-generic/io.h> */ - -#ifdef __KERNEL__ - -#ifndef __ASSEMBLY__ - -/* - * swap functions are sometimes needed to interface little-endian hardware - */ -static inline unsigned short _swapw(volatile unsigned short v) -{ - return ((v << 8) | (v >> 8)); -} - -static inline unsigned int _swapl(volatile unsigned long v) -{ - return ((v << 24) | ((v & 0xff00) << 8) | ((v & 0xff0000) >> 8) | (v >> 24)); -} - -#define readb(addr) \ - ({ unsigned char __v = (*(volatile unsigned char *) (addr)); __v; }) -#define readw(addr) \ - ({ unsigned short __v = (*(volatile unsigned short *) (addr)); __v; }) -#define readl(addr) \ - ({ unsigned int __v = (*(volatile unsigned int *) (addr)); __v; }) - -#define readb_relaxed(addr) readb(addr) -#define readw_relaxed(addr) readw(addr) -#define readl_relaxed(addr) readl(addr) - -#define writeb(b,addr) (void)((*(volatile unsigned char *) (addr)) = (b)) -#define writew(b,addr) (void)((*(volatile unsigned short *) (addr)) = (b)) -#define writel(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b)) - -#define __raw_readb readb -#define __raw_readw readw -#define __raw_readl readl -#define __raw_writeb writeb -#define __raw_writew writew -#define __raw_writel writel - -static inline void outsb(unsigned int addr, const void *buf, int len) -{ - volatile unsigned char *ap = (volatile unsigned char *) addr; - const unsigned char *bp = (const unsigned char *) buf; - while (len--) - *ap = *bp++; -} - -static inline void outsw(unsigned int addr, const void *buf, int len) -{ - volatile unsigned short *ap = (volatile unsigned short *) addr; - const unsigned short *bp = (const unsigned short *) buf; - while (len--) - *ap = _swapw(*bp++); -} - -static inline void outsl(unsigned int addr, const void *buf, int len) -{ - volatile unsigned int *ap = (volatile unsigned int *) addr; - const unsigned int *bp = (const unsigned int *) buf; - while (len--) - *ap = _swapl(*bp++); -} - -static inline void insb(unsigned int addr, void *buf, int len) -{ - volatile unsigned char *ap = (volatile unsigned char *) addr; - unsigned char *bp = (unsigned char *) buf; - while (len--) - *bp++ = *ap; -} - -static inline void insw(unsigned int addr, void *buf, int len) -{ - volatile unsigned short *ap = (volatile unsigned short *) addr; - unsigned short *bp = (unsigned short *) buf; - while (len--) - *bp++ = _swapw(*ap); -} - -static inline void insl(unsigned int addr, void *buf, int len) -{ - volatile unsigned int *ap = (volatile unsigned int *) addr; - unsigned int *bp = (unsigned int *) buf; - while (len--) - *bp++ = _swapl(*ap); -} - -#define mmiowb() - -/* - * make the short names macros so specific devices - * can override them as required - */ - -#define memset_io(a, b, c) memset((void *)(a), (b), (c)) -#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c)) -#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c)) - -#define inb(addr) readb(addr) -#define inw(addr) readw(addr) -#define inl(addr) readl(addr) -#define outb(x,addr) ((void) writeb(x, addr)) -#define outw(x,addr) ((void) writew(x, addr)) -#define outl(x,addr) ((void) writel(x, addr)) - -#define inb_p(addr) inb(addr) -#define inw_p(addr) inw(addr) -#define inl_p(addr) inl(addr) -#define outb_p(x, addr) outb(x, addr) -#define outw_p(x, addr) outw(x, addr) -#define outl_p(x, addr) outl(x, addr) - -#define in_8(addr) readb(addr) -#define in_be16(addr) readw(addr) -#define in_be32(addr) readl(addr) -#define out_8(addr, b) ((void) writeb(b, addr)) -#define out_be16(addr, b) ((void)writew(b, addr)) -#define out_be32(addr, b) ((void)writel(b, addr)) - -#define in_le16(addr) __le16_to_cpu(readw(addr)) -#define in_le32(addr) __le32_to_cpu(readl(addr)) -#define out_le16(b, addr) ((void)writew(__cpu_to_le16(b), addr)) -#define out_le32(b, addr) ((void)writel(__cpu_to_le32(b), addr)) - -#define IO_SPACE_LIMIT 0xffffffff - - -/* Values for nocacheflag and cmode */ -#define IOMAP_FULL_CACHING 0 -#define IOMAP_NOCACHE_SER 1 -#define IOMAP_NOCACHE_NONSER 2 -#define IOMAP_WRITETHROUGH 3 - -extern void *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag); -extern void __iounmap(void *addr, unsigned long size); - -static inline void *ioremap(unsigned long physaddr, unsigned long size) -{ - return __ioremap(physaddr, size, IOMAP_NOCACHE_SER); -} -static inline void *ioremap_nocache(unsigned long physaddr, unsigned long size) -{ - return __ioremap(physaddr, size, IOMAP_NOCACHE_SER); -} -static inline void *ioremap_writethrough(unsigned long physaddr, unsigned long size) -{ - return __ioremap(physaddr, size, IOMAP_WRITETHROUGH); -} -static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size) -{ - return __ioremap(physaddr, size, IOMAP_FULL_CACHING); -} - -extern void iounmap(void *addr); - -/* Nothing to do */ -#define dma_cache_inv(_start,_size) do { } while (0) -#define dma_cache_wback(_start,_size) do { } while (0) -#define dma_cache_wback_inv(_start,_size) do { } while (0) - -/* Pages to physical address... */ -#define page_to_bus(page) ((page - mem_map) << PAGE_SHIFT) - -/* - * Macros used for converting between virtual and physical mappings. - */ -#define mm_ptov(vaddr) ((void *) (vaddr)) -#define mm_vtop(vaddr) ((unsigned long) (vaddr)) -#define phys_to_virt(addr) ((void *) (addr)) -#define virt_to_phys(addr) ((unsigned long) (addr)) - -#define virt_to_bus virt_to_phys -#define bus_to_virt phys_to_virt - -/* - * Convert a physical pointer to a virtual kernel pointer for /dev/mem - * access - */ -#define xlate_dev_mem_ptr(p) __va(p) - -/* - * Convert a virtual cached pointer to an uncached pointer - */ -#define xlate_dev_kmem_ptr(p) p - -#endif /* __ASSEMBLY__ */ - -#endif /* __KERNEL__ */ - -#endif /* _LM32_ASM_IO_H */ +#include <asm-generic/io.h> diff --git a/arch/lm32/include/asm/pci.h b/arch/lm32/include/asm/pci.h index e69de29..9f0df5f 100644 --- a/arch/lm32/include/asm/pci.h +++ b/arch/lm32/include/asm/pci.h @@ -0,0 +1 @@ +#include <asm-generic/pci.h> diff --git a/arch/lm32/kernel/process.c b/arch/lm32/kernel/process.c index 4de69bf..6fb1372 100644 --- a/arch/lm32/kernel/process.c +++ b/arch/lm32/kernel/process.c @@ -95,7 +95,7 @@ void cpu_idle(void) void machine_restart(char * __unused) { /* Writing to CSR_SYSTEM_ID causes a system reset */ - out_be32(CSR_SYSTEM_ID,1); + iowrite32be(1, CSR_SYSTEM_ID); while(1); } diff --git a/arch/lm32/kernel/setup.c b/arch/lm32/kernel/setup.c index 434817c..85102c0 100644 --- a/arch/lm32/kernel/setup.c +++ b/arch/lm32/kernel/setup.c @@ -179,11 +179,13 @@ struct seq_operations cpuinfo_op = { #ifdef CONFIG_PLAT_MILKYMIST static struct resource milkymistuart_resources[] = { +#if 0 [0] = { .start = CSR_UART_RXTX, .end = CSR_UART_RXTX+0xfff, .flags = IORESOURCE_MEM, }, +#endif [1] = { .start = IRQ_UARTRX, .end = IRQ_UARTTX, @@ -324,8 +326,8 @@ static int __init setup_devices(void) { #ifdef CONFIG_PLAT_MILKYMIST int cap; - cap = in_be32(CSR_CAPABILITIES); - + cap = ioread32be(CSR_CAPABILITIES); + if( ( err = platform_device_register(&milkymistuart_device)) ) { printk(KERN_ERR "could not register 'milkymist_uart'error:%d\n", err); ret = err; diff --git a/arch/lm32/kernel/time.c b/arch/lm32/kernel/time.c index 3edcaa7..7761f5e 100644 --- a/arch/lm32/kernel/time.c +++ b/arch/lm32/kernel/time.c @@ -19,6 +19,7 @@ #include <linux/clockchips.h> #include <linux/clocksource.h> #include <linux/timex.h> +#include <linux/io.h> #include <asm/hw/interrupts.h> #include <asm/hw/sysctl.h> diff --git a/arch/lm32/mm/Makefile b/arch/lm32/mm/Makefile index 4ae7f36..c667398 100644 --- a/arch/lm32/mm/Makefile +++ b/arch/lm32/mm/Makefile @@ -2,4 +2,4 @@ # arch/lm32/mm/Makefile # -obj-y += memory.o init.o kmap.o +obj-y += memory.o init.o diff --git a/drivers/input/keyboard/softusb.c b/drivers/input/keyboard/softusb.c index 523a8f31..ddcf3be 100644 --- a/drivers/input/keyboard/softusb.c +++ b/drivers/input/keyboard/softusb.c @@ -132,13 +132,13 @@ static int __devinit softusb_probe(struct platform_device *pdev) unsigned int *usb_dmem = (unsigned int *)SOFTUSB_DMEM_BASE; unsigned int *usb_pmem = (unsigned int *)SOFTUSB_PMEM_BASE; - if(!(in_be32(CSR_CAPABILITIES) & CAP_USB)) { + if(!(ioread32be(CSR_CAPABILITIES) & CAP_USB)) { printk("USB: not supported by SoC, giving up.\n"); return -ENODEV; } printk("USB: loading Navre firmware\n"); - out_be32(CSR_SOFTUSB_CONTROL, SOFTUSB_CONTROL_RESET); + iowrite32be(SOFTUSB_CONTROL_RESET, CSR_SOFTUSB_CONTROL); for(i=0;i<SOFTUSB_DMEM_SIZE/4;i++) usb_dmem[i] = 0; for(i=0;i<SOFTUSB_PMEM_SIZE/2;i++) @@ -148,7 +148,7 @@ static int __devinit softusb_probe(struct platform_device *pdev) usb_pmem[i] = ((unsigned int)(input_firmware[2*i])) |((unsigned int)(input_firmware[2*i+1]) << 8); printk("USB: starting host controller\n"); - out_be32(CSR_SOFTUSB_CONTROL, 0); + iowrite32be(0, CSR_SOFTUSB_CONTROL); keyboard_consume = 0; diff --git a/drivers/input/serio/milkbd.c b/drivers/input/serio/milkbd.c index fa0ab92..07a9c5c 100644 --- a/drivers/input/serio/milkbd.c +++ b/drivers/input/serio/milkbd.c @@ -38,9 +38,9 @@ MODULE_LICENSE("GPL"); static int milkbd_write(struct serio *port, unsigned char val) { - while(in_be32(CSR_PS2_KEYBOARD_STATUS)&PS2_BUSY); + while(ioread32be(CSR_PS2_KEYBOARD_STATUS)&PS2_BUSY); - out_be32(CSR_PS2_KEYBOARD_DATA, val); + iowrite32be(val, CSR_PS2_KEYBOARD_DATA); return 0; } @@ -51,7 +51,7 @@ static irqreturn_t milkbd_rx(int irq, void *dev_id) unsigned int byte; int handled = IRQ_NONE; - byte = in_be32(CSR_PS2_KEYBOARD_DATA); + byte = ioread32be(CSR_PS2_KEYBOARD_DATA); serio_interrupt(port, byte, 0); handled = IRQ_HANDLED; diff --git a/drivers/input/serio/milkmouse.c b/drivers/input/serio/milkmouse.c index ab64c3f..689e2c4 100644 --- a/drivers/input/serio/milkmouse.c +++ b/drivers/input/serio/milkmouse.c @@ -38,9 +38,9 @@ MODULE_LICENSE("GPL"); static int milkmouse_write(struct serio *port, unsigned char val) { - while(in_be32(CSR_PS2_MOUSE_STATUS)&PS2_BUSY); + while (ioread32be(CSR_PS2_MOUSE_STATUS) & PS2_BUSY); - out_be32(CSR_PS2_MOUSE_DATA, val); + iowrite32be(val, CSR_PS2_MOUSE_DATA); return 0; } @@ -51,7 +51,7 @@ static irqreturn_t milkmouse_rx(int irq, void *dev_id) unsigned int byte; int handled = IRQ_NONE; - byte = in_be32(CSR_PS2_MOUSE_DATA); + byte = ioread32be(CSR_PS2_MOUSE_DATA); serio_interrupt(port, byte, 0); handled = IRQ_HANDLED; diff --git a/drivers/net/milkymist_minimac.c b/drivers/net/milkymist_minimac.c index 06b5d61..98e7823 100644 --- a/drivers/net/milkymist_minimac.c +++ b/drivers/net/milkymist_minimac.c @@ -151,17 +151,17 @@ static int minimac_reset(struct minimac *dev) static unsigned char preamble[8] = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5}; int i; - out_be32(CSR_MINIMAC_SETUP, MINIMAC_SETUP_RXRST|MINIMAC_SETUP_TXRST); + iowrite32be(MINIMAC_SETUP_RXRST | MINIMAC_SETUP_TXRST, CSR_MINIMAC_SETUP); - for (i=1; i<=MAX_PACKET_RECEPTION_SLOT; ++i) { - out_be32(CSR_MINIMAC_ADDR0+(i-1)*12, (int)(dev->pkt_buf+i)->buf); - out_be32(CSR_MINIMAC_STATE0+(i-1)*12, MINIMAC_STATE_LOADED); + for (i = 0; i < MAX_PACKET_RECEPTION_SLOT; ++i) { + iowrite32be((unsigned int)dev->pkt_buf[i].buf, CSR_MINIMAC_ADDR0+i*12); + iowrite32be(MINIMAC_STATE_LOADED, CSR_MINIMAC_STATE0+i*12); } memcpy_toio(dev->pkt_buf->buf, preamble, 8); /* TX buff preamble */ - out_be32(CSR_MINIMAC_TXREMAINING, 0); - out_be32(CSR_MINIMAC_SETUP, 0); + iowrite32be(0, CSR_MINIMAC_TXREMAINING); + iowrite32be(0, CSR_MINIMAC_SETUP); return 0; } @@ -180,9 +180,9 @@ static int minimac_rx(struct net_device *dev, int budget) count = 0; for (i=1; i<=MAX_PACKET_RECEPTION_SLOT && received < budget ; ++i) { flush_dcache_range(CSR_MINIMAC_STATE0,256); - state = in_be32(CSR_MINIMAC_STATE0+(i-1)*12); + state = ioread32be(CSR_MINIMAC_STATE0+(i-1)*12); if ( state & MINIMAC_STATE_PENDING ) { - size = in_be32(CSR_MINIMAC_COUNT0+(i-1)*12); + size = ioread32be(CSR_MINIMAC_COUNT0+(i-1)*12); if (size == 0) { } else if (size < 64) { #ifdef CONFIG_DEBUG_MILKYMIST_MINIMAC @@ -227,7 +227,7 @@ static int minimac_rx(struct net_device *dev, int budget) ++received; ++count; } - out_be32(CSR_MINIMAC_STATE0+(i-1)*12, MINIMAC_STATE_LOADED); + iowrite32be(MINIMAC_STATE_LOADED, CSR_MINIMAC_STATE0+(i-1)*12); } } if (count == 0) @@ -253,8 +253,8 @@ static irqreturn_t minimac_interrupt_rx(int irq, void *dev_id) struct minimac *tp = netdev_priv(dev); flush_dcache_range(CSR_MINIMAC_SETUP,256); - if (in_be32(CSR_MINIMAC_SETUP) & MINIMAC_SETUP_RXRST) { - out_be32(CSR_MINIMAC_SETUP, 0); + if (ioread32be(CSR_MINIMAC_SETUP) & MINIMAC_SETUP_RXRST) { + iowrite32be(0, CSR_MINIMAC_SETUP); } disable_irq(dev->irq); @@ -329,12 +329,12 @@ static int minimac_stop(struct net_device *dev) free_irq(dev->irq, dev); free_irq(dev->irq+1, dev); - for (i=1; i<=MAX_PACKET_RECEPTION_SLOT; ++i) { - out_be32(CSR_MINIMAC_STATE0+(i-1)*12, MINIMAC_STATE_EMPTY); + for (i = 0; i< MAX_PACKET_RECEPTION_SLOT; ++i) { + iowrite32be(MINIMAC_STATE_EMPTY, CSR_MINIMAC_STATE0+i*12); } - out_be32(CSR_MINIMAC_SETUP, MINIMAC_SETUP_RXRST|MINIMAC_SETUP_TXRST); - out_be32(CSR_MINIMAC_TXREMAINING, 0); + iowrite32be(MINIMAC_SETUP_RXRST | MINIMAC_SETUP_TXRST, CSR_MINIMAC_SETUP); + iowrite32be(0, CSR_MINIMAC_TXREMAINING); return 0; } @@ -351,7 +351,7 @@ static netdev_tx_t minimac_start_xmit(struct sk_buff *skb, struct net_device *de unsigned long fcs; int len; - if (in_be32(CSR_MINIMAC_TXREMAINING) != 0) { + if (ioread32be(CSR_MINIMAC_TXREMAINING) != 0) { return NETDEV_TX_BUSY; } @@ -372,8 +372,8 @@ static netdev_tx_t minimac_start_xmit(struct sk_buff *skb, struct net_device *de *((dest+len)+10) = (fcs & 0xff0000) >> 16; *((dest+len)+11) = (fcs & 0xff000000) >> 24; - out_be32(CSR_MINIMAC_TXADR, (unsigned int)dest); - out_be32(CSR_MINIMAC_TXREMAINING, len+12); + iowrite32be(dest, CSR_MINIMAC_TXADR); + iowrite32be(len + 12, CSR_MINIMAC_TXREMAINING); (tp->pkt_buf)->count = len; netif_stop_queue(dev); @@ -464,7 +464,7 @@ static int minimac_probe(struct platform_device *pdev) } /* GPIO switch*/ - macadr[5] = in_be32(CSR_GPIO_IN) >> 5; + macadr[5] = ioread32be(CSR_GPIO_IN) >> 5; /* store MAC address */ memcpy(netdev->dev_addr, macadr, IFHWADDRLEN); diff --git a/drivers/serial/milkymist_uart.c b/drivers/serial/milkymist_uart.c index f7bc945..b4ef457 100644 --- a/drivers/serial/milkymist_uart.c +++ b/drivers/serial/milkymist_uart.c @@ -94,7 +94,7 @@ static struct uart_ops milkymistuart_pops = { static inline void milkymistuart_set_baud_rate(struct uart_port *port, unsigned long baud) { // TODO: use the board configuration option to get the frequency - out_be32(CSR_UART_DIVISOR, (unsigned long)CONFIG_CPU_CLOCK/baud/16); + iowrite32be((unsigned long)CONFIG_CPU_CLOCK/baud/16, CSR_UART_DIVISOR); } static void milkymistuart_tx_next_char(struct uart_port* port) @@ -104,7 +104,7 @@ static void milkymistuart_tx_next_char(struct uart_port* port) if (port->x_char) { /* send xon/xoff character */ tx_cts = 0; - out_be32(CSR_UART_RXTX,(int)port->x_char); + iowrite32be(port->x_char, CSR_UART_RXTX); port->x_char = 0; port->icount.tx++; return; @@ -118,7 +118,7 @@ static void milkymistuart_tx_next_char(struct uart_port* port) /* send next character */ tx_cts = 0; - out_be32(CSR_UART_RXTX,(int)xmit->buf[xmit->tail]); + iowrite32be(xmit->buf[xmit->tail], CSR_UART_RXTX); xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; @@ -134,7 +134,7 @@ static void milkymistuart_rx_next_char(struct uart_port* port) struct tty_struct *tty = port->state->port.tty; unsigned char ch; - ch = in_be32(CSR_UART_RXTX) & 0xFF; + ch = ioread32be(CSR_UART_RXTX) & 0xFF; port->icount.rx++; if (uart_handle_sysrq_char(port, ch)) @@ -187,7 +187,7 @@ static void milkymistuart_start_tx(struct uart_port *port) if (port->x_char) { /* send xon/xoff character */ tx_cts = 0; - out_be32(CSR_UART_RXTX,(int)port->x_char); + iowrite32be(port->x_char, CSR_UART_RXTX); port->x_char = 0; port->icount.tx++; return; @@ -199,7 +199,7 @@ static void milkymistuart_start_tx(struct uart_port *port) /* send next character */ tx_cts = 0; - out_be32(CSR_UART_RXTX,(int)xmit->buf[xmit->tail]); + iowrite32be(xmit->buf[xmit->tail], CSR_UART_RXTX); xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; @@ -311,7 +311,7 @@ static void milkymist_console_putchar(struct uart_port *port, int ch) { if (milkymist_uart_irqs_enabled) disable_irq(IRQ_UARTTX); - out_be32(CSR_UART_RXTX,ch); + iowrite32be(ch, CSR_UART_RXTX); while(!(lm32_irq_pending() & (1 << IRQ_UARTTX))); lm32_irq_ack(IRQ_UARTTX); if (milkymist_uart_irqs_enabled) -- 1.7.2.3 _______________________________________________ http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org IRC: #milkymist@Freenode Twitter: www.twitter.com/milkymistvj Ideas? http://milkymist.uservoice.com
