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