diff options
| author | Tony Luck <tony.luck@intel.com> | 2005-06-29 18:21:41 -0400 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2005-06-29 18:21:41 -0400 |
| commit | d18bfacff20f08aecf01bb971b110ca108eef3c7 (patch) | |
| tree | 255f862839c593c796e609328575b611e3f56cf3 /drivers/scsi/ahci.c | |
| parent | a68db763af9b676590c3fe9ec3f17bf18015eb2f (diff) | |
| parent | fd782a4a99d2d3e818b9465c427b10f7f027d7da (diff) | |
Auto merge with /home/aegl/GIT/linus
Diffstat (limited to 'drivers/scsi/ahci.c')
| -rw-r--r-- | drivers/scsi/ahci.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 9a547ca9c864..c5623694d10f 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c | |||
| @@ -304,26 +304,19 @@ static int ahci_port_start(struct ata_port *ap) | |||
| 304 | struct device *dev = ap->host_set->dev; | 304 | struct device *dev = ap->host_set->dev; |
| 305 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 305 | struct ahci_host_priv *hpriv = ap->host_set->private_data; |
| 306 | struct ahci_port_priv *pp; | 306 | struct ahci_port_priv *pp; |
| 307 | int rc; | ||
| 308 | void *mem, *mmio = ap->host_set->mmio_base; | 307 | void *mem, *mmio = ap->host_set->mmio_base; |
| 309 | void *port_mmio = ahci_port_base(mmio, ap->port_no); | 308 | void *port_mmio = ahci_port_base(mmio, ap->port_no); |
| 310 | dma_addr_t mem_dma; | 309 | dma_addr_t mem_dma; |
| 311 | 310 | ||
| 312 | rc = ata_port_start(ap); | ||
| 313 | if (rc) | ||
| 314 | return rc; | ||
| 315 | |||
| 316 | pp = kmalloc(sizeof(*pp), GFP_KERNEL); | 311 | pp = kmalloc(sizeof(*pp), GFP_KERNEL); |
| 317 | if (!pp) { | 312 | if (!pp) |
| 318 | rc = -ENOMEM; | 313 | return -ENOMEM; |
| 319 | goto err_out; | ||
| 320 | } | ||
| 321 | memset(pp, 0, sizeof(*pp)); | 314 | memset(pp, 0, sizeof(*pp)); |
| 322 | 315 | ||
| 323 | mem = dma_alloc_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, &mem_dma, GFP_KERNEL); | 316 | mem = dma_alloc_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, &mem_dma, GFP_KERNEL); |
| 324 | if (!mem) { | 317 | if (!mem) { |
| 325 | rc = -ENOMEM; | 318 | kfree(pp); |
| 326 | goto err_out_kfree; | 319 | return -ENOMEM; |
| 327 | } | 320 | } |
| 328 | memset(mem, 0, AHCI_PORT_PRIV_DMA_SZ); | 321 | memset(mem, 0, AHCI_PORT_PRIV_DMA_SZ); |
| 329 | 322 | ||
| @@ -373,12 +366,6 @@ static int ahci_port_start(struct ata_port *ap) | |||
| 373 | readl(port_mmio + PORT_CMD); /* flush */ | 366 | readl(port_mmio + PORT_CMD); /* flush */ |
| 374 | 367 | ||
| 375 | return 0; | 368 | return 0; |
| 376 | |||
| 377 | err_out_kfree: | ||
| 378 | kfree(pp); | ||
| 379 | err_out: | ||
| 380 | ata_port_stop(ap); | ||
| 381 | return rc; | ||
| 382 | } | 369 | } |
| 383 | 370 | ||
| 384 | 371 | ||
| @@ -404,7 +391,6 @@ static void ahci_port_stop(struct ata_port *ap) | |||
| 404 | dma_free_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, | 391 | dma_free_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, |
| 405 | pp->cmd_slot, pp->cmd_slot_dma); | 392 | pp->cmd_slot, pp->cmd_slot_dma); |
| 406 | kfree(pp); | 393 | kfree(pp); |
| 407 | ata_port_stop(ap); | ||
| 408 | } | 394 | } |
| 409 | 395 | ||
| 410 | static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg_in) | 396 | static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg_in) |
