extcon_set_state_sync 函数原型和使用方法
时间: 2024-03-17 17:41:54 浏览: 176
`extcon_set_state_sync` 函数的原型定义在 `include/linux/extcon.h` 头文件中,具体如下:
```
int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, bool state);
```
该函数接收三个参数:
- `edev`:指向 `extcon_dev` 结构体的指针,表示外部连接器设备的实例。
- `id`:表示要设置状态的连接器 ID。
- `state`:表示要设置的连接器状态。`true` 表示连接器连接,`false` 表示连接器断开。
函数返回值为 0 表示设置成功,否则表示设置失败。
使用方法示例:
```
#include <linux/extcon.h>
// 假设存在一个名为 "extcon_dev" 的外部连接器设备实例
struct extcon_dev *edev = ...;
// 假设需要设置连接器 ID 为 0 的连接器状态为连接
int ret = extcon_set_state_sync(edev, 0, true);
if (ret) {
// 设置失败,进行错误处理
} else {
// 设置成功
}
```
需要注意的是,调用 `extcon_set_state_sync` 函数时,需要在合适的时机获取 `edev` 指针。另外,该函数会阻塞当前线程,因此不应在中断上下文中调用。
相关问题
static inline void start_usb_peripheral(struct usbpd *pd) { enum plug_orientation cc = usbpd_get_plug_orientation(pd); union extcon_property_value val; val.intval = (cc == ORIENTATION_CC2); extcon_set_property(pd->extcon, EXTCON_USB, EXTCON_PROP_USB_TYPEC_POLARITY, val); val.intval = 1; extcon_set_property(pd->extcon, EXTCON_USB, EXTCON_PROP_USB_SS, val); val.intval = pd->typec_mode > POWER_SUPPLY_TYPEC_SOURCE_DEFAULT ? 1 : 0; extcon_set_property(pd->extcon, EXTCON_USB, EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT, val); extcon_set_state_sync(pd->extcon, EXTCON_USB, 1); }代码分析
这段代码是一个函数,函数名为start_usb_peripheral,接收一个指向usbpd结构体的指针pd作为参数。函数的作用是启动USB外设。
函数中使用了usbpd_get_plug_orientation函数获取插头的方向,并将结果保存在枚举类型的变量cc中。然后使用了extcon_set_property函数分别设置了EXTCON_USB的三个属性值:EXTCON_PROP_USB_TYPEC_POLARITY、EXTCON_PROP_USB_SS和EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT,这些属性值分别表示USB的极性、是否支持超级速率和是否支持中高电流模式。最后使用extcon_set_state_sync函数将EXTCON_USB的状态设置为1,表示连接上了USB外设。
需要注意的是,此代码片段中并没有展示函数的完整定义,因此无法确定函数的返回值类型和其他可能存在的参数。
extcon_set_state_sync
`extcon_set_state_sync` 是一个函数,它用于设置外部连接器(External Connector,简称 Extcon)的状态,并同步通知所有注册在该 Extcon 上的客户端。Extcon 是一个框架,它允许内核通过检测电缆插入和拔出的事件来管理外部连接器的状态。`extcon_set_state_sync` 函数的原型如下:
```
void extcon_set_state_sync(struct extcon_dev *edev,
unsigned int id, bool state);
```
其中,`edev` 是一个指向 Extcon 设备的指针,`id` 是一个标识符,用于指定要设置状态的 Extcon 插孔(jack),`state` 是一个布尔值,用于指定要设置的状态,`true` 表示插孔已连接,`false` 表示插孔已断开。当该函数被调用时,它会设置指定插孔的状态,并通知所有注册在该 Extcon 上的客户端,以便它们可以相应地更新自己的状态。
阅读全文