This repository has been archived on 2025-06-06. You can view files and clone it, but cannot push or open issues or pull requests.
Files
android-g900/kernel-2.6.33/drivers/platform/arm/pxa_share_mem.c
Angell Fear 0666031fb7 G900 support
2010-09-03 00:59:42 +06:00

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);