MTK平台LED配置

来源:互联网 发布:yaml nginx 编辑:程序博客网 时间:2024/05/15 13:54

2016年12月16号
MTK平台调试GPIO LED灯
过去没有调试过MTK平台的GPIO,对这个平台的陌生导致了对于驱动的不解。之后经过对说明文档的阅读和思考。找到了以下方法。
首先,在MTK平台中,设置GPIO的方法和高通平台的设置方法不同。设置GPIO的初始状态需要通过在这个工具中设置:kernel-3/10/tool/dct/DrvGen.exe
之后打开这个文件:/kernel-3.10/drivers/misc/mediatek/mach/mt6735/(项目名称)/dct/dct/codegen.dws,这个文件可以进行对GPIO的初始化的设置。在设置结束之后,进行保存,同时也可以进行生成代码的操作,生成的代码,就是类似于高通平台下的设备树文件。
代码问题,在配置led灯中,代码的具体路径如下:
drivers/misc/mediatek/leds/leds_drv.c
drivers/misc/mediatek/mach/mt6735/(项目名称)/leds/mt65xx/cust_leds.c
其中第二个路径中的代码,主要是对在驱动中的所需要使用的led灯的节点以及其对应的驱动方式,例如ADAS项目中使用的GPIO模式的三色灯。同时,也要对节点所使用的赋值函数进行定义。例如这个项目中,对于三色灯的节点,操作函数如下:

extern int sextern int set_gpio_led_red(unsigned int status);   extern int set_gpio_led_green(unsigned int status);extern int set_gpio_led_blue(unsigned int status);在原始驱动中,对于获取节点的属性,主要是通过读取一个数组来进行,数组中有多个数据。static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {{"red",               MT65XX_LED_MODE_GPIO, (long)set_gpio_led_red,{0}},{"green",             MT65XX_LED_MODE_GPIO, (long)set_gpio_led_green,{0}},{"blue",              MT65XX_LED_MODE_GPIO, (long)set_gpio_led_blue,{0}},{"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0}},{"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0}},{"button-backlight",  MT65XX_LED_MODE_NONE, -1,{0}},{"lcd-backlight",     MT65XX_LED_MODE_CUST_BLS_PWM, (long)disp_bls_set_backlight,{0}},

};

对于主要的驱动函数,MTK说明文档进行研读之后,找到了设置GPIO的具体流程1.需要进行对GPIO的工作模式进行设定,总共有8种GPIO工作模式。mt_set_gpio_mode(GPIO_LED_R_EN, GPIO_MODE_GPIO);2.对GPIO是否能进行拉高处理进行设定mt_set_gpio_pull_enable(GPIO_LED_R_EN, GPIO_PULL_DISABLE);3.设置GPIO的输入输出mt_set_gpio_dir(GPIO_LED_R_EN, GPIO_DIR_OUT);4.通过另一个函数,对GPIO的值进行设置ret = set_led_gpio_rgb(GPIO_LED_R_EN, status);
0 0
原创粉丝点击