/***********************************************************************************
* 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

最新文章

  1. win7&amp;win8.1 x64位系统下在VS2010下配置MPICH2&amp;测试&amp;解决scanf不能输入
  2. sudo命令使用的几个场景
  3. CustomEditor 自定义预览窗
  4. GCC 编绎选项 转
  5. What does the number on the visual studio solution icon represent?
  6. 打包mysql、tomcat、jdk为一个软件
  7. 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结
  8. code force 403B.B. The Meeting Place Cannot Be Changed
  9. OAuth2.0 协议的理解
  10. c/c++ 友元的简单应用
  11. SqlDbx 个人版本使用指定的instant client
  12. Jenkins修改workspace和build目录
  13. python数据相关性分析 (计算相关系数)
  14. 【转】在Win7的IIS上搭建FTP服务及用户授权
  15. jQuery属性--attr(name|properties|key,value|fn)和removeAttr(name)
  16. Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录
  17. 图解RabbitMQ
  18. ios app: 使用企业license设置发布app的过程
  19. 温习《PHP 核心技术与最佳实践》这本书
  20. 通过BeanFactoryPostProcessor来获取bean

热门文章

  1. js 文件上传
  2. Lua中数组的学习
  3. 解决SpringBoot更新数据到MySQL乱码问题
  4. Android之侧滑菜单DrawerLayout的使用
  5. hdu-3980-nim博弈/sg函数
  6. Andriod给textview文本关键字循环标亮加粗
  7. 第一个 MVC 应用程序(上半部分)(《精通 ASP.NET MVC5》 的第二章)
  8. 深入理解MyBatis中的一级缓存与二级缓存
  9. app.jsNodejs启动测试服务
  10. 如何解决请求URL长度超过配置的maxurlLength值问题