S3C6410(Real6410) Linux 6x6矩阵键盘驱动移植

发布者:Lihua521最新更新时间:2024-09-13 来源: cnblogs关键字:S3C6410  Real6410  Linux  矩阵键盘  驱动移植 手机看文章 扫描二维码
随时随地手机看文章

Real6410默认的键盘驱动是gpio键盘驱动,现在要取消gpio键盘,实现矩阵键盘。6410的矩阵键盘驱动对应的是samsung-keypad.c,位于driver/input/keyboard目录,可按照下面步骤进行移植。

1、 在arch/arm/mach-s3c64xx/mach-real6410.c中签加

添加头文件:

#include

添加struct定义

static uint32_t smdk6410_keymap[] __initdata = {

         /* KEY(row, col, keycode) */

         /*S00(0,0),               S01(0,1),                   S02(0,2),           S03(0,3)*/

         KEY(0, 0, KEY_F1), KEY(0, 1, KEY_F2), KEY(0, 2, KEY_F3),   KEY(0,3,KEY_F4),

         /*S04(0,4),               S05(0,5),                   S06(4,0),           S07(5,0)*/

         KEY(0, 4, KEY_1),    KEY(0, 5, KEY_2),    KEY(4, 0, KEY_3),     KEY(5,0,KEY_UP),

         /*S08(1,0),               S09(1,1),           S0A(1,2),           S0B(1,3)*/

         KEY(1, 0, KEY_F5), KEY(1, 1, KEY_F6), KEY(1, 2, KEY_F7),   KEY(1,3,KEY_F8),

         /*S0C(1,4),               S0D(1,5),           S0E(4,1),           S0F(5,1)*/

         KEY(1, 4, KEY_4),    KEY(1, 5, KEY_5),    KEY(4, 1, KEY_6),     KEY(5,1,KEY_LEFT),

         /*S10(2,0),               S11(2,1),           S12(2,2),           S13(2,3)*/

         KEY(2, 0, KEY_F9), KEY(2, 1, KEY_F10),         KEY(2, 2, KEY_F11), KEY(2,3,KEY_F12),

         /*S14(2,4),               S15(2,5),           S16(4,2),           S17(5,2)*/

         KEY(2, 4, KEY_7),    KEY(2, 5, KEY_8),    KEY(4, 2, KEY_9),     KEY(5,2,KEY_DOWN),

         /*S18(3,0),               S19(3,1),           S1A(3,2),           S1B(3,3)*/

         KEY(3, 0, KEY_DOT),       KEY(3, 1, KEY_0),    KEY(3, 2, KEY_MINUS),    KEY(3,3,KEY_ESC),

         /*S1C(3,4),               S1D(3,5),                    S1E(4,3),           S1F(5,3)*/

         KEY(3, 4, KEY_TAB),        KEY(3, 5, KEY_BACKSPACE),  KEY(4, 3, KEY_ENTER),    KEY(5,3,KEY_RIGHT)

};

 

static struct matrix_keymap_data smdk6410_keymap_data __initdata = {

         .keymap            = smdk6410_keymap,

         .keymap_size = ARRAY_SIZE(smdk6410_keymap),

};

 

static struct samsung_keypad_platdata smdk6410_keypad_data __initdata = {

         .keymap_data = &smdk6410_keymap_data,

         .rows                 = 6,

         .cols          = 6,

};

2、 在static struct platform_device *real6410_devices[] __initdata结构中增加

&samsung_device_keypad,

同时屏蔽&s3c_device_gpio_button,

/*

         &s3c_device_gpio_button,

*/

3、在static void __init real6410_machine_init(void)函数中加上

         samsung_keypad_set_platdata(&smdk6410_keypad_data);

   设置键盘参数。samsung_keypad_set_platdata在arch/arm/plat-samsung/dev-keypap.c中实现。

4、 修改配置,在linux目录下执行make xconfig, 进入input device support->keyboards, 取消掉S3C6410 GPIO Buttons


选上Samsung keypad support


保存并退出xconfig,重新make即可。


关键字:S3C6410  Real6410  Linux  矩阵键盘  驱动移植 引用地址:S3C6410(Real6410) Linux 6x6矩阵键盘驱动移植

上一篇:LINUX 3.0.8支持RT3070 USB Wifi(S3C6410)
下一篇:s3c6410 RomCode文档读后总结

推荐阅读最新更新时间:2024-11-09 10:54

