/***********************************************************************************
* 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. java 基本数据类型及自动类型提升

    1.Java的8种基本数据类型及其所占空间大小: boolean  8bit/1byte       byte      8bit/1byte       char      16bit/2byte ...

  2. Codeforces 877E - Danil and a Part-time Job(dfs序+线段树)

    877E - Danil and a Part-time Job 思路:dfs序+线段树 dfs序:http://blog.csdn.net/qq_24489717/article/details/5 ...

  3. 多线程(JDK1.5的新特性互斥锁)

    多线程(JDK1.5的新特性互斥锁)(掌握)1.同步·使用ReentrantLock类的lock()和unlock()方法进行同步2.通信·使用ReentrantLock类的newCondition( ...

  4. 20170706pptVBA演示文稿批量删除图片

    Public Sub StartRecursionFolder() Dim Pre As Presentation Dim FolderPath As String Dim pp As String ...

  5. javascript实现select菜单/级联菜单(用Rails.ajax实现发送请求,接收响应)

    在购物网站,填写收货地址的时候,会出现XX省XX市XX区的下拉菜单,如何实现此功能?思路是什么? 功能设置: 当选择省select菜单后,市的select菜单为这个省的城市列. 当选择市菜单后,区菜单 ...

  6. 原创-整理了下常用的js数组 、对象、数字、字符串的操作方法

    终于整理好了...主要是一些常用的函数,包含es6和es5的所有常用的,吧一些不常用的全部砍掉,省的大家看的费事.发现这个到博客上面有点乱.给个百度云地址:https://pan.baidu.com/ ...

  7. STL_string

    将string对象利用c风格的形式输出函数:  c_str() 栗子:      string s;      printf("%s\n",s.c_str());

  8. UVA-1629 Cake slicing (DP、记忆化搜索)

    题目大意:一块n*m的矩形蛋糕,有k个草莓,现在要将蛋糕切开使每块蛋糕上都恰有一个(这意味着不能切出不含草莓的蛋糕块)草莓,要求只能水平切或竖直切,求最短的刀切长度. 题目分析:定义状态dp(xa,y ...

  9. 使用API失效供应商地址Demo(转)

    原文地址  使用API失效供应商地址Demo DECLARE lv_return_status ) := NULL; ln_msg_count NUMBER; lv_errmsg ); lt_vend ...

  10. Css中如何使英文和拼音变成全大写、全小写和首字母大写?

    想要实现英文和中文拼音变成全大写.全小写和首个字母大写,需要用到 css中text-transform样式属性,接下来介绍一下 1.text-transform的值 1)Capitalize:英文拼音 ...