Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d1bbee6 authored by Jeff Garzik's avatar Jeff Garzik Committed by James Bottomley
Browse files

[SCSI] libsas: Remove PCI dependencies



Eliminate unnecessary PCI dependencies in libsas.  It should use generic
DMA and struct device like other subsystems.

Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent fd3adb2a
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -586,7 +586,7 @@ static int __devinit asd_pci_probe(struct pci_dev *dev,
		goto Err;
	}
	asd_ha->pcidev = dev;
	asd_ha->sas_ha.pcidev = asd_ha->pcidev;
	asd_ha->sas_ha.dev = &asd_ha->pcidev->dev;
	asd_ha->sas_ha.lldd_ha = asd_ha;

	asd_ha->name = asd_dev->name;
@@ -605,8 +605,6 @@ static int __devinit asd_pci_probe(struct pci_dev *dev,
		goto Err_free;
	}



	err = asd_dev->setup(asd_ha);
	if (err)
		goto Err_free;
+15 −15
Original line number Diff line number Diff line
@@ -382,7 +382,7 @@ int sas_ata_init_host_and_port(struct domain_device *found_dev,
	struct ata_port *ap;

	ata_host_init(&found_dev->sata_dev.ata_host,
		      &ha->pcidev->dev,
		      ha->dev,
		      sata_port_info.flags,
		      &sas_sata_ops);
	ap = ata_sas_port_alloc(&found_dev->sata_dev.ata_host,
@@ -448,10 +448,10 @@ static void sas_disc_task_done(struct sas_task *task)
 * @task: the task to be executed
 * @buffer: pointer to buffer to do I/O
 * @size: size of @buffer
 * @pci_dma_dir: PCI_DMA_...
 * @dma_dir: DMA direction.  DMA_xxx
 */
static int sas_execute_task(struct sas_task *task, void *buffer, int size,
			    int pci_dma_dir)
			    enum dma_data_direction dma_dir)
{
	int res = 0;
	struct scatterlist *scatter = NULL;
@@ -461,7 +461,7 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
	struct sas_internal *i =
		to_sas_internal(task->dev->port->ha->core.shost->transportt);

	if (pci_dma_dir != PCI_DMA_NONE) {
	if (dma_dir != DMA_NONE) {
		scatter = kzalloc(sizeof(*scatter), GFP_KERNEL);
		if (!scatter)
			goto out;
@@ -474,11 +474,11 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
	task->scatter = scatter;
	task->num_scatter = num_scatter;
	task->total_xfer_len = size;
	task->data_dir = pci_dma_dir;
	task->data_dir = dma_dir;
	task->task_done = sas_disc_task_done;
	if (pci_dma_dir != PCI_DMA_NONE &&
	if (dma_dir != DMA_NONE &&
	    sas_protocol_ata(task->task_proto)) {
		task->num_scatter = pci_map_sg(task->dev->port->ha->pcidev,
		task->num_scatter = dma_map_sg(task->dev->port->ha->dev,
					       task->scatter,
					       task->num_scatter,
					       task->data_dir);
@@ -565,9 +565,9 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
		}
	}
ex_err:
	if (pci_dma_dir != PCI_DMA_NONE) {
	if (dma_dir != DMA_NONE) {
		if (sas_protocol_ata(task->task_proto))
			pci_unmap_sg(task->dev->port->ha->pcidev,
			dma_unmap_sg(task->dev->port->ha->dev,
				     task->scatter, task->num_scatter,
				     task->data_dir);
		kfree(scatter);
@@ -628,11 +628,11 @@ static void sas_get_ata_command_set(struct domain_device *dev)
 * @features: the features register
 * @buffer: pointer to buffer to do I/O
 * @size: size of @buffer
 * @pci_dma_dir: PCI_DMA_...
 * @dma_dir: DMA direction.  DMA_xxx
 */
static int sas_issue_ata_cmd(struct domain_device *dev, u8 command,
			     u8 features, void *buffer, int size,
			     int pci_dma_dir)
			     enum dma_data_direction dma_dir)
{
	int res = 0;
	struct sas_task *task;
@@ -652,7 +652,7 @@ static int sas_issue_ata_cmd(struct domain_device *dev, u8 command,
	task->ata_task.fis.device = d2h_fis->device;
	task->ata_task.retry_count = 1;

	res = sas_execute_task(task, buffer, size, pci_dma_dir);
	res = sas_execute_task(task, buffer, size, dma_dir);

	sas_free_task(task);
out:
@@ -707,7 +707,7 @@ static int sas_discover_sata_dev(struct domain_device *dev)
	}

	res = sas_issue_ata_cmd(dev, command, 0, identify_x, 512,
				PCI_DMA_FROMDEVICE);
				DMA_FROM_DEVICE);
	if (res)
		goto out_err;

@@ -720,13 +720,13 @@ static int sas_discover_sata_dev(struct domain_device *dev)
			goto cont1;
		res = sas_issue_ata_cmd(dev, ATA_SET_FEATURES,
					ATA_FEATURE_PUP_STBY_SPIN_UP,
					NULL, 0, PCI_DMA_NONE);
					NULL, 0, DMA_NONE);
		if (res)
			goto cont1;

		schedule_timeout_interruptible(5*HZ); /* More time? */
		res = sas_issue_ata_cmd(dev, command, 0, identify_x, 512,
					PCI_DMA_FROMDEVICE);
					DMA_FROM_DEVICE);
		if (res)
			goto out_err;
	}
+1 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
 *
 */

#include <linux/pci.h>
#include <linux/scatterlist.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_eh.h>
@@ -170,7 +169,7 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
		if (res) {
			printk("sas: driver on pcidev %s cannot handle "
			       "device %llx, error:%d\n",
			       pci_name(sas_ha->pcidev),
			       sas_ha->dev->bus_id,
			       SAS_ADDR(dev->sas_addr), res);
		}
	}
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ void sas_dprint_phye(int phyid, enum phy_event pe)

void sas_dprint_hae(struct sas_ha_struct *sas_ha, enum ha_event he)
{
	SAS_DPRINTK("ha %s: %s event\n", pci_name(sas_ha->pcidev),
	SAS_DPRINTK("ha %s: %s event\n", sas_ha->dev->bus_id,
		    sas_hae_str[he]);
}

+1 −1
Original line number Diff line number Diff line
@@ -348,7 +348,7 @@ struct sas_ha_struct {

/* public: */
	char *sas_ha_name;
	struct pci_dev *pcidev;	  /* should be set */
	struct device *dev;	  /* should be set */
	struct module *lldd_module; /* should be set */

	u8 *sas_addr;		  /* must be set */