#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define dbg(msg,param) \ { printk(KERN_INFO "DPRAM: msg \n",param); } u32* vaddr ; void hexdump(char *prompt, u32 *buf, u16 size) { const u32 *ptr = buf; //int j = 0; printk(KERN_NOTICE "%s: ", prompt); printk("\n============ dump ================"); print_hex_dump_bytes("",DUMP_PREFIX_OFFSET, buf, size); printk("\n============ ansii =============== \n"); /* for (j = 0; j < size; j++) { if(isascii(ptr[j]) && isprint(ptr[j])){ printk("%c",ptr[j]); }else{ if((ptr[j] == 0x00) || (ptr[j] == 0x0D) || (ptr[j] == 0x0A)){ if(ptr[j] != 0x0A) printk("\n"); }else{ printk("<0x%02x>",ptr[j]); } } } */ printk("\n============ done =============== \n"); } void dump(u8 *buf, u32 start ,u32 end) { } static int __init gmem_init(void) { int err; u16 i; unsigned int ch; u32 slen=0x900000; /* dead read addr 0xd - 0xf 0x600 - */ printk(KERN_NOTICE "G900 VLIO init\n"); vaddr = (u8*) ioremap (PXA_CS2_PHYS , slen); printk(KERN_NOTICE "maped!\n"); msleep(10); for(i=0x0;i<0x600;i++){ printk("\n 0x%08x write 0xff",(PXA_CS2_PHYS+i)); msleep(10); *((u8*)vaddr+i) = 0xFF; printk("\n 0x%08x write 0x00",(PXA_CS2_PHYS+i)); msleep(10); *((u8*)vaddr+i) = 0x88; printk("\n 0x%08x write 0x88",(PXA_CS2_PHYS+i)); msleep(10); *((u8*)vaddr+i) = 0x88; } /* for(i=0x0;i<0x600;i++){ if((i%0x10) ==0 ){ printk("\n 0x%08x ",(PXA_CS2_PHYS+i)); msleep(10); } if( i == 0xc|| i == 0xd|| i == 0xe|| i == 0xf|| false ){ printk("XX "); }else{ ch =*((u8*)vaddr+i); printk("%02x ",ch); } } */ return 0; //print_hex_dump_bytes("",DUMP_PREFIX_OFFSET, vaddr, 0x800); } static void gmem_exit(void) { printk(KERN_NOTICE "G900 VLIO exit\n"); iounmap(vaddr); } MODULE_AUTHOR("Angell Fear "); MODULE_DESCRIPTION(""); MODULE_LICENSE("GPL"); module_init(gmem_init); module_exit(gmem_exit);