正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio,

系统自带GPIO控制驱动:
内核已经自带了通用GPIO驱动,可以直接在用户空间操作.
路径: /sys/class/gpio
root@rk3288:/sys/class/gpio # ls
export
gpiochip0
gpiochip120
gpiochip152
gpiochip184
gpiochip216
gpiochip24
gpiochip248
gpiochip280
gpiochip56
gpiochip88
unexport

比如我要操作GPIO8_A6作为高电平输出有效, 那么有以下问题:
1. 对应的gpio number是多少呢?
2. 如何设置成输出
3. 如何输出高电平

问题1:
可以通过/sys/kernel/debug/gpio查询信息:
root@rk3288:/sys/kernel/debug # cat gpio                                       
//snip
GPIOs 184-215, platform/ff770000.pinctrl, gpio6:
 gpio-193 (?                   ) in  hi
 gpio-194 (?                   ) in  hi

GPIOs 216-247, platform/ff770000.pinctrl, gpio7:
 gpio-218 (enable              ) out hi
 gpio-219 (lcd_en              ) in  hi
 gpio-220 (lcd_cs              ) in  hi
 gpio-221 (gslX680 wake pin    ) out hi
 gpio-222 (gslX680 irq pin     ) out lo
 gpio-223 (headset_gpio        ) in  hi
 gpio-233 (?                   ) in  hi
 gpio-234 (?                   ) in  hi

GPIOs 248-279, platform/ff770000.pinctrl, gpio8:

GPIOs 280-311, platform/ff770000.pinctrl, gpio15:

可以看到gpio8是以nubmer为248开始, 那么GPIO8_A6就是 248 + 6 = 254
接下来就可以导出gpio了
root@rk3288:/sys/class/gpio # echo 254 > export                          
root@rk3288:/sys/class/gpio # ls
export
gpio254
......

问题2
root@rk3288:/sys/class/gpio/gpio254 # echo out > direction                     
root@rk3288:/sys/class/gpio/gpio254 # cat direction                            
out

问题3:
root@rk3288:/sys/class/gpio/gpio254 # echo 1 > value                           
root@rk3288:/sys/class/gpio/gpio254 # cat value                                
1

打开后置摄像头时打开led补光

初始化led补光GPIO口,在注册后置usb摄像头时申请gpio
/work/rk3288/firefly-rk3288_android5.1_git_20180126/kernel/drivers/media/usb/uvc/uvc_driver.c

/* carroll add led gpio start */
#define FILL_LIGHT_GPIO 233
/* carroll add led gpio end */ static int uvc_register_video(struct uvc_device *dev,
struct uvc_streaming *stream)
{
/* carroll add led gpio start */
static bool led_init_flag = true;
/* carroll add led gpio end */ ................ stream->vdev = vdev;
video_set_drvdata(vdev, stream); /* carroll add usb deice num start */
vdev->portnum = dev->udev->portnum;
/* carroll add usb deice num end */ ................ /* carroll add led gpio start */
if(vdev->portnum == && led_init_flag == true)
{
printk("carroll led-camera-2 gpio init\n");
ret = gpio_request(FILL_LIGHT_GPIO, "led-camera-2");
if (ret != ) {
printk("%s request led-camera_2_gpio error", __func__);
return ret;
}
gpio_direction_output(FILL_LIGHT_GPIO, );
led_init_flag = false;
}
/* carroll add led gpio end */

打开后置usb摄像头和关闭摄像头时修改gpio值
/work/rk3288/firefly-rk3288_android5.1_git_20180126/kernel/drivers/media/usb/uvc/uvc_v4l2.c

/* carroll add led gpio start */
#define FILL_LIGHT_GPIO 233
/* carroll add led gpio end */
static int uvc_v4l2_open(struct file *file)
{
...........
/* carroll add led gpio start */
if(stream->dev->udev->portnum == )
{
gpio_set_value(FILL_LIGHT_GPIO, );
printk("carroll led on \n");
}
/* carroll add led gpio end */ return ;
} static int uvc_v4l2_release(struct file *file)
{
...........
/* carroll add led gpio start */
if(stream->dev->udev->portnum == )
{
gpio_set_value(FILL_LIGHT_GPIO, );
printk("carroll led off \n");
}
/* carroll add led gpio end */ return ;
}

参考:

https://blog.csdn.net/kris_fei/article/details/69553422

RK3288 控制usb摄像头补光GPIO的更多相关文章

  1. VFP调用API来控制USB摄像头,实现拍照或录像

    *--前提:VFP7.0以上;Windows 2K及以上*--控件:AVICAP32.DLL *--定义:一般放到主程序或表单(集)的Load事件中Public WM_CAP_DRIVER_DISCO ...

  2. RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿

    CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...

  3. Jetson TX2(3)opencv3 打开usb摄像头

    ubuntu2604 opencv3.4.0 https://blog.csdn.net/ultimate1212/article/details/80936175?utm_source=blogxg ...

  4. 利用opencv从USB摄像头获取图片

    由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...

  5. 安卓 USB摄像头 开源库 UVCCamera 教程

    https://github.com/saki4510t/UVCCamera UVCCamera 听名字就知道使用UVC( USB VEDIO CLASS) 协议的通用类库.linux原生支持,基本支 ...

  6. 2.6 USB摄像头驱动之USB描述符

    学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...

  7. 2.5 USB摄像头驱动程序框架

    学习目标:根据vivi驱动架构和linux-2.6.31/linux-2.6.31.14/drivers/media/video/uvc/Uvc_driver.c驱动源码,分析usb摄像头驱动程序框架 ...

  8. 【智能无线小车系列十】通过USB摄像头实现网络监控功能

    如果仅有静态图像可能还不足以满足我们的需求,我们可能会需要用到实时的监控功能.这里介绍一款小应用:motion.motion的功能可强大了,不仅可以将监控的画面通过视频传输,实时展现,更为强大的是,m ...

  9. USB摄像头驱动框架分析(五)

    一.USB摄像头驱动框架如下所示:1.构造一个usb_driver2.设置   probe:        2.1. 分配video_device:video_device_alloc        ...

随机推荐

  1. Springboot1.5.9整合WebSocket

    一.WebSocket介绍 1.WebSocket是什么? WebSocket是协议,是HTML5开始提供的基于TCP(传输层)的一种新的网络协议, 它实现了浏览器与服务器全双工(full-duple ...

  2. JS事件委托(事件代理,dom2级事件)

    一.前言 说实话,真问我什么是事件委托,我肯定gg,还好查了一下,原来就是我之前练习过的DOM2级事件的应用. 二.什么是事件委托? 事件委托就是当事件触发时,把要做的事委托给父元素(或父元素的父元素 ...

  3. 从vue的组件传值着手浅谈观察者模式

    首先,提到观察者模式,这不禁让我想到了MVVM,MVVM架构模式感觉用到了观察者的思想. 我们还是按照惯例,了解一下什么是观察者模式 观察者模式,类似发布订阅模式,完成这个动作首先最少得有两个不同的对 ...

  4. 2018-2-22-在-windows-安装-Jekyll

    title author date CreateTime categories 在 windows 安装 Jekyll lindexi 2018-02-22 17:47:39 +0800 2018-2 ...

  5. Mysql语句优化建议

    一.建立索引 1)考虑在 where 及 order by 涉及的列上建立索引 2)对于模糊查询, 建立全文索引 3)对于多主键查询,建立组合索引 二.避免陷阱 然而,一些情况下可能使索引无效: 1) ...

  6. maven3常用命令、java项目搭建、web项目搭建详细图解(转)

     转自:http://blog.csdn.net/edward0830ly/article/details/8748986 maven3常用命令.java项目搭建.web项目搭建详细图解 2013-0 ...

  7. 转载 初学者必看——最简单最清晰的Struts2项目搭建流程

    https://blog.csdn.net/key0323/article/details/50773499 在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学 ...

  8. linux rsync 复制文件忽略文件夹

    比如: /home/vagrant/test 目录下有 a,b,c 三个文件夹,只复制 c 文件夹下面的文件到/home/vagrant/test2 下 使用cp命令复制的时候,只能排除一个目录不被复 ...

  9. zoj 2112 单点修改的主席树(树状数组套主席树)

    题目大意: 区间第k大问题+单点修改 基本思路: 这个题有用整体二分,cdq分治,还有主席树+平衡树的,还有就是主席树+树状数组. 我采用的是b站电子科大大佬的主席树写法,尤其喜欢他的离散化方法,所以 ...

  10. python读取配置文件(ini、yaml、xml)

    python读取配置文件(ini.yaml.xml)