This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

spi 驱动进不了probe函数。



hi,大神们

我在板级文件(board-am335xevm.c)里初始化了我的spi外设如下:

 1. static struct pinmux_config spi1_pin_mux[] = {

  {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL   | AM33XX_INPUT_EN},

  {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL   | AM33XX_PULL_UP | AM33XX_INPUT_EN},

 {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL   | AM33XX_INPUT_EN},

  {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL   | AM33XX_PULL_UP | AM33XX_INPUT_EN},

 {NULL, 0}, };

 2. static struct spi_board_info oled_spi1_slave_info[] = {

 {   

.modalias      = "oled",   

.platform_data = (const void *)GPIO_TO_PIN(3, 16),  

 .irq           = -1,  

 .max_speed_hz  = 12000000,  

 .bus_num       = 2,   .chip_select   = 0,        

 .mode = SPI_MODE_0,  },

 };

3. static void spi1_init(int evm_id, int profile) {  

setup_pin_mux(spi1_pin_mux);

 spi_register_board_info(oled_spi1_slave_info,  ARRAY_SIZE(oled_spi1_slave_info));  

  return;

 }

 4. static struct evm_dev_cfg evm_sk_dev_cfg[] = {

 //{mcasp1_init,   DEV_ON_BASEBOARD, PROFILE_ALL},

 {spi1_init,DEV_ON_DGHTR_BRD, PROFILE_ALL},

 ... };

 

我的驱动程序(spi_oled.c)里定义了如下spi_driver结构体(其他部分没贴出来);

 static struct spi_driver spi_oled_drv = {

 .driver = {   .name = "oled",   

.owner = THIS_MODULE,  },

 .probe = spi_oled_probe,  

.remove = __devexit_p(spi_oled_remove), };

 当我insmod spi_oled.ok时,能成功挂载。 但在/dev 里找不到设备节点,后来我发现是匹配不成功,进入不了我驱动的probe函数。 (设备节点自动挂在等函数式放在probe函数内的,在该函数内也加了打印信息,证明没进入该函数)。

我的设备名“oled”和驱动名“oled”不是已经一样了么,为什么会匹配不成功呢?

刚刚还发现,板子sys/bus/spi/devices 目录下是空的,也就是说我的spi设备没加载进去?这个怎么解决呢?