setup.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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/init.h>
  11. #include <linux/irq.h>
  12. #include <linux/hdreg.h>
  13. #include <linux/ide.h>
  14. #include <asm/io.h>
  15. #include <asm/se/se.h>
  16. #include <asm/se/smc37c93x.h>
  17. /*
  18. * Configure the Super I/O chip
  19. */
  20. static void __init smsc_config(int index, int data)
  21. {
  22. outb_p(index, INDEX_PORT);
  23. outb_p(data, DATA_PORT);
  24. }
  25. static void __init init_smsc(void)
  26. {
  27. outb_p(CONFIG_ENTER, CONFIG_PORT);
  28. outb_p(CONFIG_ENTER, CONFIG_PORT);
  29. /* FDC */
  30. smsc_config(CURRENT_LDN_INDEX, LDN_FDC);
  31. smsc_config(ACTIVATE_INDEX, 0x01);
  32. smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */
  33. /* IDE1 */
  34. smsc_config(CURRENT_LDN_INDEX, LDN_IDE1);
  35. smsc_config(ACTIVATE_INDEX, 0x01);
  36. smsc_config(IRQ_SELECT_INDEX, 14); /* IRQ14 */
  37. /* AUXIO (GPIO): to use IDE1 */
  38. smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO);
  39. smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */
  40. smsc_config(GPIO47_INDEX, 0x00); /* nIOWOP */
  41. /* COM1 */
  42. smsc_config(CURRENT_LDN_INDEX, LDN_COM1);
  43. smsc_config(ACTIVATE_INDEX, 0x01);
  44. smsc_config(IO_BASE_HI_INDEX, 0x03);
  45. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  46. smsc_config(IRQ_SELECT_INDEX, 4); /* IRQ4 */
  47. /* COM2 */
  48. smsc_config(CURRENT_LDN_INDEX, LDN_COM2);
  49. smsc_config(ACTIVATE_INDEX, 0x01);
  50. smsc_config(IO_BASE_HI_INDEX, 0x02);
  51. smsc_config(IO_BASE_LO_INDEX, 0xf8);
  52. smsc_config(IRQ_SELECT_INDEX, 3); /* IRQ3 */
  53. /* RTC */
  54. smsc_config(CURRENT_LDN_INDEX, LDN_RTC);
  55. smsc_config(ACTIVATE_INDEX, 0x01);
  56. smsc_config(IRQ_SELECT_INDEX, 8); /* IRQ8 */
  57. /* XXX: PARPORT, KBD, and MOUSE will come here... */
  58. outb_p(CONFIG_EXIT, CONFIG_PORT);
  59. }
  60. const char *get_system_type(void)
  61. {
  62. return "SolutionEngine";
  63. }
  64. /*
  65. * Initialize the board
  66. */
  67. void __init platform_setup(void)
  68. {
  69. init_smsc();
  70. /* XXX: RTC setting comes here */
  71. }