- 论坛徽章:
- 0
|
我调用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);
以上是映射及读写的代码,谢谢各位了。 |
|