use sparc64 version of scatterlist.h
PATCH 1/1 use sparc64 version of scatterlist.h
Use sparc64 version of scatterlist.h.
There are three main differences:
dma_addr_t replaces __u32
dma_address replaces dvma_address
dma_length replaces dvma_length
dma_addr_t is a u32 on sparc32.
Boot tested on sparc32.
Signed-off-by Robert Reif <[email protected]>
arch/sparc/include/asm/scatterlist.h | 33 ++++++++++++++++++++++++------ arch/sparc/include/asm/scatterlist_32.h | 26 ------------------------ arch/sparc/include/asm/scatterlist_64.h | 27 ------------------------- arch/sparc/kernel/ioport.c | 4 +- arch/sparc/mm/io-unit.c | 8 +++--- arch/sparc/mm/iommu.c | 16 +++++++------- arch/sparc/mm/sun4c.c | 6 ++-- 7 files changed, 43 insertions(+), 77 deletions(-)
arch/sparc/include/asm/scatterlist.h +26 -7
@@ -1,8 +1,27 @@ -#ifndef ___ASM_SPARC_SCATTERLIST_H -#define ___ASM_SPARC_SCATTERLIST_H -#if defined(__sparc__) && defined(__arch64__) -#include <asm/scatterlist_64.h> -#else -#include <asm/scatterlist_32.h> -#endif +#ifndef _SPARC_SCATTERLIST_H +#define _SPARC_SCATTERLIST_H + +#include <asm/page.h> +#include <asm/types.h> + +struct scatterlist { +#ifdef CONFIG_DEBUG_SG +unsigned long sg_magic;#endif +unsigned long page_link; +unsigned int offset; + +unsigned int length; + +dma_addr_t dma_address; +__u32 dma_length; +}; + +#define sg_dma_address (sg) ((sg)->dma_address) +#define sg_dma_len (sg) ((sg)->dma_length) + +#define ISA_DMA_THRESHOLD (~0UL) + +#define ARCH_HAS_SG_CHAIN + +#endif /* !(_SPARC_SCATTERLIST_H) */
arch/sparc/include/asm/scatterlist_32.h deleted +0 -26
@@ -1,26 +0,0 @@ -#ifndef _SPARC_SCATTERLIST_H -#define _SPARC_SCATTERLIST_H - -#include <linux/types.h> - -struct scatterlist { -#ifdef CONFIG_DEBUG_SG -unsigned long sg_magic; -#endif -unsigned long page_link; -unsigned int offset; - -unsigned int length; - -__u32 dvma_address;/* A place to hang host-specific addresses at. */ -__u32 dvma_length; -}; - -#define sg_dma_address (sg) ((sg)->dvma_address) -#define sg_dma_len (sg) ((sg)->dvma_length) - -#define ISA_DMA_THRESHOLD (~0UL) - -#define ARCH_HAS_SG_CHAIN - -#endif /* !(_SPARC_SCATTERLIST_H) */
arch/sparc/include/asm/scatterlist_64.h deleted +0 -27
@@ -1,27 +0,0 @@ -#ifndef _SPARC64_SCATTERLIST_H -#define _SPARC64_SCATTERLIST_H - -#include <asm/page.h> -#include <asm/types.h> - -struct scatterlist { -#ifdef CONFIG_DEBUG_SG -unsigned long sg_magic; -#endif -unsigned long page_link; -unsigned int offset; - -unsigned int length; - -dma_addr_t dma_address; -__u32 dma_length; -}; - -#define sg_dma_address (sg) ((sg)->dma_address) -#define sg_dma_len (sg) ((sg)->dma_length) - -#define ISA_DMA_THRESHOLD (~0UL) - -#define ARCH_HAS_SG_CHAIN - -#endif /* !(_SPARC64_SCATTERLIST_H) */
arch/sparc/kernel/ioport.c +2 -2
@@ -552,8 +552,8 @@ int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents,/* IIep is write-through, not flushing. */ for_each_sg (sgl, sg, nents, n) {BUG_ON (page_address (sg_page (sg)) ==NULL ); - sg->dvma_address =virt_to_phys (sg_virt (sg)); - sg->dvma_length = sg->length; + sg->dma_address =virt_to_phys (sg_virt (sg)); + sg->dma_length = sg->length; }return nents; }
arch/sparc/mm/io-unit.c +4 -4
@@ -156,8 +156,8 @@ static void iounit_get_scsi_sgl(struct device *dev, struct scatterlist *sg, intspin_lock_irqsave (&iounit->lock, flags);while (sz !=0 ) { --sz; - sg->dvma_address =iounit_get_area (iounit, (unsigned long )sg_virt (sg), sg->length); - sg->dvma_length = sg->length; + sg->dma_address =iounit_get_area (iounit, (unsigned long )sg_virt (sg), sg->length); + sg->dma_length = sg->length; sg =sg_next (sg); }spin_unlock_irqrestore (&iounit->lock, flags);
@@ -186,8 +186,8 @@ static void iounit_release_scsi_sgl(struct device *dev, struct scatterlist *sg,spin_lock_irqsave (&iounit->lock, flags);while (sz !=0 ) { --sz; - len = ((sg->dvma_address & ~PAGE_MASK ) + sg->length + (PAGE_SIZE -1 )) >>PAGE_SHIFT ; - vaddr = (sg->dvma_address -IOUNIT_DMA_BASE ) >>PAGE_SHIFT ; + len = ((sg->dma_address & ~PAGE_MASK ) + sg->length + (PAGE_SIZE -1 )) >>PAGE_SHIFT ; + vaddr = (sg->dma_address -IOUNIT_DMA_BASE ) >>PAGE_SHIFT ;IOD (("iounit_release %08lx-%08lx\n" , (long )vaddr, (long )len+vaddr));for (len += vaddr; vaddr < len; vaddr++)clear_bit (vaddr, iounit->bmap);
arch/sparc/mm/iommu.c +8 -8
@@ -245,8 +245,8 @@ static void iommu_get_scsi_sgl_noflush(struct device *dev, struct scatterlist *swhile (sz !=0 ) { --sz; n = (sg->length + sg->offset +PAGE_SIZE -1 ) >>PAGE_SHIFT ; - sg->dvma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; - sg->dvma_length = (__u32 ) sg->length; + sg->dma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; + sg->dma_length = sg->length; sg =sg_next (sg); } }
@@ -259,8 +259,8 @@ static void iommu_get_scsi_sgl_gflush(struct device *dev, struct scatterlist *sgwhile (sz !=0 ) { --sz; n = (sg->length + sg->offset +PAGE_SIZE -1 ) >>PAGE_SHIFT ; - sg->dvma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; - sg->dvma_length = (__u32 ) sg->length; + sg->dma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; + sg->dma_length = sg->length; sg =sg_next (sg); } }
@@ -290,8 +290,8 @@ static void iommu_get_scsi_sgl_pflush(struct device *dev, struct scatterlist *sg } } - sg->dvma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; - sg->dvma_length = (__u32 ) sg->length; + sg->dma_address =iommu_get_one (dev,sg_page (sg), n) + sg->offset; + sg->dma_length = sg->length; sg =sg_next (sg); } }
@@ -330,8 +330,8 @@ static void iommu_release_scsi_sgl(struct device *dev, struct scatterlist *sg, i --sz; n = (sg->length + sg->offset +PAGE_SIZE -1 ) >>PAGE_SHIFT ; -iommu_release_one (dev, sg->dvma_address &PAGE_MASK , n); - sg->dvma_address =0x21212121 ; +iommu_release_one (dev, sg->dma_address &PAGE_MASK , n); + sg->dma_address =0x21212121 ; sg =sg_next (sg); } }
arch/sparc/mm/sun4c.c +3 -3
@@ -1122,8 +1122,8 @@ static void sun4c_get_scsi_sgl(struct device *dev, struct scatterlist *sg, int s {while (sz !=0 ) { --sz; - sg->dvma_address = (__u32 )sun4c_lockarea (sg_virt (sg), sg->length); - sg->dvma_length = sg->length; + sg->dma_address = (__u32 )sun4c_lockarea (sg_virt (sg), sg->length); + sg->dma_length = sg->length; sg =sg_next (sg); } }
@@ -1139,7 +1139,7 @@ static void sun4c_release_scsi_sgl(struct device *dev, struct scatterlist *sg, i {while (sz !=0 ) { --sz; -sun4c_unlockarea ((char *)sg->dvma_address, sg->length); +sun4c_unlockarea ((char *)sg->dma_address, sg->length); sg =sg_next (sg); } }
From: Robert Reif <[email protected]>
Date: Thu, 11 Dec 2008 23:02:17 -0500
Quoted 7 lines
Use sparc64 version of
scatterlist.h.There are three main differences:
dma_addr_treplaces__u32
dma_addressreplacesdvma_address
dma_lengthreplacesdvma_length
Quoted 5 lines
dma_addr_tis a u32 on sparc32.Boot tested on sparc32.
Signed-off-by Robert Reif <[email protected]>
Applied, thanks a lot Robert.