OK335xS U-boot GPIO control hacking
/****************************************************************************************
* OK335xS U-boot GPIO control hacking
* 声明:
* 本文主要是跟踪U-boot中如何设置GPIO口电平。
*
* 2015-9-26 晴 深圳 南山平山村 曾剑锋
***************************************************************************************/ cat board/forlinx/ok335x/evm.c
int board_init(void)
{
int c = ;
/* Configure the i2c0 pin mux */
enable_i2c0_pin_mux(); i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); board_id = GP_BOARD;
profile = ; /* profile 0 is internally considered as 1 */
daughter_board_connected = ; configure_evm_pin_mux(board_id, header.version, profile, daughter_board_connected); --+
|
/** |
* 1. 参考资料: |
* AM335x ARM Cortex-A8 Microprocessors (MPUs) Technical Reference Manual (Rev. H) |
* |
* 2. ARM Cortex-A8 Memory Map |
* Table 2-2. L4_WKUP Peripheral Memory Map (continued) |
* +-------------+---------------------+-------------------+------+----------------+ |
* | Region Name | Start Address (hex) | End Address (hex) | Size | Description | |
* +-------------+---------------------+-------------------+------+----------------+ |
* | GPIO0 | 0x44E0_7000 | 0x44E0_7FFF | 4KB | GPIO Registers | |
* +-------------+---------------------+-------------------+------+----------------+ |
* |
* 3. GPIO Registers(4068 页) |
* Table 25-5. GPIO REGISTERS |
* +--------+-------------------+---------------+-------------------+ |
* | Offset | Acronym | Register Name | Section | |
* +--------+-------------------+---------------+-------------------+ |
* | 134h | GPIO_OE | | Section 25.4.1.16 |<-+ |
* +--------+-------------------+---------------+-------------------+ | |
* | 190h | GPIO_CLEARDATAOUT | | Section 25.4.1.25 | |<-+ |
* +--------+-------------------+---------------+-------------------+ | | |
* | 194h | GPIO_SETDATAOUT | | Section 25.4.1.26 | | |<-+ |
* +--------+-------------------+---------------+-------------------+ | | | |
*/ | | | |
/* set gpio0_7 gpio0_12 gpio0_22 gpio0_23 output mode */ | | | |
__raw_writel(~((<<) | (<<) | (<<) |(<<)), 0x44E07134);-------+ | | |
/* set gpio0_7 12 19 23 low */ | | |
__raw_writel((<<) | (<<) | (<<), 0x44E07190); ----------+ | |
/* set gpio0_22 high to height */ | |
__raw_writel( (<<) | (<<), 0x44E07194); -------------+ |
|
|
#ifndef CONFIG_SPL_BUILD |
board_evm_init(); |
#endif |
gpmc_init(); |
|
return ; |
} +-------------------------------------------------------------------------+
V
void configure_evm_pin_mux(unsigned char dghtr_brd_id, char version[], unsigned short
profile, unsigned int daughter_board_flag)
{
if (dghtr_brd_id > BASE_BOARD)
return; set_evm_pin_mux(am335x_evm_pin_mux[], profile,daughter_board_flag);
} |
V
static struct evm_pin_mux *am335x_evm_pin_mux[] = {
general_purpose_evm_pin_mux, ----------------------+
}; |
|
/* |
* Update the structure with the modules present in the general purpose |
* board and the profiles in which the modules are present. |
* If the module is physically present but if it is not available |
* in any of the profile, then do not update it. |
* For eg, nand is avialable only in the profiles 0 and 1, whereas |
* UART0 is available in all the profiles. |
*/ |
static struct evm_pin_mux general_purpose_evm_pin_mux[] = { <----------+
{i2c1_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_4, DEV_ON_BASEBOARD}, #ifdef CONFIG_NAND
{nand_pin_mux, PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3, DEV_ON_DGHTR_BRD},
#endif #ifndef CONFIG_NO_ETH
{mii1_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
#endif #ifdef CONFIG_MMC
{mmc0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
#endif
{backlight_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, -----+
{maxttl_model_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, |
{lcd_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, |
{uart0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, |
{}, |
}; |
|
static struct module_pin_mux backlight_pin_mux[] = { <----+
{OFFSET(ecap0_in_pwm0_out), MODE() | PULLUP_EN | RXACTIVE}, /* GPIO0_7 */
{OFFSET(uart1_ctsn), MODE() | PULLUDDIS | RXACTIVE}, /* GPIO0_ 12 */
{-},
};
OK335xS U-boot GPIO control hacking的更多相关文章
- OK335xS 网络连接打印信息 hacking
/*********************************************************************** * OK335xS 网络连接打印信息 hacking ...
- OK335xS GPMC nand device register hacking
/********************************************************************************* * OK335xS GPMC na ...
- OK335xS pwm buzzer Linux driver hacking
/**************************************************************************** * OK335xS pwm buzzer L ...
- Raspberry Pi 3 --- GPIO control
Before input 'gpio readall', need install wiringPi download "wiringPi":git clone git://git ...
- Linux GPIO 注册和应用
Linux GPIO 注册和应用 Linux Kernel, GPIO, ARM 于Linux kernel代码.经常使用 GPIO 作为一个特殊的信号,如芯片片选信号. GPIO 功能应用,我们经常 ...
- Linux-3.0.8中基于S5PV210的GPIO模块代码追踪和分析
编写按键驱动时,想知道内核是如何管理GPIO的,所以开始追踪代码,中间走了一些弯路,现记录于此. 追踪代码之前,我猜测:第一,这部分代码应该在系统set up阶段执行:第二,GPIO的代码应该在mac ...
- bcm53344 gpio驱动分析
/********************************************************************************* * 1.查看代码是在vim下,使用 ...
- linux下GPIO的用户层操作(sysfs)
linux的GPIO通过sysfs为用户提供服务,下面是linux kernel里的说明文档,学习一下. GPIO Sysfs Interface for Userspace ============ ...
- imx6 gpio irq
/***************************************************************** * gpio irq * * 一直以来都没了解过gpio的irq, ...
随机推荐
- python 散列表查找
class HashTable: def __init__(self, size): self.elem = [None for i in range(size)] self.count = size ...
- Mysql 统计查询
SELECT ub.telphone, SUM(IF(b.type = 1 AND b.level = 1, 1, 0)) AS type11, SUM(IF(b.type = 1 AND b.lev ...
- Oracle监听服务
Oracle数据库中的主要用户及其作用 No. 用户名 默认密码 描述 1 sys change_on_install 数据库的超级管理员 2 system manager 数据库的普通管理员 3 s ...
- 【转】float类型在内存中的表示
http://www.cnblogs.com/onedime/archive/2012/11/19/2778130.html http://blog.csdn.net/adream307/articl ...
- JavaScript 基础知识入门
js3种弹出框 alert消息对话框 var mychar=I love JavaScript;alert(mychar); confirm消息对话框 返回值:bool var mymessage ...
- URAL 1635 Mnemonics and Palindromes
URAL 1635 思路:区间dp+贪心,先n^2处理出每段区间是否是回文串,然后贪心地找每一段1到i的最少分割. 代码: #include<bits/stdc++.h> using na ...
- string类的用法笔记
要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...
- ubuntu安装环境软件全文档
1,安装apace2: sudo apt-get install apache2 2谷歌浏览器的安装:sudo apt-get install chromium-browser-dbg 3,国际版Q ...
- MFC中format函数用法
本文转载于:http://blog.csdn.net/sunxc123/article/details/7742982 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString ...
- dp练习(8)——数的划分
1039 数的划分 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 将整数 ...