|
s3c6410 linux2.6.29写寄存器的问题
[复制链接]
今天写了个在linux 2.6.29下测试 IIS0的测试 driver, 碰到一个奇怪的问题,模块代码如下:
static int __devinit iis0_test_init(void)
{
unsigned char *virt;
virt = ioremap_nocache(0x7f002000, 0x100);
printk("IISCON a = 0x%x\n", *((unsigned int*)(virt)) );
*((unsigned int*)(virt)) = (1<<2)|1;
printk("IISCON b = 0x%x\n", *((unsigned int*)(virt)) );
printk("IISCON d = 0x%x\n", *((unsigned int*)(virt)) );
iounmap(virt);
return 0;
}
static void __exit iis0_test_exit(void)
{
}
module_init(iis0_test_init);
module_exit(iis0_test_exit);
MODULE_LICENSE("GPL");
编译加载进去运行,发现 register 写不进去,运行的结果是:
IISCON a=0xe00
IISCON b=0x5
IISCON d=0xe00
IISCON 的寄存器默认值是 0xe00, 也就是说,写没有生效。
这个问题只是在 linux 中运行有问题,在 u-boot 中我测试过是可以写进去的,没有问题的,不知道原因是什么,
哪位高手能帮帮忙啊,谢了!
|
|