diff options
author | Tejun Heo <htejun@gmail.com> | 2008-03-24 23:22:49 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-04-17 15:44:17 -0400 |
commit | 887125e3740283be25564bfc6fb5d24974b651ab (patch) | |
tree | bd037e1c17a468fabe1834e707b70b4b43513e4a /drivers/ata/pata_hpt366.c | |
parent | 1bd5b715a305f6f13455e89becbd839010dd14b5 (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_hpt366.c')
-rw-r--r-- | drivers/ata/pata_hpt366.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c index b62d398ed84b..c2d4923d4db7 100644 --- a/drivers/ata/pata_hpt366.c +++ b/drivers/ata/pata_hpt366.c | |||
@@ -356,9 +356,9 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
356 | .udma_mask = ATA_UDMA4, | 356 | .udma_mask = ATA_UDMA4, |
357 | .port_ops = &hpt366_port_ops | 357 | .port_ops = &hpt366_port_ops |
358 | }; | 358 | }; |
359 | struct ata_port_info info = info_hpt366; | 359 | const struct ata_port_info *ppi[] = { &info_hpt366, NULL }; |
360 | const struct ata_port_info *ppi[] = { &info, NULL }; | ||
361 | 360 | ||
361 | void *hpriv = NULL; | ||
362 | u32 class_rev; | 362 | u32 class_rev; |
363 | u32 reg1; | 363 | u32 reg1; |
364 | int rc; | 364 | int rc; |
@@ -383,17 +383,17 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
383 | /* info_hpt366 is safe against re-entry so we can scribble on it */ | 383 | /* info_hpt366 is safe against re-entry so we can scribble on it */ |
384 | switch((reg1 & 0x700) >> 8) { | 384 | switch((reg1 & 0x700) >> 8) { |
385 | case 5: | 385 | case 5: |
386 | info.private_data = &hpt366_40; | 386 | hpriv = &hpt366_40; |
387 | break; | 387 | break; |
388 | case 9: | 388 | case 9: |
389 | info.private_data = &hpt366_25; | 389 | hpriv = &hpt366_25; |
390 | break; | 390 | break; |
391 | default: | 391 | default: |
392 | info.private_data = &hpt366_33; | 392 | hpriv = &hpt366_33; |
393 | break; | 393 | break; |
394 | } | 394 | } |
395 | /* Now kick off ATA set up */ | 395 | /* Now kick off ATA set up */ |
396 | return ata_pci_init_one(dev, ppi, &hpt36x_sht); | 396 | return ata_pci_init_one(dev, ppi, &hpt36x_sht, hpriv); |
397 | } | 397 | } |
398 | 398 | ||
399 | #ifdef CONFIG_PM | 399 | #ifdef CONFIG_PM |