aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_sc1200.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-18 11:38:06 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-18 11:38:06 -0400
commit8019aa946af5218bc4446c21e43cc19c9401ac68 (patch)
tree6681b73a560f5a4e4a4e8f97b3833a087a488439 /drivers/ata/pata_sc1200.c
parent73e3e6481f56b3b5b618671a8d32b19a35f84316 (diff)
parent48feb3c419508487becfb9ea3afcc54c3eac6d80 (diff)
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (79 commits) ata-acpi: don't call _GTF for disabled drive sata_mv add temporary 3 second init delay for SiliconImage PMs sata_mv remove redundant edma init code sata_mv add basic port multiplier support sata_mv fix SOC flags, enable NCQ on SOC sata_mv disable hotplug for now sata_mv cosmetics sata_mv hardreset rework [libata] improve Kconfig help text for new PMP, SFF options libata: make EH fail gracefully if no reset method is available libata: Be a bit more slack about early devices libata: cable logic libata: move link onlineness check out of softreset methods libata: kill dead code paths in reset path pata_scc: fix build breakage libata: make PMP support optional libata: implement PMP helpers libata: separate PMP support code from core code libata: make SFF support optional libata: don't use ap->ioaddr in non-SFF drivers ...
Diffstat (limited to 'drivers/ata/pata_sc1200.c')
-rw-r--r--drivers/ata/pata_sc1200.c59
1 files changed, 10 insertions, 49 deletions
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c
index 725a8586cd6e..cbab397e3db7 100644
--- a/drivers/ata/pata_sc1200.c
+++ b/drivers/ata/pata_sc1200.c
@@ -151,7 +151,7 @@ static void sc1200_set_dmamode(struct ata_port *ap, struct ata_device *adev)
151} 151}
152 152
153/** 153/**
154 * sc1200_qc_issue_prot - command issue 154 * sc1200_qc_issue - command issue
155 * @qc: command pending 155 * @qc: command pending
156 * 156 *
157 * Called when the libata layer is about to issue a command. We wrap 157 * Called when the libata layer is about to issue a command. We wrap
@@ -160,7 +160,7 @@ static void sc1200_set_dmamode(struct ata_port *ap, struct ata_device *adev)
160 * one MWDMA/UDMA bit. 160 * one MWDMA/UDMA bit.
161 */ 161 */
162 162
163static unsigned int sc1200_qc_issue_prot(struct ata_queued_cmd *qc) 163static unsigned int sc1200_qc_issue(struct ata_queued_cmd *qc)
164{ 164{
165 struct ata_port *ap = qc->ap; 165 struct ata_port *ap = qc->ap;
166 struct ata_device *adev = qc->dev; 166 struct ata_device *adev = qc->dev;
@@ -175,59 +175,21 @@ static unsigned int sc1200_qc_issue_prot(struct ata_queued_cmd *qc)
175 sc1200_set_dmamode(ap, adev); 175 sc1200_set_dmamode(ap, adev);
176 } 176 }
177 177
178 return ata_qc_issue_prot(qc); 178 return ata_sff_qc_issue(qc);
179} 179}
180 180
181static struct scsi_host_template sc1200_sht = { 181static struct scsi_host_template sc1200_sht = {
182 .module = THIS_MODULE, 182 ATA_BMDMA_SHT(DRV_NAME),
183 .name = DRV_NAME, 183 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
184 .ioctl = ata_scsi_ioctl,
185 .queuecommand = ata_scsi_queuecmd,
186 .can_queue = ATA_DEF_QUEUE,
187 .this_id = ATA_SHT_THIS_ID,
188 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
189 .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
190 .emulated = ATA_SHT_EMULATED,
191 .use_clustering = ATA_SHT_USE_CLUSTERING,
192 .proc_name = DRV_NAME,
193 .dma_boundary = ATA_DMA_BOUNDARY,
194 .slave_configure = ata_scsi_slave_config,
195 .slave_destroy = ata_scsi_slave_destroy,
196 .bios_param = ata_std_bios_param,
197}; 184};
198 185
199static struct ata_port_operations sc1200_port_ops = { 186static struct ata_port_operations sc1200_port_ops = {
187 .inherits = &ata_bmdma_port_ops,
188 .qc_prep = ata_sff_dumb_qc_prep,
189 .qc_issue = sc1200_qc_issue,
190 .cable_detect = ata_cable_40wire,
200 .set_piomode = sc1200_set_piomode, 191 .set_piomode = sc1200_set_piomode,
201 .set_dmamode = sc1200_set_dmamode, 192 .set_dmamode = sc1200_set_dmamode,
202 .mode_filter = ata_pci_default_filter,
203
204 .tf_load = ata_tf_load,
205 .tf_read = ata_tf_read,
206 .check_status = ata_check_status,
207 .exec_command = ata_exec_command,
208 .dev_select = ata_std_dev_select,
209
210 .freeze = ata_bmdma_freeze,
211 .thaw = ata_bmdma_thaw,
212 .error_handler = ata_bmdma_error_handler,
213 .post_internal_cmd = ata_bmdma_post_internal_cmd,
214 .cable_detect = ata_cable_40wire,
215
216 .bmdma_setup = ata_bmdma_setup,
217 .bmdma_start = ata_bmdma_start,
218 .bmdma_stop = ata_bmdma_stop,
219 .bmdma_status = ata_bmdma_status,
220
221 .qc_prep = ata_dumb_qc_prep,
222 .qc_issue = sc1200_qc_issue_prot,
223
224 .data_xfer = ata_data_xfer,
225
226 .irq_handler = ata_interrupt,
227 .irq_clear = ata_bmdma_irq_clear,
228 .irq_on = ata_irq_on,
229
230 .port_start = ata_sff_port_start,
231}; 193};
232 194
233/** 195/**
@@ -242,7 +204,6 @@ static struct ata_port_operations sc1200_port_ops = {
242static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id) 204static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
243{ 205{
244 static const struct ata_port_info info = { 206 static const struct ata_port_info info = {
245 .sht = &sc1200_sht,
246 .flags = ATA_FLAG_SLAVE_POSS, 207 .flags = ATA_FLAG_SLAVE_POSS,
247 .pio_mask = 0x1f, 208 .pio_mask = 0x1f,
248 .mwdma_mask = 0x07, 209 .mwdma_mask = 0x07,
@@ -252,7 +213,7 @@ static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
252 /* Can't enable port 2 yet, see top comments */ 213 /* Can't enable port 2 yet, see top comments */
253 const struct ata_port_info *ppi[] = { &info, &ata_dummy_port_info }; 214 const struct ata_port_info *ppi[] = { &info, &ata_dummy_port_info };
254 215
255 return ata_pci_init_one(dev, ppi); 216 return ata_pci_sff_init_one(dev, ppi, &sc1200_sht, NULL);
256} 217}
257 218
258static const struct pci_device_id sc1200[] = { 219static const struct pci_device_id sc1200[] = {