aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-07-31 12:23:08 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-07-31 12:23:08 -0400
commitf33c596a2f921696391801b637ed50d514634079 (patch)
treeabc353fe3ef128e60e20a6b73f52858ce6d39eff /drivers/pcmcia
parent250f8e3db646028353a2a737ddb7a894c97a1098 (diff)
parent74411c04540404a1ff29d254584ef393e150aeda (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: smc91c92_cs.c: fix bogus compiler warning orinoco_cs: be more careful when matching cards with ID 0x0156:0x0002 hostap_cs: support cards with "Version 01.02" as third product ID pcmcia: add PCMCIA_DEVICE_MANF_CARD_PROD_ID3 pxa2xx pcmcia - stargate 2 use gpio array. pcmcia: pxa2xx: remove empty socket_init / socket_resume functions. drivers:pcmcia:soc_common: make socket_init and socket_suspend optional
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r--drivers/pcmcia/pxa2xx_balloon3.c10
-rw-r--r--drivers/pcmcia/pxa2xx_cm_x255.c11
-rw-r--r--drivers/pcmcia/pxa2xx_cm_x270.c11
-rw-r--r--drivers/pcmcia/pxa2xx_colibri.c11
-rw-r--r--drivers/pcmcia/pxa2xx_mainstone.c10
-rw-r--r--drivers/pcmcia/pxa2xx_palmld.c11
-rw-r--r--drivers/pcmcia/pxa2xx_palmtc.c11
-rw-r--r--drivers/pcmcia/pxa2xx_palmtx.c11
-rw-r--r--drivers/pcmcia/pxa2xx_stargate2.c34
-rw-r--r--drivers/pcmcia/pxa2xx_viper.c10
-rw-r--r--drivers/pcmcia/soc_common.c7
11 files changed, 15 insertions, 122 deletions
diff --git a/drivers/pcmcia/pxa2xx_balloon3.c b/drivers/pcmcia/pxa2xx_balloon3.c
index 4c3e94c0ae85..f56d7de7c751 100644
--- a/drivers/pcmcia/pxa2xx_balloon3.c
+++ b/drivers/pcmcia/pxa2xx_balloon3.c
@@ -103,22 +103,12 @@ static int balloon3_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
103 return 0; 103 return 0;
104} 104}
105 105
106static void balloon3_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
107{
108}
109
110static void balloon3_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
111{
112}
113
114static struct pcmcia_low_level balloon3_pcmcia_ops = { 106static struct pcmcia_low_level balloon3_pcmcia_ops = {
115 .owner = THIS_MODULE, 107 .owner = THIS_MODULE,
116 .hw_init = balloon3_pcmcia_hw_init, 108 .hw_init = balloon3_pcmcia_hw_init,
117 .hw_shutdown = balloon3_pcmcia_hw_shutdown, 109 .hw_shutdown = balloon3_pcmcia_hw_shutdown,
118 .socket_state = balloon3_pcmcia_socket_state, 110 .socket_state = balloon3_pcmcia_socket_state,
119 .configure_socket = balloon3_pcmcia_configure_socket, 111 .configure_socket = balloon3_pcmcia_configure_socket,
120 .socket_init = balloon3_pcmcia_socket_init,
121 .socket_suspend = balloon3_pcmcia_socket_suspend,
122 .first = 0, 112 .first = 0,
123 .nr = 1, 113 .nr = 1,
124}; 114};
diff --git a/drivers/pcmcia/pxa2xx_cm_x255.c b/drivers/pcmcia/pxa2xx_cm_x255.c
index 05913d0bbdbe..63f4d5211ed2 100644
--- a/drivers/pcmcia/pxa2xx_cm_x255.c
+++ b/drivers/pcmcia/pxa2xx_cm_x255.c
@@ -102,23 +102,12 @@ static int cmx255_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
102 return 0; 102 return 0;
103} 103}
104 104
105static void cmx255_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
106{
107}
108
109static void cmx255_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
110{
111}
112
113
114static struct pcmcia_low_level cmx255_pcmcia_ops __initdata = { 105static struct pcmcia_low_level cmx255_pcmcia_ops __initdata = {
115 .owner = THIS_MODULE, 106 .owner = THIS_MODULE,
116 .hw_init = cmx255_pcmcia_hw_init, 107 .hw_init = cmx255_pcmcia_hw_init,
117 .hw_shutdown = cmx255_pcmcia_shutdown, 108 .hw_shutdown = cmx255_pcmcia_shutdown,
118 .socket_state = cmx255_pcmcia_socket_state, 109 .socket_state = cmx255_pcmcia_socket_state,
119 .configure_socket = cmx255_pcmcia_configure_socket, 110 .configure_socket = cmx255_pcmcia_configure_socket,
120 .socket_init = cmx255_pcmcia_socket_init,
121 .socket_suspend = cmx255_pcmcia_socket_suspend,
122 .nr = 1, 111 .nr = 1,
123}; 112};
124 113
diff --git a/drivers/pcmcia/pxa2xx_cm_x270.c b/drivers/pcmcia/pxa2xx_cm_x270.c
index 5662646b84da..6ee42b4c3e68 100644
--- a/drivers/pcmcia/pxa2xx_cm_x270.c
+++ b/drivers/pcmcia/pxa2xx_cm_x270.c
@@ -82,23 +82,12 @@ static int cmx270_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
82 return 0; 82 return 0;
83} 83}
84 84
85static void cmx270_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
86{
87}
88
89static void cmx270_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
90{
91}
92
93
94static struct pcmcia_low_level cmx270_pcmcia_ops __initdata = { 85static struct pcmcia_low_level cmx270_pcmcia_ops __initdata = {
95 .owner = THIS_MODULE, 86 .owner = THIS_MODULE,
96 .hw_init = cmx270_pcmcia_hw_init, 87 .hw_init = cmx270_pcmcia_hw_init,
97 .hw_shutdown = cmx270_pcmcia_shutdown, 88 .hw_shutdown = cmx270_pcmcia_shutdown,
98 .socket_state = cmx270_pcmcia_socket_state, 89 .socket_state = cmx270_pcmcia_socket_state,
99 .configure_socket = cmx270_pcmcia_configure_socket, 90 .configure_socket = cmx270_pcmcia_configure_socket,
100 .socket_init = cmx270_pcmcia_socket_init,
101 .socket_suspend = cmx270_pcmcia_socket_suspend,
102 .nr = 1, 91 .nr = 1,
103}; 92};
104 93
diff --git a/drivers/pcmcia/pxa2xx_colibri.c b/drivers/pcmcia/pxa2xx_colibri.c
index 443cb7fc872d..c6dec572a05d 100644
--- a/drivers/pcmcia/pxa2xx_colibri.c
+++ b/drivers/pcmcia/pxa2xx_colibri.c
@@ -116,14 +116,6 @@ colibri_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
116 return 0; 116 return 0;
117} 117}
118 118
119static void colibri_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
120{
121}
122
123static void colibri_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
124{
125}
126
127static struct pcmcia_low_level colibri_pcmcia_ops = { 119static struct pcmcia_low_level colibri_pcmcia_ops = {
128 .owner = THIS_MODULE, 120 .owner = THIS_MODULE,
129 121
@@ -135,9 +127,6 @@ static struct pcmcia_low_level colibri_pcmcia_ops = {
135 127
136 .socket_state = colibri_pcmcia_socket_state, 128 .socket_state = colibri_pcmcia_socket_state,
137 .configure_socket = colibri_pcmcia_configure_socket, 129 .configure_socket = colibri_pcmcia_configure_socket,
138
139 .socket_init = colibri_pcmcia_socket_init,
140 .socket_suspend = colibri_pcmcia_socket_suspend,
141}; 130};
142 131
143static struct platform_device *colibri_pcmcia_device; 132static struct platform_device *colibri_pcmcia_device;
diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c
index 92016fe932b4..aded706c0b9f 100644
--- a/drivers/pcmcia/pxa2xx_mainstone.c
+++ b/drivers/pcmcia/pxa2xx_mainstone.c
@@ -128,22 +128,12 @@ static int mst_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
128 return ret; 128 return ret;
129} 129}
130 130
131static void mst_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
132{
133}
134
135static void mst_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
136{
137}
138
139static struct pcmcia_low_level mst_pcmcia_ops __initdata = { 131static struct pcmcia_low_level mst_pcmcia_ops __initdata = {
140 .owner = THIS_MODULE, 132 .owner = THIS_MODULE,
141 .hw_init = mst_pcmcia_hw_init, 133 .hw_init = mst_pcmcia_hw_init,
142 .hw_shutdown = mst_pcmcia_hw_shutdown, 134 .hw_shutdown = mst_pcmcia_hw_shutdown,
143 .socket_state = mst_pcmcia_socket_state, 135 .socket_state = mst_pcmcia_socket_state,
144 .configure_socket = mst_pcmcia_configure_socket, 136 .configure_socket = mst_pcmcia_configure_socket,
145 .socket_init = mst_pcmcia_socket_init,
146 .socket_suspend = mst_pcmcia_socket_suspend,
147 .nr = 2, 137 .nr = 2,
148}; 138};
149 139
diff --git a/drivers/pcmcia/pxa2xx_palmld.c b/drivers/pcmcia/pxa2xx_palmld.c
index 69f73670949a..d589ad1dcd4c 100644
--- a/drivers/pcmcia/pxa2xx_palmld.c
+++ b/drivers/pcmcia/pxa2xx_palmld.c
@@ -65,14 +65,6 @@ static int palmld_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
65 return 0; 65 return 0;
66} 66}
67 67
68static void palmld_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
69{
70}
71
72static void palmld_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
73{
74}
75
76static struct pcmcia_low_level palmld_pcmcia_ops = { 68static struct pcmcia_low_level palmld_pcmcia_ops = {
77 .owner = THIS_MODULE, 69 .owner = THIS_MODULE,
78 70
@@ -84,9 +76,6 @@ static struct pcmcia_low_level palmld_pcmcia_ops = {
84 76
85 .socket_state = palmld_pcmcia_socket_state, 77 .socket_state = palmld_pcmcia_socket_state,
86 .configure_socket = palmld_pcmcia_configure_socket, 78 .configure_socket = palmld_pcmcia_configure_socket,
87
88 .socket_init = palmld_pcmcia_socket_init,
89 .socket_suspend = palmld_pcmcia_socket_suspend,
90}; 79};
91 80
92static struct platform_device *palmld_pcmcia_device; 81static struct platform_device *palmld_pcmcia_device;
diff --git a/drivers/pcmcia/pxa2xx_palmtc.c b/drivers/pcmcia/pxa2xx_palmtc.c
index d0ad6a76bbde..9c6a04b2f71b 100644
--- a/drivers/pcmcia/pxa2xx_palmtc.c
+++ b/drivers/pcmcia/pxa2xx_palmtc.c
@@ -117,14 +117,6 @@ static int palmtc_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
117 return ret; 117 return ret;
118} 118}
119 119
120static void palmtc_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
121{
122}
123
124static void palmtc_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
125{
126}
127
128static struct pcmcia_low_level palmtc_pcmcia_ops = { 120static struct pcmcia_low_level palmtc_pcmcia_ops = {
129 .owner = THIS_MODULE, 121 .owner = THIS_MODULE,
130 122
@@ -136,9 +128,6 @@ static struct pcmcia_low_level palmtc_pcmcia_ops = {
136 128
137 .socket_state = palmtc_pcmcia_socket_state, 129 .socket_state = palmtc_pcmcia_socket_state,
138 .configure_socket = palmtc_pcmcia_configure_socket, 130 .configure_socket = palmtc_pcmcia_configure_socket,
139
140 .socket_init = palmtc_pcmcia_socket_init,
141 .socket_suspend = palmtc_pcmcia_socket_suspend,
142}; 131};
143 132
144static struct platform_device *palmtc_pcmcia_device; 133static struct platform_device *palmtc_pcmcia_device;
diff --git a/drivers/pcmcia/pxa2xx_palmtx.c b/drivers/pcmcia/pxa2xx_palmtx.c
index 1a2580450402..80645a688ee3 100644
--- a/drivers/pcmcia/pxa2xx_palmtx.c
+++ b/drivers/pcmcia/pxa2xx_palmtx.c
@@ -67,14 +67,6 @@ palmtx_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
67 return 0; 67 return 0;
68} 68}
69 69
70static void palmtx_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
71{
72}
73
74static void palmtx_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
75{
76}
77
78static struct pcmcia_low_level palmtx_pcmcia_ops = { 70static struct pcmcia_low_level palmtx_pcmcia_ops = {
79 .owner = THIS_MODULE, 71 .owner = THIS_MODULE,
80 72
@@ -86,9 +78,6 @@ static struct pcmcia_low_level palmtx_pcmcia_ops = {
86 78
87 .socket_state = palmtx_pcmcia_socket_state, 79 .socket_state = palmtx_pcmcia_socket_state,
88 .configure_socket = palmtx_pcmcia_configure_socket, 80 .configure_socket = palmtx_pcmcia_configure_socket,
89
90 .socket_init = palmtx_pcmcia_socket_init,
91 .socket_suspend = palmtx_pcmcia_socket_suspend,
92}; 81};
93 82
94static struct platform_device *palmtx_pcmcia_device; 83static struct platform_device *palmtx_pcmcia_device;
diff --git a/drivers/pcmcia/pxa2xx_stargate2.c b/drivers/pcmcia/pxa2xx_stargate2.c
index d08802fe35f9..939622251dfb 100644
--- a/drivers/pcmcia/pxa2xx_stargate2.c
+++ b/drivers/pcmcia/pxa2xx_stargate2.c
@@ -28,7 +28,6 @@
28 28
29#include "soc_common.h" 29#include "soc_common.h"
30 30
31#define SG2_S0_BUFF_CTL 120
32#define SG2_S0_POWER_CTL 108 31#define SG2_S0_POWER_CTL 108
33#define SG2_S0_GPIO_RESET 82 32#define SG2_S0_GPIO_RESET 82
34#define SG2_S0_GPIO_DETECT 53 33#define SG2_S0_GPIO_DETECT 53
@@ -38,6 +37,11 @@ static struct pcmcia_irqs irqs[] = {
38 { 0, IRQ_GPIO(SG2_S0_GPIO_DETECT), "PCMCIA0 CD" }, 37 { 0, IRQ_GPIO(SG2_S0_GPIO_DETECT), "PCMCIA0 CD" },
39}; 38};
40 39
40static struct gpio sg2_pcmcia_gpios[] = {
41 { SG2_S0_GPIO_RESET, GPIOF_OUT_INIT_HIGH, "PCMCIA Reset" },
42 { SG2_S0_POWER_CTL, GPIOF_OUT_INIT_HIGH, "PCMCIA Power Ctrl" },
43};
44
41static int sg2_pcmcia_hw_init(struct soc_pcmcia_socket *skt) 45static int sg2_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
42{ 46{
43 skt->socket.pci_irq = IRQ_GPIO(SG2_S0_GPIO_READY); 47 skt->socket.pci_irq = IRQ_GPIO(SG2_S0_GPIO_READY);
@@ -122,37 +126,23 @@ static int __init sg2_pcmcia_init(void)
122 if (!sg2_pcmcia_device) 126 if (!sg2_pcmcia_device)
123 return -ENOMEM; 127 return -ENOMEM;
124 128
125 ret = gpio_request(SG2_S0_BUFF_CTL, "SG2 CF buff ctl"); 129 ret = gpio_request_array(sg2_pcmcia_gpios, ARRAY_SIZE(sg2_pcmcia_gpios));
126 if (ret) 130 if (ret)
127 goto error_put_platform_device; 131 goto error_put_platform_device;
128 ret = gpio_request(SG2_S0_POWER_CTL, "SG2 CF power ctl");
129 if (ret)
130 goto error_free_gpio_buff_ctl;
131 ret = gpio_request(SG2_S0_GPIO_RESET, "SG2 CF reset");
132 if (ret)
133 goto error_free_gpio_power_ctl;
134 /* Set gpio directions */
135 gpio_direction_output(SG2_S0_BUFF_CTL, 0);
136 gpio_direction_output(SG2_S0_POWER_CTL, 1);
137 gpio_direction_output(SG2_S0_GPIO_RESET, 1);
138 132
139 ret = platform_device_add_data(sg2_pcmcia_device, 133 ret = platform_device_add_data(sg2_pcmcia_device,
140 &sg2_pcmcia_ops, 134 &sg2_pcmcia_ops,
141 sizeof(sg2_pcmcia_ops)); 135 sizeof(sg2_pcmcia_ops));
142 if (ret) 136 if (ret)
143 goto error_free_gpio_reset; 137 goto error_free_gpios;
144 138
145 ret = platform_device_add(sg2_pcmcia_device); 139 ret = platform_device_add(sg2_pcmcia_device);
146 if (ret) 140 if (ret)
147 goto error_free_gpio_reset; 141 goto error_free_gpios;
148 142
149 return 0; 143 return 0;
150error_free_gpio_reset: 144error_free_gpios:
151 gpio_free(SG2_S0_GPIO_RESET); 145 gpio_free_array(sg2_pcmcia_gpios, ARRAY_SIZE(sg2_pcmcia_gpios));
152error_free_gpio_power_ctl:
153 gpio_free(SG2_S0_POWER_CTL);
154error_free_gpio_buff_ctl:
155 gpio_free(SG2_S0_BUFF_CTL);
156error_put_platform_device: 146error_put_platform_device:
157 platform_device_put(sg2_pcmcia_device); 147 platform_device_put(sg2_pcmcia_device);
158 148
@@ -162,9 +152,7 @@ error_put_platform_device:
162static void __exit sg2_pcmcia_exit(void) 152static void __exit sg2_pcmcia_exit(void)
163{ 153{
164 platform_device_unregister(sg2_pcmcia_device); 154 platform_device_unregister(sg2_pcmcia_device);
165 gpio_free(SG2_S0_BUFF_CTL); 155 gpio_free_array(sg2_pcmcia_gpios, ARRAY_SIZE(sg2_pcmcia_gpios));
166 gpio_free(SG2_S0_POWER_CTL);
167 gpio_free(SG2_S0_GPIO_RESET);
168} 156}
169 157
170fs_initcall(sg2_pcmcia_init); 158fs_initcall(sg2_pcmcia_init);
diff --git a/drivers/pcmcia/pxa2xx_viper.c b/drivers/pcmcia/pxa2xx_viper.c
index a51f2077644a..1064b1c2869d 100644
--- a/drivers/pcmcia/pxa2xx_viper.c
+++ b/drivers/pcmcia/pxa2xx_viper.c
@@ -136,22 +136,12 @@ static int viper_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
136 return 0; 136 return 0;
137} 137}
138 138
139static void viper_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
140{
141}
142
143static void viper_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
144{
145}
146
147static struct pcmcia_low_level viper_pcmcia_ops = { 139static struct pcmcia_low_level viper_pcmcia_ops = {
148 .owner = THIS_MODULE, 140 .owner = THIS_MODULE,
149 .hw_init = viper_pcmcia_hw_init, 141 .hw_init = viper_pcmcia_hw_init,
150 .hw_shutdown = viper_pcmcia_hw_shutdown, 142 .hw_shutdown = viper_pcmcia_hw_shutdown,
151 .socket_state = viper_pcmcia_socket_state, 143 .socket_state = viper_pcmcia_socket_state,
152 .configure_socket = viper_pcmcia_configure_socket, 144 .configure_socket = viper_pcmcia_configure_socket,
153 .socket_init = viper_pcmcia_socket_init,
154 .socket_suspend = viper_pcmcia_socket_suspend,
155 .nr = 1, 145 .nr = 1,
156}; 146};
157 147
diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c
index 768f9572a8c8..a0a9c2aa8d78 100644
--- a/drivers/pcmcia/soc_common.c
+++ b/drivers/pcmcia/soc_common.c
@@ -186,8 +186,8 @@ static int soc_common_pcmcia_sock_init(struct pcmcia_socket *sock)
186 struct soc_pcmcia_socket *skt = to_soc_pcmcia_socket(sock); 186 struct soc_pcmcia_socket *skt = to_soc_pcmcia_socket(sock);
187 187
188 debug(skt, 2, "initializing socket\n"); 188 debug(skt, 2, "initializing socket\n");
189 189 if (skt->ops->socket_init)
190 skt->ops->socket_init(skt); 190 skt->ops->socket_init(skt);
191 return 0; 191 return 0;
192} 192}
193 193
@@ -207,7 +207,8 @@ static int soc_common_pcmcia_suspend(struct pcmcia_socket *sock)
207 207
208 debug(skt, 2, "suspending socket\n"); 208 debug(skt, 2, "suspending socket\n");
209 209
210 skt->ops->socket_suspend(skt); 210 if (skt->ops->socket_suspend)
211 skt->ops->socket_suspend(skt);
211 212
212 return 0; 213 return 0;
213} 214}