setup_se.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: setup_se.c,v 1.6 2000/05/14 08:41:25 gniibe Exp $
  2.  *
  3.  * linux/arch/sh/kernel/setup_se.c
  4.  *
  5.  * Copyright (C) 2000  Kazumoto Kojima
  6.  *
  7.  * Hitachi SolutionEngine Support.
  8.  *
  9.  */
  10. #include <linux/config.h>
  11. #include <linux/init.h>
  12. #include <linux/irq.h>
  13. #include <linux/hdreg.h>
  14. #include <linux/ide.h>
  15. #include <asm/io.h>
  16. #include <asm/hitachi_se.h>
  17. #include <asm/smc37c93x.h>
  18. /*
  19.  * Configure the Super I/O chip
  20.  */
  21. static void __init smsc_config(int index, int data)
  22. {
  23. outb_p(index, INDEX_PORT);
  24. outb_p(data, DATA_PORT);
  25. }
  26. static void __init init_smsc(void)
  27. {
  28. outb_p(CONFIG_ENTER, CONFIG_PORT);
  29. outb_p(CONFIG_ENTER, CONFIG_PORT);
  30. /* FDC */
  31. smsc_config(CURRENT_LDN_INDEX, LDN_FDC);
  32. smsc_config(ACTIVATE_INDEX, 0x01);
  33. smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */
  34. /* IDE1 */
  35. smsc_config(CURRENT_LDN_INDEX, LDN_IDE1);
  36. smsc_config(ACTIVATE_INDEX, 0x01);
  37. smsc_config(IRQ_SELECT_INDEX, 14); /* IRQ14 */
  38. /* AUXIO (GPIO): to use IDE1 */
  39. smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO);
  40. smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */
  41. smsc_config(GPIO47_INDEX, 0x00); /* nIOWOP */
  42. /* COM1 */
  43. smsc_config(CURRENT_LDN_INDEX, LDN_COM1);
  44. smsc_config(ACTIVATE_INDEX, 0x01);
  45. smsc_config(IO_BASE_HI_INDEX, 0x03);
  46. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  47. smsc_config(IRQ_SELECT_INDEX, 4); /* IRQ4 */
  48. /* COM2 */
  49. smsc_config(CURRENT_LDN_INDEX, LDN_COM2);
  50. smsc_config(ACTIVATE_INDEX, 0x01);
  51. smsc_config(IO_BASE_HI_INDEX, 0x02);
  52. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  53. smsc_config(IRQ_SELECT_INDEX, 3); /* IRQ3 */
  54. /* RTC */
  55. smsc_config(CURRENT_LDN_INDEX, LDN_RTC);
  56. smsc_config(ACTIVATE_INDEX, 0x01);
  57. smsc_config(IRQ_SELECT_INDEX, 8); /* IRQ8 */
  58. /* XXX: PARPORT, KBD, and MOUSE will come here... */
  59. outb_p(CONFIG_EXIT, CONFIG_PORT);
  60. }
  61. /*
  62.  * Initialize IRQ setting
  63.  */
  64. void __init init_se_IRQ(void)
  65. {
  66. /*
  67.  * Super I/O (Just mimic PC):
  68.  *  1: keyboard
  69.  *  3: serial 0
  70.  *  4: serial 1
  71.  *  5: printer
  72.  *  6: floppy
  73.  *  8: rtc
  74.  * 12: mouse
  75.  * 14: ide0
  76.  */
  77. make_ipr_irq(14, BCR_ILCRA, 2, 0x0f-14);
  78. make_ipr_irq(12, BCR_ILCRA, 1, 0x0f-12); 
  79. make_ipr_irq( 8, BCR_ILCRB, 1, 0x0f- 8); 
  80. make_ipr_irq( 6, BCR_ILCRC, 3, 0x0f- 6);
  81. make_ipr_irq( 5, BCR_ILCRC, 2, 0x0f- 5);
  82. make_ipr_irq( 4, BCR_ILCRC, 1, 0x0f- 4);
  83. make_ipr_irq( 3, BCR_ILCRC, 0, 0x0f- 3);
  84. make_ipr_irq( 1, BCR_ILCRD, 3, 0x0f- 1);
  85. make_ipr_irq(10, BCR_ILCRD, 1, 0x0f-10); /* LAN */
  86. make_ipr_irq( 0, BCR_ILCRE, 3, 0x0f- 0); /* PCIRQ3 */
  87. make_ipr_irq(11, BCR_ILCRE, 2, 0x0f-11); /* PCIRQ2 */
  88. make_ipr_irq( 9, BCR_ILCRE, 1, 0x0f- 9); /* PCIRQ1 */
  89. make_ipr_irq( 7, BCR_ILCRE, 0, 0x0f- 7); /* PCIRQ0 */
  90. /* #2, #13 are allocated for SLOT IRQ #1 and #2 (for now) */
  91. /* NOTE: #2 and #13 are not used on PC */
  92. make_ipr_irq(13, BCR_ILCRG, 1, 0x0f-13); /* SLOTIRQ2 */
  93. make_ipr_irq( 2, BCR_ILCRG, 0, 0x0f- 2); /* SLOTIRQ1 */
  94. }
  95. /*
  96.  * Initialize the board
  97.  */
  98. void __init setup_se(void)
  99. {
  100. init_smsc();
  101. /* XXX: RTC setting comes here */
  102. }