WK2124 驱动移植
官网:
驱动首先放在 kernel 3.2.0 driver/spi/ 下面
// 1. 更名为 wk2124A.h wk2124A.c
// 2. 在 Kconfig 加入如下配置:
429 config SPI_WK2124A
430 tristate "WK2124A spi to 4 uart drvier"
431 depends on SPI
432 help
433 SPI driver for wk2124 cs1 spi to 4 wire uart IC driver.
// 3 . 在 Makefile 里面加入:
61 obj-$(CONFIG_SPI_WK2124A) += wk2124A.o
// 4. 修改驱动源码
// 5. 在 头文件中修改:
// 修改主次设备号
144 #define SERIAL_WK2124A_MAJOR 190
145 #define CALLOUT_WK2124A_MAJOR 191
148 /* am33xx irq */
149 #define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio))
150 #define IH2_BASE 32
151 #define OMAP_MAX_GPIO_LINES 192
152 #define IH_GPIO_BASE (128 + IH2_BASE)
153 #define IH_MPUIO_BASE (OMAP_MAX_GPIO_LINES + IH_GPIO_BASE)
154 #define OMAP_IRQ_END (IH_MPUIO_BASE + 16)
155 #define OMAP_GPIO_IS_MPUIO(nr) ((nr) >= OMAP_MAX_GPIO_LINES)
156 #define OMAP_GPIO_IRQ(nr) (OMAP_GPIO_IS_MPUIO(nr) ? \
157 IH_MPUIO_BASE + ((nr) & 0x0f) : \
158 IH_GPIO_BASE + (nr))
159
160 //wk2xxx hardware configuration
161 #define IRQ_WK2124A OMAP_GPIO_IRQ(GPIO_TO_PIN(0, 23))
// 这段代码是加入 AM335X 中断的选择
// 在 wk2124A.c 里面修改
29 #include "wk2124A.h"
1476 static struct uart_driver wk2124_uart_driver = {
1477 owner: THIS_MODULE,
1478 major: SERIAL_WK2124A_MAJOR,
1479 #ifdef CONFIG_DEVFS_FS
1480 driver_name: "ttySWZA",
1481 dev_name: "ttysWZA",
1482 #else
1483 driver_name: "ttySWZA",
1484 dev_name: "ttysWZA",
1485 #endif
1486 minor: MINOR_START,
1487 nr: NR_PORTS,
1488 cons: NULL//WK2Xxx_CONSOLE,
1489 };
1595 static struct spi_driver wk2124A_driver = {
1596 .driver = {
1597 .name = "wk2124A",
1598 .bus = &spi_bus_type,
1599 .owner = THIS_MODULE,
1600 },
1601
1602 .probe = wk2124A_probe, // 相应的, probe 的名字也要修改
1603 .remove = __devexit_p(wk2124_remove),
1604 .resume = wk2124_resume,
1605 };
1607 static int __init wk2124A_init(void)
1608 {
1609 int retval;
1610
1611 retval = spi_register_driver(&wk2124A_driver);
1612 printk(KERN_ALERT "rgister spi return v = :%d\n", retval);
1613
1614 return retval;
1615 }
1616
1617 static void __exit wk2124A_exit(void)
1618 {
1619 spi_unregister_driver(&wk2124A_driver);
1620 printk("TEST_REG:quit ");
1621 }
1622
1623 module_init(wk2124A_init);
1624 module_exit(wk2124A_exit);
1625
1626 MODULE_AUTHOR("WKIC Ltd");
1627 MODULE_DESCRIPTION("wk2xxx generic serial port driver");
1628 MODULE_LICENSE("GPL");
// 修改 init 函数名字以及 驱动名字
在板级文件的 spi_slave 里面加入:
841 static struct spi_board_info am335x_spi0_slave_info[] = {
842 #if 0
843 {
844 .modalias = "spidev",
845 .max_speed_hz = 10000000,//48Mbps
846 .bus_num = 1,
847 .chip_select = 0,
848 .mode = SPI_MODE_0,
849 },
850 #endif
851 #if 1
852 {
853 .modalias = "wk2124A", // compiler
854 .mode = SPI_MODE_0,
855 .max_speed_hz = 10000000, // speed 10Mbps
856 .bus_num = 1, // spi0 bus
857 .chip_select = 0, // spi_cs0
858 },
859 #endif
860 };
WK2124 驱动移植的更多相关文章
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一
关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...
- kernel 4.4.12 EETI eGTouch 电容屏驱动移植
kernel 4.4.12 EETI eGTouch 电容屏驱动移植: 在make menuconfig 里面添加如下选项: 添加通过事件上报接口节点: Device Drivers ---> ...
- AM335x kernel 4.4.12 i2c eeprom AT24c02驱动移植
kernel 4.4.12 i2c eeprom AT24c02驱动移植 在kernel make menuconfig ARCH=ARM 中打开: Device Drivers ---> Mi ...
- wifi 驱动移植范例
.改Makefile: 里面没有dm6441平台的,我看到有dm6446的,所以就在这里改了 ifeq ($(PLATFORM),DM6446) LINUX_SRC = /root/work/lin ...
- linux网卡驱动移植
这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可 ...
- 飞凌OK6410开发板SDIO无线8189WIFI模块驱动移植
为什么要移植?开发板不是已经提供了无线驱动吗? 貌似是这样的..本来是好用的.加入自己第三方驱动后发现WIFI用不了...最后发现飞凌提供的内核里面没有8189芯片的代码...问售后他们说那边是好的. ...
- ar1020 驱动移植 无效
移植ar1020的spi驱动.驱动移植过来后,在原来的板子上都能够正常运行,而在新的板子却没有效果. 最后查看新旧板子的AR1020的电路,发现M2引脚连接不同.M2高电平连接的touch是5线的接口 ...
- I.MX6 SHT20 Linux 驱动移植
/*********************************************************************** * I.MX6 SHT20 Linux 驱动移植 * ...
- AM335x(TQ335x)学习笔记——GPIO关键驱动移植
或按照S5PV210学习秩序.我们首先解决的关键问题.TQ335x有六个用户按钮,每个上.下.剩下.对.Enter和ESC. 我想开始学习S5PV210当同一,写输入子系统驱动器的关键问题要解决,但浏 ...
随机推荐
- Linux内核系统体系概述
Linux 内核主要由 5 个模块构成,它们分别是: 进程调度模块 用来负责控制进程对 CPU 资源的使用.所采取的调度策略是各进程能够公平合理地访问 CPU,同时保证内核能及时地执行硬件操作. 内存 ...
- 大批量导入数据的SqlBulkCopy类
SqlBulkCopy 这个类用于数据库大批量的数据传递,通常用于新旧数据库之间的更新.关键的一点是,即使表结构不同,也可以通过表字段或者字段位置建立映射关系,将所需的数据导入到目标数据库. 下面代 ...
- 移动硬盘做pe启动盘
- Maven pom.xml中的元素modules、parent、properties以及import(转)
前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...
- kafak manager + zookeeper + kafka 消费队列快速清除
做性能测试时,kafka消息队列比较长,让程序自己消费完毕需要等待很长时间.就需要快速清理kafka队列 清理方式把 这kafak manager + zookeeper + kafka 这些应用情况 ...
- Google Protocol Buffers介绍
简要介绍和总结protobuf的一些关键点,从我之前做的ppt里摘录而成,希望能节省protobuf初学者的入门时间.这是一个简单的Demo. Protobuf 简介 Protobuf全称Google ...
- centos 6.5 上安装使用upsource
这里应领导的要求,在服务器上装了upsource Upsource的安装和与JetBrains工具的集成 JetBrains的工具一直都是我开发和学习的好帮手,本人工作主要是iOS开发,使用的是App ...
- Spring 注解@Component,@Service,@Controller,@Repository
Spring 注解@Component,@Service,@Controller,@RepositorySpring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释, ...
- Fluent UDF【3】:环境配置
windows操作系统下UDF的编译需要借助Visual Studio中的C编译器.因此若要想编译UDF,则必须事先配置好编译环境. Visual Studio Visual Stuido(后面简称V ...
- How do I learn mathematics for machine learning?
https://www.quora.com/How-do-I-learn-mathematics-for-machine-learning How do I learn mathematics f ...