I.MX6 U-boot GPIO hacking
/*******************************************************************************
* I.MX6 U-boot GPIO hacking
* 说明:
* 本文主要记录I.MX6 U-boot是如何设置GPIO口输入输出的,主要是考虑到这个阶段
* 并没有像Linux内核中的gpio_request一系列函数使用。
*
* 2016-3-7 深圳 南山平山村 曾剑锋
******************************************************************************/ cat bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c
......
#ifdef CONFIG_LCD
void lcd_enable(void)
{
......
mxc_iomux_v3_setup_pad(MX6DL_PAD_SD1_DAT2__GPIO_1_19); ---+
reg = readl(GPIO1_BASE_ADDR + GPIO_GDIR); ---*---------------+
reg |= ( << ); | |
writel(reg, GPIO1_BASE_ADDR + GPIO_GDIR); | |
| |
reg = readl(GPIO1_BASE_ADDR + GPIO_DR); | |
reg &= ~( << ); | |
writel(reg, GPIO1_BASE_ADDR + GPIO_DR); | |
...... | |
} | |
...... | |
| |
#define MX6DL_PAD_SD1_DAT2__GPIO_1_19 <---+ \ |
IOMUX_PAD(0x06D4, 0x02EC, , 0x0000, , NO_PAD_CTRL) | |
| |
/* | |
* configures a single pad in the iomuxer | |
*/ | |
int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad) <---+ |
{ |
u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT; |
u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT; |
u32 sel_input_ofs = (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT; |
u32 sel_input = (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT; |
u32 pad_ctrl_ofs = (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT; |
u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT; |
|
if (mux_ctrl_ofs) |
__raw_writel(mux_mode, base + mux_ctrl_ofs); |
|
if (sel_input_ofs) |
__raw_writel(sel_input, base + sel_input_ofs); |
|
if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs) |
__raw_writel(pad_ctrl, base + pad_ctrl_ofs); |
|
return ; |
} |
EXPORT_SYMBOL(mxc_iomux_v3_setup_pad); |
|
|
/** |
* 1. 参考文档: |
* i.MX 6Dual/6Quad Multimedia Applications Processor Reference Manual |
* 2. 30.4 Programmable Registers |
* +------------------------------------------------------+ |
* | GPIO memory map | |
* +-----------+-------------------------------+----------+ |
* | Absolute | Register name | Section/ | |
* | address | | page | |
* | (hex) | | | |
* +-----------+-------------------------------+----------+ |
* | 0209_C000 | GPIO data register (GPIO1_DR) | 30.4.1/ | |
* | | | | |
* +-----------+-------------------------------+----------+ |
* 3. GPIO1_BASE_ADDR = 0x1C000 + 0x80000 + 0x02000000 |
* GPIO1_BASE_ADDR = 0x0209C000 |
*/ |
#define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000) <--------+
#define AIPS1_OFF_BASE_ADDR (ATZ1_BASE_ADDR + 0x80000) |
#define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR |
#define AIPS1_ARB_BASE_ADDR 0x02000000 |
|
#define GPIO_GDIR 0x04 <--------+
#define GPIO_DR 0x00
I.MX6 U-boot GPIO hacking的更多相关文章
- i.MX6 设备树 GPIO 默认值
/********************************************************************** * i.MX6 设备树 GPIO 默认值 * 说明: * ...
- I.MX6 U-boot lvds display hacking
/*********************************************************************************** * I.MX6 U-boot ...
- I.MX6 Power off register hacking
/*********************************************************************** * I.MX6 Power off register ...
- I.MX6 android BatteryService jni hacking
/**************************************************************************** * I.MX6 android Batter ...
- I.MX6 Ar8031 device register hacking
/***************************************************************************** * I.MX6 Ar8031 device ...
- I.MX6 PWM buzzer driver hacking with Demo test
/***************************************************************************** * I.MX6 PWM buzzer dr ...
- I.MX6 change boot partition 1 to User area
/************************************************************************************ * I.MX6 change ...
- I.MX6 gpio-keys driver hacking
/**************************************************************************** * I.MX6 gpio-keys driv ...
- I.MX6 ar1020 SPI device driver hacking
/************************************************************************************ * I.MX6 ar1020 ...
随机推荐
- Java单例模式--------懒汉式和饿汉式
单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用.单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例.它的用途十分广泛,打个比方,我们开发 ...
- xml学习总结(四)
命名空间 (1)产生 问题:在不同的约束文档中,有不同好安逸的相同标记名称 解决办法 每个约束模式人当被赋予一个唯一的名称空间,每个名称空间可用一个唯一的URI表示 在XML实例中为来自不同模式文档的 ...
- s3c-u-boot-1.1.6源码分析
源码 源码结构 移植准备
- stm32之ADC学习
1.stm32中采用的是逐次逼近型模拟数字方式,那么什么是逐次逼近呢? 逐次逼近的方式类似于二分法,以8位数据为例:当输入一个模拟量的时候,首先取这8位数的一半,即1000 0000,与模拟量比较,大 ...
- iisapp appcmd
C:\Windows\System32\inetsrv>appcmd list wp
- SSL与TLS的区别以及介绍
转载 :http://kb.cnblogs.com/page/197396/ SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议 ...
- mysql语句中把string类型字段转datetime类型
mysql语句中把string类型字段转datetime类型 在mysql里面利用str_to_date()把字符串转换为日期 此处以表h_hotelcontext的Start_time和En ...
- 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下-复制代码 代码如下: #ifndef USE_H_ ...
- Tomcat多次部署
http://blog.csdn.net/knityster/article/details/6300804
- FileZilla Server 防火墙端口开启设置 windows 2008 win
入站规则 添加21端口, 程序FileZilla server.exe 出站规则 %SystemRoot%\System32\ftp.exe