setup.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* $Id: setup.c,v 1.1.2.4 2002/03/02 21:57:07 lethal Exp $
  2. *
  3. * linux/arch/sh/boards/se/770x/setup.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/se/se.h>
  17. #include <asm/se/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. const char *get_system_type(void)
  62. {
  63. return "SolutionEngine";
  64. }
  65. /*
  66. * Initialize the board
  67. */
  68. void __init platform_setup(void)
  69. {
  70. init_smsc();
  71. /* XXX: RTC setting comes here */
  72. }