]> git.ipfire.org Git - people/ms/u-boot.git/blame - board/fads/pcmcia.c
Merge commit 'wd/master'
[people/ms/u-boot.git] / board / fads / pcmcia.c
CommitLineData
9d407995
WD
1#include <common.h>
2#include <mpc8xx.h>
3#include <pcmcia.h>
4
5#undef CONFIG_PCMCIA
6
c508a4ce 7#if defined(CONFIG_CMD_PCMCIA)
9d407995
WD
8#define CONFIG_PCMCIA
9#endif
10
c508a4ce 11#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
9d407995
WD
12#define CONFIG_PCMCIA
13#endif
14
15#ifdef CONFIG_PCMCIA
16
17#ifdef CONFIG_ADS
18#define PCMCIA_BOARD_MSG "ADS"
19#else
20#define PCMCIA_BOARD_MSG "FADS"
21#endif
22
23int pcmcia_voltage_set(int slot, int vcc, int vpp)
24{
25 u_long reg = 0;
26
27 switch(vpp) {
28 case 0: reg = 0; break;
29 case 50: reg = 1; break;
30 case 120: reg = 2; break;
31 default: return 1;
32 }
33
34 switch(vcc) {
35 case 0: reg = 0; break;
36#ifdef CONFIG_ADS
37 case 50: reg = BCSR1_PCCVCCON; break;
38#endif
39#ifdef CONFIG_FADS
40 case 33: reg = BCSR1_PCCVCC0 | BCSR1_PCCVCC1; break;
41 case 50: reg = BCSR1_PCCVCC1; break;
42#endif
43 default: return 1;
44 }
45
46 /* first, turn off all power */
47
48#ifdef CONFIG_ADS
49 *((uint *)BCSR1) |= BCSR1_PCCVCCON;
50#endif
51#ifdef CONFIG_FADS
52 *((uint *)BCSR1) &= ~(BCSR1_PCCVCC0 | BCSR1_PCCVCC1);
53#endif
54 *((uint *)BCSR1) &= ~BCSR1_PCCVPP_MASK;
55
56 /* enable new powersettings */
57
58#ifdef CONFIG_ADS
59 *((uint *)BCSR1) &= ~reg;
60#endif
61#ifdef CONFIG_FADS
62 *((uint *)BCSR1) |= reg;
63#endif
64
53677ef1 65 *((uint *)BCSR1) |= reg << 20;
9d407995
WD
66
67 return 0;
68}
69
70int pcmcia_hardware_enable(int slot)
71{
72 *((uint *)BCSR1) &= ~BCSR1_PCCEN;
73 return 0;
74}
75
c508a4ce 76#if defined(CONFIG_CMD_PCMCIA)
9d407995
WD
77int pcmcia_hardware_disable(int slot)
78{
79 *((uint *)BCSR1) &= ~BCSR1_PCCEN;
80 return 0;
81}
c508a4ce 82#endif
9d407995
WD
83
84#endif /* CONFIG_PCMCIA */