摘要: 为了解决一个问题,简单看了一遍linux gadget驱动的加载流程.做一下记录. 使用的内核为linux 2.6.35 硬件为芯唐NUC950. gadget是在UDC驱动上面的一层,如果要编写gadget驱动只需调用linux 的gadget API,不需设计底层的UDC驱动. 但要是分析驱动BUG,就需要了同时了解一下UDC. 下面以简单的gadget zero驱动分析驱动的加载流程. 主要是一系列的bind的调用,让gadget驱动一步步与硬件的端点联系起来. 从insmod g_zero.ko开始.zero.c1 static struct usb_composite_d... 阅读全文
posted @ 2013-10-16 18:09 风而已 阅读(4946) 评论(0) 推荐(0) 编辑
摘要: 1 static void nuc900_gpio_core_set(struct gpio_chip *gc, unsigned gpio_num, 2 int val) 3 { 4 int port_num, value; 5 const struct gpio_port *port = 6 nuc900_gpio_cla_port(gpio_num, &port_num); 7 spin_lock(&gpio_lock); 8 if ((__raw_readl(port->dir) & (1 out);1... 阅读全文
posted @ 2013-10-16 10:53 风而已 阅读(230) 评论(0) 推荐(0) 编辑