Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
3c5b742f
K
Kernel
项目概览
openeuler
/
Kernel
大约 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3c5b742f
编写于
12月 20, 2021
作者:
U
Ulf Hansson
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fixes' into next
上级
5479a013
f89b548c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
32 addition
and
1 deletion
+32
-1
drivers/mmc/core/core.c
drivers/mmc/core/core.c
+6
-1
drivers/mmc/core/core.h
drivers/mmc/core/core.h
+1
-0
drivers/mmc/core/host.c
drivers/mmc/core/host.c
+9
-0
drivers/mmc/host/meson-mx-sdhc-mmc.c
drivers/mmc/host/meson-mx-sdhc-mmc.c
+16
-0
未找到文件。
drivers/mmc/core/core.c
浏览文件 @
3c5b742f
...
...
@@ -2264,7 +2264,7 @@ void mmc_start_host(struct mmc_host *host)
_mmc_detect_change
(
host
,
0
,
false
);
}
void
mmc_stop_host
(
struct
mmc_host
*
host
)
void
__
mmc_stop_host
(
struct
mmc_host
*
host
)
{
if
(
host
->
slot
.
cd_irq
>=
0
)
{
mmc_gpio_set_cd_wake
(
host
,
false
);
...
...
@@ -2273,6 +2273,11 @@ void mmc_stop_host(struct mmc_host *host)
host
->
rescan_disable
=
1
;
cancel_delayed_work_sync
(
&
host
->
detect
);
}
void
mmc_stop_host
(
struct
mmc_host
*
host
)
{
__mmc_stop_host
(
host
);
/* clear pm flags now and let card drivers set them as needed */
host
->
pm_flags
=
0
;
...
...
drivers/mmc/core/core.h
浏览文件 @
3c5b742f
...
...
@@ -70,6 +70,7 @@ static inline void mmc_delay(unsigned int ms)
void
mmc_rescan
(
struct
work_struct
*
work
);
void
mmc_start_host
(
struct
mmc_host
*
host
);
void
__mmc_stop_host
(
struct
mmc_host
*
host
);
void
mmc_stop_host
(
struct
mmc_host
*
host
);
void
_mmc_detect_change
(
struct
mmc_host
*
host
,
unsigned
long
delay
,
...
...
drivers/mmc/core/host.c
浏览文件 @
3c5b742f
...
...
@@ -80,9 +80,18 @@ static void mmc_host_classdev_release(struct device *dev)
kfree
(
host
);
}
static
int
mmc_host_classdev_shutdown
(
struct
device
*
dev
)
{
struct
mmc_host
*
host
=
cls_dev_to_mmc_host
(
dev
);
__mmc_stop_host
(
host
);
return
0
;
}
static
struct
class
mmc_host_class
=
{
.
name
=
"mmc_host"
,
.
dev_release
=
mmc_host_classdev_release
,
.
shutdown_pre
=
mmc_host_classdev_shutdown
,
.
pm
=
MMC_HOST_CLASS_DEV_PM_OPS
,
};
...
...
drivers/mmc/host/meson-mx-sdhc-mmc.c
浏览文件 @
3c5b742f
...
...
@@ -135,6 +135,7 @@ static void meson_mx_sdhc_start_cmd(struct mmc_host *mmc,
struct
mmc_command
*
cmd
)
{
struct
meson_mx_sdhc_host
*
host
=
mmc_priv
(
mmc
);
bool
manual_stop
=
false
;
u32
ictl
,
send
;
int
pack_len
;
...
...
@@ -172,12 +173,27 @@ static void meson_mx_sdhc_start_cmd(struct mmc_host *mmc,
else
/* software flush: */
ictl
|=
MESON_SDHC_ICTL_DATA_XFER_OK
;
/*
* Mimic the logic from the vendor driver where (only)
* SD_IO_RW_EXTENDED commands with more than one block set the
* MESON_SDHC_MISC_MANUAL_STOP bit. This fixes the firmware
* download in the brcmfmac driver for a BCM43362/1 card.
* Without this sdio_memcpy_toio() (with a size of 219557
* bytes) times out if MESON_SDHC_MISC_MANUAL_STOP is not set.
*/
manual_stop
=
cmd
->
data
->
blocks
>
1
&&
cmd
->
opcode
==
SD_IO_RW_EXTENDED
;
}
else
{
pack_len
=
0
;
ictl
|=
MESON_SDHC_ICTL_RESP_OK
;
}
regmap_update_bits
(
host
->
regmap
,
MESON_SDHC_MISC
,
MESON_SDHC_MISC_MANUAL_STOP
,
manual_stop
?
MESON_SDHC_MISC_MANUAL_STOP
:
0
);
if
(
cmd
->
opcode
==
MMC_STOP_TRANSMISSION
)
send
|=
MESON_SDHC_SEND_DATA_STOP
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录