2005-05-11 20:05:23

by Gerd Knorr

[permalink] [raw]
Subject: [patch] v4l: saa7134 byteorder fix

Fix byteorder bug in the saa7134 driver. With that ObviouslyCorrect[tm]
patch applied the driver reportly works on powerpc.

Signed-off-by: Gerd Knorr <[email protected]>
---
drivers/media/video/saa7134/saa7134-core.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.12-rc3/drivers/media/video/saa7134/saa7134-core.c
===================================================================
--- linux-2.6.12-rc3.orig/drivers/media/video/saa7134/saa7134-core.c 2005-04-26 12:18:56.000000000 +0200
+++ linux-2.6.12-rc3/drivers/media/video/saa7134/saa7134-core.c 2005-05-11 21:54:54.000000000 +0200
@@ -340,7 +340,7 @@ int saa7134_pgtable_build(struct pci_dev
ptr = pt->cpu + startpage;
for (i = 0; i < length; i++, list++)
for (p = 0; p * 4096 < list->length; p++, ptr++)
- *ptr = sg_dma_address(list) - list->offset;
+ *ptr = cpu_to_le32(sg_dma_address(list) - list->offset);
return 0;
}


--
-mm seems unusually stable at present.
-- akpm about 2.6.12-rc3-mm3


2005-05-11 21:10:52

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [patch] v4l: saa7134 byteorder fix

On Wednesday 11 May 2005 23:59, Gerd Knorr wrote:
> Fix byteorder bug in the saa7134 driver. With that ObviouslyCorrect[tm]
> patch applied the driver reportly works on powerpc.

> --- linux-2.6.12-rc3.orig/drivers/media/video/saa7134/saa7134-core.c
> +++ linux-2.6.12-rc3/drivers/media/video/saa7134/saa7134-core.c

> - *ptr = sg_dma_address(list) - list->offset;
> + *ptr = cpu_to_le32(sg_dma_address(list) - list->offset);

Clearly mark pointers to little-endian things.

Signed-off-by: Alexey Dobriyan <[email protected]>

diff -uprN linux-vanilla/drivers/media/video/saa7134/saa7134-core.c linux-saa/drivers/media/video/saa7134/saa7134-core.c
--- linux-vanilla/drivers/media/video/saa7134/saa7134-core.c 2005-05-10 03:13:22.000000000 +0400
+++ linux-saa/drivers/media/video/saa7134/saa7134-core.c 2005-05-12 00:27:23.000000000 +0400
@@ -316,7 +316,7 @@ unsigned long saa7134_buffer_base(struct

int saa7134_pgtable_alloc(struct pci_dev *pci, struct saa7134_pgtable *pt)
{
- u32 *cpu;
+ __le32 *cpu;
dma_addr_t dma_addr;

cpu = pci_alloc_consistent(pci, SAA7134_PGTABLE_SIZE, &dma_addr);
@@ -332,7 +332,7 @@ int saa7134_pgtable_build(struct pci_dev
struct scatterlist *list, unsigned int length,
unsigned int startpage)
{
- u32 *ptr;
+ __le32 *ptr;
unsigned int i,p;

BUG_ON(NULL == pt || NULL == pt->cpu);
diff -uprN linux-vanilla/drivers/media/video/saa7134/saa7134.h linux-saa/drivers/media/video/saa7134/saa7134.h
--- linux-vanilla/drivers/media/video/saa7134/saa7134.h 2005-05-10 03:13:22.000000000 +0400
+++ linux-saa/drivers/media/video/saa7134/saa7134.h 2005-05-12 00:26:20.000000000 +0400
@@ -241,7 +241,7 @@ struct saa7134_dma;
/* saa7134 page table */
struct saa7134_pgtable {
unsigned int size;
- u32 *cpu;
+ __le32 *cpu;
dma_addr_t dma;
};