01.do_chrdet_int_task

mtk 电池驱动流程详解 - 码农教程老架构

===================================================

8321:

kernel-4.9-lc\drivers\misc\mediatek\power\mt6580\pmic.c

void PMIC_EINT_SETTING(void)

{

        pmic_register_interrupt_callback(5, pwrkey_int_handler);

        pmic_register_interrupt_callback(10, chrdet_int_handler);

        pmic_register_interrupt_callback(17, homekey_int_handler);

#ifdef CONFIG_MTK_ACCDET

        pmic_register_interrupt_callback(18, accdet_int_handler);

#endif

#ifdef CONFIG_MTK_RTC

        pmic_register_interrupt_callback(20, rtc_int_handler);

#endif

        /* Enable pwrkey/homekey interrupt */

        pmic_enable_interrupt(5, 1, "PMIC");

        pmic_enable_interrupt(10, 1, "PMIC");

        pmic_enable_interrupt(17, 1, "PMIC");

#ifdef CONFIG_MTK_ACCDET

        pmic_enable_interrupt(18, 1, "PMIC");

#endif

        pmic_enable_interrupt(20, 1, "PMIC");

...

}

void chrdet_int_handler(void)

{

...

#ifdef CONFIG_MTK_SMART_BATTERY

        do_chrdet_int_task();

#endif

}

===================================================

8167:

\kernel-4.14\arch\arm\boot\dts\mt8167.dtsi

                bat_comm: bat_comm {

                        compatible = "mediatek,battery";

                };

\kernel-4.14\arch\arm\boot\dts\tb8167p3_bsp.dts

&bat_comm {

        interrupt-parent = <&pmic>;

        interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;

};

#ifdef CONFIG_OF

static const struct of_device_id mt_battery_of_match[] = {

        {

                .compatible = "mediatek,battery",

        },

        {},

};

MODULE_DEVICE_TABLE(of, mt_battery_of_match);

#endif

static struct platform_driver battery_dts_driver = {

        .probe = battery_dts_probe,

        .remove = NULL,

        .shutdown = NULL,

        .driver = {

                        .name = "battery-dts",

#ifdef CONFIG_OF

                        .of_match_table = mt_battery_of_match,

#endif

                },

};

\kernel-4.14\drivers\power\supply\mediatek\battery_common.c

#ifdef CONFIG_OF

        ret = platform_driver_register(&battery_dts_driver);

#endif

#ifdef CONFIG_OF

static int battery_dts_probe(struct platform_device *dev)

{

        int ret = 0;

        battery_log(BAT_LOG_CRTI, "******** %s!! ********\n", __func__);

        chrdet_irq = platform_get_irq(dev, 0);

        if (chrdet_irq <= 0)

                pr_notice("******** don't support irq from dts ********\n");

        else {

                ret = request_threaded_irq(chrdet_irq, NULL,

                                ops_chrdet_int_handler,

                                IRQF_TRIGGER_HIGH | IRQF_ONESHOT,

                                "ops_pmic_chrdet", dev);

                if (ret) {

                        pr_notice("%s: request_threaded_irq err = %d\n",

                                __func__, ret);

                        return ret;

                }

                irq_set_irq_wake(chrdet_irq, 1);

        }

...

}

irqreturn_t ops_chrdet_int_handler(int irq, void *dev_id)

{

        battery_log(BAT_LOG_FULL,

                "[Power/Battery][chrdet_bat_int_handler]....\n");

        do_chrdet_int_task();

        return IRQ_HANDLED;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是对每个变量命名的合法性进行评估: 1. int a_:合法,以字母或下划线开头,后续可以是字母、数字或下划线。 2. int a@:不合法,变量名不能包含特殊字符,只能包含字母、数字和下划线。 3. int a3:合法,可以以字母开头,后续可以是字母、数字或下划线。 4. int 8@:不合法,变量名不能以数字开头。 5. int 9_:不合法,变量名不能以数字开头。 6. int X$_:合法,可以以字母开头,后续可以是字母、数字或下划线。 7. int y:合法,可以以字母开头,后续可以是字母、数字或下划线。 8. int _$_:合法,可以以字母或下划线开头,后续可以是字母、数字或下划线。 9. int $_$:合法,可以以字母或下划线开头,后续可以是字母、数字或下划线。 10. int $*$:不合法,变量名不能包含特殊字符,只能包含字母、数字和下划线。 11. int $1$:合法,可以以字母或下划线开头,后续可以是字母、数字或下划线。 12. int _1_:合法,可以以字母或下划线开头,后续可以是字母、数字或下划线。 13. int _@_:不合法,变量名不能包含特殊字符,只能包含字母、数字和下划线。 14. int a#:不合法,变量名不能包含特殊字符,只能包含字母、数字和下划线。 15. int a":不合法,变量名不能包含特殊字符,只能包含字母、数字和下划线。 16. int 123a":不合法,变量名不能以数字开头。 17. int 123a_:不合法,变量名不能以数字开头。 18. int $123b_:合法,可以以字母或下划线开头,后续可以是字母、数字或下划线。 请注意,变量名必须遵循Java的命名规则和约定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值