aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/sa1100_jornada720.c
diff options
context:
space:
mode:
authorRussell King - ARM Linux <linux@arm.linux.org.uk>2009-03-29 14:42:44 -0400
committerDominik Brodowski <linux@dominikbrodowski.net>2009-11-09 02:30:11 -0500
commit701a5dc05ad99a06958b3f97cb69d99b47cebee3 (patch)
treef91ab0cb2179fa771dfb3c9929bc09c7580ec3f8 /drivers/pcmcia/sa1100_jornada720.c
parentda4f007375197d6683461b995d404b01a7fdf2f5 (diff)
PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/pcmcia/sa1100_jornada720.c')
-rw-r--r--drivers/pcmcia/sa1100_jornada720.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/pcmcia/sa1100_jornada720.c b/drivers/pcmcia/sa1100_jornada720.c
index 7eedb42f800c..4a32f4f1a717 100644
--- a/drivers/pcmcia/sa1100_jornada720.c
+++ b/drivers/pcmcia/sa1100_jornada720.c
@@ -24,6 +24,7 @@
24 24
25static int jornada720_pcmcia_hw_init(struct soc_pcmcia_socket *skt) 25static int jornada720_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
26{ 26{
27 struct sa1111_pcmcia_socket *s = to_skt(skt);
27 unsigned int pin = GPIO_A0 | GPIO_A1 | GPIO_A2 | GPIO_A3; 28 unsigned int pin = GPIO_A0 | GPIO_A1 | GPIO_A2 | GPIO_A3;
28 29
29 /* 30 /*
@@ -31,9 +32,9 @@ static int jornada720_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
31 */ 32 */
32 GRER |= 0x00000002; 33 GRER |= 0x00000002;
33 /* Set GPIO_A<3:1> to be outputs for PCMCIA/CF power controller: */ 34 /* Set GPIO_A<3:1> to be outputs for PCMCIA/CF power controller: */
34 sa1111_set_io_dir(SA1111_DEV(skt->dev), pin, 0, 0); 35 sa1111_set_io_dir(s->dev, pin, 0, 0);
35 sa1111_set_io(SA1111_DEV(skt->dev), pin, 0); 36 sa1111_set_io(s->dev, pin, 0);
36 sa1111_set_sleep_io(SA1111_DEV(skt->dev), pin, 0); 37 sa1111_set_sleep_io(s->dev, pin, 0);
37 38
38 return sa1111_pcmcia_hw_init(skt); 39 return sa1111_pcmcia_hw_init(skt);
39} 40}
@@ -41,6 +42,7 @@ static int jornada720_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
41static int 42static int
42jornada720_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, const socket_state_t *state) 43jornada720_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, const socket_state_t *state)
43{ 44{
45 struct sa1111_pcmcia_socket *s = to_skt(skt);
44 unsigned int pa_dwr_mask, pa_dwr_set; 46 unsigned int pa_dwr_mask, pa_dwr_set;
45 int ret; 47 int ret;
46 48
@@ -97,7 +99,7 @@ jornada720_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, const socket_s
97 unsigned long flags; 99 unsigned long flags;
98 100
99 local_irq_save(flags); 101 local_irq_save(flags);
100 sa1111_set_io(SA1111_DEV(skt->dev), pa_dwr_mask, pa_dwr_set); 102 sa1111_set_io(s->dev, pa_dwr_mask, pa_dwr_set);
101 local_irq_restore(flags); 103 local_irq_restore(flags);
102 } 104 }
103 105
@@ -113,14 +115,20 @@ static struct pcmcia_low_level jornada720_pcmcia_ops = {
113 115
114 .socket_init = sa1111_pcmcia_socket_init, 116 .socket_init = sa1111_pcmcia_socket_init,
115 .socket_suspend = sa1111_pcmcia_socket_suspend, 117 .socket_suspend = sa1111_pcmcia_socket_suspend,
118
119 .first = 0,
120 .nr = 2,
116}; 121};
117 122
118int __devinit pcmcia_jornada720_init(struct device *dev) 123int __devinit pcmcia_jornada720_init(struct device *dev)
119{ 124{
120 int ret = -ENODEV; 125 int ret = -ENODEV;
121 126
122 if (machine_is_jornada720()) 127 if (machine_is_jornada720()) {
123 ret = sa11xx_drv_pcmcia_probe(dev, &jornada720_pcmcia_ops, 0, 2); 128 sa11xx_drv_pcmcia_ops(&jornada720_pcmcia_ops);
129 ret = sa1111_pcmcia_add(dev, &jornada720_pcmcia_ops,
130 sa11xx_drv_pcmcia_add_one);
131 }
124 132
125 return ret; 133 return ret;
126} 134}