144 lines
2.3 KiB
C
Executable File
144 lines
2.3 KiB
C
Executable File
|
|
#include <linux/module.h>
|
|
#include <linux/err.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/types.h>
|
|
#include <linux/ctype.h>
|
|
|
|
#include <asm/io.h>
|
|
#include <asm/mach-types.h>
|
|
|
|
#include <mach/hardware.h>
|
|
#include <mach/pxa2xx-regs.h>
|
|
|
|
#include <linux/interrupt.h>
|
|
#include <linux/irq.h>
|
|
#include <asm/gpio.h>
|
|
|
|
#include <linux/delay.h>
|
|
|
|
|
|
|
|
|
|
#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 <angell@angellfear.ru>");
|
|
MODULE_DESCRIPTION("");
|
|
MODULE_LICENSE("GPL");
|
|
|
|
module_init(gmem_init);
|
|
module_exit(gmem_exit);
|