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

嵌入式Linux

开发平台:

Unix_Linux

  1. /* 
  2.  * linux/arch/sh/kernel/setup_7751se.c
  3.  *
  4.  * Copyright (C) 2000  Kazumoto Kojima
  5.  *
  6.  * Hitachi SolutionEngine Support.
  7.  *
  8.  * Modified for 7751 Solution Engine by
  9.  * Ian da Silva and Jeremy Siegel, 2001.
  10.  */
  11. #include <linux/config.h>
  12. #include <linux/init.h>
  13. #include <linux/irq.h>
  14. #include <linux/hdreg.h>
  15. #include <linux/ide.h>
  16. #include <asm/io.h>
  17. #include <asm/hitachi_7751se.h>
  18. /*
  19.  * Configure the Super I/O chip
  20.  */
  21. #if 0
  22. /* Leftover code from regular Solution Engine, for reference. */
  23. /* The SH7751 Solution Engine has a different SuperIO. */
  24. static void __init smsc_config(int index, int data)
  25. {
  26. outb_p(index, INDEX_PORT);
  27. outb_p(data, DATA_PORT);
  28. }
  29. static void __init init_smsc(void)
  30. {
  31. outb_p(CONFIG_ENTER, CONFIG_PORT);
  32. outb_p(CONFIG_ENTER, CONFIG_PORT);
  33. /* FDC */
  34. smsc_config(CURRENT_LDN_INDEX, LDN_FDC);
  35. smsc_config(ACTIVATE_INDEX, 0x01);
  36. smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */
  37. /* IDE1 */
  38. smsc_config(CURRENT_LDN_INDEX, LDN_IDE1);
  39. smsc_config(ACTIVATE_INDEX, 0x01);
  40. smsc_config(IRQ_SELECT_INDEX, 14); /* IRQ14 */
  41. /* AUXIO (GPIO): to use IDE1 */
  42. smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO);
  43. smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */
  44. smsc_config(GPIO47_INDEX, 0x00); /* nIOWOP */
  45. /* COM1 */
  46. smsc_config(CURRENT_LDN_INDEX, LDN_COM1);
  47. smsc_config(ACTIVATE_INDEX, 0x01);
  48. smsc_config(IO_BASE_HI_INDEX, 0x03);
  49. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  50. smsc_config(IRQ_SELECT_INDEX, 4); /* IRQ4 */
  51. /* COM2 */
  52. smsc_config(CURRENT_LDN_INDEX, LDN_COM2);
  53. smsc_config(ACTIVATE_INDEX, 0x01);
  54. smsc_config(IO_BASE_HI_INDEX, 0x02);
  55. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  56. smsc_config(IRQ_SELECT_INDEX, 3); /* IRQ3 */
  57. /* RTC */
  58. smsc_config(CURRENT_LDN_INDEX, LDN_RTC);
  59. smsc_config(ACTIVATE_INDEX, 0x01);
  60. smsc_config(IRQ_SELECT_INDEX, 8); /* IRQ8 */
  61. /* XXX: PARPORT, KBD, and MOUSE will come here... */
  62. outb_p(CONFIG_EXIT, CONFIG_PORT);
  63. }
  64. #endif
  65. /*
  66.  * Initialize IRQ setting
  67.  */
  68. void __init init_7751se_IRQ(void)
  69. {
  70.   /* Leave old Solution Engine code in for reference. */
  71. #if defined(CONFIG_SH_SOLUTION_ENGINE)
  72. /*
  73.  * Super I/O (Just mimic PC):
  74.  *  1: keyboard
  75.  *  3: serial 0
  76.  *  4: serial 1
  77.  *  5: printer
  78.  *  6: floppy
  79.  *  8: rtc
  80.  * 12: mouse
  81.  * 14: ide0
  82.  */
  83. make_ipr_irq(14, BCR_ILCRA, 2, 0x0f-14);
  84. make_ipr_irq(12, BCR_ILCRA, 1, 0x0f-12); 
  85. make_ipr_irq( 8, BCR_ILCRB, 1, 0x0f- 8); 
  86. make_ipr_irq( 6, BCR_ILCRC, 3, 0x0f- 6);
  87. make_ipr_irq( 5, BCR_ILCRC, 2, 0x0f- 5);
  88. make_ipr_irq( 4, BCR_ILCRC, 1, 0x0f- 4);
  89. make_ipr_irq( 3, BCR_ILCRC, 0, 0x0f- 3);
  90. make_ipr_irq( 1, BCR_ILCRD, 3, 0x0f- 1);
  91. make_ipr_irq(10, BCR_ILCRD, 1, 0x0f-10); /* LAN */
  92. make_ipr_irq( 0, BCR_ILCRE, 3, 0x0f- 0); /* PCIRQ3 */
  93. make_ipr_irq(11, BCR_ILCRE, 2, 0x0f-11); /* PCIRQ2 */
  94. make_ipr_irq( 9, BCR_ILCRE, 1, 0x0f- 9); /* PCIRQ1 */
  95. make_ipr_irq( 7, BCR_ILCRE, 0, 0x0f- 7); /* PCIRQ0 */
  96. /* #2, #13 are allocated for SLOT IRQ #1 and #2 (for now) */
  97. /* NOTE: #2 and #13 are not used on PC */
  98. make_ipr_irq(13, BCR_ILCRG, 1, 0x0f-13); /* SLOTIRQ2 */
  99. make_ipr_irq( 2, BCR_ILCRG, 0, 0x0f- 2); /* SLOTIRQ1 */
  100. #elif defined(CONFIG_SH_7751_SOLUTION_ENGINE)
  101. make_ipr_irq(13, BCR_ILCRD, 3, 2);
  102. /* Add additional calls to make_ipr_irq() as drivers are added
  103.  * and tested.
  104.  */
  105. #endif
  106. }
  107. /*
  108.  * Initialize the board
  109.  */
  110. void __init setup_7751se(void)
  111. {
  112. /* Call init_smsc() replacement to set up SuperIO. */
  113. /* XXX: RTC setting comes here */
  114. }