GT9xx系列------从lk里传递gpio的value到kernel中

来源:互联网 发布:ios 小游戏源码 编辑:程序博客网 时间:2024/05/22 00:55

 目前由于要针对多种屏幕,所以需要在lk里读取panel id信息传给kernel使用,也就是通过cmd line来做

首先获取gpio信息

lcd_id = (gpio_get(41)<<1) | (gpio_get(48));

这里获取了当前gpio的电平状态

sprintf(cmd_lcd_id, " LCD_ID=%d ", lcd_id);

把值写到cmd_lcd_id里

然后到

Aboot.c (bootloader\lk\app\aboot):extern char cmd_lcd_id[64];


const char *src;
unsigned char *dst;
cmdline_final = (unsigned char*) malloc((cmdline_len + 4) & (~3));
ASSERT(cmdline_final != NULL);
memset((void *)cmdline_final, 0, sizeof(*cmdline_final));
dst = cmdline_final;
                cmdline_len += strlen(cmd_lcd_id);


Aboot.c (bootloader\lk\app\aboot): src = cmd_lcd_id;


src = cmd_lcd_id;
if (have_cmdline) --dst;
have_cmdline = 1;
while ((*dst++ = *src++));


然后到了kernel中

char lcd_id[2] = {0};
EXPORT_SYMBOL(lcd_id);


static int get_lcd_id(char *str)
{
strcpy(lcd_id,str);
printk("matt-lcd_id = %s\n ", lcd_id);


    return 0;
}
__setup("LCD_ID=", get_lcd_id); //从cmd line中获取参数


然后到具体的driver里使用

extern char asus_lcd_id[2];

ftxxxx_ts->lcd_vendor=lcd_id[0];  //这里传过来的其实是对应的数字的ack||码,也就是说lk里是3的话这边就是3的码0x33.

0 0
原创粉丝点击