home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / arch-l7200 / io.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  77 lines

  1. /*
  2.  * linux/include/asm-arm/arch-l7200/io.h
  3.  *
  4.  * Copyright (C) 2000 Steve Hill (sjhill@cotw.com)
  5.  *
  6.  * Changelog:
  7.  *  03-21-2000    SJH    Created from linux/include/asm-arm/arch-nexuspci/io.h
  8.  *  08-31-2000    SJH    Added in IO functions necessary for new drivers
  9.  */
  10. #ifndef __ASM_ARM_ARCH_IO_H
  11. #define __ASM_ARM_ARCH_IO_H
  12.  
  13. #include <asm/hardware.h>
  14.  
  15. #define IO_SPACE_LIMIT 0xffffffff
  16.  
  17. /*
  18.  * There are not real ISA nor PCI buses, so we fake it.
  19.  */
  20. #define __io_pci(a)        ((void __iomem *)(PCIO_BASE + (a)))
  21. #define __mem_pci(a)        (a)
  22. #define __mem_isa(a)        (a)
  23.  
  24. #define __ioaddr(p)             __io_pci(p)
  25.  
  26. /*
  27.  * Generic virtual read/write
  28.  */
  29. #define __arch_getb(a)          (*(volatile unsigned char *)(a))
  30. #define __arch_getl(a)          (*(volatile unsigned int  *)(a))
  31.  
  32. static inline unsigned int __arch_getw(unsigned long a)
  33. {
  34.     unsigned int value;
  35.     __asm__ __volatile__("ldr%?h    %0, [%1, #0]    @ getw"
  36.         : "=&r" (value)
  37.         : "r" (a));
  38.     return value;
  39. }
  40.  
  41. #define __arch_putb(v,a)        (*(volatile unsigned char *)(a) = (v))
  42. #define __arch_putl(v,a)        (*(volatile unsigned int  *)(a) = (v))
  43.  
  44. static inline void __arch_putw(unsigned int value, unsigned long a)
  45. {
  46.         __asm__ __volatile__("str%?h    %0, [%1, #0]    @ putw"
  47.                 : : "r" (value), "r" (a));
  48. }
  49.  
  50. /*
  51.  * Translated address IO functions
  52.  *
  53.  * IO address has already been translated to a virtual address
  54.  */
  55. #define outb_t(v,p)        (*(volatile unsigned char *)(p) = (v))
  56. #define inb_t(p)        (*(volatile unsigned char *)(p))
  57. #define outw_t(v,p)        (*(volatile unsigned int *)(p) = (v))
  58. #define inw_t(p)        (*(volatile unsigned int *)(p))
  59. #define outl_t(v,p)        (*(volatile unsigned long *)(p) = (v))
  60. #define inl_t(p)        (*(volatile unsigned long *)(p))
  61.  
  62. /*
  63.  * FIXME - These are to allow for linking. On all the other
  64.  *         ARM platforms, the entire IO space is contiguous.
  65.  *         The 7200 has three separate IO spaces. The below
  66.  *         macros will eventually become more involved. Use
  67.  *         with caution and don't be surprised by kernel oopses!!!
  68.  */
  69. #define inb(p)             inb_t(p)
  70. #define inw(p)             inw_t(p)
  71. #define inl(p)             inl_t(p)
  72. #define outb(v,p)        outb_t(v,p)
  73. #define outw(v,p)        outw_t(v,p)
  74. #define outl(v,p)        outl_t(v,p)
  75.  
  76. #endif
  77.