diff options
Diffstat (limited to 'drivers/scsi/libsas/sas_ata.c')
| -rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 28 | 
1 files changed, 13 insertions, 15 deletions
| diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 4c69fc63c119..88714b7b0dba 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c @@ -572,15 +572,6 @@ static struct ata_port_operations sas_sata_ops = {  	.end_eh			= sas_ata_end_eh,  }; -static struct ata_port_info sata_port_info = { -	.flags = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ | -		 ATA_FLAG_SAS_HOST | ATA_FLAG_FPDMA_AUX, -	.pio_mask = ATA_PIO4, -	.mwdma_mask = ATA_MWDMA2, -	.udma_mask = ATA_UDMA6, -	.port_ops = &sas_sata_ops -}; -  int sas_ata_init(struct domain_device *found_dev)  {  	struct sas_ha_struct *ha = found_dev->port->ha; @@ -597,28 +588,35 @@ int sas_ata_init(struct domain_device *found_dev)  	ata_host_init(ata_host, ha->dev, &sas_sata_ops); -	ap = ata_sas_port_alloc(ata_host, &sata_port_info, shost); +	ap = ata_port_alloc(ata_host);  	if (!ap) { -		pr_err("ata_sas_port_alloc failed.\n"); +		pr_err("ata_port_alloc failed.\n");  		rc = -ENODEV;  		goto free_host;  	} +	ap->port_no = 0; +	ap->pio_mask = ATA_PIO4; +	ap->mwdma_mask = ATA_MWDMA2; +	ap->udma_mask = ATA_UDMA6; +	ap->flags |= ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ | +		     ATA_FLAG_SAS_HOST | ATA_FLAG_FPDMA_AUX; +	ap->ops = &sas_sata_ops;  	ap->private_data = found_dev;  	ap->cbl = ATA_CBL_SATA;  	ap->scsi_host = shost; -	rc = ata_sas_tport_add(ata_host->dev, ap); +	rc = ata_tport_add(ata_host->dev, ap);  	if (rc) -		goto destroy_port; +		goto free_port;  	found_dev->sata_dev.ata_host = ata_host;  	found_dev->sata_dev.ap = ap;  	return 0; -destroy_port: -	kfree(ap); +free_port: +	ata_port_free(ap);  free_host:  	ata_host_put(ata_host);  	return rc; |