Linux USB OTG与虚拟文件系统详解
1. OTG框架示例
USB控制器可能存在不同的配置,收发器部分要么集成在控制器内部,要么通过外部胶合逻辑进行接口连接。因此,OTG框架驱动在很大程度上依赖于收发器与数字控制器的接口方式。下面以isp1301为例,介绍其OTG实现,该设备通过I2C接口与控制器相连。
1.1 定义收发器驱动
首先,需要定义内核胶合硬件所需的收发器驱动。由于isp1301OTG控制器使用I2C接口,所以声明一个基于struct i2c_driver的对象isp1301_driver,并在isp_init函数中使用i2c_add_driver进行注册。
static const struct i2c_device_id isp1301_id[] = { { "isp1301_omap", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, isp1301_id); static struct i2c_driver isp1301_driver = { .driver = { .name = "isp1301_omap", }, .probe = isp1301_probe, .remove = __exit_p(isp1301_remove), .id_table = isp1301_id, }