让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
来源:互联网 发布:unity3d animation 编辑:程序博客网 时间:2024/05/30 04:55
前言
OpenWrt的最新kernel(3.14.28)已经能够支持32M SPI Flash的读写以及擦除操作.然而,可能是系统考虑不周,亦或是MT7620系统的BUG,在配置了W25Q256的MT7620开发板系统上,无法soft reset!经过查阅相关资料,发现,MT7620默认支持24bit(3byte)的spi地址模式,而要支持32M以上的spi flash,则必须切换到32bit(4byte)地址模式.在soft reset的时候,spi停留在了32bit模式,没有切换回默认的24bit模式,导致reset后,MT7620在默认的24bit模式,无法和32bit模式的spi通讯,系统死机.那么问题来了:如何在soft reset时刻,让spi flash切换回24bit模式呢?本文通过设备驱动中的一个shutdown方法来解决这个问题.
背景知识
在linux源代码kernel目录下,有一个reboot.c文件,里面暴露了一个register_reboot_notifier方法,可以让kernel中的代码有机会获得reboot的通知,当我们继续分析reboot.c的代码时,会发现更有意思的东西:
在kernel_restart中,又调用了kernel_restart_prepare方法:device_shutdown在drivers/base/core.c中实现:通过阅读代码,我们不难发现,在device_shutdown中,枚举了设备的shutdown方法,如果存在该方法,则会调用之.于是,32M spi flash的reset方法喷薄而出.
解决办法
转到drivers/mtd/devices/m25p80.c
修改如下代码:
总结
通过注册设备的shutdown方法,让我们有机会在系统重启的时刻,做一些deinit的操作.通过此种方法来复位spi flash,优雅而简洁.
阅读全文
0 0
- 让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
- 让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
- 让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
- linux 支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
- 让ambarella s2l 支持32M SPI Flash(W25Q256)
- MT7621完美支持32M SPI Flash(W25Q256) 修复 soft reset fail
- MT7620挂载多片SPI Flash方法
- 使能MT7620的第二个SPI接口(cs1)——兼谈pinmux与pinctrl驱动
- 让sama5d3_xplained支持从spi nor flash启动文件系统
- mt7620 spi驱动的dts文件修改产生spidev32766.1
- spi flash 驱动
- spi flash控制驱动
- SPI FLASH 驱动
- SPI Flash驱动目录
- spi nor flash驱动
- spi flash驱动
- SPI设备的驱动
- SPI设备的驱动
- Python 的帮助--help、dir、type
- C++中的构造函数
- CAD版本转换怎么做
- Perm
- 常用效果的实现
- 让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
- oj提交结果整理
- 云栖大会所感所想
- BaseActivity封装
- python socket编程详细介绍
- 解决谷歌浏览器文件上传fakepath问题
- 算法爱好者——从数组找数字(网易2017校园招聘) ? 待解决
- ros安装-Ubuntu14.04
- 第一章 概述