ns87308.c 2.7 KB

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