Linux GPIO Interfaces

That said, if the convention is supported on their platform, drivers should
use it when possible. Platforms must declare GENERIC_GPIO support in their
Kconfig (boolean true), and provide an <asm/gpio.h> file. Drivers that can‘t
work without standard GPIO calls should have Kconfig entries which depend
on GENERIC_GPIO. The GPIO calls are available, either as "real code" or as
optimized-away stubs, when drivers use the include file:

#include <linux/gpio.h>

Identifying GPIOs
-----------------
GPIOs are identified by unsigned integers in the range 0..MAX_INT. That
reserves "negative" numbers for other purposes like marking signals as
"not available on this board", or indicating faults. Code that doesn‘t
touch the underlying hardware treats these integers as opaque cookies.

If you want to initialize a structure with an invalid GPIO number, use
some negative number (perhaps "-EINVAL"); that will never be valid. To
test if such number from such a structure could reference a GPIO, you
may use this predicate:

int gpio_is_valid(int number);

A number that‘s not valid will be rejected by calls which may request
or free GPIOs (see below). Other numbers may also be rejected; for
example, a number might be valid but temporarily unused on a given board.

时间: 2024-12-28 08:06:44

Linux GPIO Interfaces的相关文章

[sysfs]Linux GPIO简单使用方式

转自:http://blog.csdn.net/drivermonkey/article/details/20132241 1.1.References 1.2.GPIO Usage from a Linux Application 1.2.1Overview 1.2.2.Configure the kernel for GPIO support in sysfs 1.2.3.Enable GPIO access from user space 1.2.4.GPIO interrupts fro

Linux GPIO键盘驱动开发记录_OMAPL138

Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3.3内核文件下的driver目录,点开里面的C文件,感觉底层的Linux驱动机制还是很复杂的,还需要一段漫长时间的学习.现在开发的也不能说是叫做驱动,也只能说是驱动的应用,我们学习驱动也从应用逐步开始,往里面深入吧. 0.开发准备 内核源文件(当时我们编译内核时候的目录,很重要,编译驱动的时候需要依赖

Linux GPIO操作分析 - Exynos 5260

送给从STM32库或者其他单片机爬过来的熊孩纸 操作GPIO还是这个顺序: 1:开时钟(linux不用管) 2:设置属性 3:设置方向 4:看是否需要设置上下拉 我这个版本是exynos5260平台的,常规IO操作方式如下 通常在配置一个GPIO口时,首先通过gpio_request函数申请GPIO口,再通过s3c_gpio_cfgpin.s3c_gpio_setpull.gpio_set_value函数配置GPIO口,在不用时通过gpio_free函数释放GPIO口. 相关源码路径: /* k

【linux】 linux gpio操作

欢迎转载,转载时需保留作者信息,谢谢. 邮箱:[email protected] 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://blog.csdn.net/xiayulewa   是平时自己word离线做笔记的,当发在网上才发现写的太宏观,不怎么容易看懂,今后做笔记会注意多贴代码. 1.   GPIO 1.1.  地址映射 如上所述: #define S3C24XX_VA_GPIO             ((S3C24XX_

Linux GPIO 的注册与申请

Linux Kernel, GPIO, ARM 在Linux kernel代码中,经常会使用 GPIO 来作为一个特殊的信号,如作为芯片的片选信号等. GPIO 申请的函数,我们经常用到,如 gpio_request ,那么 GPIO 是何时,以及如何注册的,本文就来探索一下. 基于的平台上 freesccale 的 i.MX6 先从函数 gpio_request 的实现开始. /* These "optional" allocation calls help prevent driv

Linux中的gpio口使用方法

Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h> 判断一个IO是否合法:int gpio_is_valid(int number); 设置GPIO的方向,如果是输出同时设置电平:/* set as input or output, returning 0 or negative errno */int gpio_direction_input(unsi

linux下操作gpio寄存器的方法

一. 在驱动中: 1. 用的时候映射端口:ioremap; #define GPIO_OFT(x) ((x) - 0x56000000) #define GPFCON (*(volatile unsigned long *)(gpio_va + GPIO_OFT(0x56000050))) gpio_va = ioremap(0x56000000, 0x100000); // 物理地址0x56000000, 映射区分配的大小0x100000字节 这样映射过后,就可以直接操作寄存器了: 配置3引脚

使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】

关键词:Android  linux hrtimer 蜂鸣器  等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418  作者:庄泽彬(欢迎转载,请注明作者) 邮箱:[email protected] 程序描述:本文控制的设备是无源蜂鸣器,由于无源蜂鸣器是需要产生一定的频率的PWM才能够控制蜂鸣器,不像有源蜂鸣器,只需要提供高低电平就可以控制蜂鸣器.linux内核普通的定时器,由于具有一定的局限性,不能达到纳秒级别的定时

Linux 内核层和 用户层 配置 GPIO 引脚

Linux BSP 开发的基础就是和GPIO打交道, 下面总结下这几天对某家开发板的GPIO控制的知识. 公司的开发板用的是 DTB  模式 ,首先,进入 dts,dtsi文件查看关于GPIO 的模块. soc { . . . gpio0: [email protected]****addr { compatible = "**********"; reg = <0 0x****addr 0 0x50>; interrupts = <SPI 4 IRQ_TYPE_LE