io.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/include/asm-arm/arch-pxa/io.h
  3.  *
  4.  * Author: Nicolas Pitre
  5.  * Created: Jun 15, 2001
  6.  * Copyright: MontaVista Software Inc.
  7.  * 
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License version 2 as
  10.  * published by the Free Software Foundation.
  11.  */
  12. #ifndef __ASM_ARM_ARCH_IO_H
  13. #define __ASM_ARM_ARCH_IO_H
  14. #define IO_SPACE_LIMIT 0xffffffff
  15. /*
  16.  * Because of PXA250 erratum #86, we must define our own IO macros to
  17.  * substitute a non-standard inb/outb version.
  18.  */
  19. #if 1
  20. /* 16 bit fixup version */
  21. #define inb(p) ({ 
  22. unsigned int __p = (unsigned int)(p); 
  23. unsigned int __v = *(volatile unsigned short *)(__p & ~1); 
  24. if (__p & 1) __v >>= 8; 
  25. else __v &= 0xff; 
  26. __v; })
  27. #else
  28. /* 32 bit fixup version */
  29. #define inb(p) ({ 
  30. unsigned int __p = (unsigned int)(p); 
  31. unsigned int __v = *(volatile unsigned int *)(__p & ~3); 
  32. if (__p & 1) __v >>= 8; 
  33. if (__p & 2) __v >>= 16; 
  34. __v & 0xff; })
  35. #endif
  36. #define outb(v,p)                       __raw_writeb(v,p)
  37. #define outw(v,p)                       __raw_writew(v,p)
  38. #define outl(v,p)                       __raw_writel(v,p)
  39. #define inw(p)          ({ unsigned int __v = __raw_readw(p); __v; })
  40. #define inl(p)          ({ unsigned int __v = __raw_readl(p); __v; })
  41. #define outsb(p,d,l)                    __raw_writesb(p,d,l)
  42. #define outsw(p,d,l)                    __raw_writesw(p,d,l)
  43. #define outsl(p,d,l)                    __raw_writesl(p,d,l)
  44. // commented out for now to be sure it's not used
  45. //#define insb(p,d,l)                     __raw_readsb(p,d,l)
  46. #define insw(p,d,l)                     __raw_readsw(p,d,l)
  47. #define insl(p,d,l)                     __raw_readsl(p,d,l)
  48. /*
  49.  * We don't actually have real ISA nor PCI buses, but there is so many 
  50.  * drivers out there that might just work if we fake them...
  51.  */
  52. #define __mem_pci(a) ((unsigned long)(a))
  53. #define __mem_isa(a) ((unsigned long)(a))
  54. /*
  55.  * Generic virtual read/write
  56.  */
  57. #define __arch_getw(a) (*(volatile unsigned short *)(a))
  58. #define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
  59. #define iomem_valid_addr(iomem,sz) (1)
  60. #define iomem_to_phys(iomem) (iomem)
  61. #endif