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当同一,写输入子系统驱动器的关键问题要解决,但浏 ...
随机推荐
- 具体解释Hibernate中cascade与inverse
学习hibernate的时候对级联关系的概念老是分不清楚,尤其是cascade.inverse傻傻分不清.以下通过样例来简单说明. 准备工作: 首先创建数据库,新建两张表: 教室表classes (字 ...
- Codeforces Round #207 (Div. 1) B. Xenia and Hamming(gcd的运用)
题目链接: B. Xenia and Hamming 题意: 要求找到复制后的两个字符串中不同样的字符 思路: 子问题: 在两串长度是最大公倍数的情况下, 求出一个串在还有一个串中反复字符的个数 CO ...
- stm32调试过程中如何判断是程序问题还是硬件问题?
可以用软件仿真,如果软件仿真时寄存器什么的都正确,而硬件在线仿真时不对,则说明是板子硬件的问题
- css 温故而知新 字体方向 将文字竖着显示
writing-mode: vertical-rl;
- flock防止crontab脚本周期内未执行完重复执行(转)
如果某脚本要运行30分钟,可以在Crontab里把脚本间隔设为至少一小时来避免冲突.而比较糟的情况是可能该脚本在执行周期内没有完成,接着第二个脚本又开始运行了.如何确保只有一个脚本实例运行呢?一个好用 ...
- Python把同一个对象循环赋值给另外一个变量
Python把同一个对象循环赋值给另外一个变量,修改一个对象,其他对象也修改了 >>> row=['_'] * 3 >>> board = [] >>& ...
- 孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!
最近我们试图从Dubbo迁移到Spring Cloud.为此对二者分别进行了性能测试.为了得出数据量不同的情况下的二者的性能表现,我们分别准备了一个25个属性pojo对象和一个50个属性的pojo对象 ...
- Tomcat7环境下面MySQL 56/Oracle数据库连接池的配置
环境: Tomcat7 MySQL56 mysql-connector-java-3.1.10-bin.jar 步骤: 1. 配置context.xml 此文件位于~\tomcat7\conf目录下面 ...
- [Contiki系列论文之2]WSN的自适应通信架构
说明:本系列文章翻译自Contiki之父Adam Dunkels经典论文,版权归原作者全部. Contiki是由Adam Dunkels及其团队开发的系统.研读其论文是对深入理解Contiki系统的最 ...
- 使用JS生成二维码QRCode
这其实很简单,项目中使用插件即可生成,主要有两种方式: 一种是在项目中使用java生成,把图片生成到某个目录,然后在用tomcat或者nginx虚拟一下路径即可访问,这种方式我们不用,因为会在目录中生 ...