Linux之父发话:Rust即将出现在Linux内核中
今天早上,Linus Torvalds 在 Linux 基金会开源峰会上发言称,Rust 有可能很快就会出现在 Linux 的内核中,最快是下一个内核周期。 Linus Torvalds 和 Dirk Hohndel 在开源峰会上的常规演讲 / 对话中,Linus 评论了内核中的 Rust 编程语言代码。 Torvalds 称,他们希望很快能将 Rust 编写的代码合并到内核中,甚至 Rust 可能出现在下一个版本中,即 Linux 5.20。 目前,还没有任何 Rust for Linux 拉取请求被发送或合并,但是用于基础设施、一些基本的示例驱动程序中时,内核的 Rust 启动代码已经开始稳定下来。 上个月看到
[嵌入式]
第五章 搭建S3C6410开发板的测试环境
在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试。目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开发了扩展板。 下面对S3C6410开发板进行简单的介绍:三星S3C6410是一款低功耗、高性价比的RISC精简指令集系统的处理器,基于ARM11内核,可用于移动电话和通用处理等领域。它为通信服务提供了优化的硬件性能,内置强大的硬件加速器,有运动视频处理、音频处理、2D加速、显示处理和缩放等,还集成了一个MFC多格式视频码,支持MPEG4 /H.263/H.264编解码和VC1解码,能提供实时的视频会议以及NRSC和PAL制式的TV
[单片机]
S3C6410 SPI全双工读写流程分析(原创)
一、SPI控制器datasheet 1详细请参考:http://blog.csdn.net/hustyangju/article/details/20474659 2 SPI的所有寄存器都是映射到内核空间的,采用基地址+偏移地址的方式访问 static volatile void __iomem *spiregs; //global variable for mapping spiregister spiregs = (volatile)ioremap(0x7F00B000,0x30); //just request for the spi0 3 下文可能用到的偏移地址 #defi
[单片机]
构建根文件系统(1)Linux root filesystem目录结构
详细可见 FHS 文档,可从网站: http://www.pathname.com/fhs/ 下载 / ____/bin ____/sbin ____/dev ____/etc ____/lib ____/home ____/root ____/usr ____/var ____/proc ____/mnt ____/tmp 各个目录的作用如下: 1、/bin 存放所有用户都能使用的基本命令,如下: 2、/sbin 存放只有管理员才能使用的命令,例如:shutdown、reboot、fdisk、fsck等。 3、/dev 存放设备文件 /dev/mtdblock1 可以访问MTD设备的第2个分区 设备文件有两种:字符设备
[单片机]
构建根文件系统(1)<font color='red'>Linux</font> root filesystem目录结构
OK6410A 开发板 (八) 33 linux-5.11 OK6410A 内存管理第一阶段
A arch/arm/kernel/head.S 中的 stext符号 - __turn_mmu_on 符号 ----此时开了MMU,开启了虚拟内存时代 流程 mrc p15, 0, r9, c0, c0 // 将 cpuid 存储到 r9 __lookup_processor_type // 根据 r9 中的值 ,获取 procinfo 并存储到 r5 movs r10, r5 // 获取 procinfo 并存储到 r10 __vet_atags // 验证 atags __create_page_tables // 内存管理相关1 // clear 50004000 - 50007
[单片机]
中断处理学习笔记
中断处理 如果想使用中断: 1 初始化 A设置源头 查看原理图 XEINT0/kpROW0/GPN0 查看芯片手册 使能 B 设置中断控制器 This chapter describes the functions and usage ofVectored Interrupt Controller in S3C6410X RISC microprocessor. 12.1 OVERVIEW The interrupt controller in the S3C6410X is composed of2 VIC’s (Vectored Interrupt Controller, ARM Pr
[单片机]
中断处理学习笔记
設置Linux保留物理內存並使用 (1)
平臺 硬件平臺: TQ2440 Linux版本:Linux 3.14.45 說明 1.在tq2440上,物理內存的起始地址是0x30000000,一共有64MB的內存,所以物理內存地址範圍是: 0x30000000 - 0x33ffffff 2.可以在uboot傳給kernel的參數bootargs中添加一個 memblock=debug ,這樣在Linux啓動的時候,會將設置memblock的信息打印出來 參考博文 Linux内核---41.arm 内存初始化 http://bbs.chinaunix.net/thread-4143403-1-1.html 代碼調用 在Linux啓動的時候會調用ma
[单片机]
linux MTD系统解析,
MTD,Memory Technology Device即内存技术设备,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。 如上图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。 Flash硬件驱动层:Flash硬件驱动层负责对Flash硬件的读、写和擦除操作。MTD设备的Nand Flash芯片的驱动则drivers/mtd/nand/子目录下,Nor Flash芯片驱动位于drivers/mtd/chips/子目录下。 MTD原始设备层:用于描述MTD原始设备的数据结构是
[单片机]
<font color='red'>linux</font> MTD系统解析,
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved