ns87308.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * (C) Copyright 2000
  3. * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <config.h>
  8. #include <ns87308.h>
  9. void initialise_ns87308 (void)
  10. {
  11. #ifdef CONFIG_SYS_NS87308_PS2MOD
  12. unsigned char data;
  13. /*
  14. * Switch floppy drive to PS/2 mode.
  15. */
  16. read_pnp_config(SUPOERIO_CONF1, &data);
  17. data &= 0xFB;
  18. write_pnp_config(SUPOERIO_CONF1, data);
  19. #endif
  20. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_KBC1)
  21. PNP_SET_DEVICE_BASE(LDEV_KBC1, CONFIG_SYS_NS87308_KBC1_BASE);
  22. write_pnp_config(LUN_CONFIG_REG, 0);
  23. write_pnp_config(CBASE_HIGH, 0x00);
  24. write_pnp_config(CBASE_LOW, 0x64);
  25. #endif
  26. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_MOUSE)
  27. PNP_ACTIVATE_DEVICE(LDEV_MOUSE);
  28. #endif
  29. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_RTC_APC)
  30. PNP_SET_DEVICE_BASE(LDEV_RTC_APC, CONFIG_SYS_NS87308_RTC_BASE);
  31. #endif
  32. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_FDC)
  33. PNP_SET_DEVICE_BASE(LDEV_FDC, CONFIG_SYS_NS87308_FDC_BASE);
  34. write_pnp_config(LUN_CONFIG_REG, 0x40);
  35. #endif
  36. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_RARP)
  37. PNP_SET_DEVICE_BASE(LDEV_PARP, CONFIG_SYS_NS87308_LPT_BASE);
  38. #endif
  39. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_UART1)
  40. PNP_SET_DEVICE_BASE(LDEV_UART1, CONFIG_SYS_NS87308_UART1_BASE);
  41. #endif
  42. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_UART2)
  43. PNP_SET_DEVICE_BASE(LDEV_UART2, CONFIG_SYS_NS87308_UART2_BASE);
  44. #endif
  45. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_GPIO)
  46. PNP_SET_DEVICE_BASE(LDEV_GPIO, CONFIG_SYS_NS87308_GPIO_BASE);
  47. #endif
  48. #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_POWRMAN)
  49. #ifndef CONFIG_SYS_NS87308_PWMAN_BASE
  50. PNP_ACTIVATE_DEVICE(LDEV_POWRMAN);
  51. #else
  52. PNP_SET_DEVICE_BASE(LDEV_POWRMAN, CONFIG_SYS_NS87308_PWMAN_BASE);
  53. /*
  54. * Enable all units
  55. */
  56. write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_FER1, 0x7d);
  57. write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_FER2, 0x87);
  58. #ifdef CONFIG_SYS_NS87308_PMC1
  59. write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC1, CONFIG_SYS_NS87308_PMC1);
  60. #endif
  61. #ifdef CONFIG_SYS_NS87308_PMC2
  62. write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC2, CONFIG_SYS_NS87308_PMC2);
  63. #endif
  64. #ifdef CONFIG_SYS_NS87308_PMC3
  65. write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC3, CONFIG_SYS_NS87308_PMC3);
  66. #endif
  67. #endif
  68. #endif
  69. #ifdef CONFIG_SYS_NS87308_CS0_BASE
  70. PNP_PGCS_CSLINE_BASE(0, CONFIG_SYS_NS87308_CS0_BASE);
  71. PNP_PGCS_CSLINE_CONF(0, CONFIG_SYS_NS87308_CS0_CONF);
  72. #endif
  73. #ifdef CONFIG_SYS_NS87308_CS1_BASE
  74. PNP_PGCS_CSLINE_BASE(1, CONFIG_SYS_NS87308_CS1_BASE);
  75. PNP_PGCS_CSLINE_CONF(1, CONFIG_SYS_NS87308_CS1_CONF);
  76. #endif
  77. #ifdef CONFIG_SYS_NS87308_CS2_BASE
  78. PNP_PGCS_CSLINE_BASE(2, CONFIG_SYS_NS87308_CS2_BASE);
  79. PNP_PGCS_CSLINE_CONF(2, CONFIG_SYS_NS87308_CS2_CONF);
  80. #endif
  81. }