LDD3学习笔记(16):USB驱动

简介:  #include 所有和 USB 相关的头文件. 它必须被所有的 USB 设备驱动包含.struct usb_driver;描述 USB 驱动的结构.
 

#include <linux/usb.h>

所有和 USB 相关的头文件它必须被所有的 USB 设备驱动包含.

struct usb_driver;

描述 USB 驱动的结构.

struct usb_device_id;

描述这个驱动支持的 USB 设备的结构.

int usb_register(struct usb_driver *d);

用来从USB核心注册和注销一个 USB 驱动的函数.

struct usb_device *interface_to_usbdev(struct usb_interface *intf);

从 struct usb_interface 获取控制 struct usb_device *.

struct usb_device;

控制完整 USB 设备的结构.

struct usb_interface;

主 USB 设备结构所有的 USB 驱动用来和 USB 核心通讯的.

void usb_set_intfdata(struct usb_interface *intf, void *data);

void *usb_get_intfdata(struct usb_interface *intf);

设置和获取在 struct usb_interface 中的私有数据指针部分的函数.

struct usb_class_driver;

描述 USB 驱动的一个结构这个驱动要使用 USB 主编号来和用户空间程序通讯.

int usb_register_dev(struct usb_interface *intf, struct usb_class_driver *class_driver);

void usb_deregister_dev(struct usb_interface *intf, struct usb_class_driver *class_driver);

用来注册和注销一个特定 struct usb_interface * 结构到 struct usb_class_driver 结构的函数.

struct urb;

描述一个 USB 数据传输的结构.

struct urb *usb_alloc_urb(int iso_packets, int mem_flags);

void usb_free_urb(struct urb *urb);

用来创建和销毁一个 struct usb urb*的函数.

int usb_submit_urb(struct urb *urb, int mem_flags);

int usb_kill_urb(struct urb *urb);

int usb_unlink_urb(struct urb *urb);

用来启动和停止一个 USB 数据传输的函数.

void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int 

buffer_length, usb_complete_t complete, void *context, int interval);

void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int 

buffer_length, usb_complete_t complete, void *context);

void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char 

*setup_packet, void *transfer_buffer, int buffer_ length, usb_complete_t complete, void *context);

用来在被提交给 USB 核心之前初始化一个 struct urb 的函数

int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int 

timeout);

int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 

value, __u16 index, void *data, __u16 size, int timeout);

用来发送和接受 USB 数据的函数不必使用一个 struct urb. 

目录
相关文章
|
Linux 测试技术 调度
Linux 驱动之gpio-key驱动分析
Linux内核中的gpio-keys.c(driver/input/keyboard/gpio-keys.c)统一了所有关于按键的驱动实现方式。其良好的代码架构可以兼容几乎所有平台的关于按键的处理流程。如果需要在目标平台实现关于按键的驱动程序,完全可以直接使用该驱动,几乎不用自己实现任何代码。
1763 0
|
Ubuntu Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动
325 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(下)
|
Ubuntu Linux 数据安全/隐私保护
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动
399 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(上)
|
开发框架 Linux
Linux设备树系列-GPIO驱动实践
Linux设备树系列-GPIO驱动实践
1915 0
|
Linux
Linux下GPIO驱动
编写驱动程序,首先要了解是什么类型的设备。linux下的设备分为三类,分别为:字符设备,块设备和网络设备。字符设备类型是根据是否以字符流为数据的交换方式,大部分设备都是字符设备,如键盘,串口等,块设备则是以块为单位进行管理的设备,如,磁盘。
1135 0

热门文章

最新文章