diff options
| author | Becky Bruce <beckyb@kernel.crashing.org> | 2009-09-21 08:26:35 +0000 | 
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-09-24 15:31:43 +1000 | 
| commit | 738ef42e32fe95553a424c04016b936c9f6c9afb (patch) | |
| tree | f45f21a92eacbb22bd3223c5ac725473c6ec1d72 /arch/powerpc/kernel | |
| parent | 1cebd7a0f62804ca24f7b7b35e8105000b9e879a (diff) | |
| download | olio-linux-3.10-738ef42e32fe95553a424c04016b936c9f6c9afb.tar.xz olio-linux-3.10-738ef42e32fe95553a424c04016b936c9f6c9afb.zip  | |
powerpc: Change archdata dma_data to a union
Sometimes this is used to hold a simple offset, and sometimes
it is used to hold a pointer.  This patch changes it to a union containing
void * and dma_addr_t.  get/set accessors are also provided, because it was
getting a bit ugly to get to the actual data.
Signed-off-by: Becky Bruce <beckyb@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel')
| -rw-r--r-- | arch/powerpc/kernel/dma-iommu.c | 16 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci-common.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vio.c | 2 | 
3 files changed, 10 insertions, 10 deletions
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c index 87ddb3fb948..37771a51811 100644 --- a/arch/powerpc/kernel/dma-iommu.c +++ b/arch/powerpc/kernel/dma-iommu.c @@ -18,7 +18,7 @@  static void *dma_iommu_alloc_coherent(struct device *dev, size_t size,  				      dma_addr_t *dma_handle, gfp_t flag)  { -	return iommu_alloc_coherent(dev, dev->archdata.dma_data, size, +	return iommu_alloc_coherent(dev, get_iommu_table_base(dev), size,  				    dma_handle, device_to_mask(dev), flag,  				    dev_to_node(dev));  } @@ -26,7 +26,7 @@ static void *dma_iommu_alloc_coherent(struct device *dev, size_t size,  static void dma_iommu_free_coherent(struct device *dev, size_t size,  				    void *vaddr, dma_addr_t dma_handle)  { -	iommu_free_coherent(dev->archdata.dma_data, size, vaddr, dma_handle); +	iommu_free_coherent(get_iommu_table_base(dev), size, vaddr, dma_handle);  }  /* Creates TCEs for a user provided buffer.  The user buffer must be @@ -39,8 +39,8 @@ static dma_addr_t dma_iommu_map_page(struct device *dev, struct page *page,  				     enum dma_data_direction direction,  				     struct dma_attrs *attrs)  { -	return iommu_map_page(dev, dev->archdata.dma_data, page, offset, size, -			      device_to_mask(dev), direction, attrs); +	return iommu_map_page(dev, get_iommu_table_base(dev), page, offset, +			      size, device_to_mask(dev), direction, attrs);  } @@ -48,7 +48,7 @@ static void dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle,  				 size_t size, enum dma_data_direction direction,  				 struct dma_attrs *attrs)  { -	iommu_unmap_page(dev->archdata.dma_data, dma_handle, size, direction, +	iommu_unmap_page(get_iommu_table_base(dev), dma_handle, size, direction,  			 attrs);  } @@ -57,7 +57,7 @@ static int dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist,  			    int nelems, enum dma_data_direction direction,  			    struct dma_attrs *attrs)  { -	return iommu_map_sg(dev, dev->archdata.dma_data, sglist, nelems, +	return iommu_map_sg(dev, get_iommu_table_base(dev), sglist, nelems,  			    device_to_mask(dev), direction, attrs);  } @@ -65,14 +65,14 @@ static void dma_iommu_unmap_sg(struct device *dev, struct scatterlist *sglist,  		int nelems, enum dma_data_direction direction,  		struct dma_attrs *attrs)  { -	iommu_unmap_sg(dev->archdata.dma_data, sglist, nelems, direction, +	iommu_unmap_sg(get_iommu_table_base(dev), sglist, nelems, direction,  		       attrs);  }  /* We support DMA to/from any memory page via the iommu */  static int dma_iommu_dma_supported(struct device *dev, u64 mask)  { -	struct iommu_table *tbl = dev->archdata.dma_data; +	struct iommu_table *tbl = get_iommu_table_base(dev);  	if (!tbl || tbl->it_offset > mask) {  		printk(KERN_INFO diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index e9f4840096b..bb8209e3493 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -1117,7 +1117,7 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)  		/* Hook up default DMA ops */  		sd->dma_ops = pci_dma_ops; -		sd->dma_data = (void *)PCI_DRAM_OFFSET; +		set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);  		/* Additional platform DMA/iommu setup */  		if (ppc_md.pci_dma_dev_setup) diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 1b4f674ad7c..77f64218abf 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c @@ -1235,7 +1235,7 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node)  		vio_cmo_set_dma_ops(viodev);  	else  		viodev->dev.archdata.dma_ops = &dma_iommu_ops; -	viodev->dev.archdata.dma_data = vio_build_iommu_table(viodev); +	set_iommu_table_base(&viodev->dev, vio_build_iommu_table(viodev));  	set_dev_node(&viodev->dev, of_node_to_nid(of_node));  	/* init generic 'struct device' fields: */  |