diff options
Diffstat (limited to 'drivers/scsi/pcmcia')
-rw-r--r-- | drivers/scsi/pcmcia/aha152x_stub.c | 49 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/fdomain_stub.c | 46 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/nsp_cs.c | 50 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/nsp_cs.h | 6 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/qlogic_stub.c | 54 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/sym53c500_cs.c | 45 |
6 files changed, 111 insertions, 139 deletions
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index 0c196fbb3121..21c6b1014535 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c | |||
@@ -94,24 +94,23 @@ typedef struct scsi_info_t { | |||
94 | struct Scsi_Host *host; | 94 | struct Scsi_Host *host; |
95 | } scsi_info_t; | 95 | } scsi_info_t; |
96 | 96 | ||
97 | static void aha152x_release_cs(dev_link_t *link); | 97 | static void aha152x_release_cs(struct pcmcia_device *link); |
98 | static void aha152x_detach(struct pcmcia_device *p_dev); | 98 | static void aha152x_detach(struct pcmcia_device *p_dev); |
99 | static void aha152x_config_cs(dev_link_t *link); | 99 | static void aha152x_config_cs(struct pcmcia_device *link); |
100 | 100 | ||
101 | static dev_link_t *dev_list; | 101 | static struct pcmcia_device *dev_list; |
102 | 102 | ||
103 | static int aha152x_attach(struct pcmcia_device *p_dev) | 103 | static int aha152x_attach(struct pcmcia_device *link) |
104 | { | 104 | { |
105 | scsi_info_t *info; | 105 | scsi_info_t *info; |
106 | dev_link_t *link = dev_to_instance(p_dev); | 106 | |
107 | |||
108 | DEBUG(0, "aha152x_attach()\n"); | 107 | DEBUG(0, "aha152x_attach()\n"); |
109 | 108 | ||
110 | /* Create new SCSI device */ | 109 | /* Create new SCSI device */ |
111 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 110 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
112 | if (!info) return -ENOMEM; | 111 | if (!info) return -ENOMEM; |
113 | memset(info, 0, sizeof(*info)); | 112 | memset(info, 0, sizeof(*info)); |
114 | info->p_dev = p_dev; | 113 | info->p_dev = link; |
115 | link->priv = info; | 114 | link->priv = info; |
116 | 115 | ||
117 | link->io.NumPorts1 = 0x20; | 116 | link->io.NumPorts1 = 0x20; |
@@ -131,10 +130,8 @@ static int aha152x_attach(struct pcmcia_device *p_dev) | |||
131 | 130 | ||
132 | /*====================================================================*/ | 131 | /*====================================================================*/ |
133 | 132 | ||
134 | static void aha152x_detach(struct pcmcia_device *p_dev) | 133 | static void aha152x_detach(struct pcmcia_device *link) |
135 | { | 134 | { |
136 | dev_link_t *link = dev_to_instance(p_dev); | ||
137 | |||
138 | DEBUG(0, "aha152x_detach(0x%p)\n", link); | 135 | DEBUG(0, "aha152x_detach(0x%p)\n", link); |
139 | 136 | ||
140 | if (link->state & DEV_CONFIG) | 137 | if (link->state & DEV_CONFIG) |
@@ -149,9 +146,8 @@ static void aha152x_detach(struct pcmcia_device *p_dev) | |||
149 | #define CS_CHECK(fn, ret) \ | 146 | #define CS_CHECK(fn, ret) \ |
150 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 147 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
151 | 148 | ||
152 | static void aha152x_config_cs(dev_link_t *link) | 149 | static void aha152x_config_cs(struct pcmcia_device *link) |
153 | { | 150 | { |
154 | client_handle_t handle = link->handle; | ||
155 | scsi_info_t *info = link->priv; | 151 | scsi_info_t *info = link->priv; |
156 | struct aha152x_setup s; | 152 | struct aha152x_setup s; |
157 | tuple_t tuple; | 153 | tuple_t tuple; |
@@ -166,19 +162,19 @@ static void aha152x_config_cs(dev_link_t *link) | |||
166 | tuple.TupleData = tuple_data; | 162 | tuple.TupleData = tuple_data; |
167 | tuple.TupleDataMax = 64; | 163 | tuple.TupleDataMax = 64; |
168 | tuple.TupleOffset = 0; | 164 | tuple.TupleOffset = 0; |
169 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 165 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
170 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 166 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
171 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 167 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
172 | link->conf.ConfigBase = parse.config.base; | 168 | link->conf.ConfigBase = parse.config.base; |
173 | 169 | ||
174 | /* Configure card */ | 170 | /* Configure card */ |
175 | link->state |= DEV_CONFIG; | 171 | link->state |= DEV_CONFIG; |
176 | 172 | ||
177 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 173 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
178 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 174 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
179 | while (1) { | 175 | while (1) { |
180 | if (pcmcia_get_tuple_data(handle, &tuple) != 0 || | 176 | if (pcmcia_get_tuple_data(link, &tuple) != 0 || |
181 | pcmcia_parse_tuple(handle, &tuple, &parse) != 0) | 177 | pcmcia_parse_tuple(link, &tuple, &parse) != 0) |
182 | goto next_entry; | 178 | goto next_entry; |
183 | /* For New Media T&J, look for a SCSI window */ | 179 | /* For New Media T&J, look for a SCSI window */ |
184 | if (parse.cftable_entry.io.win[0].len >= 0x20) | 180 | if (parse.cftable_entry.io.win[0].len >= 0x20) |
@@ -189,15 +185,15 @@ static void aha152x_config_cs(dev_link_t *link) | |||
189 | if ((parse.cftable_entry.io.nwin > 0) && | 185 | if ((parse.cftable_entry.io.nwin > 0) && |
190 | (link->io.BasePort1 < 0xffff)) { | 186 | (link->io.BasePort1 < 0xffff)) { |
191 | link->conf.ConfigIndex = parse.cftable_entry.index; | 187 | link->conf.ConfigIndex = parse.cftable_entry.index; |
192 | i = pcmcia_request_io(handle, &link->io); | 188 | i = pcmcia_request_io(link, &link->io); |
193 | if (i == CS_SUCCESS) break; | 189 | if (i == CS_SUCCESS) break; |
194 | } | 190 | } |
195 | next_entry: | 191 | next_entry: |
196 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); | 192 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); |
197 | } | 193 | } |
198 | 194 | ||
199 | CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); | 195 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
200 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 196 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
201 | 197 | ||
202 | /* Set configuration options for the aha152x driver */ | 198 | /* Set configuration options for the aha152x driver */ |
203 | memset(&s, 0, sizeof(s)); | 199 | memset(&s, 0, sizeof(s)); |
@@ -226,22 +222,21 @@ static void aha152x_config_cs(dev_link_t *link) | |||
226 | return; | 222 | return; |
227 | 223 | ||
228 | cs_failed: | 224 | cs_failed: |
229 | cs_error(link->handle, last_fn, last_ret); | 225 | cs_error(link, last_fn, last_ret); |
230 | aha152x_release_cs(link); | 226 | aha152x_release_cs(link); |
231 | return; | 227 | return; |
232 | } | 228 | } |
233 | 229 | ||
234 | static void aha152x_release_cs(dev_link_t *link) | 230 | static void aha152x_release_cs(struct pcmcia_device *link) |
235 | { | 231 | { |
236 | scsi_info_t *info = link->priv; | 232 | scsi_info_t *info = link->priv; |
237 | 233 | ||
238 | aha152x_release(info->host); | 234 | aha152x_release(info->host); |
239 | pcmcia_disable_device(link->handle); | 235 | pcmcia_disable_device(link); |
240 | } | 236 | } |
241 | 237 | ||
242 | static int aha152x_resume(struct pcmcia_device *dev) | 238 | static int aha152x_resume(struct pcmcia_device *link) |
243 | { | 239 | { |
244 | dev_link_t *link = dev_to_instance(dev); | ||
245 | scsi_info_t *info = link->priv; | 240 | scsi_info_t *info = link->priv; |
246 | 241 | ||
247 | aha152x_host_reset_host(info->host); | 242 | aha152x_host_reset_host(info->host); |
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c index 94dcee9f285a..4e6927112c05 100644 --- a/drivers/scsi/pcmcia/fdomain_stub.c +++ b/drivers/scsi/pcmcia/fdomain_stub.c | |||
@@ -79,14 +79,13 @@ typedef struct scsi_info_t { | |||
79 | } scsi_info_t; | 79 | } scsi_info_t; |
80 | 80 | ||
81 | 81 | ||
82 | static void fdomain_release(dev_link_t *link); | 82 | static void fdomain_release(struct pcmcia_device *link); |
83 | static void fdomain_detach(struct pcmcia_device *p_dev); | 83 | static void fdomain_detach(struct pcmcia_device *p_dev); |
84 | static void fdomain_config(dev_link_t *link); | 84 | static void fdomain_config(struct pcmcia_device *link); |
85 | 85 | ||
86 | static int fdomain_attach(struct pcmcia_device *p_dev) | 86 | static int fdomain_attach(struct pcmcia_device *link) |
87 | { | 87 | { |
88 | scsi_info_t *info; | 88 | scsi_info_t *info; |
89 | dev_link_t *link = dev_to_instance(p_dev); | ||
90 | 89 | ||
91 | DEBUG(0, "fdomain_attach()\n"); | 90 | DEBUG(0, "fdomain_attach()\n"); |
92 | 91 | ||
@@ -94,7 +93,7 @@ static int fdomain_attach(struct pcmcia_device *p_dev) | |||
94 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 93 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
95 | if (!info) return -ENOMEM; | 94 | if (!info) return -ENOMEM; |
96 | memset(info, 0, sizeof(*info)); | 95 | memset(info, 0, sizeof(*info)); |
97 | info->p_dev = p_dev; | 96 | info->p_dev = link; |
98 | link->priv = info; | 97 | link->priv = info; |
99 | link->io.NumPorts1 = 0x10; | 98 | link->io.NumPorts1 = 0x10; |
100 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 99 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |
@@ -113,10 +112,8 @@ static int fdomain_attach(struct pcmcia_device *p_dev) | |||
113 | 112 | ||
114 | /*====================================================================*/ | 113 | /*====================================================================*/ |
115 | 114 | ||
116 | static void fdomain_detach(struct pcmcia_device *p_dev) | 115 | static void fdomain_detach(struct pcmcia_device *link) |
117 | { | 116 | { |
118 | dev_link_t *link = dev_to_instance(p_dev); | ||
119 | |||
120 | DEBUG(0, "fdomain_detach(0x%p)\n", link); | 117 | DEBUG(0, "fdomain_detach(0x%p)\n", link); |
121 | 118 | ||
122 | if (link->state & DEV_CONFIG) | 119 | if (link->state & DEV_CONFIG) |
@@ -130,9 +127,8 @@ static void fdomain_detach(struct pcmcia_device *p_dev) | |||
130 | #define CS_CHECK(fn, ret) \ | 127 | #define CS_CHECK(fn, ret) \ |
131 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 128 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
132 | 129 | ||
133 | static void fdomain_config(dev_link_t *link) | 130 | static void fdomain_config(struct pcmcia_device *link) |
134 | { | 131 | { |
135 | client_handle_t handle = link->handle; | ||
136 | scsi_info_t *info = link->priv; | 132 | scsi_info_t *info = link->priv; |
137 | tuple_t tuple; | 133 | tuple_t tuple; |
138 | cisparse_t parse; | 134 | cisparse_t parse; |
@@ -147,30 +143,30 @@ static void fdomain_config(dev_link_t *link) | |||
147 | tuple.TupleData = tuple_data; | 143 | tuple.TupleData = tuple_data; |
148 | tuple.TupleDataMax = 64; | 144 | tuple.TupleDataMax = 64; |
149 | tuple.TupleOffset = 0; | 145 | tuple.TupleOffset = 0; |
150 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 146 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
151 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 147 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
152 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 148 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
153 | link->conf.ConfigBase = parse.config.base; | 149 | link->conf.ConfigBase = parse.config.base; |
154 | 150 | ||
155 | /* Configure card */ | 151 | /* Configure card */ |
156 | link->state |= DEV_CONFIG; | 152 | link->state |= DEV_CONFIG; |
157 | 153 | ||
158 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 154 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
159 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 155 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
160 | while (1) { | 156 | while (1) { |
161 | if (pcmcia_get_tuple_data(handle, &tuple) != 0 || | 157 | if (pcmcia_get_tuple_data(link, &tuple) != 0 || |
162 | pcmcia_parse_tuple(handle, &tuple, &parse) != 0) | 158 | pcmcia_parse_tuple(link, &tuple, &parse) != 0) |
163 | goto next_entry; | 159 | goto next_entry; |
164 | link->conf.ConfigIndex = parse.cftable_entry.index; | 160 | link->conf.ConfigIndex = parse.cftable_entry.index; |
165 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; | 161 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; |
166 | i = pcmcia_request_io(handle, &link->io); | 162 | i = pcmcia_request_io(link, &link->io); |
167 | if (i == CS_SUCCESS) break; | 163 | if (i == CS_SUCCESS) break; |
168 | next_entry: | 164 | next_entry: |
169 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); | 165 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); |
170 | } | 166 | } |
171 | 167 | ||
172 | CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); | 168 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
173 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 169 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
174 | 170 | ||
175 | /* A bad hack... */ | 171 | /* A bad hack... */ |
176 | release_region(link->io.BasePort1, link->io.NumPorts1); | 172 | release_region(link->io.BasePort1, link->io.NumPorts1); |
@@ -196,7 +192,7 @@ static void fdomain_config(dev_link_t *link) | |||
196 | return; | 192 | return; |
197 | 193 | ||
198 | cs_failed: | 194 | cs_failed: |
199 | cs_error(link->handle, last_fn, last_ret); | 195 | cs_error(link, last_fn, last_ret); |
200 | fdomain_release(link); | 196 | fdomain_release(link); |
201 | return; | 197 | return; |
202 | 198 | ||
@@ -204,23 +200,21 @@ cs_failed: | |||
204 | 200 | ||
205 | /*====================================================================*/ | 201 | /*====================================================================*/ |
206 | 202 | ||
207 | static void fdomain_release(dev_link_t *link) | 203 | static void fdomain_release(struct pcmcia_device *link) |
208 | { | 204 | { |
209 | scsi_info_t *info = link->priv; | 205 | scsi_info_t *info = link->priv; |
210 | 206 | ||
211 | DEBUG(0, "fdomain_release(0x%p)\n", link); | 207 | DEBUG(0, "fdomain_release(0x%p)\n", link); |
212 | 208 | ||
213 | scsi_remove_host(info->host); | 209 | scsi_remove_host(info->host); |
214 | pcmcia_disable_device(link->handle); | 210 | pcmcia_disable_device(link); |
215 | scsi_unregister(info->host); | 211 | scsi_unregister(info->host); |
216 | } | 212 | } |
217 | 213 | ||
218 | /*====================================================================*/ | 214 | /*====================================================================*/ |
219 | 215 | ||
220 | static int fdomain_resume(struct pcmcia_device *dev) | 216 | static int fdomain_resume(struct pcmcia_device *link) |
221 | { | 217 | { |
222 | dev_link_t *link = dev_to_instance(dev); | ||
223 | |||
224 | if (link->state & DEV_CONFIG) | 218 | if (link->state & DEV_CONFIG) |
225 | fdomain_16x0_bus_reset(NULL); | 219 | fdomain_16x0_bus_reset(NULL); |
226 | 220 | ||
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index 23548fbf4898..ce4d7d868d27 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c | |||
@@ -1593,11 +1593,10 @@ static int nsp_eh_host_reset(Scsi_Cmnd *SCpnt) | |||
1593 | configure the card at this point -- we wait until we receive a | 1593 | configure the card at this point -- we wait until we receive a |
1594 | card insertion event. | 1594 | card insertion event. |
1595 | ======================================================================*/ | 1595 | ======================================================================*/ |
1596 | static int nsp_cs_attach(struct pcmcia_device *p_dev) | 1596 | static int nsp_cs_attach(struct pcmcia_device *link) |
1597 | { | 1597 | { |
1598 | scsi_info_t *info; | 1598 | scsi_info_t *info; |
1599 | nsp_hw_data *data = &nsp_data_base; | 1599 | nsp_hw_data *data = &nsp_data_base; |
1600 | dev_link_t *link = dev_to_instance(p_dev); | ||
1601 | 1600 | ||
1602 | nsp_dbg(NSP_DEBUG_INIT, "in"); | 1601 | nsp_dbg(NSP_DEBUG_INIT, "in"); |
1603 | 1602 | ||
@@ -1605,7 +1604,7 @@ static int nsp_cs_attach(struct pcmcia_device *p_dev) | |||
1605 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 1604 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
1606 | if (info == NULL) { return -ENOMEM; } | 1605 | if (info == NULL) { return -ENOMEM; } |
1607 | memset(info, 0, sizeof(*info)); | 1606 | memset(info, 0, sizeof(*info)); |
1608 | info->p_dev = p_dev; | 1607 | info->p_dev = link; |
1609 | link->priv = info; | 1608 | link->priv = info; |
1610 | data->ScsiInfo = info; | 1609 | data->ScsiInfo = info; |
1611 | 1610 | ||
@@ -1644,10 +1643,8 @@ static int nsp_cs_attach(struct pcmcia_device *p_dev) | |||
1644 | structures are freed. Otherwise, the structures will be freed | 1643 | structures are freed. Otherwise, the structures will be freed |
1645 | when the device is released. | 1644 | when the device is released. |
1646 | ======================================================================*/ | 1645 | ======================================================================*/ |
1647 | static void nsp_cs_detach(struct pcmcia_device *p_dev) | 1646 | static void nsp_cs_detach(struct pcmcia_device *link) |
1648 | { | 1647 | { |
1649 | dev_link_t *link = dev_to_instance(p_dev); | ||
1650 | |||
1651 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); | 1648 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); |
1652 | 1649 | ||
1653 | if (link->state & DEV_CONFIG) { | 1650 | if (link->state & DEV_CONFIG) { |
@@ -1668,9 +1665,8 @@ static void nsp_cs_detach(struct pcmcia_device *p_dev) | |||
1668 | #define CS_CHECK(fn, ret) \ | 1665 | #define CS_CHECK(fn, ret) \ |
1669 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 1666 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
1670 | /*====================================================================*/ | 1667 | /*====================================================================*/ |
1671 | static void nsp_cs_config(dev_link_t *link) | 1668 | static void nsp_cs_config(struct pcmcia_device *link) |
1672 | { | 1669 | { |
1673 | client_handle_t handle = link->handle; | ||
1674 | scsi_info_t *info = link->priv; | 1670 | scsi_info_t *info = link->priv; |
1675 | tuple_t tuple; | 1671 | tuple_t tuple; |
1676 | cisparse_t parse; | 1672 | cisparse_t parse; |
@@ -1694,9 +1690,9 @@ static void nsp_cs_config(dev_link_t *link) | |||
1694 | tuple.TupleData = tuple_data; | 1690 | tuple.TupleData = tuple_data; |
1695 | tuple.TupleDataMax = sizeof(tuple_data); | 1691 | tuple.TupleDataMax = sizeof(tuple_data); |
1696 | tuple.TupleOffset = 0; | 1692 | tuple.TupleOffset = 0; |
1697 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 1693 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
1698 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 1694 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
1699 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 1695 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
1700 | link->conf.ConfigBase = parse.config.base; | 1696 | link->conf.ConfigBase = parse.config.base; |
1701 | link->conf.Present = parse.config.rmask[0]; | 1697 | link->conf.Present = parse.config.rmask[0]; |
1702 | 1698 | ||
@@ -1704,15 +1700,15 @@ static void nsp_cs_config(dev_link_t *link) | |||
1704 | link->state |= DEV_CONFIG; | 1700 | link->state |= DEV_CONFIG; |
1705 | 1701 | ||
1706 | /* Look up the current Vcc */ | 1702 | /* Look up the current Vcc */ |
1707 | CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf)); | 1703 | CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &conf)); |
1708 | 1704 | ||
1709 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 1705 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
1710 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 1706 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
1711 | while (1) { | 1707 | while (1) { |
1712 | cistpl_cftable_entry_t *cfg = &(parse.cftable_entry); | 1708 | cistpl_cftable_entry_t *cfg = &(parse.cftable_entry); |
1713 | 1709 | ||
1714 | if (pcmcia_get_tuple_data(handle, &tuple) != 0 || | 1710 | if (pcmcia_get_tuple_data(link, &tuple) != 0 || |
1715 | pcmcia_parse_tuple(handle, &tuple, &parse) != 0) | 1711 | pcmcia_parse_tuple(link, &tuple, &parse) != 0) |
1716 | goto next_entry; | 1712 | goto next_entry; |
1717 | 1713 | ||
1718 | if (cfg->flags & CISTPL_CFTABLE_DEFAULT) { dflt = *cfg; } | 1714 | if (cfg->flags & CISTPL_CFTABLE_DEFAULT) { dflt = *cfg; } |
@@ -1768,7 +1764,7 @@ static void nsp_cs_config(dev_link_t *link) | |||
1768 | link->io.NumPorts2 = io->win[1].len; | 1764 | link->io.NumPorts2 = io->win[1].len; |
1769 | } | 1765 | } |
1770 | /* This reserves IO space but doesn't actually enable it */ | 1766 | /* This reserves IO space but doesn't actually enable it */ |
1771 | if (pcmcia_request_io(link->handle, &link->io) != 0) | 1767 | if (pcmcia_request_io(link, &link->io) != 0) |
1772 | goto next_entry; | 1768 | goto next_entry; |
1773 | } | 1769 | } |
1774 | 1770 | ||
@@ -1783,7 +1779,7 @@ static void nsp_cs_config(dev_link_t *link) | |||
1783 | req.Size = 0x1000; | 1779 | req.Size = 0x1000; |
1784 | } | 1780 | } |
1785 | req.AccessSpeed = 0; | 1781 | req.AccessSpeed = 0; |
1786 | if (pcmcia_request_window(&link->handle, &req, &link->win) != 0) | 1782 | if (pcmcia_request_window(&link, &req, &link->win) != 0) |
1787 | goto next_entry; | 1783 | goto next_entry; |
1788 | map.Page = 0; map.CardOffset = mem->win[0].card_addr; | 1784 | map.Page = 0; map.CardOffset = mem->win[0].card_addr; |
1789 | if (pcmcia_map_mem_page(link->win, &map) != 0) | 1785 | if (pcmcia_map_mem_page(link->win, &map) != 0) |
@@ -1797,14 +1793,14 @@ static void nsp_cs_config(dev_link_t *link) | |||
1797 | 1793 | ||
1798 | next_entry: | 1794 | next_entry: |
1799 | nsp_dbg(NSP_DEBUG_INIT, "next"); | 1795 | nsp_dbg(NSP_DEBUG_INIT, "next"); |
1800 | pcmcia_disable_device(handle); | 1796 | pcmcia_disable_device(link); |
1801 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); | 1797 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); |
1802 | } | 1798 | } |
1803 | 1799 | ||
1804 | if (link->conf.Attributes & CONF_ENABLE_IRQ) { | 1800 | if (link->conf.Attributes & CONF_ENABLE_IRQ) { |
1805 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); | 1801 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
1806 | } | 1802 | } |
1807 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 1803 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
1808 | 1804 | ||
1809 | if (free_ports) { | 1805 | if (free_ports) { |
1810 | if (link->io.BasePort1) { | 1806 | if (link->io.BasePort1) { |
@@ -1925,7 +1921,7 @@ static void nsp_cs_config(dev_link_t *link) | |||
1925 | 1921 | ||
1926 | cs_failed: | 1922 | cs_failed: |
1927 | nsp_dbg(NSP_DEBUG_INIT, "config fail"); | 1923 | nsp_dbg(NSP_DEBUG_INIT, "config fail"); |
1928 | cs_error(link->handle, last_fn, last_ret); | 1924 | cs_error(link, last_fn, last_ret); |
1929 | nsp_cs_release(link); | 1925 | nsp_cs_release(link); |
1930 | 1926 | ||
1931 | return; | 1927 | return; |
@@ -1938,7 +1934,7 @@ static void nsp_cs_config(dev_link_t *link) | |||
1938 | device, and release the PCMCIA configuration. If the device is | 1934 | device, and release the PCMCIA configuration. If the device is |
1939 | still open, this will be postponed until it is closed. | 1935 | still open, this will be postponed until it is closed. |
1940 | ======================================================================*/ | 1936 | ======================================================================*/ |
1941 | static void nsp_cs_release(dev_link_t *link) | 1937 | static void nsp_cs_release(struct pcmcia_device *link) |
1942 | { | 1938 | { |
1943 | scsi_info_t *info = link->priv; | 1939 | scsi_info_t *info = link->priv; |
1944 | nsp_hw_data *data = NULL; | 1940 | nsp_hw_data *data = NULL; |
@@ -1966,7 +1962,7 @@ static void nsp_cs_release(dev_link_t *link) | |||
1966 | iounmap((void *)(data->MmioAddress)); | 1962 | iounmap((void *)(data->MmioAddress)); |
1967 | } | 1963 | } |
1968 | } | 1964 | } |
1969 | pcmcia_disable_device(link->handle); | 1965 | pcmcia_disable_device(link); |
1970 | 1966 | ||
1971 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,2)) | 1967 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,2)) |
1972 | if (info->host != NULL) { | 1968 | if (info->host != NULL) { |
@@ -1975,9 +1971,8 @@ static void nsp_cs_release(dev_link_t *link) | |||
1975 | #endif | 1971 | #endif |
1976 | } /* nsp_cs_release */ | 1972 | } /* nsp_cs_release */ |
1977 | 1973 | ||
1978 | static int nsp_cs_suspend(struct pcmcia_device *dev) | 1974 | static int nsp_cs_suspend(struct pcmcia_device *link) |
1979 | { | 1975 | { |
1980 | dev_link_t *link = dev_to_instance(dev); | ||
1981 | scsi_info_t *info = link->priv; | 1976 | scsi_info_t *info = link->priv; |
1982 | nsp_hw_data *data; | 1977 | nsp_hw_data *data; |
1983 | 1978 | ||
@@ -1996,9 +1991,8 @@ static int nsp_cs_suspend(struct pcmcia_device *dev) | |||
1996 | return 0; | 1991 | return 0; |
1997 | } | 1992 | } |
1998 | 1993 | ||
1999 | static int nsp_cs_resume(struct pcmcia_device *dev) | 1994 | static int nsp_cs_resume(struct pcmcia_device *link) |
2000 | { | 1995 | { |
2001 | dev_link_t *link = dev_to_instance(dev); | ||
2002 | scsi_info_t *info = link->priv; | 1996 | scsi_info_t *info = link->priv; |
2003 | nsp_hw_data *data; | 1997 | nsp_hw_data *data; |
2004 | 1998 | ||
diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h index 2e1fde467c27..ce348b379f22 100644 --- a/drivers/scsi/pcmcia/nsp_cs.h +++ b/drivers/scsi/pcmcia/nsp_cs.h | |||
@@ -297,8 +297,8 @@ typedef struct _nsp_hw_data { | |||
297 | 297 | ||
298 | /* Card service functions */ | 298 | /* Card service functions */ |
299 | static void nsp_cs_detach (struct pcmcia_device *p_dev); | 299 | static void nsp_cs_detach (struct pcmcia_device *p_dev); |
300 | static void nsp_cs_release(dev_link_t *link); | 300 | static void nsp_cs_release(struct pcmcia_device *link); |
301 | static void nsp_cs_config (dev_link_t *link); | 301 | static void nsp_cs_config (struct pcmcia_device *link); |
302 | 302 | ||
303 | /* Linux SCSI subsystem specific functions */ | 303 | /* Linux SCSI subsystem specific functions */ |
304 | static struct Scsi_Host *nsp_detect (struct scsi_host_template *sht); | 304 | static struct Scsi_Host *nsp_detect (struct scsi_host_template *sht); |
@@ -450,7 +450,7 @@ static inline struct Scsi_Host *scsi_host_hn_get(unsigned short hostno) | |||
450 | return host; | 450 | return host; |
451 | } | 451 | } |
452 | 452 | ||
453 | static void cs_error(client_handle_t handle, int func, int ret) | 453 | static void cs_error(struct pcmcia_device *handle, int func, int ret) |
454 | { | 454 | { |
455 | error_info_t err = { func, ret }; | 455 | error_info_t err = { func, ret }; |
456 | pcmcia_report_error(handle, &err); | 456 | pcmcia_report_error(handle, &err); |
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index c6b3e9587ff3..a2a1c4b318e6 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c | |||
@@ -97,12 +97,12 @@ typedef struct scsi_info_t { | |||
97 | unsigned short manf_id; | 97 | unsigned short manf_id; |
98 | } scsi_info_t; | 98 | } scsi_info_t; |
99 | 99 | ||
100 | static void qlogic_release(dev_link_t *link); | 100 | static void qlogic_release(struct pcmcia_device *link); |
101 | static void qlogic_detach(struct pcmcia_device *p_dev); | 101 | static void qlogic_detach(struct pcmcia_device *p_dev); |
102 | static void qlogic_config(dev_link_t * link); | 102 | static void qlogic_config(struct pcmcia_device * link); |
103 | 103 | ||
104 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, | 104 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, |
105 | dev_link_t *link, int qbase, int qlirq) | 105 | struct pcmcia_device *link, int qbase, int qlirq) |
106 | { | 106 | { |
107 | int qltyp; /* type of chip */ | 107 | int qltyp; /* type of chip */ |
108 | int qinitid; | 108 | int qinitid; |
@@ -156,10 +156,9 @@ free_scsi_host: | |||
156 | err: | 156 | err: |
157 | return NULL; | 157 | return NULL; |
158 | } | 158 | } |
159 | static int qlogic_attach(struct pcmcia_device *p_dev) | 159 | static int qlogic_attach(struct pcmcia_device *link) |
160 | { | 160 | { |
161 | scsi_info_t *info; | 161 | scsi_info_t *info; |
162 | dev_link_t *link = dev_to_instance(p_dev); | ||
163 | 162 | ||
164 | DEBUG(0, "qlogic_attach()\n"); | 163 | DEBUG(0, "qlogic_attach()\n"); |
165 | 164 | ||
@@ -168,7 +167,7 @@ static int qlogic_attach(struct pcmcia_device *p_dev) | |||
168 | if (!info) | 167 | if (!info) |
169 | return -ENOMEM; | 168 | return -ENOMEM; |
170 | memset(info, 0, sizeof(*info)); | 169 | memset(info, 0, sizeof(*info)); |
171 | info->p_dev = p_dev; | 170 | info->p_dev = link; |
172 | link->priv = info; | 171 | link->priv = info; |
173 | link->io.NumPorts1 = 16; | 172 | link->io.NumPorts1 = 16; |
174 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 173 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |
@@ -187,10 +186,8 @@ static int qlogic_attach(struct pcmcia_device *p_dev) | |||
187 | 186 | ||
188 | /*====================================================================*/ | 187 | /*====================================================================*/ |
189 | 188 | ||
190 | static void qlogic_detach(struct pcmcia_device *p_dev) | 189 | static void qlogic_detach(struct pcmcia_device *link) |
191 | { | 190 | { |
192 | dev_link_t *link = dev_to_instance(p_dev); | ||
193 | |||
194 | DEBUG(0, "qlogic_detach(0x%p)\n", link); | 191 | DEBUG(0, "qlogic_detach(0x%p)\n", link); |
195 | 192 | ||
196 | if (link->state & DEV_CONFIG) | 193 | if (link->state & DEV_CONFIG) |
@@ -205,9 +202,8 @@ static void qlogic_detach(struct pcmcia_device *p_dev) | |||
205 | #define CS_CHECK(fn, ret) \ | 202 | #define CS_CHECK(fn, ret) \ |
206 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 203 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
207 | 204 | ||
208 | static void qlogic_config(dev_link_t * link) | 205 | static void qlogic_config(struct pcmcia_device * link) |
209 | { | 206 | { |
210 | client_handle_t handle = link->handle; | ||
211 | scsi_info_t *info = link->priv; | 207 | scsi_info_t *info = link->priv; |
212 | tuple_t tuple; | 208 | tuple_t tuple; |
213 | cisparse_t parse; | 209 | cisparse_t parse; |
@@ -221,38 +217,38 @@ static void qlogic_config(dev_link_t * link) | |||
221 | tuple.TupleDataMax = 64; | 217 | tuple.TupleDataMax = 64; |
222 | tuple.TupleOffset = 0; | 218 | tuple.TupleOffset = 0; |
223 | tuple.DesiredTuple = CISTPL_CONFIG; | 219 | tuple.DesiredTuple = CISTPL_CONFIG; |
224 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 220 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
225 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 221 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
226 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 222 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
227 | link->conf.ConfigBase = parse.config.base; | 223 | link->conf.ConfigBase = parse.config.base; |
228 | 224 | ||
229 | tuple.DesiredTuple = CISTPL_MANFID; | 225 | tuple.DesiredTuple = CISTPL_MANFID; |
230 | if ((pcmcia_get_first_tuple(handle, &tuple) == CS_SUCCESS) && (pcmcia_get_tuple_data(handle, &tuple) == CS_SUCCESS)) | 226 | if ((pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) && (pcmcia_get_tuple_data(link, &tuple) == CS_SUCCESS)) |
231 | info->manf_id = le16_to_cpu(tuple.TupleData[0]); | 227 | info->manf_id = le16_to_cpu(tuple.TupleData[0]); |
232 | 228 | ||
233 | /* Configure card */ | 229 | /* Configure card */ |
234 | link->state |= DEV_CONFIG; | 230 | link->state |= DEV_CONFIG; |
235 | 231 | ||
236 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 232 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
237 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 233 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
238 | while (1) { | 234 | while (1) { |
239 | if (pcmcia_get_tuple_data(handle, &tuple) != 0 || | 235 | if (pcmcia_get_tuple_data(link, &tuple) != 0 || |
240 | pcmcia_parse_tuple(handle, &tuple, &parse) != 0) | 236 | pcmcia_parse_tuple(link, &tuple, &parse) != 0) |
241 | goto next_entry; | 237 | goto next_entry; |
242 | link->conf.ConfigIndex = parse.cftable_entry.index; | 238 | link->conf.ConfigIndex = parse.cftable_entry.index; |
243 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; | 239 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; |
244 | link->io.NumPorts1 = parse.cftable_entry.io.win[0].len; | 240 | link->io.NumPorts1 = parse.cftable_entry.io.win[0].len; |
245 | if (link->io.BasePort1 != 0) { | 241 | if (link->io.BasePort1 != 0) { |
246 | i = pcmcia_request_io(handle, &link->io); | 242 | i = pcmcia_request_io(link, &link->io); |
247 | if (i == CS_SUCCESS) | 243 | if (i == CS_SUCCESS) |
248 | break; | 244 | break; |
249 | } | 245 | } |
250 | next_entry: | 246 | next_entry: |
251 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); | 247 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); |
252 | } | 248 | } |
253 | 249 | ||
254 | CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); | 250 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
255 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 251 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
256 | 252 | ||
257 | if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) { | 253 | if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) { |
258 | /* set ATAcmd */ | 254 | /* set ATAcmd */ |
@@ -283,15 +279,15 @@ out: | |||
283 | return; | 279 | return; |
284 | 280 | ||
285 | cs_failed: | 281 | cs_failed: |
286 | cs_error(link->handle, last_fn, last_ret); | 282 | cs_error(link, last_fn, last_ret); |
287 | pcmcia_disable_device(link->handle); | 283 | pcmcia_disable_device(link); |
288 | return; | 284 | return; |
289 | 285 | ||
290 | } /* qlogic_config */ | 286 | } /* qlogic_config */ |
291 | 287 | ||
292 | /*====================================================================*/ | 288 | /*====================================================================*/ |
293 | 289 | ||
294 | static void qlogic_release(dev_link_t *link) | 290 | static void qlogic_release(struct pcmcia_device *link) |
295 | { | 291 | { |
296 | scsi_info_t *info = link->priv; | 292 | scsi_info_t *info = link->priv; |
297 | 293 | ||
@@ -300,21 +296,19 @@ static void qlogic_release(dev_link_t *link) | |||
300 | scsi_remove_host(info->host); | 296 | scsi_remove_host(info->host); |
301 | 297 | ||
302 | free_irq(link->irq.AssignedIRQ, info->host); | 298 | free_irq(link->irq.AssignedIRQ, info->host); |
303 | pcmcia_disable_device(link->handle); | 299 | pcmcia_disable_device(link); |
304 | 300 | ||
305 | scsi_host_put(info->host); | 301 | scsi_host_put(info->host); |
306 | } | 302 | } |
307 | 303 | ||
308 | /*====================================================================*/ | 304 | /*====================================================================*/ |
309 | 305 | ||
310 | static int qlogic_resume(struct pcmcia_device *dev) | 306 | static int qlogic_resume(struct pcmcia_device *link) |
311 | { | 307 | { |
312 | dev_link_t *link = dev_to_instance(dev); | ||
313 | |||
314 | if (link->state & DEV_CONFIG) { | 308 | if (link->state & DEV_CONFIG) { |
315 | scsi_info_t *info = link->priv; | 309 | scsi_info_t *info = link->priv; |
316 | 310 | ||
317 | pcmcia_request_configuration(link->handle, &link->conf); | 311 | pcmcia_request_configuration(link, &link->conf); |
318 | if ((info->manf_id == MANFID_MACNICA) || | 312 | if ((info->manf_id == MANFID_MACNICA) || |
319 | (info->manf_id == MANFID_PIONEER) || | 313 | (info->manf_id == MANFID_PIONEER) || |
320 | (info->manf_id == 0x0098)) { | 314 | (info->manf_id == 0x0098)) { |
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index 1ef3109418c9..49a37de68758 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c | |||
@@ -527,7 +527,7 @@ idle_out: | |||
527 | } | 527 | } |
528 | 528 | ||
529 | static void | 529 | static void |
530 | SYM53C500_release(dev_link_t *link) | 530 | SYM53C500_release(struct pcmcia_device *link) |
531 | { | 531 | { |
532 | struct scsi_info_t *info = link->priv; | 532 | struct scsi_info_t *info = link->priv; |
533 | struct Scsi_Host *shost = info->host; | 533 | struct Scsi_Host *shost = info->host; |
@@ -550,7 +550,7 @@ SYM53C500_release(dev_link_t *link) | |||
550 | if (shost->io_port && shost->n_io_port) | 550 | if (shost->io_port && shost->n_io_port) |
551 | release_region(shost->io_port, shost->n_io_port); | 551 | release_region(shost->io_port, shost->n_io_port); |
552 | 552 | ||
553 | pcmcia_disable_device(link->handle); | 553 | pcmcia_disable_device(link); |
554 | 554 | ||
555 | scsi_host_put(shost); | 555 | scsi_host_put(shost); |
556 | } /* SYM53C500_release */ | 556 | } /* SYM53C500_release */ |
@@ -708,9 +708,8 @@ static struct scsi_host_template sym53c500_driver_template = { | |||
708 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 708 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
709 | 709 | ||
710 | static void | 710 | static void |
711 | SYM53C500_config(dev_link_t *link) | 711 | SYM53C500_config(struct pcmcia_device *link) |
712 | { | 712 | { |
713 | client_handle_t handle = link->handle; | ||
714 | struct scsi_info_t *info = link->priv; | 713 | struct scsi_info_t *info = link->priv; |
715 | tuple_t tuple; | 714 | tuple_t tuple; |
716 | cisparse_t parse; | 715 | cisparse_t parse; |
@@ -727,40 +726,40 @@ SYM53C500_config(dev_link_t *link) | |||
727 | tuple.TupleDataMax = 64; | 726 | tuple.TupleDataMax = 64; |
728 | tuple.TupleOffset = 0; | 727 | tuple.TupleOffset = 0; |
729 | tuple.DesiredTuple = CISTPL_CONFIG; | 728 | tuple.DesiredTuple = CISTPL_CONFIG; |
730 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 729 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
731 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 730 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
732 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 731 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
733 | link->conf.ConfigBase = parse.config.base; | 732 | link->conf.ConfigBase = parse.config.base; |
734 | 733 | ||
735 | tuple.DesiredTuple = CISTPL_MANFID; | 734 | tuple.DesiredTuple = CISTPL_MANFID; |
736 | if ((pcmcia_get_first_tuple(handle, &tuple) == CS_SUCCESS) && | 735 | if ((pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) && |
737 | (pcmcia_get_tuple_data(handle, &tuple) == CS_SUCCESS)) | 736 | (pcmcia_get_tuple_data(link, &tuple) == CS_SUCCESS)) |
738 | info->manf_id = le16_to_cpu(tuple.TupleData[0]); | 737 | info->manf_id = le16_to_cpu(tuple.TupleData[0]); |
739 | 738 | ||
740 | /* Configure card */ | 739 | /* Configure card */ |
741 | link->state |= DEV_CONFIG; | 740 | link->state |= DEV_CONFIG; |
742 | 741 | ||
743 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 742 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
744 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 743 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
745 | while (1) { | 744 | while (1) { |
746 | if (pcmcia_get_tuple_data(handle, &tuple) != 0 || | 745 | if (pcmcia_get_tuple_data(link, &tuple) != 0 || |
747 | pcmcia_parse_tuple(handle, &tuple, &parse) != 0) | 746 | pcmcia_parse_tuple(link, &tuple, &parse) != 0) |
748 | goto next_entry; | 747 | goto next_entry; |
749 | link->conf.ConfigIndex = parse.cftable_entry.index; | 748 | link->conf.ConfigIndex = parse.cftable_entry.index; |
750 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; | 749 | link->io.BasePort1 = parse.cftable_entry.io.win[0].base; |
751 | link->io.NumPorts1 = parse.cftable_entry.io.win[0].len; | 750 | link->io.NumPorts1 = parse.cftable_entry.io.win[0].len; |
752 | 751 | ||
753 | if (link->io.BasePort1 != 0) { | 752 | if (link->io.BasePort1 != 0) { |
754 | i = pcmcia_request_io(handle, &link->io); | 753 | i = pcmcia_request_io(link, &link->io); |
755 | if (i == CS_SUCCESS) | 754 | if (i == CS_SUCCESS) |
756 | break; | 755 | break; |
757 | } | 756 | } |
758 | next_entry: | 757 | next_entry: |
759 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); | 758 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); |
760 | } | 759 | } |
761 | 760 | ||
762 | CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); | 761 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
763 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 762 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
764 | 763 | ||
765 | /* | 764 | /* |
766 | * That's the trouble with copying liberally from another driver. | 765 | * That's the trouble with copying liberally from another driver. |
@@ -852,14 +851,13 @@ out: | |||
852 | return; | 851 | return; |
853 | 852 | ||
854 | cs_failed: | 853 | cs_failed: |
855 | cs_error(link->handle, last_fn, last_ret); | 854 | cs_error(link, last_fn, last_ret); |
856 | SYM53C500_release(link); | 855 | SYM53C500_release(link); |
857 | return; | 856 | return; |
858 | } /* SYM53C500_config */ | 857 | } /* SYM53C500_config */ |
859 | 858 | ||
860 | static int sym53c500_resume(struct pcmcia_device *dev) | 859 | static int sym53c500_resume(struct pcmcia_device *link) |
861 | { | 860 | { |
862 | dev_link_t *link = dev_to_instance(dev); | ||
863 | struct scsi_info_t *info = link->priv; | 861 | struct scsi_info_t *info = link->priv; |
864 | 862 | ||
865 | if (link->state & DEV_CONFIG) { | 863 | if (link->state & DEV_CONFIG) { |
@@ -882,10 +880,8 @@ static int sym53c500_resume(struct pcmcia_device *dev) | |||
882 | } | 880 | } |
883 | 881 | ||
884 | static void | 882 | static void |
885 | SYM53C500_detach(struct pcmcia_device *p_dev) | 883 | SYM53C500_detach(struct pcmcia_device *link) |
886 | { | 884 | { |
887 | dev_link_t *link = dev_to_instance(p_dev); | ||
888 | |||
889 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); | 885 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); |
890 | 886 | ||
891 | if (link->state & DEV_CONFIG) | 887 | if (link->state & DEV_CONFIG) |
@@ -896,10 +892,9 @@ SYM53C500_detach(struct pcmcia_device *p_dev) | |||
896 | } /* SYM53C500_detach */ | 892 | } /* SYM53C500_detach */ |
897 | 893 | ||
898 | static int | 894 | static int |
899 | SYM53C500_attach(struct pcmcia_device *p_dev) | 895 | SYM53C500_attach(struct pcmcia_device *link) |
900 | { | 896 | { |
901 | struct scsi_info_t *info; | 897 | struct scsi_info_t *info; |
902 | dev_link_t *link = dev_to_instance(p_dev); | ||
903 | 898 | ||
904 | DEBUG(0, "SYM53C500_attach()\n"); | 899 | DEBUG(0, "SYM53C500_attach()\n"); |
905 | 900 | ||
@@ -908,7 +903,7 @@ SYM53C500_attach(struct pcmcia_device *p_dev) | |||
908 | if (!info) | 903 | if (!info) |
909 | return -ENOMEM; | 904 | return -ENOMEM; |
910 | memset(info, 0, sizeof(*info)); | 905 | memset(info, 0, sizeof(*info)); |
911 | info->p_dev = p_dev; | 906 | info->p_dev = link; |
912 | link->priv = info; | 907 | link->priv = info; |
913 | link->io.NumPorts1 = 16; | 908 | link->io.NumPorts1 = 16; |
914 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 909 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |