aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_via.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2008-03-24 23:22:49 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:44:17 -0400
commit887125e3740283be25564bfc6fb5d24974b651ab (patch)
treebd037e1c17a468fabe1834e707b70b4b43513e4a /drivers/ata/pata_via.c
parent1bd5b715a305f6f13455e89becbd839010dd14b5 (diff)
libata: stop overloading port_info->private_data
port_info->private_data is currently used for two purposes - to record private data about the port_info or to specify host->private_data to use when allocating ata_host. This overloading is confusing and counter-intuitive in that port_info->private_data becomes host->private_data instead of port->private_data. In addition, port_info and host don't correspond to each other 1-to-1. Currently, the first non-NULL port_info->private_data is used. This patch makes port_info->private_data just be what it is - private_data for the port_info where LLD can jot down extra info. libata no longer sets host->private_data to the first non-NULL port_info->private_data, @host_priv argument is added to ata_pci_init_one() instead. LLDs which use ata_pci_init_one() can use this argument to pass in pointer to host private data. LLDs which don't should use init-register model anyway and can initialize host->private_data directly. Adding @host_priv instead of using init-register model for LLDs which use ata_pci_init_one() is suggested by Alan Cox. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Diffstat (limited to 'drivers/ata/pata_via.c')
-rw-r--r--drivers/ata/pata_via.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index e66bb85ad3d1..f4092cbd566f 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -442,8 +442,7 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
442 .udma_mask = ATA_UDMA6, /* FIXME: should check north bridge */ 442 .udma_mask = ATA_UDMA6, /* FIXME: should check north bridge */
443 .port_ops = &via_port_ops 443 .port_ops = &via_port_ops
444 }; 444 };
445 struct ata_port_info type; 445 const struct ata_port_info *ppi[] = { NULL, NULL };
446 const struct ata_port_info *ppi[] = { &type, NULL };
447 struct pci_dev *isa = NULL; 446 struct pci_dev *isa = NULL;
448 const struct via_isa_bridge *config; 447 const struct via_isa_bridge *config;
449 static int printed_version; 448 static int printed_version;
@@ -491,25 +490,25 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
491 switch(config->flags & VIA_UDMA) { 490 switch(config->flags & VIA_UDMA) {
492 case VIA_UDMA_NONE: 491 case VIA_UDMA_NONE:
493 if (config->flags & VIA_NO_UNMASK) 492 if (config->flags & VIA_NO_UNMASK)
494 type = via_mwdma_info_borked; 493 ppi[0] = &via_mwdma_info_borked;
495 else 494 else
496 type = via_mwdma_info; 495 ppi[0] = &via_mwdma_info;
497 break; 496 break;
498 case VIA_UDMA_33: 497 case VIA_UDMA_33:
499 type = via_udma33_info; 498 ppi[0] = &via_udma33_info;
500 break; 499 break;
501 case VIA_UDMA_66: 500 case VIA_UDMA_66:
502 type = via_udma66_info; 501 ppi[0] = &via_udma66_info;
503 /* The 66 MHz devices require we enable the clock */ 502 /* The 66 MHz devices require we enable the clock */
504 pci_read_config_dword(pdev, 0x50, &timing); 503 pci_read_config_dword(pdev, 0x50, &timing);
505 timing |= 0x80008; 504 timing |= 0x80008;
506 pci_write_config_dword(pdev, 0x50, timing); 505 pci_write_config_dword(pdev, 0x50, timing);
507 break; 506 break;
508 case VIA_UDMA_100: 507 case VIA_UDMA_100:
509 type = via_udma100_info; 508 ppi[0] = &via_udma100_info;
510 break; 509 break;
511 case VIA_UDMA_133: 510 case VIA_UDMA_133:
512 type = via_udma133_info; 511 ppi[0] = &via_udma133_info;
513 break; 512 break;
514 default: 513 default:
515 WARN_ON(1); 514 WARN_ON(1);
@@ -524,9 +523,7 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
524 } 523 }
525 524
526 /* We have established the device type, now fire it up */ 525 /* We have established the device type, now fire it up */
527 type.private_data = (void *)config; 526 return ata_pci_init_one(pdev, ppi, &via_sht, (void *)config);
528
529 return ata_pci_init_one(pdev, ppi, &via_sht);
530} 527}
531 528
532#ifdef CONFIG_PM 529#ifdef CONFIG_PM