Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
77913d44
Unverified
Commit
77913d44
authored
6 years ago
by
Soby Mathew
Committed by
GitHub
6 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1858 from thloh85-intel/dwmmc_fixes
drivers: synopsys: Fix synopsys MMC driver
parents
eb9da9e1
3d0f30bb
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
drivers/synopsys/emmc/dw_mmc.c
+28
-1
drivers/synopsys/emmc/dw_mmc.c
include/drivers/synopsys/dw_mmc.h
+1
-0
include/drivers/synopsys/dw_mmc.h
with
29 additions
and
1 deletion
+29
-1
drivers/synopsys/emmc/dw_mmc.c
View file @
77913d44
...
...
@@ -243,6 +243,11 @@ static int dw_send_cmd(struct mmc_cmd *cmd)
op
=
CMD_WAIT_PRVDATA_COMPLETE
;
break
;
case
8
:
if
(
dw_params
.
mmc_dev_type
==
MMC_IS_EMMC
)
op
=
CMD_DATA_TRANS_EXPECT
|
CMD_WAIT_PRVDATA_COMPLETE
;
else
op
=
CMD_WAIT_PRVDATA_COMPLETE
;
break
;
case
17
:
case
18
:
op
=
CMD_DATA_TRANS_EXPECT
|
CMD_WAIT_PRVDATA_COMPLETE
;
...
...
@@ -252,6 +257,9 @@ static int dw_send_cmd(struct mmc_cmd *cmd)
op
=
CMD_WRITE
|
CMD_DATA_TRANS_EXPECT
|
CMD_WAIT_PRVDATA_COMPLETE
;
break
;
case
51
:
op
=
CMD_DATA_TRANS_EXPECT
;
break
;
default:
op
=
0
;
break
;
...
...
@@ -337,7 +345,6 @@ static int dw_prepare(int lba, uintptr_t buf, size_t size)
uintptr_t
base
;
assert
(((
buf
&
DWMMC_ADDRESS_MASK
)
==
0
)
&&
((
size
%
MMC_BLOCK_SIZE
)
==
0
)
&&
(
dw_params
.
desc_size
>
0
)
&&
((
dw_params
.
reg_base
&
MMC_BLOCK_MASK
)
==
0
)
&&
((
dw_params
.
desc_base
&
MMC_BLOCK_MASK
)
==
0
)
&&
...
...
@@ -352,6 +359,12 @@ static int dw_prepare(int lba, uintptr_t buf, size_t size)
base
=
dw_params
.
reg_base
;
desc
=
(
struct
dw_idmac_desc
*
)
dw_params
.
desc_base
;
mmio_write_32
(
base
+
DWMMC_BYTCNT
,
size
);
if
(
size
<
MMC_BLOCK_SIZE
)
mmio_write_32
(
base
+
DWMMC_BLKSIZ
,
size
);
else
mmio_write_32
(
base
+
DWMMC_BLKSIZ
,
MMC_BLOCK_SIZE
);
mmio_write_32
(
base
+
DWMMC_RINTSTS
,
~
0
);
for
(
i
=
0
;
i
<
desc_cnt
;
i
++
)
{
desc
[
i
].
des0
=
IDMAC_DES0_OWN
|
IDMAC_DES0_CH
|
IDMAC_DES0_DIC
;
...
...
@@ -375,11 +388,22 @@ static int dw_prepare(int lba, uintptr_t buf, size_t size)
flush_dcache_range
(
dw_params
.
desc_base
,
desc_cnt
*
DWMMC_DMA_MAX_BUFFER_SIZE
);
return
0
;
}
static
int
dw_read
(
int
lba
,
uintptr_t
buf
,
size_t
size
)
{
uint32_t
data
=
0
;
int
timeout
=
TIMEOUT
;
do
{
data
=
mmio_read_32
(
dw_params
.
reg_base
+
DWMMC_RINTSTS
);
udelay
(
50
);
}
while
(
!
(
data
&
INT_DTO
)
&&
timeout
--
>
0
);
inv_dcache_range
(
buf
,
size
);
return
0
;
}
...
...
@@ -401,6 +425,9 @@ void dw_mmc_init(dw_mmc_params_t *params, struct mmc_device_info *info)
(
params
->
bus_width
==
MMC_BUS_WIDTH_8
)));
memcpy
(
&
dw_params
,
params
,
sizeof
(
dw_mmc_params_t
));
mmio_write_32
(
dw_params
.
reg_base
+
DWMMC_FIFOTH
,
0x103ff
);
mmc_init
(
&
dw_mmc_ops
,
params
->
clk_rate
,
params
->
bus_width
,
params
->
flags
,
info
);
dw_params
.
mmc_dev_type
=
info
->
mmc_dev_type
;
}
This diff is collapsed.
Click to expand it.
include/drivers/synopsys/dw_mmc.h
View file @
77913d44
...
...
@@ -16,6 +16,7 @@ typedef struct dw_mmc_params {
int
clk_rate
;
int
bus_width
;
unsigned
int
flags
;
enum
mmc_device_type
mmc_dev_type
;
}
dw_mmc_params_t
;
void
dw_mmc_init
(
dw_mmc_params_t
*
params
,
struct
mmc_device_info
*
info
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help