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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/sh/kernel/io_ec3104.c
  3.  *  EC3104 companion chip support
  4.  *
  5.  * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
  6.  *
  7.  */
  8. /* EC3104 note:
  9.  * This code was written without any documentation about the EC3104 chip.  While
  10.  * I hope I got most of the basic functionality right, the register names I use
  11.  * are most likely completely different from those in the chip documentation.
  12.  *
  13.  * If you have any further information about the EC3104, please tell me
  14.  * (prumpf@tux.org).
  15.  */
  16. #include <linux/kernel.h>
  17. #include <linux/types.h>
  18. #include <asm/io.h>
  19. #include <asm/page.h>
  20. #include <asm/ec3104.h>
  21. /*
  22.  * EC3104 has a real ISA bus which we redirect low port accesses to (the
  23.  * actual device on mine is a ESS 1868, and I don't want to hack the driver
  24.  * more than strictly necessary).  I am not going to duplicate the
  25.  * hard coding of PC addresses (for the 16550s aso) here though;  it's just
  26.  * too ugly.
  27.  */
  28. #define low_port(port) ((port) < 0x10000)
  29. static inline unsigned long port2addr(unsigned long port)
  30. {
  31. switch(port >> 16) {
  32. case 0:
  33. return EC3104_ISA_BASE + port * 2;
  34. /* XXX hack. it's unclear what to do about the serial ports */
  35. case 1:
  36. return EC3104_BASE + (port&0xffff) * 4;
  37. default:
  38. /* XXX PCMCIA */
  39. return 0;
  40. }
  41. }
  42. unsigned char ec3104_inb(unsigned long port)
  43. {
  44. u8 ret;
  45. ret = *(volatile u8 *)port2addr(port);
  46. return ret;
  47. }
  48. unsigned short ec3104_inw(unsigned long port)
  49. {
  50. BUG();
  51. }
  52. unsigned long ec3104_inl(unsigned long port)
  53. {
  54. BUG();
  55. }
  56. void ec3104_outb(unsigned char data, unsigned long port)
  57. {
  58. *(volatile u8 *)port2addr(port) = data;
  59. }
  60. void ec3104_outw(unsigned short data, unsigned long port)
  61. {
  62. BUG();
  63. }
  64. void ec3104_outl(unsigned long data, unsigned long port)
  65. {
  66. BUG();
  67. }