Stm_Drv_PriParaCheck((stm == NULL_PTR) || (config == NULL_PTR), STM_DRV_SI_INIT_COMPARE, TT_RET_PARAM_NULL_PTR_ERR, &Ret);
时间: 2023-08-13 18:06:08 浏览: 41
这是一段代码,它调用了一个名为`Stm_Drv_PriParaCheck`的函数,并传入了一些参数。第一个参数是一个逻辑表达式`(stm NULL_PTR) || (config == NULL_PTR)`,用于检查`stm`和`config`是否为NULL指针。如果其中任何一个是NULL指针,该表达式将返回true,否则返回false。第二个参数`STM_DRV_SI_INIT_COMPARE`似乎是一个常量,表示比较操作。第三个参数`TT_RET_PARAM_NULL_PTR_ERR`似乎是另一个常量,表示参数为空指针错误。最后一个参数`&Ret`似乎是一个指向`Ret`变量的指针,用于接收函数的返回值。请问你对这段代码有什么疑问吗?
相关问题
static int cps_wls_register_psy(struct cps_wls_chrg_chip *chip) { struct power_supply_config cps_wls_psy_cfg = {}; struct power_supply *chg_psy = NULL; struct mtk_charger *info = NULL; chg_psy = power_supply_get_by_name("mtk-master-charger"); if (chg_psy == NULL || IS_ERR(chg_psy)) { pr_info("%s Couldn't get chg_psy\n", func); } info = (struct mtk_charger )power_supply_get_drvdata(chg_psy); if (info == NULL) { pr_info("%s Couldn't get chg_psy\n", func); } chip->boot_mode = info->bootmode; / 8 = KERNEL_POWER_OFF_CHARGING_BOOT / / 9 = LOW_POWER_OFF_CHARGING_BOOT */ if (chip->boot_mode != 8 && chip->boot_mode != 9) { cps_wls_rx_send_ept_packet(0x0B); pr_info("probe reset RX !\n"); } chip->wl_psd.name = CPS_WLS_CHRG_PSY_NAME; chip->wl_psd.type = POWER_SUPPLY_TYPE_UNKNOWN; chip->wl_psd.properties = cps_wls_chrg_props; chip->wl_psd.num_properties = ARRAY_SIZE(cps_wls_chrg_props); chip->wl_psd.get_property = cps_wls_chrg_get_property; chip->wl_psd.set_property = cps_wls_chrg_set_property; chip->wl_psd.property_is_writeable = cps_wls_chrg_property_is_writeable; chip->wl_psd.external_power_changed = cps_wls_charger_external_power_changed; cps_wls_psy_cfg.drv_data = chip; cps_wls_psy_cfg.of_node = chip->dev->of_node; chip->wl_psy = power_supply_register(chip->dev, &chip->wl_psd, &cps_wls_psy_cfg); if (IS_ERR(chip->wl_psy)) { return PTR_ERR(chip->wl_psy); } return CPS_WLS_SUCCESS; }请详细分析一下这段函数
这是一个在CPS(Charge Pump System)中注册一个无线充电器电源供应器(power supply)的函数。函数的参数是指向一个cps_wls_chrg_chip结构体的指针,该结构体包含了无线充电器的相关信息。
函数首先创建一个power_supply_config结构体,并将其初始化为空。然后通过power_supply_get_by_name函数获取名为“mtk-master-charger”的电源供应器,如果获取失败则打印错误信息。
接着,通过power_supply_get_drvdata函数获取chg_psy电源供应器的私有数据指针,该指针指向一个mtk_charger结构体。如果获取失败则打印错误信息。
然后,将无线充电器的boot_mode设置为mtk_charger的bootmode。如果boot_mode不是8或9,则调用cps_wls_rx_send_ept_packet函数发送0x0B的数据包,并打印“probe reset RX !”信息。
接下来,初始化无线充电器的电源供应器属性,包括名称、类型、属性、属性数量、获取属性函数、设置属性函数、属性是否可写和外部电源变化回调函数。
然后,创建一个power_supply_config结构体,并将其drv_data成员设置为指向cps_wls_chrg_chip结构体的指针,of_node成员设置为该结构体的of_node成员。
最后,调用power_supply_register函数注册无线充电器的电源供应器,并将其返回值作为函数的返回值。如果注册失败,则返回PTR_ERR(chip->wl_psy)。
static int mt6375_chg_init_psy(struct mt6375_chg_data *ddata) { struct power_supply_config cfg = { .drv_data = ddata, .of_node = ddata->dev->of_node, .supplied_to = mt6375_psy_supplied_to, .num_supplicants = ARRAY_SIZE(mt6375_psy_supplied_to), }; mt_dbg(ddata->dev, "%s\n", func); memcpy(&ddata->psy_desc, &mt6375_psy_desc, sizeof(ddata->psy_desc)); ddata->psy_desc.name = dev_name(ddata->dev); ddata->psy = devm_power_supply_register(ddata->dev, &ddata->psy_desc, &cfg); return IS_ERR(ddata->psy) ? PTR_ERR(ddata->psy) : 0; }请详细分析说明一下这段代码的流程,以及这段函数中struct power_supply_config cfg = { .drv_data = ddata, .of_node = ddata->dev->of_node, .supplied_to = mt6375_psy_supplied_to, .num_supplicants = ARRAY_SIZE(mt6375_psy_supplied_to), };的作用
这段代码是在mt6375充电芯片的驱动中用来初始化电源供应器的函数。下面是这段代码的流程:
1. 定义了一个power_supply_config结构体类型的变量cfg,并使用花括号初始化了该结构体的成员变量。
2. 初始化成员变量drv_data为ddata,表示驱动数据为ddata。
3. 初始化成员变量of_node为ddata->dev->of_node,表示设备树节点指针。
4. 初始化成员变量supplied_to为mt6375_psy_supplied_to,表示供电对象。
5. 初始化成员变量num_supplicants为ARRAY_SIZE(mt6375_psy_supplied_to),表示供电对象的数量。
6. 使用mt_dbg函数输出调试信息。
7. 使用memcpy函数复制mt6375_psy_desc结构体的内容到ddata->psy_desc结构体中。
8. 使用dev_name函数设置电源供应器的名称。
9. 使用devm_power_supply_register函数注册电源供应器,并传递配置参数cfg。
10. 返回值为0表示电源注册成功,否则返回PTR_ERR(ddata->psy)。
其中,power_supply_config结构体中的成员变量分别表示驱动数据、设备树节点、供电对象、供电对象数量等信息,这些信息可以在电源注册过程中使用。在这段代码中,该结构体的作用是为电源供应器的注册提供配置参数。