免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2663 | 回复: 0
打印 上一主题 下一主题

[驱动] S5PV210+LInux2.6.35:ioremap 怎么不能写SPI和IIC寄存器呢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-03 13:37 |只看该作者 |倒序浏览
我调用ioremap()映射SPI寄存器地址,然后调用ioread32()和iowrite32()对SPI寄存器进行读写操作,可是结果却是无法写入啊,请问哪位知道啊!谢谢了,下面是我的一段代码
67 //***********************************************************************
68 //函数名称:SPI_DEV()
69 //函数供呢:SPI寄存器地址映射
70 //入口参数:无
71 //返 回 值:无
72 //***********************************************************************
73 static void SPI_DEV (void)
74 {
75
76   spi_addr = 0xE1300000;
77   request_mem_region(spi_addr,0x30,"spi";
78   spi_addr_virt = (unsigned long)ioremap_nocache(spi_addr, 0x30);
79   //request_region(spi_addr,0x30,"spi";
80   //spi_addr_virt = (unsigned long)ioport_map(spi_addr,0x30);
81
82   SPI_CH0      = (unsigned long *)(spi_addr_virt);
83   SPI_CLK0     = (unsigned long *)(spi_addr_virt + 0x04);
84   SPI_MODE0    = (unsigned long *)(spi_addr_virt + 0x0;
85   SPI_CS0      = (unsigned long *)(spi_addr_virt + 0x0C);
86   SPI_INT0     = (unsigned long *)(spi_addr_virt + 0x10);
87   SPI_STATUS0  = (unsigned long *)(spi_addr_virt + 0x14);
88   SPI_T0       = (unsigned long *)(spi_addr_virt + 0x1;
89   SPI_R0       = (unsigned long *)(spi_addr_virt + 0x1C);
90   SPI_PACKET0  = (unsigned long *)(spi_addr_virt + 0x20);
91   SPI_PENDING0 = (unsigned long *)(spi_addr_virt + 0x24);
92   SPI_SWAP0    = (unsigned long *)(spi_addr_virt + 0x2;
93   SPI_FB0      = (unsigned long *)(spi_addr_virt + 0x2C);
94 }
95
96 //***********************************************************************
97 //函数名称:SPI_GPIO()
98 //函数供呢:SPI GPIO驱动
99 //入口参数:无
100 //返 回 值:无
101 //***********************************************************************
102 static void SPI_GPIO(void) {
103
104  s3c_gpio_cfgpin(S5PV210_GPB(0), S3C_GPIO_SFN(2));
105  s3c_gpio_cfgpin(S5PV210_GPB(1), S3C_GPIO_SFN(2));
106  s3c_gpio_cfgpin(S5PV210_GPB(2), S3C_GPIO_SFN(2));
107  s3c_gpio_cfgpin(S5PV210_GPB(3), S3C_GPIO_SFN(2));
108
109  gpio_direction_output(S5PV210_GPB(1), 1);
110 }

165   regdata = readb(SPI_CH0);
166   printk ("SPI_CH0_read==================================0x%lX\n",regdata);
167   //regdata |= SPI_C_R;
168   regdata |= 0xff;
169   writeb(regdata,SPI_CH0);
170   printk ("SPI_CH0_addr==================================0x%lX\n",SPI_CH0);
171   regdata = readb(SPI_CH0);
172   printk ("SPI_CH0_write==================================0x%lX\n",regdata);

以上是映射及读写的代码,谢谢各位了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP