patch-2.3.36 linux/drivers/char/zr36120_mem.c

Next file: linux/drivers/char/zr36120_mem.h
Previous file: linux/drivers/char/zr36120_i2c.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.35/linux/drivers/char/zr36120_mem.c linux/drivers/char/zr36120_mem.c
@@ -22,6 +22,7 @@
 #include <linux/mm.h>
 #include <linux/pci.h>
 #include <linux/wrapper.h>
+#include <linux/slab.h>
 #include <asm/io.h>
 #ifdef CONFIG_BIGPHYS_AREA
 #include <linux/bigphysarea.h>
@@ -30,62 +31,21 @@
 #include "zr36120.h"
 #include "zr36120_mem.h"
 
-/* ----------------------------------------------------------------------- */
-/* Memory functions							   */
-/* shamelessly stolen and adapted from bttv.c				   */
-/* ----------------------------------------------------------------------- */
+/*******************************/
+/* Memory management functions */
+/*******************************/
 
-/*
- * convert virtual user memory address to physical address
- * (virt_to_phys only works for kmalloced kernel memory)
- */
-inline unsigned long uvirt_to_phys(unsigned long adr)
+inline int __get_order(unsigned long size)
 {
-	pgd_t *pgd;
-	pmd_t *pmd;
-	pte_t *ptep, pte;
-
-	pgd = pgd_offset(current->mm, adr);
-	if (pgd_none(*pgd))
-		return 0;
-	pmd = pmd_offset(pgd, adr);
-	if (pmd_none(*pmd))
-		return 0;
-	ptep = pte_offset(pmd, adr/*&(~PGDIR_MASK)*/);
-	pte = *ptep;
-	/* Note; page_address will panic for us if the page is high */
-        if(pte_present(pte))
-        	return page_address(pte_page(pte))|(adr&(PAGE_SIZE-1));
-	return 0;
-}
-
-/*
- * vmalloced address to physical address
- */
-inline unsigned long kvirt_to_phys(unsigned long adr)
-{
-	return uvirt_to_phys(VMALLOC_VMADDR(adr));
-}
-
-/*
- * vmalloced address to bus address
- */
-inline unsigned long kvirt_to_bus(unsigned long adr)
-{
-	return virt_to_bus(phys_to_virt(kvirt_to_phys(adr)));
-}
-
-inline int order(unsigned long size)
-{
-	int ordr = 0;
+        int order = 0;
 	size = (size+PAGE_SIZE-1)/PAGE_SIZE;
 	while (size) {
 		size /= 2;
-		ordr++;
+		order++;
 	}
-	return ordr;
+	return order;
 }
-
+			
 void* bmalloc(unsigned long size)
 {
 	void* mem;
@@ -96,7 +56,7 @@
 	 * The following function got a lot of memory at boottime,
 	 * so we know its always there...
 	 */
-	mem = (void*)__get_free_pages(GFP_USER,order(size));
+	mem = (void*)__get_free_pages(GFP_USER|GFP_DMA,__get_order(size));
 #endif
 	if (mem) {
 		unsigned long adr = (unsigned long)mem;
@@ -122,7 +82,7 @@
 #ifdef CONFIG_BIGPHYS_AREA
 		bigphysarea_free_pages(mem);
 #else
-		free_pages((unsigned long)mem,order(size));
+		free_pages((unsigned long)mem,__get_order(size));
 #endif
 	}
 }

FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen (who was at: [email protected])