switch_dev_register的用法是什么?

时间:2013-02-15 06:04:44

标签: c linux-kernel linux-device-driver

我正在尝试了解fsa9485驱动程序(USB开关)。我遇到了Dock初始化代码:

switch_dev_register(&switch_dock)

switch_dockswitch_dev类型的结构,在附件检测例程中,它使用如下:

switch_set_state(&switch_dock, attached)

我推断如下:有两种类型的码头,一种是汽车停靠站,另一种是桌面停靠站,switch_dev类用于在它们之间切换。

为什么我们需要switch_dev个课程?这个班级如何区分两个不同的码头?

1 个答案:

答案 0 :(得分:3)

switch_dev_register功能会使用sysfs注册设备,并在/sys/中创建文件。 Switch_set_state更新正在运行的内核(state文件)上创建的文件之一的值。所以在我的内核中,我可以通过读取文件“/ sys / devices / virtual / switch / dock / state”来查看状态。 State的{​​{1}}为1,deskdock为2,否则为0。这只是将硬件信息传递给用户空间的一种简单方法。

有必要在cardock中使用switch_dev类进行标准化。驱动程序通过读取驻留在I2C总线上的fsa9485芯片的寄存器值来区分两个扩展坞。请参阅fsa9480.c中的sysfs,其中驱动程序从模数转换器fsa9480_detect_dev读取值,并使用设备类型寄存器确定停靠类型。

相关问题