static int wifi_plat_dev_drv_suspend(struct platform_device *pdev, pm_message_t state) { DHD_TRACE(("##> %s\n", __FUNCTION__)); #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 39)) && defined(OOB_INTR_ONLY) && \ defined(BCMSDIO) bcmsdh_oob_intr_set(0); #endif /* (OOB_INTR_ONLY) */ return 0; }
时间: 2023-09-13 11:03:54 浏览: 72
这段代码是一个函数,用于在平台设备驱动程序中挂起(suspend)Wi-Fi 适配器。在函数中,首先打印了一个跟踪信息,然后根据一些条件对代码进行了条件编译。
在条件编译的部分,首先判断当前的 Linux 内核版本是否小于等于 2.6.39,并且定义了 OOB_INTR_ONLY 和 BCMSDIO。如果满足这些条件,就会执行以下操作:
1. 调用 bcmsdh_oob_intr_set 函数,将 OOB(Out-of-Band)中断设置为 0。这个函数可能是用于设置 Wi-Fi 适配器的 OOB 中断的。
最后,函数返回 0,表示成功挂起驱动程序。
请注意,我是一个 AI 模型,并不能真正运行代码,只能提供一些简单的理解和解释。如果需要详细了解函数的具体实现和上下文,还需要查看其他相关代码。
相关问题
static int bcmdhd_wifi_plat_dev_drv_remove(struct platform_device *pdev) { int i; wifi_adapter_info_t *adapter; ASSERT(dhd_wifi_platdata != NULL); /* power down all adapters */ for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) { adapter = &dhd_wifi_platdata->adapters[i]; wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY); wifi_platform_bus_enumerate(adapter, FALSE); } return 0; }
这段代码是一个函数,用于移除平台设备驱动程序中的 Wi-Fi 适配器。在函数中,首先会断言(ASSERT)dhd_wifi_platdata 不为 NULL,确保该数据结构存在。
然后,通过一个循环遍历所有的适配器,并依次进行以下操作:
1. 调用 wifi_platform_set_power 函数将适配器的电源关闭,第二个参数为 FALSE 表示关闭电源。
2. 调用 wifi_platform_bus_enumerate 函数,将适配器从总线上移除,第二个参数为 FALSE 表示移除。
最后,函数返回 0,表示成功移除驱动程序。
请注意,我是一个 AI 模型,并不能真正运行代码,只能提供一些简单的理解和解释。如果需要详细了解函数的具体实现和上下文,还需要查看其他相关代码。
ecrnx_cfg80211_init(void *ecrnx_plat, void **platform_data)
这是一个用于初始化 Linux 内核中的 cfg80211 子系统的函数调用。其中,ecrnx_plat 是一个指向自定义平台数据的指针,platform_data 则是一个用于返回初始化后的平台数据结构体指针的指针。该函数将会完成 cfg80211 子系统的初始化,并返回 0 表示初始化成功,否则返回一个错误码。在初始化成功后,platform_data 将用于管理 cfg80211 子系统的一些操作,例如注册 Wi-Fi 设备和监听 Wi-Fi 事件等。