Mtk ALPS Led驱动的加载过程

本文详述了MTK平台LED驱动的加载过程,从mt65xx_leds_init()函数开始,涉及platform_driver_register()及mt65xx_leds_probe()。重点关注mt_get_cust_led_list()函数,它是客制化代码的关键,用于定义和配置LED设备列表。此外,文章预告将探讨LED驱动的调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在研究led驱动,顺便记录一下,下面将从两个方面来介绍Led的驱动。

一、Led驱动加载过程
mediatek/kernel/drivers/leds/leds_drv.c

module_init(mt65xx_leds_init);

mt65xx_leds_init()函数的具体实现:

static int __init mt65xx_leds_init(void)
{
    int ret;

    LEDS_DRV_DEBUG("[LED]%s\n", __func__);

#if 0
    ret = platform_device_register(&mt65xx_leds_device);
    if (ret)
        printk("[LED]mt65xx_leds_init:dev:E%d\n", ret);
#endif
    ret = platform_driver_register(&mt65xx_leds_driver);

    if (ret)
    {
        LEDS_DRV_DEBUG("[LED]mt65xx_leds_init:drv:E%d\n", ret);
        return ret;
    }

    mt_leds_wake_lock_init();

    return ret;
}

上述函数实现调用了platform_driver_register(&mt65xx_leds_driver),对mtk的led平台设备驱动进行注册,平台设备驱动的定义如下所示:

static struct platform_driver mt65xx_leds_driver = {
    .driver     = {
        .name   = "leds-mt65xx",
        .owner  = THIS_MODULE,
    },
    .probe      = mt65xx_leds_probe,
    .remove     = mt65xx_leds_remove,
    //.suspend  = mt65xx_leds_suspend,
    .shutdown   = mt65xx_leds_shutdown,
};

其中,probe被赋值mt65xx_leds_probe,并在发现设备的时候启动,具体看一下其实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值