xref: /rk3399_rockchip-uboot/drivers/misc/ns87308.c (revision 326ea986ac150acdc7656d57fca647db80b50158)
1318c0b90SJean-Christophe PLAGNIOL-VILLARD /*
2318c0b90SJean-Christophe PLAGNIOL-VILLARD  * (C) Copyright 2000
3318c0b90SJean-Christophe PLAGNIOL-VILLARD  * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
4318c0b90SJean-Christophe PLAGNIOL-VILLARD  *
5*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6318c0b90SJean-Christophe PLAGNIOL-VILLARD  */
7318c0b90SJean-Christophe PLAGNIOL-VILLARD 
8318c0b90SJean-Christophe PLAGNIOL-VILLARD #include <config.h>
9318c0b90SJean-Christophe PLAGNIOL-VILLARD 
10318c0b90SJean-Christophe PLAGNIOL-VILLARD #include <ns87308.h>
11318c0b90SJean-Christophe PLAGNIOL-VILLARD 
initialise_ns87308(void)12318c0b90SJean-Christophe PLAGNIOL-VILLARD void initialise_ns87308 (void)
13318c0b90SJean-Christophe PLAGNIOL-VILLARD {
146d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_PS2MOD
15318c0b90SJean-Christophe PLAGNIOL-VILLARD 	unsigned char data;
16318c0b90SJean-Christophe PLAGNIOL-VILLARD 
17318c0b90SJean-Christophe PLAGNIOL-VILLARD 	/*
18318c0b90SJean-Christophe PLAGNIOL-VILLARD 	 * Switch floppy drive to PS/2 mode.
19318c0b90SJean-Christophe PLAGNIOL-VILLARD 	 */
20318c0b90SJean-Christophe PLAGNIOL-VILLARD 	read_pnp_config(SUPOERIO_CONF1, &data);
21318c0b90SJean-Christophe PLAGNIOL-VILLARD 	data &= 0xFB;
22318c0b90SJean-Christophe PLAGNIOL-VILLARD 	write_pnp_config(SUPOERIO_CONF1, data);
23318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
24318c0b90SJean-Christophe PLAGNIOL-VILLARD 
256d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_KBC1)
266d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_KBC1, CONFIG_SYS_NS87308_KBC1_BASE);
27318c0b90SJean-Christophe PLAGNIOL-VILLARD 	write_pnp_config(LUN_CONFIG_REG, 0);
28318c0b90SJean-Christophe PLAGNIOL-VILLARD 	write_pnp_config(CBASE_HIGH, 0x00);
29318c0b90SJean-Christophe PLAGNIOL-VILLARD 	write_pnp_config(CBASE_LOW, 0x64);
30318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
31318c0b90SJean-Christophe PLAGNIOL-VILLARD 
326d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_MOUSE)
33318c0b90SJean-Christophe PLAGNIOL-VILLARD 	PNP_ACTIVATE_DEVICE(LDEV_MOUSE);
34318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
35318c0b90SJean-Christophe PLAGNIOL-VILLARD 
366d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_RTC_APC)
376d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_RTC_APC, CONFIG_SYS_NS87308_RTC_BASE);
38318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
39318c0b90SJean-Christophe PLAGNIOL-VILLARD 
406d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_FDC)
416d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_FDC, CONFIG_SYS_NS87308_FDC_BASE);
42318c0b90SJean-Christophe PLAGNIOL-VILLARD 	write_pnp_config(LUN_CONFIG_REG, 0x40);
43318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
44318c0b90SJean-Christophe PLAGNIOL-VILLARD 
456d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_RARP)
466d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_PARP, CONFIG_SYS_NS87308_LPT_BASE);
47318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
48318c0b90SJean-Christophe PLAGNIOL-VILLARD 
496d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_UART1)
506d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_UART1, CONFIG_SYS_NS87308_UART1_BASE);
51318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
52318c0b90SJean-Christophe PLAGNIOL-VILLARD 
536d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_UART2)
546d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_UART2, CONFIG_SYS_NS87308_UART2_BASE);
55318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
56318c0b90SJean-Christophe PLAGNIOL-VILLARD 
576d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_GPIO)
586d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_GPIO, CONFIG_SYS_NS87308_GPIO_BASE);
59318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
60318c0b90SJean-Christophe PLAGNIOL-VILLARD 
616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if (CONFIG_SYS_NS87308_DEVS & CONFIG_SYS_NS87308_POWRMAN)
626d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifndef CONFIG_SYS_NS87308_PWMAN_BASE
63318c0b90SJean-Christophe PLAGNIOL-VILLARD 	PNP_ACTIVATE_DEVICE(LDEV_POWRMAN);
64318c0b90SJean-Christophe PLAGNIOL-VILLARD #else
656d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_SET_DEVICE_BASE(LDEV_POWRMAN, CONFIG_SYS_NS87308_PWMAN_BASE);
66318c0b90SJean-Christophe PLAGNIOL-VILLARD 
67318c0b90SJean-Christophe PLAGNIOL-VILLARD 	/*
68318c0b90SJean-Christophe PLAGNIOL-VILLARD 	 * Enable all units
69318c0b90SJean-Christophe PLAGNIOL-VILLARD 	 */
706d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_FER1, 0x7d);
716d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_FER2, 0x87);
72318c0b90SJean-Christophe PLAGNIOL-VILLARD 
736d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_PMC1
746d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC1, CONFIG_SYS_NS87308_PMC1);
75318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
76318c0b90SJean-Christophe PLAGNIOL-VILLARD 
776d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_PMC2
786d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC2, CONFIG_SYS_NS87308_PMC2);
79318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
80318c0b90SJean-Christophe PLAGNIOL-VILLARD 
816d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_PMC3
826d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	write_pm_reg(CONFIG_SYS_NS87308_PWMAN_BASE, PWM_PMC3, CONFIG_SYS_NS87308_PMC3);
83318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
84318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
85318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
86318c0b90SJean-Christophe PLAGNIOL-VILLARD 
876d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_CS0_BASE
886d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_BASE(0, CONFIG_SYS_NS87308_CS0_BASE);
896d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_CONF(0, CONFIG_SYS_NS87308_CS0_CONF);
90318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
91318c0b90SJean-Christophe PLAGNIOL-VILLARD 
926d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_CS1_BASE
936d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_BASE(1, CONFIG_SYS_NS87308_CS1_BASE);
946d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_CONF(1, CONFIG_SYS_NS87308_CS1_CONF);
95318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
96318c0b90SJean-Christophe PLAGNIOL-VILLARD 
976d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_NS87308_CS2_BASE
986d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_BASE(2, CONFIG_SYS_NS87308_CS2_BASE);
996d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	PNP_PGCS_CSLINE_CONF(2, CONFIG_SYS_NS87308_CS2_CONF);
100318c0b90SJean-Christophe PLAGNIOL-VILLARD #endif
101318c0b90SJean-Christophe PLAGNIOL-VILLARD }
102