我正在使用TI816X自定义平台。我的平台上有一个新的基于SPI的音频编解码器(ROHM BU76312)设备。我找不到这个编解码器的Linux驱动程序。因此,我想编写用户空间SPI驱动程序来控制这个音频编解码器。
我在内核中创建了/dev/spidev1.2节点。但我不知道如何使用spidev读/写来控制这个音频编解码器。此照片列出了此音频编解码器的一些注册:https://dl.dropboxusercontent.com/u/27415803/photo/rohm_bu76312.jpg
如果我想写00H / 01H寄存器,那么读回来,我该怎么办?
这是我的测试程序,但我不知道如何编写寄存器读/写程序来控制基于spidev读/写功能的音频编解码器。
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#define ARRAY_SIZE(array) sizeof(array)/sizeof(array[0])
static const char *spidev = "/dev/spidev1.2";
int main(int argc, char **argv) {
int i,fd;
fd = open(spidev, O_RDWR);
#if 0
if (write(fd, wr_buf, ARRAY_SIZE(wr_buf)) != ARRAY_SIZE(wr_buf))
perror("Write Error");
#endif
close(fd);
return 0;
}
顺便说一句,我应该将哪种模式用于这种基于SPI的音频编解码器? .mode = SPI_MODE_0或SPI_MODE_3?
struct spi_board_info __initdata ti816x_spi_slave_info[] = {
.modalias = "spidev",
.irq = -1,
.max_speed_hz = 7500000,
.bus_num = 1,
.chip_select = 2,
//.mode = SPI_MODE_3, //??
//.mode = SPI_MODE_0, //??
}