搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
深入理解iOS GPU加速框架Metal及MPS_mps framework
2
View的绘制-draw流程详解_view的ondraw如何同步调用
3
华为公司战略规划和落地方法之五看三定工具解析【PPT图片】(内含超级福利)_华为战略规划和落地方法
4
使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别_本地图片找出闭眼的接口
5
数据结构:堆_非完全二叉树
6
docker部署finebi 帆软_finereport docker
7
linux下挂载共享目录,linux mount挂载共享目录详解
8
薪资22K的运维面试:小米公司面试笔记_小米运维工程师面试
9
使用gazebo对scara机械臂进行仿真_gazebo机械臂仿真
10
CCIG 2024:大模型技术及其前沿应用论坛深度解析_大模型应用论坛
当前位置:
article
> 正文
emmc 通过reset controller 来reset emmc host_emmc rstn复位引脚悬空
作者:很楠不爱3 | 2024-06-13 12:02:47
赞
踩
emmc rstn复位引脚悬空
在driver/reset/hisilicon/Makefile
obj-$(CONFIG_COMMON_RESET_HI6220) += hi6220_reset.o
可见要使用reset controller 必须定义CONFIG_COMMON_RESET_HI6220
在Hi6220_resetc中
static struct platform_driver hi6220_reset_driver = {
.probe = hi6220_reset_probe,
.driver = {
.name = "reset-hi6220",
.of_match_table = hi6220_reset_match,
},
};
static int __init hi6220_reset_init(void)
{
return platform_driver_register(&hi6220_reset_driver);
}
postcore_initcall(hi6220_reset_init);
定义了一个platform_driver,当其of_match_table 和dts中匹配时就调用hi6220_reset_probe
static const struct reset_control_ops hi6220_peripheral_reset_ops = {
.assert = hi6220_peripheral_assert,
.deassert = hi6220_peripheral_deassert,
};
static int hi6220_reset_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
struct device *dev = &pdev->dev;
enum hi6220_reset_ctrl_type type;
struct hi6220_reset_data *data;
struct regmap *regmap;
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
type = (enum hi6220_reset_ctrl_type)of_device_get_match_data(dev);
regmap = syscon_node_to_regmap(np);
if (IS_ERR(regmap)) {
dev_err(dev, "failed to get reset controller regmap\n");
return PTR_ERR(regmap);
}
data->regmap = regmap;
data->rc_dev.of_node = np;
if (type == MEDIA) {
data->rc_dev.ops = &hi6220_media_reset_ops;
data->rc_dev.nr_resets = MEDIA_MAX_INDEX;
} else {
data->rc_dev.ops = &hi6220_peripheral_reset_ops;
data->rc_dev.nr_resets = PERIPH_MAX_INDEX;
}
return reset_controller_register(&data->rc_dev);
}
在hi6220_reset_probe 中通过reset_controller_register注册了一个reset controller,reset controller最重要的就是hi6220_peripheral_reset_ops的assert 和 deassert 函数。
这样在dw_mci_parse_dt函数中就会通过下面的code 找到这个reset controller
/* find reset controller when exist */
pdata->rstc = devm_reset_control_get_optional(dev, "reset");
if (IS_ERR(pdata->rstc)) {
if (PTR_ERR(pdata->rstc) == -EPROBE_DEFER)
return ERR_PTR(-EPROBE_DEFER);
}
最终在dw_mci_probe中通过下面的code来调用reset controller,来reset mmc host
if (!IS_ERR(host->pdata->rstc)) {
reset_control_assert(host->pdata->rstc);
usleep_range(10, 50);
reset_control_deassert(host->pdata->rstc);
}
这里以reset_control_assert 为例,很容易看出最终调用ops->assert,而这样的ops就是我们在hi6220_reset.c 中定义的hi6220_peripheral_reset_ops
int reset_control_assert(struct reset_control *rstc)
{
if (WARN_ON(IS_ERR_OR_NULL(rstc)))
return -EINVAL;
if (!rstc->rcdev->ops->assert)
return -ENOTSUPP;
if (rstc->shared) {
if (WARN_ON(atomic_read(&rstc->deassert_count) == 0))
return -EINVAL;
if (atomic_dec_return(&rstc->deassert_count) != 0)
return 0;
}
return rstc->rcdev->ops->assert(rstc->rcdev, rstc->id);
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/712627
推荐阅读
article
androidstudio
gradle
构建报错解决方法_
unknown
host
'c'. you...
Could not install Gradle distribution from 'https://services...
赞
踩
article
解决
kali
虚拟机连接
git
hub问题,
git
/‘:
Recv
failure
: Connectio...
解决虚拟机在
git
hub上克隆文件出现连接失败的情况,将http连接方式改成ssh克隆_
kali
无法访问
git
hubka...
赞
踩
article
eclipse
错误之Git连不上_
ssl
host
could
not be
verified
(s...
2.可能确实需要设置在git Configuration 里面设置
http
.
ssl
Verify=false,还有可能是e...
赞
踩
article
im_
elec
t
ron
_sdk升级: Hos
t
name/IP
does
no
t
ma
t
ch
cer
t
...
本文主要记录im_
elec
t
ron
_sdk升级(由2.0.9升级至3.0.22版本),当运行yarn ins
t
all时报...
赞
踩
article
解决:
requests
.
exceptions
.
ProxyError
:HTTPSConnectionP...
背景在使用之前的代码时,报错:
requests
.
exceptions
.
ProxyError
: HTTPSConnecti...
赞
踩
article
git
reset
怎么
还原_
git
reset
后如何
恢复
...
“新来的实习生把自己做了一个月的功能给覆盖了,向我求救,要不要帮他?——编程三分钟”第 8 篇找回弄丢的代码新来的实习生...
赞
踩
article
Git
reset
之后
怎么恢复
到
reset
之前的
节点
_
git
reset
之后
...
Git
reset
之后
怎么恢复
到
reset
之前的
节点
首先定位
到
工程目录\ .
git
\logs\refs\hea...
赞
踩
article
git
reset
--
hard
操作后的数据恢复_
git
reset
--
hard
head
后 ...
https://www.cnblogs.com/dongcanliang/p/11162235.html在进行正文之前先...
赞
踩
article
git
不小心操作
reset
current
branch
to
here
后,怎么还原_
reset
...
通过
git
log -g命令来找到需要恢复
的
信息对应
的
commitid,可以通过提交
的
时间和日期来辨别,找到执行rese...
赞
踩
article
执行
git
reset
--
hard
后文件的
恢复
_
git
reset
--
hard
恢复
...
恢复
git
reset
--
hard
被误删的文件_
git
reset
--
hard
恢复
git
reset
--
har...
赞
踩
article
克隆GIT工程出错:
RPC
failed
;
curl
18
HTTP
/2
stream
5 was r...
在互联网克隆下载git工程遇到
RPC
failed
报错,原因是当通过
HTTP
协议推送的文件较大时,会因为超过默认缓冲区大...
赞
踩
article
RPC
failed
;
curl
18
HTTP
/2
stream
5 was reset 5974...
如果 git 项目太大,拉代码的时候可能会出现这个错误。_5790
bytes
of
body
are
still
ex...
赞
踩
article
git
拉代码时候 error
:
RPC
failed
;
curl
5
6 OpenSSL SSL_re...
当我执行
git
clone https
:
//XXX.
git
出现这个报错首先限制先执行
git
config http.s...
赞
踩
article
ssh
使用
问题汇总_
ssh
reset
by
peer
...
本文旨在为广大SSH用户提供一个全面而实用的
使用
问题汇总。我们将深入探讨SSH连接失败、密钥管理、权限设置等常见难题,并...
赞
踩
article
IC -
reset
子系统
_
ic
reset
ng
...
【代码】IC -
reset
子系统
。_
ic
reset
ng
ic
reset
ng
...
赞
踩
article
【ZYNQ】一图梳理ZynqMP
EMMC
硬件复位_
cap
-
mmc
-
hw
-
reset
...
具体实现办法比较简单,只需要添加一下设备树,然后利用
mmc
_pwrseq_
reset
去实现IO脚的上下拉操作,但始终绕不...
赞
踩
article
eMMC
---简介
、
分区管理
、
总
线
协议
和工作模式_
emmc
1
线
...
一
、
eMMC
简介
eMMC
是embedded MultiMediaCard的简称。MultiMediaCard,即MM...
赞
踩
article
Echo
之
emmc
复位
信号
_
emmc
reset
...
emmc
硬件复位
信号
分析_
emmc
reset
emmc
reset
...
赞
踩
article
黑猫
带你学
eMMC
协议第26篇:
eMMC
的
硬件
复位
操作(H/W
reset
)
_
emmc
reset
...
本文依据
eMMC
JEDEC5.1及个人工作经验整理而成,如有错误请留言。文章为个人辛苦整理,付费内容,禁止私自转载。文...
赞
踩
article
linux
网络
reset
,
Linux
reset
framework...
Linux
reset
framework作者:wowo 发布于:2017-9-1 10:46分类:电源管理子系统1. ...
赞
踩
相关标签
android-studio
gradle
github
git
eclipse
electron
im_electron_sdk
python
后端
git reset 怎么还原
rpc
网络协议
ssh
运维
linux
reset
Linux
fpga
emmc
嵌入式硬件
驱动开发
物联网