/***********************************************************************************
* Linux driver 板级文件跟踪一般方法
* 声明:
* 1. 这是本人使用vim+ctags最常用的跟踪方法,也是唯一的方法; :)
* 2. 本人已经在跟踪线上标注了跟踪序号,也就是先后循序;
* 3. 就目前而言,这种方法貌似是通用的;
* 4. 这个例子仅仅是简单的演示,并没有全部展开,如果想要进一步跟踪,
* 继续跟就行了。
* 5. 源代码来自:myzr_android4_2_2_1_1_0.tar.bz2
*
* 2015-6-12 晴 深圳 南山平山村 曾剑锋
**********************************************************************************/ cat arch/arm/mach-mx6/board-mx6q_sabresd.c ......
#define SABRESD_POWER_OFF IMX_GPIO_NR(3, 29) <--------------------------+
...... |
|
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) |
#define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake, debounce) \ <------+ |
{ \ | |
.gpio = gpio_num, \ | |
.type = EV_KEY, \ | |
.code = ev_code, \ | |
.active_low = act_low, \ | |
.desc = "btn " descr, \ | |
.wakeup = wake, \ ^ |
.debounce_interval = debounce, \ | |
} | |
| |
static struct gpio_keys_button new_sabresd_buttons[] = { <-----<-------+ | |
//GPIO_BUTTON(SABRESD_VOLUME_UP, KEY_VOLUMEUP, 1, "volume-up", 0, 1), | | |
//GPIO_BUTTON(SABRESD_VOLUME_DN, KEY_VOLUMEDOWN, 1, "volume-down", 0, 1), | | |
GPIO_BUTTON(SABRESD_POWER_OFF, KEY_POWER, , "power-key", , ), --->----*--+ |
}; ^------------------------------------------------------*----+
|
static struct gpio_keys_platform_data new_sabresd_button_data = { <-------+ |
.buttons = new_sabresd_buttons, >------------>---------------*--+
.nbuttons = ARRAY_SIZE(new_sabresd_buttons), |
}; |
|
static struct platform_device sabresd_button_device = { <--+ |
.name = "gpio-keys", | |
.id = -, | ^
.num_resources = , | |
}; | |
| |
static void __init imx6q_add_device_buttons(void) <-----*-------+ |
{ | | |
platform_device_add_data(&sabresd_button_device, >---+ | |
&new_sabresd_button_data, | |
sizeof(new_sabresd_button_data)); >-------------*-------+
|
platform_device_register(&sabresd_button_device); |
} |
|
|
...... ^
/*! |
* Board specific initialization. |
*/ |
static void __init mx6_sabresd_board_init(void) <------------<---*--------<-----+
{ | |
...... | |
imx6q_add_device_buttons(); ------>------------->-------------+ |
...... |
} |
|
...... |
/* ^
* initialize __mach_desc_MX6Q_SABRESD data structure. |
*/ |
MACHINE_START(MX6Q_SABRESD, "Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board") |
/* Maintainer: Freescale Semiconductor, Inc. */ |
.boot_params = MX6_PHYS_OFFSET + 0x100, |
.fixup = fixup_mxc_board, |
.map_io = mx6_map_io, |
.init_irq = mx6_init_irq, |
.init_machine = mx6_sabresd_board_init, ----->------------->------->--------+
.timer = &mx6_sabresd_timer,
.reserve = mx6q_sabresd_reserve,
MACHINE_END

Linux driver 板级文件跟踪一般方法的更多相关文章

  1. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  2. kernel 3.2.0 上加入自己的板级文件

    第一步.复制自己的参考的板级文件 cp arch/arm/mach-omap2/board-am335xevm.c arch/arm/mach-omap2/board-aplex_ECM_5412.c ...

  3. linux下查看某个文件位置的方法

    linux下查看某个文件位置的方法: 例如,不知道apache的配置文件httpd.conf的位置,可以有两种方法来查看: 1.find / -name httpd.conf2.locate http ...

  4. (linux)BSP板级支持包开发理解

    1. 概述 嵌入式系统由硬件环境.嵌入式操作系统和应用程序组成,硬件环境是操作系统和应用程序运行的硬件平台,它随应用的不同而有不同的要求.硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在 ...

  5. linux下查找某个文件位置的方法

    一.通过文件名查找法: 举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录 下,甚至在系统的某个地方也不知道,则这是可以使用如下命令: find / -name httpd.conf ...

  6. linux下快速列出文件列表的方法

    前言 这两天碰到一个很棘手的问题,需要读取出ubuntu系统中某个目录下所有文件,由于服务器中存储的文件实在太多,导致此过程效率十分低下,动辄需要等待一个小时之久,还只是一个目录.于是如何快速获取文件 ...

  7. Linux系统启动过程内核文件丢失解决方法

    一.问题描述 公司近期因机房断电,导致服务器重启后,引导进入不了操作系统.经过检查发现启动文件缺失,导致系统启动失败,网上搜了好多资料,解决都比较零散,现结合实际处理经验和网友的建议整理接方案. 二. ...

  8. linux下tar.bz2文件的 解压缩方法

    一 使用bzip2解压缩命令进行解压缩: bzip2 -d  gcc-4.1.0.tar.bz2 二 上面解压完之后执行下面的命令. tar -xvf gcc-4.1.0.tar 或 tar -xvf ...

  9. 在Linux中的.iso文件的处理方法

    1,mkdir /a 2,mount MLNX_OFED_LINUX-4.4-2.0.7.0-rhel7.3-x86_64.iso  /a3,cd /a4,这样就可以对文件进行操作了

随机推荐

  1. VC_可再发行组件包

    1. 中文 : 可再发行组件包 英文 : Redistributable Package 例子 : Download Microsoft Visual C++ 2010 Redistributable ...

  2. php 四种基础排序

    1. 冒泡排序算法 *     思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来.  *     比如:2,4,1    // 第一次 冒出的泡是4  *             ...

  3. Java 常用对象-BigInteger类

    2017-11-02 21:57:09 BigInteger类:不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger ...

  4. Python 运算符重载

    https://www.cnblogs.com/hotbaby/p/4913363.html

  5. WPF几种高级绑定

    (1)Binding  + RelativeSource + AncestorType 模式  , 根据关联源所指定的类型,可动态绑定指定类型的Path属性(Path可以省略)(PS:动态指父级在运行 ...

  6. Mass Change Queries CodeForces - 911G (线段树合并)

    链接 大意: 给定序列, 每次操作将区间[l,r]中的x全改为y, 最后输出序列 权值范围比较小, 对每个权值开一颗线段树, 每次将x合并到y上即可 #include <iostream> ...

  7. 『科学计算』通过代码理解SoftMax多分类

    SoftMax实际上是Logistic的推广,当分类数为2的时候会退化为Logistic分类 其计算公式和损失函数如下, 梯度如下, 1{条件} 表示True为1,False为0,在下图中亦即对于每个 ...

  8. thinkphp3.2导出

    public function test() { set_time_limit(0); ini_set('memory_limit', '500M'); //导入PHPExcel类库,因为PHPExc ...

  9. 使用opatch工具 打补丁Patch 21352635 -(Database Patch Set Update 11.2.0.4.8)

    Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...

  10. IOS UI-Button按钮

    #import "ViewController.h" @interface ViewController () { UILabel *lable; BOOL moveFlag; N ...