Re: [U-Boot] [PATCH] Add support for initializing MMC
On Sat, 2018-12-22 at 13:51 -0700, Simon Glass wrote: > Hi Tien, > > On Fri, 21 Dec 2018 at 10:50, Chee, Tien Fong om> wrote: > > > > > > On Fri, 2018-12-21 at 10:16 -0700, Simon Glass wrote: > > > > > > Hi, > > > > > > On Fri, 21 Dec 2018 at 01:25, Chee, Tien Fong > > el.c > > > om> wrote: > > > > > > > > > > > > > > > > On Fri, 2018-12-14 at 14:53 +0800, tien.fong.c...@intel.com > > > > wrote: > > > > > > > > > > > > > > > From: Tien Fong Chee > > > > > > > > > > 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 > > > > > --- > > > > > drivers/misc/fs_loader.c | 31 > > > > > +++ > > > > > 1 files changed, 31 insertions(+), 0 deletions(-) > > > > > > > > > Any comment for this patch? > > > This should not be needed with CONFIG_DM_MMC enabled as it should > > > be > > > enough to probe the mmc device. Is that right? > > No, CONFIG_DM_MMC is required, otherwise compiler would tell you > > error. > > This whole mechanism is always developed in DM context. > > What's your concern? You want me to add CONFIG_DM_MMC or replace > > with > > CONFIG_MMC? or You want to improve the document? > Well, mmc_blk_probe() calls mmc_init() on the device. So instead of > the code you have, would it be possible to probe the blk device? You > can use device_find_first_child() for that. Perhaps write a function > in blk.h which probes the first block device for a parent? Yeah, sure. Let me find out more info. > > Regards, > Simon ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] Add support for initializing MMC
Hi Tien, On Fri, 21 Dec 2018 at 10:50, Chee, Tien Fong wrote: > > On Fri, 2018-12-21 at 10:16 -0700, Simon Glass wrote: > > Hi, > > > > On Fri, 21 Dec 2018 at 01:25, Chee, Tien Fong > om> wrote: > > > > > > > > > On Fri, 2018-12-14 at 14:53 +0800, tien.fong.c...@intel.com wrote: > > > > > > > > From: Tien Fong Chee > > > > > > > > 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 > > > > --- > > > > drivers/misc/fs_loader.c | 31 +++ > > > > 1 files changed, 31 insertions(+), 0 deletions(-) > > > > > > > Any comment for this patch? > > This should not be needed with CONFIG_DM_MMC enabled as it should be > > enough to probe the mmc device. Is that right? > No, CONFIG_DM_MMC is required, otherwise compiler would tell you error. > This whole mechanism is always developed in DM context. > What's your concern? You want me to add CONFIG_DM_MMC or replace with > CONFIG_MMC? or You want to improve the document? Well, mmc_blk_probe() calls mmc_init() on the device. So instead of the code you have, would it be possible to probe the blk device? You can use device_find_first_child() for that. Perhaps write a function in blk.h which probes the first block device for a parent? Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] Add support for initializing MMC
On Fri, 2018-12-21 at 10:16 -0700, Simon Glass wrote: > Hi, > > On Fri, 21 Dec 2018 at 01:25, Chee, Tien Fong om> wrote: > > > > > > On Fri, 2018-12-14 at 14:53 +0800, tien.fong.c...@intel.com wrote: > > > > > > From: Tien Fong Chee > > > > > > 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 > > > --- > > > drivers/misc/fs_loader.c | 31 +++ > > > 1 files changed, 31 insertions(+), 0 deletions(-) > > > > > Any comment for this patch? > This should not be needed with CONFIG_DM_MMC enabled as it should be > enough to probe the mmc device. Is that right? No, CONFIG_DM_MMC is required, otherwise compiler would tell you error. This whole mechanism is always developed in DM context. What's your concern? You want me to add CONFIG_DM_MMC or replace with CONFIG_MMC? or You want to improve the document? > > Regards, > Simon > > > > > > > > > > > diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c > > > index 57a14a3..744fa46 100644 > > > --- a/drivers/misc/fs_loader.c > > > +++ b/drivers/misc/fs_loader.c > > > @@ -12,6 +12,7 @@ > > > #include > > > #include > > > #include > > > +#include > > > #include > > > > > > DECLARE_GLOBAL_DATA_PTR; > > > @@ -252,6 +253,36 @@ static int > > > fs_loader_ofdata_to_platdata(struct > > > udevice *dev) > > > > > > static int fs_loader_probe(struct udevice *dev) > > > { > > > +#ifdef CONFIG_MMC > > > + int ret; > > > + struct device_platdata *plat = dev->platdata; > > > + > > > + 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, _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; > > > }; > > > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] Add support for initializing MMC
Hi, On Fri, 21 Dec 2018 at 01:25, Chee, Tien Fong wrote: > > On Fri, 2018-12-14 at 14:53 +0800, tien.fong.c...@intel.com wrote: > > From: Tien Fong Chee > > > > 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 > > --- > > drivers/misc/fs_loader.c | 31 +++ > > 1 files changed, 31 insertions(+), 0 deletions(-) > > > Any comment for this patch? This should not be needed with CONFIG_DM_MMC enabled as it should be enough to probe the mmc device. Is that right? Regards, Simon > > > diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c > > index 57a14a3..744fa46 100644 > > --- a/drivers/misc/fs_loader.c > > +++ b/drivers/misc/fs_loader.c > > @@ -12,6 +12,7 @@ > > #include > > #include > > #include > > +#include > > #include > > > > DECLARE_GLOBAL_DATA_PTR; > > @@ -252,6 +253,36 @@ static int fs_loader_ofdata_to_platdata(struct > > udevice *dev) > > > > static int fs_loader_probe(struct udevice *dev) > > { > > +#ifdef CONFIG_MMC > > + int ret; > > + struct device_platdata *plat = dev->platdata; > > + > > + 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, _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; > > }; > > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] Add support for initializing MMC
On Fri, 2018-12-14 at 14:53 +0800, tien.fong.c...@intel.com wrote: > From: Tien Fong Chee > > 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 > --- > drivers/misc/fs_loader.c | 31 +++ > 1 files changed, 31 insertions(+), 0 deletions(-) > Any comment for this patch? > diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c > index 57a14a3..744fa46 100644 > --- a/drivers/misc/fs_loader.c > +++ b/drivers/misc/fs_loader.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > > DECLARE_GLOBAL_DATA_PTR; > @@ -252,6 +253,36 @@ static int fs_loader_ofdata_to_platdata(struct > udevice *dev) > > static int fs_loader_probe(struct udevice *dev) > { > +#ifdef CONFIG_MMC > + int ret; > + struct device_platdata *plat = dev->platdata; > + > + 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, _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; > }; > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] Add support for initializing MMC
On Thu, 2018-12-13 at 23:32 +0800, tien.fong.c...@intel.com wrote: > From: Tien Fong Chee > > 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 > --- > drivers/misc/fs_loader.c | 33 - > 1 files changed, 32 insertions(+), 1 deletions(-) > > diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c > index 57a14a3..675f625 100644 > --- a/drivers/misc/fs_loader.c > +++ b/drivers/misc/fs_loader.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > > 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) > } > } > I just realized this portion of codes should be moved to polling function. I will send out another patch tomorrow. > +#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, _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; > } > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot