立即注册
查看: 1433|回复: 3

[问题] SPI兼容问题

已绑定手机
已实名认证
发表于 2019-12-10 17:54:39 | 显示全部楼层 |阅读模式 来自 广东省深圳市宝安区
我这有2个指纹驱动,2个主要的驱动如下驱动一static struct spi_board_info spi_board_cdfinger[] __initdata = {        [0] = {                .modalias = "cdfinger",                .bus_num = 0,                .chip_select = 1,                .mode = SPI_MODE_0,                .max_speed_hz = 5000000,        },};static int reMOVe_driver(void){        spi_unregister_driver(&cdfinger_driver);}static int finger_local_init(void){        printk("==finger_local_init1==\n");        spi_register_driver(&cdfinger_driver);}static struct finger_driver_t finger_device_driver = {        .finger_device_name = SPI_DRV_NAME,        .finger_local_init = finger_local_init,
};static int cdfinger_spi_init(void){        spi_register_board_info(spi_board_cdfinger, ARRAY_SIZE(spi_board_cdfinger));        if(finger_driver_add(&finger_device_driver) < 0)                printk("add finger driver failed\n");        return 0;}

驱动二
struct spi_board_info smt_info[] __initdata = {        [0] = {                .modalias = "cdfinger2",                .max_speed_hz = (6*1000000),                .bus_num = 0,                .chip_select = 0,                .mode = SPI_MODE_0,                .controller_data = &smt_conf,        },};static int finger_local_init(void){        ret = spi_register_driver(&sdrv);        if(ret) {                MALOGE("spi_register_driver");        }        return ret;}static struct finger_driver_t finger_device_driver = {        .finger_device_name = MA_DRV_NAME,        .finger_local_init = finger_local_init,
};int mas_get_platform(void) {        ret = spi_register_board_info(smt_info, ARRAY_SIZE(smt_info));        if(ret){                MALOGE("spi_register_board_info");        }        if(finger_driver_add(&finger_device_driver) < 0)                printk("add finger driver failed\n");        return ret;}软件发现谁先注册 就用谁。另外一个驱动更笨注册不了我这个兼容是能读ID,主要是无法挂载同chip_select 的设备。软件和这可能有关 .chip_select = 0,,或者 spi_register_board_info 同一个chip_select 后其他的不能注册都不知道怎么兼容??有那位高手做个SPI兼容。指点指点一二
我知道答案 回答被采纳将会获得5 RD币 已有3人回答
已绑定手机
已实名认证
专业2G/3G/4G智能模块核心板,承接方案定制,
手机:18665375912(微信同号)或点下面的黑色字体

深圳市新移科技有限公司
发表于 2019-12-10 20:19:31 | 显示全部楼层 来自 广东省深圳市
这个如果两个肯定有一个先后顺序的。。看一下注册的先后顺序然后在做修改。
已绑定手机
已实名认证
 楼主| 发表于 2019-12-25 14:47:51 | 显示全部楼层 来自 广东省深圳市
已解决
方法如下
kernel-3.10/drivers/misc/mediatek/spi/mt6582/spi.c
        master->num_chipselect = 2;
        修改成 master->num_chipselect = 3;
        则能支持3个SPI设备
        spi_board_info 中设备chip_select修改成不重复的数字
        struct spi_board_info smt_info[] __initdata = {
                         .modalias = MA_DRV_NAME,
                         .max_speed_hz = (6*1000000),
                         .bus_num = 0,
                         .chip_select = 2,
                         .mode = SPI_MODE_0,
                         .controller_data = &smt_conf,
   },
        默认的是chip_select=1,另外一个设备是chip_select=0
        所以本chip_select=2
已绑定手机
发表于 2019-12-25 17:32:39 | 显示全部楼层 来自 上海市
二楼是高手
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表