Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
R
reform-boundary-uboot
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jack Humbert
reform-boundary-uboot
Commits
a7e2c6f6
Commit
a7e2c6f6
authored
9 years ago
by
Tom Rini
Browse files
Options
Downloads
Plain Diff
Merge branch 'master' of
git://git.denx.de/u-boot-samsung
parents
53fd4b8c
2308ea7c
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
drivers/mmc/s5p_sdhci.c
+30
-20
30 additions, 20 deletions
drivers/mmc/s5p_sdhci.c
include/configs/odroid.h
+12
-4
12 additions, 4 deletions
include/configs/odroid.h
with
42 additions
and
24 deletions
drivers/mmc/s5p_sdhci.c
+
30
−
20
View file @
a7e2c6f6
...
@@ -84,9 +84,9 @@ static int s5p_sdhci_core_init(struct sdhci_host *host)
...
@@ -84,9 +84,9 @@ static int s5p_sdhci_core_init(struct sdhci_host *host)
int
s5p_sdhci_init
(
u32
regbase
,
int
index
,
int
bus_width
)
int
s5p_sdhci_init
(
u32
regbase
,
int
index
,
int
bus_width
)
{
{
struct
sdhci_host
*
host
=
m
alloc
(
sizeof
(
struct
sdhci_host
));
struct
sdhci_host
*
host
=
c
alloc
(
1
,
sizeof
(
struct
sdhci_host
));
if
(
!
host
)
{
if
(
!
host
)
{
printf
(
"sdhci__host
m
alloc fail!
\n
"
);
printf
(
"sdhci__host alloc
ation
fail!
\n
"
);
return
1
;
return
1
;
}
}
host
->
ioaddr
=
(
void
*
)
regbase
;
host
->
ioaddr
=
(
void
*
)
regbase
;
...
@@ -101,29 +101,31 @@ struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS];
...
@@ -101,29 +101,31 @@ struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS];
static
int
do_sdhci_init
(
struct
sdhci_host
*
host
)
static
int
do_sdhci_init
(
struct
sdhci_host
*
host
)
{
{
int
dev_id
,
flag
;
int
dev_id
,
flag
,
ret
;
int
err
=
0
;
flag
=
host
->
bus_width
==
8
?
PINMUX_FLAG_8BIT_MODE
:
PINMUX_FLAG_NONE
;
flag
=
host
->
bus_width
==
8
?
PINMUX_FLAG_8BIT_MODE
:
PINMUX_FLAG_NONE
;
dev_id
=
host
->
index
+
PERIPH_ID_SDMMC0
;
dev_id
=
host
->
index
+
PERIPH_ID_SDMMC0
;
if
(
dm_gpio_is_valid
(
&
host
->
pwr_gpio
))
{
if
(
dm_gpio_is_valid
(
&
host
->
pwr_gpio
))
{
dm_gpio_set_value
(
&
host
->
pwr_gpio
,
1
);
dm_gpio_set_value
(
&
host
->
pwr_gpio
,
1
);
err
=
exynos_pinmux_config
(
dev_id
,
flag
);
ret
=
exynos_pinmux_config
(
dev_id
,
flag
);
if
(
err
)
{
if
(
ret
)
{
debug
(
"MMC not configured
\n
"
);
debug
(
"MMC not configured
\n
"
);
return
err
;
return
ret
;
}
}
}
}
if
(
dm_gpio_is_valid
(
&
host
->
cd_gpio
))
{
if
(
dm_gpio_is_valid
(
&
host
->
cd_gpio
))
{
if
(
dm_gpio_get_value
(
&
host
->
cd_gpio
))
ret
=
dm_gpio_get_value
(
&
host
->
cd_gpio
);
if
(
ret
)
{
debug
(
"no SD card detected (%d)
\n
"
,
ret
);
return
-
ENODEV
;
return
-
ENODEV
;
}
err
=
exynos_pinmux_config
(
dev_id
,
flag
);
ret
=
exynos_pinmux_config
(
dev_id
,
flag
);
if
(
err
)
{
if
(
ret
)
{
printf
(
"external SD not configured
\n
"
);
printf
(
"external SD not configured
\n
"
);
return
err
;
return
ret
;
}
}
}
}
...
@@ -170,7 +172,8 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host)
...
@@ -170,7 +172,8 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host)
static
int
process_nodes
(
const
void
*
blob
,
int
node_list
[],
int
count
)
static
int
process_nodes
(
const
void
*
blob
,
int
node_list
[],
int
count
)
{
{
struct
sdhci_host
*
host
;
struct
sdhci_host
*
host
;
int
i
,
node
;
int
i
,
node
,
ret
;
int
failed
=
0
;
debug
(
"%s: count = %d
\n
"
,
__func__
,
count
);
debug
(
"%s: count = %d
\n
"
,
__func__
,
count
);
...
@@ -182,13 +185,22 @@ static int process_nodes(const void *blob, int node_list[], int count)
...
@@ -182,13 +185,22 @@ static int process_nodes(const void *blob, int node_list[], int count)
host
=
&
sdhci_host
[
i
];
host
=
&
sdhci_host
[
i
];
if
(
sdhci_get_config
(
blob
,
node
,
host
))
{
ret
=
sdhci_get_config
(
blob
,
node
,
host
);
printf
(
"%s: failed to decode dev %d
\n
"
,
__func__
,
i
);
if
(
ret
)
{
return
-
1
;
printf
(
"%s: failed to decode dev %d (%d)
\n
"
,
__func__
,
i
,
ret
);
failed
++
;
continue
;
}
ret
=
do_sdhci_init
(
host
);
if
(
ret
)
{
printf
(
"%s: failed to initialize dev %d (%d)
\n
"
,
__func__
,
i
,
ret
);
failed
++
;
}
}
do_sdhci_init
(
host
);
}
}
return
0
;
/* we only consider it an error when all nodes fail */
return
(
failed
==
count
?
-
1
:
0
);
}
}
int
exynos_mmc_init
(
const
void
*
blob
)
int
exynos_mmc_init
(
const
void
*
blob
)
...
@@ -200,8 +212,6 @@ int exynos_mmc_init(const void *blob)
...
@@ -200,8 +212,6 @@ int exynos_mmc_init(const void *blob)
COMPAT_SAMSUNG_EXYNOS_MMC
,
node_list
,
COMPAT_SAMSUNG_EXYNOS_MMC
,
node_list
,
SDHCI_MAX_HOSTS
);
SDHCI_MAX_HOSTS
);
process_nodes
(
blob
,
node_list
,
count
);
return
process_nodes
(
blob
,
node_list
,
count
);
return
0
;
}
}
#endif
#endif
This diff is collapsed.
Click to expand it.
include/configs/odroid.h
+
12
−
4
View file @
a7e2c6f6
...
@@ -108,11 +108,13 @@
...
@@ -108,11 +108,13 @@
* 2. ROOT: -
* 2. ROOT: -
*/
*/
#define CONFIG_EXTRA_ENV_SETTINGS \
#define CONFIG_EXTRA_ENV_SETTINGS \
"loadkernel=fatload mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} " \
"boot.scr\0" \
"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
"${kernelname}\0" \
"${kernelname}\0" \
"loadinitrd=
fat
load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
"${initrdname}\0" \
"${initrdname}\0" \
"loaddtb=
fat
load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
"loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
"${fdtfile}\0" \
"${fdtfile}\0" \
"check_ramdisk=" \
"check_ramdisk=" \
"if run loadinitrd; then " \
"if run loadinitrd; then " \
...
@@ -129,6 +131,9 @@
...
@@ -129,6 +131,9 @@
"kernel_args=" \
"kernel_args=" \
"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
" rootwait ${console} ${opts}\0" \
" rootwait ${console} ${opts}\0" \
"boot_script=" \
"run loadbootscript;" \
"source ${scriptaddr}\0" \
"boot_fit=" \
"boot_fit=" \
"setenv kerneladdr 0x42000000;" \
"setenv kerneladdr 0x42000000;" \
"setenv kernelname Image.itb;" \
"setenv kernelname Image.itb;" \
...
@@ -152,7 +157,9 @@
...
@@ -152,7 +157,9 @@
"run kernel_args;" \
"run kernel_args;" \
"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
"autoboot=" \
"autoboot=" \
"if test -e mmc 0 Image.itb; then; " \
"if test -e mmc 0 boot.scr; then; " \
"run boot_script; " \
"elif test -e mmc 0 Image.itb; then; " \
"run boot_fit;" \
"run boot_fit;" \
"elif test -e mmc 0 zImage; then; " \
"elif test -e mmc 0 zImage; then; " \
"run boot_zimg;" \
"run boot_zimg;" \
...
@@ -171,6 +178,7 @@
...
@@ -171,6 +178,7 @@
"consoleoff=set console console=ram; save; reset\0" \
"consoleoff=set console console=ram; save; reset\0" \
"initrdname=uInitrd\0" \
"initrdname=uInitrd\0" \
"initrdaddr=42000000\0" \
"initrdaddr=42000000\0" \
"scriptaddr=0x42000000\0" \
"fdtaddr=40800000\0"
"fdtaddr=40800000\0"
/* I2C */
/* I2C */
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment