blob: 2a0a9e05a27de32688b1d6393ce918a3e3080e87 [file] [log] [blame]
Wolfgang Denk50440e72006-07-10 23:07:28 +02001/* -------------------------------------------------------------------- */
2/* RPX Boards from Embedded Planet */
3/* -------------------------------------------------------------------- */
4#include <common.h>
Wolfgang Denk31560d12006-07-21 15:24:56 +02005#ifdef CONFIG_8xx
Wolfgang Denk50440e72006-07-10 23:07:28 +02006#include <mpc8xx.h>
Wolfgang Denk31560d12006-07-21 15:24:56 +02007#endif
Wolfgang Denk50440e72006-07-10 23:07:28 +02008#include <pcmcia.h>
9
10#undef CONFIG_PCMCIA
11
12#if CONFIG_COMMANDS & CFG_CMD_PCMCIA
13#define CONFIG_PCMCIA
14#endif
15
16#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
17#define CONFIG_PCMCIA
18#endif
19
20#if defined(CONFIG_PCMCIA) \
21 && (defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE))
22
23#define PCMCIA_BOARD_MSG "RPX CLASSIC or RPX LITE"
24
25int pcmcia_voltage_set(int slot, int vcc, int vpp)
26{
27 u_long reg = 0;
28
29 switch(vcc) {
30 case 0: break;
31 case 33: reg |= BCSR1_PCVCTL4; break;
32 case 50: reg |= BCSR1_PCVCTL5; break;
33 default: return 1;
34 }
35
36 switch(vpp) {
37 case 0: break;
38 case 33:
39 case 50:
40 if(vcc == vpp)
41 reg |= BCSR1_PCVCTL6;
42 else
43 return 1;
44 break;
45 case 120:
46 reg |= BCSR1_PCVCTL7;
47 default: return 1;
48 }
49
50 /* first, turn off all power */
51 *((uint *)RPX_CSR_ADDR) &= ~(BCSR1_PCVCTL4 | BCSR1_PCVCTL5
52 | BCSR1_PCVCTL6 | BCSR1_PCVCTL7);
53
54 /* enable new powersettings */
55 *((uint *)RPX_CSR_ADDR) |= reg;
56
57 return 0;
58}
59
60int pcmcia_hardware_enable (int slot)
61{
62 return 0; /* No hardware to enable */
63}
64
65#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
66static int pcmcia_hardware_disable(int slot)
67{
68 return 0; /* No hardware to disable */
69}
70#endif /* CONFIG_COMMANDS & CFG_CMD_PCMCIA */
71
72
73#endif /* CONFIG_PCMCIA && (CONFIG_RPXCLASSIC || CONFIG_RPXLITE) */