MTK平台LED配置

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值