aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2008-03-24 23:22:48 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:44:17 -0400
commit6bd99b4e0998571808fc1f09d5162348f21ff8c1 (patch)
treee338bd445aaa5cda4bbf1f5598acf70f0d6b68de /drivers/ata
parent358f9a77a668660729e705fde9c3cf69f013aa98 (diff)
libata: normalize port_info, port_operations and sht tables
Over the time, port info, ops and sht structures developed quite a bit of inconsistencies. This patch updates drivers. * Enable/disable_pm callbacks added to all ahci ops tables. * Every driver for SFF controllers now uses ata_sff_port_start() instead of ata_port_start() unless the driver has custom implementation. * Every driver for SFF controllers now uses ata_pci_default_filter() unless the driver has custom implementation. * Removed an odd port_info->sht initialization from ata_piix.c. Likely a merge byproduct. * A port which has ATA_FLAG_SATA set doesn't need to set cable_detect to ata_cable_sata(). Remove it from via and mv port ops. * Some drivers had unnecessary .max_sectors initialization which is ignored and was missing .slave_destroy callback. Fixed. * Removed unnecessary sht initializations port_info's. * Removed onsolete scsi device suspend/resume callbacks from pata_bf54x. * No reason to set ata_pci_default_filter() and bmdma functions for PIO-only drivers. Remove those callbacks and replace ata_bmdma_irq_clear with ata_noop_irq_clear. * pata_platform sets port_start to ata_dummy_ret0. port_start can just be set to NULL. * sata_fsl supports NCQ but was missing qc_defer. Fixed. * pata_rb600_cf implements dummy port_start. Removed. Signed-off-by: Tejun Heo <htejun@gmail.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/ahci.c8
-rw-r--r--drivers/ata/ata_generic.c1
-rw-r--r--drivers/ata/ata_piix.c13
-rw-r--r--drivers/ata/pata_artop.c1
-rw-r--r--drivers/ata/pata_bf54x.c1
-rw-r--r--drivers/ata/pata_cmd64x.c6
-rw-r--r--drivers/ata/pata_cs5520.c1
-rw-r--r--drivers/ata/pata_cs5536.c2
-rw-r--r--drivers/ata/pata_hpt3x3.c1
-rw-r--r--drivers/ata/pata_it8213.c2
-rw-r--r--drivers/ata/pata_ixp4xx_cf.c3
-rw-r--r--drivers/ata/pata_jmicron.c3
-rw-r--r--drivers/ata/pata_marvell.c1
-rw-r--r--drivers/ata/pata_mpc52xx.c4
-rw-r--r--drivers/ata/pata_netcell.c1
-rw-r--r--drivers/ata/pata_opti.c7
-rw-r--r--drivers/ata/pata_optidma.c2
-rw-r--r--drivers/ata/pata_platform.c4
-rw-r--r--drivers/ata/pata_rb500_cf.c9
-rw-r--r--drivers/ata/pata_rz1000.c7
-rw-r--r--drivers/ata/sata_fsl.c1
-rw-r--r--drivers/ata/sata_mv.c6
-rw-r--r--drivers/ata/sata_nv.c11
-rw-r--r--drivers/ata/sata_sil.c3
-rw-r--r--drivers/ata/sata_sis.c3
-rw-r--r--drivers/ata/sata_svw.c3
-rw-r--r--drivers/ata/sata_uli.c3
-rw-r--r--drivers/ata/sata_via.c12
-rw-r--r--drivers/ata/sata_vsc.c3
29 files changed, 62 insertions, 60 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 492e521715d6..c6ea44a7f2a9 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -336,6 +336,8 @@ static const struct ata_port_operations ahci_vt8251_ops = {
336 .check_altstatus = ahci_check_status, 336 .check_altstatus = ahci_check_status,
337 .dev_select = ata_noop_dev_select, 337 .dev_select = ata_noop_dev_select,
338 338
339 .dev_config = ahci_dev_config,
340
339 .tf_read = ahci_tf_read, 341 .tf_read = ahci_tf_read,
340 342
341 .qc_defer = sata_pmp_qc_defer_cmd_switch, 343 .qc_defer = sata_pmp_qc_defer_cmd_switch,
@@ -360,6 +362,8 @@ static const struct ata_port_operations ahci_vt8251_ops = {
360 .port_suspend = ahci_port_suspend, 362 .port_suspend = ahci_port_suspend,
361 .port_resume = ahci_port_resume, 363 .port_resume = ahci_port_resume,
362#endif 364#endif
365 .enable_pm = ahci_enable_alpm,
366 .disable_pm = ahci_disable_alpm,
363 367
364 .port_start = ahci_port_start, 368 .port_start = ahci_port_start,
365 .port_stop = ahci_port_stop, 369 .port_stop = ahci_port_stop,
@@ -370,6 +374,8 @@ static const struct ata_port_operations ahci_p5wdh_ops = {
370 .check_altstatus = ahci_check_status, 374 .check_altstatus = ahci_check_status,
371 .dev_select = ata_noop_dev_select, 375 .dev_select = ata_noop_dev_select,
372 376
377 .dev_config = ahci_dev_config,
378
373 .tf_read = ahci_tf_read, 379 .tf_read = ahci_tf_read,
374 380
375 .qc_defer = sata_pmp_qc_defer_cmd_switch, 381 .qc_defer = sata_pmp_qc_defer_cmd_switch,
@@ -394,6 +400,8 @@ static const struct ata_port_operations ahci_p5wdh_ops = {
394 .port_suspend = ahci_port_suspend, 400 .port_suspend = ahci_port_suspend,
395 .port_resume = ahci_port_resume, 401 .port_resume = ahci_port_resume,
396#endif 402#endif
403 .enable_pm = ahci_enable_alpm,
404 .disable_pm = ahci_disable_alpm,
397 405
398 .port_start = ahci_port_start, 406 .port_start = ahci_port_start,
399 .port_stop = ahci_port_stop, 407 .port_stop = ahci_port_stop,
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
index 20534202fc79..db4c3cb78fda 100644
--- a/drivers/ata/ata_generic.c
+++ b/drivers/ata/ata_generic.c
@@ -114,6 +114,7 @@ static struct scsi_host_template generic_sht = {
114 114
115static struct ata_port_operations generic_port_ops = { 115static struct ata_port_operations generic_port_ops = {
116 .set_mode = generic_set_mode, 116 .set_mode = generic_set_mode,
117 .mode_filter = ata_pci_default_filter,
117 118
118 .tf_load = ata_tf_load, 119 .tf_load = ata_tf_load,
119 .tf_read = ata_tf_read, 120 .tf_read = ata_tf_read,
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index fae8404254c0..067760a16889 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -336,7 +336,7 @@ static const struct ata_port_operations piix_pata_ops = {
336 .irq_clear = ata_bmdma_irq_clear, 336 .irq_clear = ata_bmdma_irq_clear,
337 .irq_on = ata_irq_on, 337 .irq_on = ata_irq_on,
338 338
339 .port_start = ata_port_start, 339 .port_start = ata_sff_port_start,
340}; 340};
341 341
342static const struct ata_port_operations ich_pata_ops = { 342static const struct ata_port_operations ich_pata_ops = {
@@ -367,7 +367,7 @@ static const struct ata_port_operations ich_pata_ops = {
367 .irq_clear = ata_bmdma_irq_clear, 367 .irq_clear = ata_bmdma_irq_clear,
368 .irq_on = ata_irq_on, 368 .irq_on = ata_irq_on,
369 369
370 .port_start = ata_port_start, 370 .port_start = ata_sff_port_start,
371}; 371};
372 372
373static const struct ata_port_operations piix_sata_ops = { 373static const struct ata_port_operations piix_sata_ops = {
@@ -385,6 +385,7 @@ static const struct ata_port_operations piix_sata_ops = {
385 .qc_issue = ata_qc_issue_prot, 385 .qc_issue = ata_qc_issue_prot,
386 .data_xfer = ata_data_xfer, 386 .data_xfer = ata_data_xfer,
387 387
388 .mode_filter = ata_pci_default_filter,
388 .freeze = ata_bmdma_freeze, 389 .freeze = ata_bmdma_freeze,
389 .thaw = ata_bmdma_thaw, 390 .thaw = ata_bmdma_thaw,
390 .error_handler = ata_bmdma_error_handler, 391 .error_handler = ata_bmdma_error_handler,
@@ -393,7 +394,7 @@ static const struct ata_port_operations piix_sata_ops = {
393 .irq_clear = ata_bmdma_irq_clear, 394 .irq_clear = ata_bmdma_irq_clear,
394 .irq_on = ata_irq_on, 395 .irq_on = ata_irq_on,
395 396
396 .port_start = ata_port_start, 397 .port_start = ata_sff_port_start,
397}; 398};
398 399
399static const struct ata_port_operations piix_vmw_ops = { 400static const struct ata_port_operations piix_vmw_ops = {
@@ -425,7 +426,7 @@ static const struct ata_port_operations piix_vmw_ops = {
425 .irq_clear = ata_bmdma_irq_clear, 426 .irq_clear = ata_bmdma_irq_clear,
426 .irq_on = ata_irq_on, 427 .irq_on = ata_irq_on,
427 428
428 .port_start = ata_port_start, 429 .port_start = ata_sff_port_start,
429}; 430};
430 431
431static const struct ata_port_operations piix_sidpr_sata_ops = { 432static const struct ata_port_operations piix_sidpr_sata_ops = {
@@ -446,6 +447,7 @@ static const struct ata_port_operations piix_sidpr_sata_ops = {
446 .scr_read = piix_sidpr_scr_read, 447 .scr_read = piix_sidpr_scr_read,
447 .scr_write = piix_sidpr_scr_write, 448 .scr_write = piix_sidpr_scr_write,
448 449
450 .mode_filter = ata_pci_default_filter,
449 .freeze = ata_bmdma_freeze, 451 .freeze = ata_bmdma_freeze,
450 .thaw = ata_bmdma_thaw, 452 .thaw = ata_bmdma_thaw,
451 .error_handler = piix_sidpr_error_handler, 453 .error_handler = piix_sidpr_error_handler,
@@ -454,7 +456,7 @@ static const struct ata_port_operations piix_sidpr_sata_ops = {
454 .irq_clear = ata_bmdma_irq_clear, 456 .irq_clear = ata_bmdma_irq_clear,
455 .irq_on = ata_irq_on, 457 .irq_on = ata_irq_on,
456 458
457 .port_start = ata_port_start, 459 .port_start = ata_sff_port_start,
458}; 460};
459 461
460static const struct piix_map_db ich5_map_db = { 462static const struct piix_map_db ich5_map_db = {
@@ -683,7 +685,6 @@ static struct ata_port_info piix_port_info[] = {
683 685
684 [piix_pata_vmw] = 686 [piix_pata_vmw] =
685 { 687 {
686 .sht = &piix_sht,
687 .flags = PIIX_PATA_FLAGS, 688 .flags = PIIX_PATA_FLAGS,
688 .pio_mask = 0x1f, /* pio0-4 */ 689 .pio_mask = 0x1f, /* pio0-4 */
689 .mwdma_mask = 0x06, /* mwdma1-2 ?? CHECK 0 should be ok but slow */ 690 .mwdma_mask = 0x06, /* mwdma1-2 ?? CHECK 0 should be ok but slow */
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index 2f8148016971..a238c7bd0bba 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -367,6 +367,7 @@ static const struct ata_port_operations artop6210_ops = {
367static const struct ata_port_operations artop6260_ops = { 367static const struct ata_port_operations artop6260_ops = {
368 .set_piomode = artop6260_set_piomode, 368 .set_piomode = artop6260_set_piomode,
369 .set_dmamode = artop6260_set_dmamode, 369 .set_dmamode = artop6260_set_dmamode,
370 .mode_filter = ata_pci_default_filter,
370 371
371 .tf_load = ata_tf_load, 372 .tf_load = ata_tf_load,
372 .tf_read = ata_tf_read, 373 .tf_read = ata_tf_read,
diff --git a/drivers/ata/pata_bf54x.c b/drivers/ata/pata_bf54x.c
index 7f87f105c2f6..146c202d5834 100644
--- a/drivers/ata/pata_bf54x.c
+++ b/drivers/ata/pata_bf54x.c
@@ -1409,7 +1409,6 @@ static const struct ata_port_operations bfin_pata_ops = {
1409 1409
1410static struct ata_port_info bfin_port_info[] = { 1410static struct ata_port_info bfin_port_info[] = {
1411 { 1411 {
1412 .sht = &bfin_sht,
1413 .flags = ATA_FLAG_SLAVE_POSS 1412 .flags = ATA_FLAG_SLAVE_POSS
1414 | ATA_FLAG_MMIO 1413 | ATA_FLAG_MMIO
1415 | ATA_FLAG_NO_LEGACY, 1414 | ATA_FLAG_NO_LEGACY,
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c
index 1c9a8d97f874..e8c1262341ee 100644
--- a/drivers/ata/pata_cmd64x.c
+++ b/drivers/ata/pata_cmd64x.c
@@ -313,7 +313,7 @@ static struct ata_port_operations cmd64x_port_ops = {
313 .irq_clear = ata_bmdma_irq_clear, 313 .irq_clear = ata_bmdma_irq_clear,
314 .irq_on = ata_irq_on, 314 .irq_on = ata_irq_on,
315 315
316 .port_start = ata_port_start, 316 .port_start = ata_sff_port_start,
317}; 317};
318 318
319static struct ata_port_operations cmd646r1_port_ops = { 319static struct ata_port_operations cmd646r1_port_ops = {
@@ -346,7 +346,7 @@ static struct ata_port_operations cmd646r1_port_ops = {
346 .irq_clear = ata_bmdma_irq_clear, 346 .irq_clear = ata_bmdma_irq_clear,
347 .irq_on = ata_irq_on, 347 .irq_on = ata_irq_on,
348 348
349 .port_start = ata_port_start, 349 .port_start = ata_sff_port_start,
350}; 350};
351 351
352static struct ata_port_operations cmd648_port_ops = { 352static struct ata_port_operations cmd648_port_ops = {
@@ -379,7 +379,7 @@ static struct ata_port_operations cmd648_port_ops = {
379 .irq_clear = ata_bmdma_irq_clear, 379 .irq_clear = ata_bmdma_irq_clear,
380 .irq_on = ata_irq_on, 380 .irq_on = ata_irq_on,
381 381
382 .port_start = ata_port_start, 382 .port_start = ata_sff_port_start,
383}; 383};
384 384
385static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) 385static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c
index dd6b2355fcdc..44ad2c9d488f 100644
--- a/drivers/ata/pata_cs5520.c
+++ b/drivers/ata/pata_cs5520.c
@@ -160,6 +160,7 @@ static struct scsi_host_template cs5520_sht = {
160static struct ata_port_operations cs5520_port_ops = { 160static struct ata_port_operations cs5520_port_ops = {
161 .set_piomode = cs5520_set_piomode, 161 .set_piomode = cs5520_set_piomode,
162 .set_dmamode = cs5520_set_dmamode, 162 .set_dmamode = cs5520_set_dmamode,
163 .mode_filter = ata_pci_default_filter,
163 164
164 .tf_load = ata_tf_load, 165 .tf_load = ata_tf_load,
165 .tf_read = ata_tf_read, 166 .tf_read = ata_tf_read,
diff --git a/drivers/ata/pata_cs5536.c b/drivers/ata/pata_cs5536.c
index 1c4ff9b52b5c..391aa888f8fd 100644
--- a/drivers/ata/pata_cs5536.c
+++ b/drivers/ata/pata_cs5536.c
@@ -269,7 +269,7 @@ static struct ata_port_operations cs5536_port_ops = {
269 .irq_clear = ata_bmdma_irq_clear, 269 .irq_clear = ata_bmdma_irq_clear,
270 .irq_on = ata_irq_on, 270 .irq_on = ata_irq_on,
271 271
272 .port_start = ata_port_start, 272 .port_start = ata_sff_port_start,
273}; 273};
274 274
275/** 275/**
diff --git a/drivers/ata/pata_hpt3x3.c b/drivers/ata/pata_hpt3x3.c
index cb8bdb6887de..c09f95a4a0d1 100644
--- a/drivers/ata/pata_hpt3x3.c
+++ b/drivers/ata/pata_hpt3x3.c
@@ -189,7 +189,6 @@ static int hpt3x3_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
189{ 189{
190 static int printed_version; 190 static int printed_version;
191 static const struct ata_port_info info = { 191 static const struct ata_port_info info = {
192 .sht = &hpt3x3_sht,
193 .flags = ATA_FLAG_SLAVE_POSS, 192 .flags = ATA_FLAG_SLAVE_POSS,
194 .pio_mask = 0x1f, 193 .pio_mask = 0x1f,
195#if defined(CONFIG_PATA_HPT3X3_DMA) 194#if defined(CONFIG_PATA_HPT3X3_DMA)
diff --git a/drivers/ata/pata_it8213.c b/drivers/ata/pata_it8213.c
index e0c2cc29d0ca..25c49c2e1519 100644
--- a/drivers/ata/pata_it8213.c
+++ b/drivers/ata/pata_it8213.c
@@ -250,13 +250,13 @@ static struct scsi_host_template it8213_sht = {
250 .can_queue = ATA_DEF_QUEUE, 250 .can_queue = ATA_DEF_QUEUE,
251 .this_id = ATA_SHT_THIS_ID, 251 .this_id = ATA_SHT_THIS_ID,
252 .sg_tablesize = LIBATA_MAX_PRD, 252 .sg_tablesize = LIBATA_MAX_PRD,
253 .max_sectors = ATA_MAX_SECTORS,
254 .cmd_per_lun = ATA_SHT_CMD_PER_LUN, 253 .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
255 .emulated = ATA_SHT_EMULATED, 254 .emulated = ATA_SHT_EMULATED,
256 .use_clustering = ATA_SHT_USE_CLUSTERING, 255 .use_clustering = ATA_SHT_USE_CLUSTERING,
257 .proc_name = DRV_NAME, 256 .proc_name = DRV_NAME,
258 .dma_boundary = ATA_DMA_BOUNDARY, 257 .dma_boundary = ATA_DMA_BOUNDARY,
259 .slave_configure = ata_scsi_slave_config, 258 .slave_configure = ata_scsi_slave_config,
259 .slave_destroy = ata_scsi_slave_destroy,
260 .bios_param = ata_std_bios_param, 260 .bios_param = ata_std_bios_param,
261}; 261};
262 262
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index 83e38cc077e1..6eb8cc9a3f12 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -107,7 +107,6 @@ static struct scsi_host_template ixp4xx_sht = {
107 107
108static struct ata_port_operations ixp4xx_port_ops = { 108static struct ata_port_operations ixp4xx_port_ops = {
109 .set_mode = ixp4xx_set_mode, 109 .set_mode = ixp4xx_set_mode,
110 .mode_filter = ata_pci_default_filter,
111 110
112 .tf_load = ata_tf_load, 111 .tf_load = ata_tf_load,
113 .tf_read = ata_tf_read, 112 .tf_read = ata_tf_read,
@@ -129,7 +128,7 @@ static struct ata_port_operations ixp4xx_port_ops = {
129 .irq_clear = ata_noop_irq_clear, 128 .irq_clear = ata_noop_irq_clear,
130 .irq_on = ata_irq_on, 129 .irq_on = ata_irq_on,
131 130
132 .port_start = ata_port_start, 131 .port_start = ata_sff_port_start,
133}; 132};
134 133
135static void ixp4xx_setup_port(struct ata_port *ap, 134static void ixp4xx_setup_port(struct ata_port *ap,
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c
index 00bbbbd50e97..7d36fa85435a 100644
--- a/drivers/ata/pata_jmicron.c
+++ b/drivers/ata/pata_jmicron.c
@@ -148,6 +148,7 @@ static const struct ata_port_operations jmicron_ops = {
148 .exec_command = ata_exec_command, 148 .exec_command = ata_exec_command,
149 .dev_select = ata_std_dev_select, 149 .dev_select = ata_std_dev_select,
150 150
151 .mode_filter = ata_pci_default_filter,
151 .freeze = ata_bmdma_freeze, 152 .freeze = ata_bmdma_freeze,
152 .thaw = ata_bmdma_thaw, 153 .thaw = ata_bmdma_thaw,
153 .error_handler = jmicron_error_handler, 154 .error_handler = jmicron_error_handler,
@@ -168,7 +169,7 @@ static const struct ata_port_operations jmicron_ops = {
168 .irq_on = ata_irq_on, 169 .irq_on = ata_irq_on,
169 170
170 /* Generic PATA PCI ATA helpers */ 171 /* Generic PATA PCI ATA helpers */
171 .port_start = ata_port_start, 172 .port_start = ata_sff_port_start,
172}; 173};
173 174
174 175
diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c
index a81f25d87235..c4ee9b45301f 100644
--- a/drivers/ata/pata_marvell.c
+++ b/drivers/ata/pata_marvell.c
@@ -118,6 +118,7 @@ static const struct ata_port_operations marvell_ops = {
118 .exec_command = ata_exec_command, 118 .exec_command = ata_exec_command,
119 .dev_select = ata_std_dev_select, 119 .dev_select = ata_std_dev_select,
120 120
121 .mode_filter = ata_pci_default_filter,
121 .freeze = ata_bmdma_freeze, 122 .freeze = ata_bmdma_freeze,
122 .thaw = ata_bmdma_thaw, 123 .thaw = ata_bmdma_thaw,
123 .error_handler = marvell_error_handler, 124 .error_handler = marvell_error_handler,
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index d84e0c8ea02f..fefe71dbed1a 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -272,13 +272,13 @@ static struct scsi_host_template mpc52xx_ata_sht = {
272 .can_queue = ATA_DEF_QUEUE, 272 .can_queue = ATA_DEF_QUEUE,
273 .this_id = ATA_SHT_THIS_ID, 273 .this_id = ATA_SHT_THIS_ID,
274 .sg_tablesize = LIBATA_MAX_PRD, 274 .sg_tablesize = LIBATA_MAX_PRD,
275 .max_sectors = ATA_MAX_SECTORS,
276 .cmd_per_lun = ATA_SHT_CMD_PER_LUN, 275 .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
277 .emulated = ATA_SHT_EMULATED, 276 .emulated = ATA_SHT_EMULATED,
278 .use_clustering = ATA_SHT_USE_CLUSTERING, 277 .use_clustering = ATA_SHT_USE_CLUSTERING,
279 .proc_name = DRV_NAME, 278 .proc_name = DRV_NAME,
280 .dma_boundary = ATA_DMA_BOUNDARY, 279 .dma_boundary = ATA_DMA_BOUNDARY,
281 .slave_configure = ata_scsi_slave_config, 280 .slave_configure = ata_scsi_slave_config,
281 .slave_destroy = ata_scsi_slave_destroy,
282 .bios_param = ata_std_bios_param, 282 .bios_param = ata_std_bios_param,
283}; 283};
284 284
@@ -298,7 +298,7 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
298 .data_xfer = ata_data_xfer, 298 .data_xfer = ata_data_xfer,
299 .irq_clear = ata_noop_irq_clear, 299 .irq_clear = ata_noop_irq_clear,
300 .irq_on = ata_irq_on, 300 .irq_on = ata_irq_on,
301 .port_start = ata_port_start, 301 .port_start = ata_sff_port_start,
302}; 302};
303 303
304static int __devinit 304static int __devinit
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c
index 0e4a08e15209..9fd1a84c01d3 100644
--- a/drivers/ata/pata_netcell.c
+++ b/drivers/ata/pata_netcell.c
@@ -47,6 +47,7 @@ static const struct ata_port_operations netcell_ops = {
47 .exec_command = ata_exec_command, 47 .exec_command = ata_exec_command,
48 .dev_select = ata_std_dev_select, 48 .dev_select = ata_std_dev_select,
49 49
50 .mode_filter = ata_pci_default_filter,
50 .freeze = ata_bmdma_freeze, 51 .freeze = ata_bmdma_freeze,
51 .thaw = ata_bmdma_thaw, 52 .thaw = ata_bmdma_thaw,
52 .error_handler = ata_bmdma_error_handler, 53 .error_handler = ata_bmdma_error_handler,
diff --git a/drivers/ata/pata_opti.c b/drivers/ata/pata_opti.c
index 8f79447b6151..1e865f138d1c 100644
--- a/drivers/ata/pata_opti.c
+++ b/drivers/ata/pata_opti.c
@@ -196,18 +196,13 @@ static struct ata_port_operations opti_port_ops = {
196 .post_internal_cmd = ata_bmdma_post_internal_cmd, 196 .post_internal_cmd = ata_bmdma_post_internal_cmd,
197 .cable_detect = ata_cable_40wire, 197 .cable_detect = ata_cable_40wire,
198 198
199 .bmdma_setup = ata_bmdma_setup,
200 .bmdma_start = ata_bmdma_start,
201 .bmdma_stop = ata_bmdma_stop,
202 .bmdma_status = ata_bmdma_status,
203
204 .qc_prep = ata_qc_prep, 199 .qc_prep = ata_qc_prep,
205 .qc_issue = ata_qc_issue_prot, 200 .qc_issue = ata_qc_issue_prot,
206 201
207 .data_xfer = ata_data_xfer, 202 .data_xfer = ata_data_xfer,
208 203
209 .irq_handler = ata_interrupt, 204 .irq_handler = ata_interrupt,
210 .irq_clear = ata_bmdma_irq_clear, 205 .irq_clear = ata_noop_irq_clear,
211 .irq_on = ata_irq_on, 206 .irq_on = ata_irq_on,
212 207
213 .port_start = ata_sff_port_start, 208 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c
index be8c421dc2aa..3f9d03599f23 100644
--- a/drivers/ata/pata_optidma.c
+++ b/drivers/ata/pata_optidma.c
@@ -370,6 +370,7 @@ static struct scsi_host_template optidma_sht = {
370static struct ata_port_operations optidma_port_ops = { 370static struct ata_port_operations optidma_port_ops = {
371 .set_piomode = optidma_set_pio_mode, 371 .set_piomode = optidma_set_pio_mode,
372 .set_dmamode = optidma_set_dma_mode, 372 .set_dmamode = optidma_set_dma_mode,
373 .mode_filter = ata_pci_default_filter,
373 374
374 .tf_load = ata_tf_load, 375 .tf_load = ata_tf_load,
375 .tf_read = ata_tf_read, 376 .tf_read = ata_tf_read,
@@ -404,6 +405,7 @@ static struct ata_port_operations optidma_port_ops = {
404static struct ata_port_operations optiplus_port_ops = { 405static struct ata_port_operations optiplus_port_ops = {
405 .set_piomode = optiplus_set_pio_mode, 406 .set_piomode = optiplus_set_pio_mode,
406 .set_dmamode = optiplus_set_dma_mode, 407 .set_dmamode = optiplus_set_dma_mode,
408 .mode_filter = ata_pci_default_filter,
407 409
408 .tf_load = ata_tf_load, 410 .tf_load = ata_tf_load,
409 .tf_read = ata_tf_read, 411 .tf_read = ata_tf_read,
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index a8429f5c3006..602f5562d6fb 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -46,8 +46,6 @@ static int pata_platform_set_mode(struct ata_link *link, struct ata_device **unu
46 return 0; 46 return 0;
47} 47}
48 48
49static int ata_dummy_ret0(struct ata_port *ap) { return 0; }
50
51static struct scsi_host_template pata_platform_sht = { 49static struct scsi_host_template pata_platform_sht = {
52 .module = THIS_MODULE, 50 .module = THIS_MODULE,
53 .name = DRV_NAME, 51 .name = DRV_NAME,
@@ -88,8 +86,6 @@ static struct ata_port_operations pata_platform_port_ops = {
88 86
89 .irq_clear = ata_noop_irq_clear, 87 .irq_clear = ata_noop_irq_clear,
90 .irq_on = ata_irq_on, 88 .irq_on = ata_irq_on,
91
92 .port_start = ata_dummy_ret0,
93}; 89};
94 90
95static void pata_platform_setup_port(struct ata_ioports *ioaddr, 91static void pata_platform_setup_port(struct ata_ioports *ioaddr,
diff --git a/drivers/ata/pata_rb500_cf.c b/drivers/ata/pata_rb500_cf.c
index 08c32af1c84d..22cb9e1a02f5 100644
--- a/drivers/ata/pata_rb500_cf.c
+++ b/drivers/ata/pata_rb500_cf.c
@@ -117,11 +117,6 @@ static irqreturn_t rb500_pata_irq_handler(int irq, void *dev_instance)
117 return IRQ_HANDLED; 117 return IRQ_HANDLED;
118} 118}
119 119
120static int rb500_pata_port_start(struct ata_port *ap)
121{
122 return 0;
123}
124
125static struct ata_port_operations rb500_pata_port_ops = { 120static struct ata_port_operations rb500_pata_port_ops = {
126 .tf_load = ata_tf_load, 121 .tf_load = ata_tf_load,
127 .tf_read = ata_tf_read, 122 .tf_read = ata_tf_read,
@@ -138,12 +133,10 @@ static struct ata_port_operations rb500_pata_port_ops = {
138 .freeze = rb500_pata_freeze, 133 .freeze = rb500_pata_freeze,
139 .thaw = rb500_pata_thaw, 134 .thaw = rb500_pata_thaw,
140 .error_handler = ata_bmdma_error_handler, 135 .error_handler = ata_bmdma_error_handler,
136 .post_internal_cmd = ata_bmdma_post_internal_cmd,
141 137
142 .irq_handler = rb500_pata_irq_handler,
143 .irq_clear = ata_noop_irq_clear, 138 .irq_clear = ata_noop_irq_clear,
144 .irq_on = ata_irq_on, 139 .irq_on = ata_irq_on,
145
146 .port_start = rb500_pata_port_start,
147}; 140};
148 141
149/* ------------------------------------------------------------------------ */ 142/* ------------------------------------------------------------------------ */
diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.c
index ba8a31c55edb..75b252111106 100644
--- a/drivers/ata/pata_rz1000.c
+++ b/drivers/ata/pata_rz1000.c
@@ -79,11 +79,6 @@ static struct ata_port_operations rz1000_port_ops = {
79 .exec_command = ata_exec_command, 79 .exec_command = ata_exec_command,
80 .dev_select = ata_std_dev_select, 80 .dev_select = ata_std_dev_select,
81 81
82 .bmdma_setup = ata_bmdma_setup,
83 .bmdma_start = ata_bmdma_start,
84 .bmdma_stop = ata_bmdma_stop,
85 .bmdma_status = ata_bmdma_status,
86
87 .qc_prep = ata_qc_prep, 82 .qc_prep = ata_qc_prep,
88 .qc_issue = ata_qc_issue_prot, 83 .qc_issue = ata_qc_issue_prot,
89 84
@@ -96,7 +91,7 @@ static struct ata_port_operations rz1000_port_ops = {
96 .cable_detect = ata_cable_40wire, 91 .cable_detect = ata_cable_40wire,
97 92
98 .irq_handler = ata_interrupt, 93 .irq_handler = ata_interrupt,
99 .irq_clear = ata_bmdma_irq_clear, 94 .irq_clear = ata_noop_irq_clear,
100 .irq_on = ata_irq_on, 95 .irq_on = ata_irq_on,
101 96
102 .port_start = ata_sff_port_start, 97 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index 031a512cbaa8..8389ecac62cd 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -1216,6 +1216,7 @@ static const struct ata_port_operations sata_fsl_ops = {
1216 1216
1217 .tf_read = sata_fsl_tf_read, 1217 .tf_read = sata_fsl_tf_read,
1218 1218
1219 .qc_defer = ata_std_qc_defer,
1219 .qc_prep = sata_fsl_qc_prep, 1220 .qc_prep = sata_fsl_qc_prep,
1220 .qc_issue = sata_fsl_qc_issue, 1221 .qc_issue = sata_fsl_qc_issue,
1221 .irq_clear = ata_noop_irq_clear, 1222 .irq_clear = ata_noop_irq_clear,
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index b3b3da4eaa03..4685bce745bb 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -557,8 +557,6 @@ static const struct ata_port_operations mv5_ops = {
557 .exec_command = ata_exec_command, 557 .exec_command = ata_exec_command,
558 .dev_select = ata_std_dev_select, 558 .dev_select = ata_std_dev_select,
559 559
560 .cable_detect = ata_cable_sata,
561
562 .qc_prep = mv_qc_prep, 560 .qc_prep = mv_qc_prep,
563 .qc_issue = mv_qc_issue, 561 .qc_issue = mv_qc_issue,
564 .data_xfer = ata_data_xfer, 562 .data_xfer = ata_data_xfer,
@@ -585,8 +583,6 @@ static const struct ata_port_operations mv6_ops = {
585 .exec_command = ata_exec_command, 583 .exec_command = ata_exec_command,
586 .dev_select = ata_std_dev_select, 584 .dev_select = ata_std_dev_select,
587 585
588 .cable_detect = ata_cable_sata,
589
590 .qc_prep = mv_qc_prep, 586 .qc_prep = mv_qc_prep,
591 .qc_issue = mv_qc_issue, 587 .qc_issue = mv_qc_issue,
592 .data_xfer = ata_data_xfer, 588 .data_xfer = ata_data_xfer,
@@ -613,8 +609,6 @@ static const struct ata_port_operations mv_iie_ops = {
613 .exec_command = ata_exec_command, 609 .exec_command = ata_exec_command,
614 .dev_select = ata_std_dev_select, 610 .dev_select = ata_std_dev_select,
615 611
616 .cable_detect = ata_cable_sata,
617
618 .qc_prep = mv_qc_prep_iie, 612 .qc_prep = mv_qc_prep_iie,
619 .qc_issue = mv_qc_issue, 613 .qc_issue = mv_qc_issue,
620 .data_xfer = ata_data_xfer, 614 .data_xfer = ata_data_xfer,
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 75b76535c720..bd5b6c35ee5d 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -452,6 +452,7 @@ static const struct ata_port_operations nv_generic_ops = {
452 .bmdma_status = ata_bmdma_status, 452 .bmdma_status = ata_bmdma_status,
453 .qc_prep = ata_qc_prep, 453 .qc_prep = ata_qc_prep,
454 .qc_issue = ata_qc_issue_prot, 454 .qc_issue = ata_qc_issue_prot,
455 .mode_filter = ata_pci_default_filter,
455 .freeze = ata_bmdma_freeze, 456 .freeze = ata_bmdma_freeze,
456 .thaw = ata_bmdma_thaw, 457 .thaw = ata_bmdma_thaw,
457 .error_handler = nv_error_handler, 458 .error_handler = nv_error_handler,
@@ -461,7 +462,7 @@ static const struct ata_port_operations nv_generic_ops = {
461 .irq_on = ata_irq_on, 462 .irq_on = ata_irq_on,
462 .scr_read = nv_scr_read, 463 .scr_read = nv_scr_read,
463 .scr_write = nv_scr_write, 464 .scr_write = nv_scr_write,
464 .port_start = ata_port_start, 465 .port_start = ata_sff_port_start,
465}; 466};
466 467
467static const struct ata_port_operations nv_nf2_ops = { 468static const struct ata_port_operations nv_nf2_ops = {
@@ -476,6 +477,7 @@ static const struct ata_port_operations nv_nf2_ops = {
476 .bmdma_status = ata_bmdma_status, 477 .bmdma_status = ata_bmdma_status,
477 .qc_prep = ata_qc_prep, 478 .qc_prep = ata_qc_prep,
478 .qc_issue = ata_qc_issue_prot, 479 .qc_issue = ata_qc_issue_prot,
480 .mode_filter = ata_pci_default_filter,
479 .freeze = nv_nf2_freeze, 481 .freeze = nv_nf2_freeze,
480 .thaw = nv_nf2_thaw, 482 .thaw = nv_nf2_thaw,
481 .error_handler = nv_error_handler, 483 .error_handler = nv_error_handler,
@@ -485,7 +487,7 @@ static const struct ata_port_operations nv_nf2_ops = {
485 .irq_on = ata_irq_on, 487 .irq_on = ata_irq_on,
486 .scr_read = nv_scr_read, 488 .scr_read = nv_scr_read,
487 .scr_write = nv_scr_write, 489 .scr_write = nv_scr_write,
488 .port_start = ata_port_start, 490 .port_start = ata_sff_port_start,
489}; 491};
490 492
491static const struct ata_port_operations nv_ck804_ops = { 493static const struct ata_port_operations nv_ck804_ops = {
@@ -500,6 +502,7 @@ static const struct ata_port_operations nv_ck804_ops = {
500 .bmdma_status = ata_bmdma_status, 502 .bmdma_status = ata_bmdma_status,
501 .qc_prep = ata_qc_prep, 503 .qc_prep = ata_qc_prep,
502 .qc_issue = ata_qc_issue_prot, 504 .qc_issue = ata_qc_issue_prot,
505 .mode_filter = ata_pci_default_filter,
503 .freeze = nv_ck804_freeze, 506 .freeze = nv_ck804_freeze,
504 .thaw = nv_ck804_thaw, 507 .thaw = nv_ck804_thaw,
505 .error_handler = nv_error_handler, 508 .error_handler = nv_error_handler,
@@ -509,7 +512,7 @@ static const struct ata_port_operations nv_ck804_ops = {
509 .irq_on = ata_irq_on, 512 .irq_on = ata_irq_on,
510 .scr_read = nv_scr_read, 513 .scr_read = nv_scr_read,
511 .scr_write = nv_scr_write, 514 .scr_write = nv_scr_write,
512 .port_start = ata_port_start, 515 .port_start = ata_sff_port_start,
513 .host_stop = nv_ck804_host_stop, 516 .host_stop = nv_ck804_host_stop,
514}; 517};
515 518
@@ -527,6 +530,7 @@ static const struct ata_port_operations nv_adma_ops = {
527 .qc_defer = ata_std_qc_defer, 530 .qc_defer = ata_std_qc_defer,
528 .qc_prep = nv_adma_qc_prep, 531 .qc_prep = nv_adma_qc_prep,
529 .qc_issue = nv_adma_qc_issue, 532 .qc_issue = nv_adma_qc_issue,
533 .mode_filter = ata_pci_default_filter,
530 .freeze = nv_adma_freeze, 534 .freeze = nv_adma_freeze,
531 .thaw = nv_adma_thaw, 535 .thaw = nv_adma_thaw,
532 .error_handler = nv_adma_error_handler, 536 .error_handler = nv_adma_error_handler,
@@ -558,6 +562,7 @@ static const struct ata_port_operations nv_swncq_ops = {
558 .qc_defer = ata_std_qc_defer, 562 .qc_defer = ata_std_qc_defer,
559 .qc_prep = nv_swncq_qc_prep, 563 .qc_prep = nv_swncq_qc_prep,
560 .qc_issue = nv_swncq_qc_issue, 564 .qc_issue = nv_swncq_qc_issue,
565 .mode_filter = ata_pci_default_filter,
561 .freeze = nv_mcp55_freeze, 566 .freeze = nv_mcp55_freeze,
562 .thaw = nv_mcp55_thaw, 567 .thaw = nv_mcp55_thaw,
563 .error_handler = nv_swncq_error_handler, 568 .error_handler = nv_swncq_error_handler,
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index 7052915a31b6..53f0bae3be43 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -192,6 +192,7 @@ static const struct ata_port_operations sil_ops = {
192 .exec_command = ata_exec_command, 192 .exec_command = ata_exec_command,
193 .dev_select = ata_std_dev_select, 193 .dev_select = ata_std_dev_select,
194 .set_mode = sil_set_mode, 194 .set_mode = sil_set_mode,
195 .mode_filter = ata_pci_default_filter,
195 .bmdma_setup = ata_bmdma_setup, 196 .bmdma_setup = ata_bmdma_setup,
196 .bmdma_start = ata_bmdma_start, 197 .bmdma_start = ata_bmdma_start,
197 .bmdma_stop = ata_bmdma_stop, 198 .bmdma_stop = ata_bmdma_stop,
@@ -207,7 +208,7 @@ static const struct ata_port_operations sil_ops = {
207 .irq_on = ata_irq_on, 208 .irq_on = ata_irq_on,
208 .scr_read = sil_scr_read, 209 .scr_read = sil_scr_read,
209 .scr_write = sil_scr_write, 210 .scr_write = sil_scr_write,
210 .port_start = ata_port_start, 211 .port_start = ata_sff_port_start,
211}; 212};
212 213
213static const struct ata_port_info sil_port_info[] = { 214static const struct ata_port_info sil_port_info[] = {
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
index a01260a56432..a8adef9786b7 100644
--- a/drivers/ata/sata_sis.c
+++ b/drivers/ata/sata_sis.c
@@ -116,6 +116,7 @@ static const struct ata_port_operations sis_ops = {
116 .qc_prep = ata_qc_prep, 116 .qc_prep = ata_qc_prep,
117 .qc_issue = ata_qc_issue_prot, 117 .qc_issue = ata_qc_issue_prot,
118 .data_xfer = ata_data_xfer, 118 .data_xfer = ata_data_xfer,
119 .mode_filter = ata_pci_default_filter,
119 .freeze = ata_bmdma_freeze, 120 .freeze = ata_bmdma_freeze,
120 .thaw = ata_bmdma_thaw, 121 .thaw = ata_bmdma_thaw,
121 .error_handler = ata_bmdma_error_handler, 122 .error_handler = ata_bmdma_error_handler,
@@ -124,7 +125,7 @@ static const struct ata_port_operations sis_ops = {
124 .irq_on = ata_irq_on, 125 .irq_on = ata_irq_on,
125 .scr_read = sis_scr_read, 126 .scr_read = sis_scr_read,
126 .scr_write = sis_scr_write, 127 .scr_write = sis_scr_write,
127 .port_start = ata_port_start, 128 .port_start = ata_sff_port_start,
128}; 129};
129 130
130static const struct ata_port_info sis_port_info = { 131static const struct ata_port_info sis_port_info = {
diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c
index 019e367b59fc..aa690142fa90 100644
--- a/drivers/ata/sata_svw.c
+++ b/drivers/ata/sata_svw.c
@@ -362,6 +362,7 @@ static const struct ata_port_operations k2_sata_ops = {
362 .qc_prep = ata_qc_prep, 362 .qc_prep = ata_qc_prep,
363 .qc_issue = ata_qc_issue_prot, 363 .qc_issue = ata_qc_issue_prot,
364 .data_xfer = ata_data_xfer, 364 .data_xfer = ata_data_xfer,
365 .mode_filter = ata_pci_default_filter,
365 .freeze = ata_bmdma_freeze, 366 .freeze = ata_bmdma_freeze,
366 .thaw = ata_bmdma_thaw, 367 .thaw = ata_bmdma_thaw,
367 .error_handler = ata_bmdma_error_handler, 368 .error_handler = ata_bmdma_error_handler,
@@ -370,7 +371,7 @@ static const struct ata_port_operations k2_sata_ops = {
370 .irq_on = ata_irq_on, 371 .irq_on = ata_irq_on,
371 .scr_read = k2_sata_scr_read, 372 .scr_read = k2_sata_scr_read,
372 .scr_write = k2_sata_scr_write, 373 .scr_write = k2_sata_scr_write,
373 .port_start = ata_port_start, 374 .port_start = ata_sff_port_start,
374}; 375};
375 376
376static const struct ata_port_info k2_port_info[] = { 377static const struct ata_port_info k2_port_info[] = {
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index e710e71b7b92..f7fc0450478b 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -108,6 +108,7 @@ static const struct ata_port_operations uli_ops = {
108 .qc_issue = ata_qc_issue_prot, 108 .qc_issue = ata_qc_issue_prot,
109 .data_xfer = ata_data_xfer, 109 .data_xfer = ata_data_xfer,
110 110
111 .mode_filter = ata_pci_default_filter,
111 .freeze = ata_bmdma_freeze, 112 .freeze = ata_bmdma_freeze,
112 .thaw = ata_bmdma_thaw, 113 .thaw = ata_bmdma_thaw,
113 .error_handler = ata_bmdma_error_handler, 114 .error_handler = ata_bmdma_error_handler,
@@ -119,7 +120,7 @@ static const struct ata_port_operations uli_ops = {
119 .scr_read = uli_scr_read, 120 .scr_read = uli_scr_read,
120 .scr_write = uli_scr_write, 121 .scr_write = uli_scr_write,
121 122
122 .port_start = ata_port_start, 123 .port_start = ata_sff_port_start,
123}; 124};
124 125
125static const struct ata_port_info uli_port_info = { 126static const struct ata_port_info uli_port_info = {
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index c0e0f1d18d50..f66ffd7da54e 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -118,6 +118,8 @@ static struct scsi_host_template svia_sht = {
118}; 118};
119 119
120static const struct ata_port_operations vt6420_sata_ops = { 120static const struct ata_port_operations vt6420_sata_ops = {
121 .mode_filter = ata_pci_default_filter,
122
121 .tf_load = ata_tf_load, 123 .tf_load = ata_tf_load,
122 .tf_read = ata_tf_read, 124 .tf_read = ata_tf_read,
123 .check_status = ata_check_status, 125 .check_status = ata_check_status,
@@ -141,12 +143,13 @@ static const struct ata_port_operations vt6420_sata_ops = {
141 .irq_clear = ata_bmdma_irq_clear, 143 .irq_clear = ata_bmdma_irq_clear,
142 .irq_on = ata_irq_on, 144 .irq_on = ata_irq_on,
143 145
144 .port_start = ata_port_start, 146 .port_start = ata_sff_port_start,
145}; 147};
146 148
147static const struct ata_port_operations vt6421_pata_ops = { 149static const struct ata_port_operations vt6421_pata_ops = {
148 .set_piomode = vt6421_set_pio_mode, 150 .set_piomode = vt6421_set_pio_mode,
149 .set_dmamode = vt6421_set_dma_mode, 151 .set_dmamode = vt6421_set_dma_mode,
152 .mode_filter = ata_pci_default_filter,
150 153
151 .tf_load = ata_tf_load, 154 .tf_load = ata_tf_load,
152 .tf_read = ata_tf_read, 155 .tf_read = ata_tf_read,
@@ -172,10 +175,12 @@ static const struct ata_port_operations vt6421_pata_ops = {
172 .irq_clear = ata_bmdma_irq_clear, 175 .irq_clear = ata_bmdma_irq_clear,
173 .irq_on = ata_irq_on, 176 .irq_on = ata_irq_on,
174 177
175 .port_start = ata_port_start, 178 .port_start = ata_sff_port_start,
176}; 179};
177 180
178static const struct ata_port_operations vt6421_sata_ops = { 181static const struct ata_port_operations vt6421_sata_ops = {
182 .mode_filter = ata_pci_default_filter,
183
179 .tf_load = ata_tf_load, 184 .tf_load = ata_tf_load,
180 .tf_read = ata_tf_read, 185 .tf_read = ata_tf_read,
181 .check_status = ata_check_status, 186 .check_status = ata_check_status,
@@ -195,7 +200,6 @@ static const struct ata_port_operations vt6421_sata_ops = {
195 .thaw = ata_bmdma_thaw, 200 .thaw = ata_bmdma_thaw,
196 .error_handler = ata_bmdma_error_handler, 201 .error_handler = ata_bmdma_error_handler,
197 .post_internal_cmd = ata_bmdma_post_internal_cmd, 202 .post_internal_cmd = ata_bmdma_post_internal_cmd,
198 .cable_detect = ata_cable_sata,
199 203
200 .irq_clear = ata_bmdma_irq_clear, 204 .irq_clear = ata_bmdma_irq_clear,
201 .irq_on = ata_irq_on, 205 .irq_on = ata_irq_on,
@@ -203,7 +207,7 @@ static const struct ata_port_operations vt6421_sata_ops = {
203 .scr_read = svia_scr_read, 207 .scr_read = svia_scr_read,
204 .scr_write = svia_scr_write, 208 .scr_write = svia_scr_write,
205 209
206 .port_start = ata_port_start, 210 .port_start = ata_sff_port_start,
207}; 211};
208 212
209static const struct ata_port_info vt6420_port_info = { 213static const struct ata_port_info vt6420_port_info = {
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
index 95ae3ed24a9d..099a2ba4cd4f 100644
--- a/drivers/ata/sata_vsc.c
+++ b/drivers/ata/sata_vsc.c
@@ -331,6 +331,7 @@ static const struct ata_port_operations vsc_sata_ops = {
331 .qc_prep = ata_qc_prep, 331 .qc_prep = ata_qc_prep,
332 .qc_issue = ata_qc_issue_prot, 332 .qc_issue = ata_qc_issue_prot,
333 .data_xfer = ata_data_xfer, 333 .data_xfer = ata_data_xfer,
334 .mode_filter = ata_pci_default_filter,
334 .freeze = vsc_freeze, 335 .freeze = vsc_freeze,
335 .thaw = vsc_thaw, 336 .thaw = vsc_thaw,
336 .error_handler = ata_bmdma_error_handler, 337 .error_handler = ata_bmdma_error_handler,
@@ -339,7 +340,7 @@ static const struct ata_port_operations vsc_sata_ops = {
339 .irq_on = ata_irq_on, 340 .irq_on = ata_irq_on,
340 .scr_read = vsc_sata_scr_read, 341 .scr_read = vsc_sata_scr_read,
341 .scr_write = vsc_sata_scr_write, 342 .scr_write = vsc_sata_scr_write,
342 .port_start = ata_port_start, 343 .port_start = ata_sff_port_start,
343}; 344};
344 345
345static void __devinit vsc_sata_setup_port(struct ata_ioports *port, 346static void __devinit vsc_sata_setup_port(struct ata_ioports *port,