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; }
时间: 2023-11-17 10:06:10 浏览: 91
这段代码是一个函数,用于移除平台设备驱动程序中的 Wi-Fi 适配器。在函数中,首先会断言(ASSERT)dhd_wifi_platdata 不为 NULL,确保该数据结构存在。
然后,通过一个循环遍历所有的适配器,并依次进行以下操作:
1. 调用 wifi_platform_set_power 函数将适配器的电源关闭,第二个参数为 FALSE 表示关闭电源。
2. 调用 wifi_platform_bus_enumerate 函数,将适配器从总线上移除,第二个参数为 FALSE 表示移除。
最后,函数返回 0,表示成功移除驱动程序。
请注意,我是一个 AI 模型,并不能真正运行代码,只能提供一些简单的理解和解释。如果需要详细了解函数的具体实现和上下文,还需要查看其他相关代码。
相关问题
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; }
这段代码是一个函数,用于在平台设备驱动程序中挂起(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 模型,并不能真正运行代码,只能提供一些简单的理解和解释。如果需要详细了解函数的具体实现和上下文,还需要查看其他相关代码。
ecrnx_hw = wiphy_priv(wiphy); ecrnx_hw->wiphy = wiphy; ecrnx_hw->plat = ecrnx_plat; ecrnx_hw->dev = ecrnx_platform_get_dev(ecrnx_plat); ecrnx_hw->mod_params = &ecrnx_mod_params; ecrnx_hw->tcp_pacing_shift = 7; *platform_data = ecrnx_hw;
这段代码是在 Linux 内核中的一个 Wi-Fi 驱动程序中的一段初始化代码,主要作用是将一些硬件和平台相关的数据结构进行初始化,并将它们保存在一个名为 platform_data 的指针中,以便后续的函数可以访问这些数据。具体来说,这段代码的含义如下:
- ecrnx_hw 是一个指向 Wi-Fi 硬件相关的数据结构的指针,这个数据结构包含了一些硬件相关的信息,比如 MAC 地址等。
- wiphy 是一个指向 Linux 内核中的一个 Wi-Fi 设备的数据结构的指针,这个数据结构包含了一些与 Wi-Fi 设备相关的信息,比如支持的 Wi-Fi 协议等。
- wiphy_priv 是一个 Linux 内核中的函数,它的作用是获取 wiphy 数据结构中的一个私有数据结构,也就是 ecrnx_hw 数据结构。
- ecrnx_hw->wiphy = wiphy; 这行代码的作用是将 ecrnx_hw 中的 wiphy 指针指向 wiphy 数据结构,这样就可以在后续的代码中访问 wiphy 中的信息了。
- ecrnx_hw->plat = ecrnx_plat; 这行代码的作用是将 ecrnx_hw 中的 plat 指针指向一个平台相关的数据结构,这个数据结构包含了一些与硬件平台相关的信息。
- ecrnx_hw->dev = ecrnx_platform_get_dev(ecrnx_plat); 这行代码的作用是根据平台相关的数据结构 ecrnx_plat,获取一个指向设备的数据结构的指针,并将这个指针保存在 ecrnx_hw 中的 dev 字段中。
- ecrnx_hw->mod_params = &ecrnx_mod_params; 这行代码的作用是将 ecrnx_hw 中的 mod_params 指针指向一个模块参数的结构体,这个结构体包含了一些驱动程序中需要使用的参数。
- ecrnx_hw->tcp_pacing_shift = 7; 这行代码的作用是将 ecrnx_hw 中的 tcp_pacing_shift 字段设置为 7。
- *platform_data = ecrnx_hw; 这行代码的作用是将指向 ecrnx_hw 的指针保存在 platform_data 指针所指向的位置,以便后续的函数可以访问 ecrnx_hw 中的数据。
阅读全文