全志双实屏添加驱动未执行问题

sakyamuni_1 2017-04-07 05:34:42
各位大牛,您好:
小弟碰一需求问题:
在操作过程中 ,在配置sys_config.fex lcd0和lcd1后, 我的配置参数在源码中可以拿到, 在一直执行不到添加的驱动,经分析发现:在disp_lcd.c中执行的一直都是lcd0,对应获取lcd0的结构体如下:
struct disp_device { struct list_head list;
/* data fields */
char name[32];
u32 disp;
u32 hwdev_index;//indicate the index of hw device(timing controller)
u32 fix_timing;
enum disp_output_type type;
struct disp_manager *manager;
struct disp_video_timings timings;
void* priv_data;

/* function fileds */
/* init: script init && clock init && pwm init && register irq
* exit: clock exit && unregister irq
*/
s32 (*init)(struct disp_device *dispdev);
s32 (*exit)(struct disp_device *dispdev);
****************

但,不知是哪里绑定的lcd0,而非lcd1,试着将lcd0强制改为1后,就会执行到所添加的驱动文件,但,部分sel参数又被执行到lcd0.

求教!!!到底是哪里限制了lcd1执行它驱动的方法:
__lcd_panel_t XXXX_panel = { //此XXXX_panel 一直在调用,就是执行不到func中的内容
/* panel driver name, must mach the name of lcd_drv_name in sys_config.fex */
.name = "default_lcd",
.func = {
.cfg_panel_info = LCD_cfg_panel_info,
.cfg_open_flow = LCD_open_flow,
.cfg_close_flow = LCD_close_flow,
.lcd_user_defined_func = LCD_user_defined_func,
},
...全文
609 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lr2131 2017-06-19
  • 打赏
  • 举报
回复
引用 楼主 hossiable 的回复:
各位大牛,您好: 小弟碰一需求问题: 在操作过程中 ,在配置sys_config.fex lcd0和lcd1后, 我的配置参数在源码中可以拿到, 在一直执行不到添加的驱动,经分析发现:在disp_lcd.c中执行的一直都是lcd0,对应获取lcd0的结构体如下: struct disp_device { struct list_head list; /* data fields */ char name[32]; u32 disp; u32 hwdev_index;//indicate the index of hw device(timing controller) u32 fix_timing; enum disp_output_type type; struct disp_manager *manager; struct disp_video_timings timings; void* priv_data; /* function fileds */ /* init: script init && clock init && pwm init && register irq * exit: clock exit && unregister irq */ s32 (*init)(struct disp_device *dispdev); s32 (*exit)(struct disp_device *dispdev); **************** } 但,不知是哪里绑定的lcd0,而非lcd1,试着将lcd0强制改为1后,就会执行到所添加的驱动文件,但,部分sel参数又被执行到lcd0. 求教!!!到底是哪里限制了lcd1执行它驱动的方法: __lcd_panel_t XXXX_panel = { //此XXXX_panel 一直在调用,就是执行不到func中的内容 /* panel driver name, must mach the name of lcd_drv_name in sys_config.fex */ .name = "default_lcd", .func = { .cfg_panel_info = LCD_cfg_panel_info, .cfg_open_flow = LCD_open_flow, .cfg_close_flow = LCD_close_flow, .lcd_user_defined_func = LCD_user_defined_func, },
全志的LCD驱动我没怎么玩过,不过看你的描述,应该是改的不彻底,在流程上有遗漏的地方没改。建议你把LCD驱动的工作流程全程熟悉一下。
sakyamuni_1 2017-04-08
  • 打赏
  • 举报
回复
define宏我都浏览了一遍,和include *.h 未见到此绑定的定义,IO映射地址我没用到,用到的也是lcd的注册地址,这个我也注册成功了,现在唯独知道的是它将绑定的lcd ID值保存在 结构体中的disp中,搜索了下,太多了,但也看不到赋值的过程。 struct disp_device { struct list_head list; /* data fields */ char name[32]; u32 disp; 还有什么思路能提供下吗? 我现在头都大了
uid123 2017-04-08
  • 打赏
  • 举报
回复
你这个有操作系统么??有的话可以考虑从中断上走,查看中断调用时的地址,进行考虑。如果没有操作系统就应该很明了啊?
uid123 2017-04-07
  • 打赏
  • 举报
回复
前面的define和include“*.h”看了没,define里面定义的IO端口地址是多少?还有*.h里面的IO端口地址是多少?看看能不能和数据手册对上??

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