Add support for initializing MMC
PATCH 1/1 Add support for initializing MMC
From: Tien Fong Chee <[email protected]>
Firmware loader would encounter problem if the MMC is accessed before initializing it. This patch would adding the support of initializing MMC before the MMC is accessed by firmware loader.
--- drivers/misc/fs_loader.c | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-)
drivers/misc/fs_loader.c +32 -1
@@ -12,6 +12,7 @@#include <linux/string.h> #include <mapmem.h> #include <malloc.h> +#include <mmc.h> #include <spl.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -221,6 +222,7 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev) {const char *fs_loader_path;u32 phandlepart[2 ]; +struct device_platdata *plat =NULL ; fs_loader_path =ofnode_get_chosen_prop ("firmware-loader" );
@@ -229,7 +231,6 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev) fs_loader_node =ofnode_path (fs_loader_path); if (ofnode_valid(fs_loader_node)) { - struct device_platdata *plat; plat = dev->platdata; if (!ofnode_read_u32_array(fs_loader_node,
@@ -247,6 +248,36 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev) } } +#ifdef CONFIG_MMC +int ret; + + ret =mmc_initialize (NULL ); +if (ret) { +debug ("MMC: could not initialize mmc. error: %d\n" , ret); + +return ret; + } + +if (plat->phandlepart.phandle) { +ofnode node =ofnode_get_by_phandle (plat->phandlepart.phandle); + +struct udevice *mmc_dev =NULL ; + + ret =device_get_global_by_ofnode (node, &mmc_dev); +if (!ret) { +struct mmc *mmc =mmc_get_mmc_dev (mmc_dev); + + ret =mmc_init (mmc); +if (ret) { +debug ("MMC: mmc init failed with error: %d\n" , + ret); + +return ret; + } + } + } +#endif +return 0 ; }
Signature · 1 line
1.7.7.4
Chee
PATCH 1/1 Add support for initializing MMC
Quoted 45 lines · tien.fong.chee at intel.com
From: Tien Fong Chee <[email protected]>
Firmware loader would encounter problem if the MMC is accessed before initializing it. This patch would adding the support of initializing MMC before the MMC is accessed by firmware loader.
Signed-off-by Tien Fong Chee <[email protected]>---
drivers/misc/fs_loader.c | 33 ++++++++++++++++++++++++++++++++-1 files changed, 32 insertions(+), 1 deletions(-)drivers/misc/fs_loader.c +1
-0@@ -12,6 +12,7 @@ #include <linux/string.h> #include <mapmem.h> #include <malloc.h> +#include <mmc.h> #include <spl.h>
DECLARE_GLOBAL_DATA_PTR;drivers/misc/fs_loader.c +1
-0@@ -221,6 +222,7 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev) { const char *fs_loader_path; u32 phandlepart[2]; +struct device_platdata *plat =NULL ;
fs_loader_path=ofnode_get_chosen_prop("firmware-loader");drivers/misc/fs_loader.c +0
-0@@ -229,7 +231,6 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev)
fs_loader_node=ofnode_path(fs_loader_path); if (ofnode_valid(fs_loader_node)) {drivers/misc/fs_loader.c +0
-1-struct device_platdata *plat;plat =
dev->platdata;
if (!ofnode_read_u32_array(fs_loader_node,drivers/misc/fs_loader.c +0
-0@@ -247,6 +248,36 @@ static int fs_loader_ofdata_to_platdata(struct udevice *dev) } }
Quoted 1 line
I just realized this portion of codes should be moved to polling function. I will send out another patch tomorrow.
Quoted 36 lines
drivers/misc/fs_loader.c +6
-0+#ifdef CONFIG_MMC +int ret; + + ret =mmc_initialize (NULL ); +if (ret) { + debug("MMC: could not initialize mmc. error: %d\n",ret);
drivers/misc/fs_loader.c +6
-0+ +return ret; + } + +if (plat->phandlepart.phandle) { + ofnode node = ofnode_get_by_phandle(plat-Quoted 1 line
phandlepart.phandle);
drivers/misc/fs_loader.c +10
-0+ +struct udevice *mmc_dev =NULL ; + + ret =device_get_global_by_ofnode (node, &mmc_dev); +if (!ret) { +struct mmc *mmc =mmc_get_mmc_dev (mmc_dev); + + ret =mmc_init (mmc); +if (ret) { + debug("MMC: mmc init failed witherror: %d\n",
drivers/misc/fs_loader.c +8
-0+ ret); + + return ret; + } + } + } +#endif +return 0;
}