[U-Boot,v5,1/8] dm: mmc: use block layer in mmc driver

Message ID 20180810075231.28650-1-yinbo.zhu@nxp.com
State Superseded
Delegated to: York Sun
Headers show
Series
  • [U-Boot,v5,1/8] dm: mmc: use block layer in mmc driver
Related show

Commit Message

Yinbo Zhu Aug. 10, 2018, 7:52 a.m.
At present the MMC subsystem maintains its own list
of MMC devices. This cannot work with driver model
when CONFIG_BLK is enabled, use blk_dread to
replace previous mmc read interface,
use mmc_get_blk_desc to get the mmc device property

Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
---
Change in v5:
		use block layer in mmc driver

 arch/arm/cpu/armv8/fsl-layerscape/ppa.c |    5 ++---
 drivers/mmc/mmc_legacy.c                |   10 +++++-----
 drivers/net/fm/fm.c                     |    2 +-
 drivers/qe/qe.c                         |    2 +-
 4 files changed, 9 insertions(+), 10 deletions(-)

Comments

Y.b. Lu Aug. 10, 2018, 10:53 a.m. | #1
Hi Yinbo,

> -----Original Message-----
> From: Yinbo Zhu [mailto:yinbo.zhu@nxp.com]
> Sent: Friday, August 10, 2018 3:52 PM
> To: Yinbo Zhu <yinbo.zhu@nxp.com>; yorksun@freescale.com;
> u-boot@lists.denx.de
> Cc: Y.b. Lu <yangbo.lu@nxp.com>; Xiaobo Xie <xiaobo.xie@nxp.com>; Andy
> Tang <andy.tang@nxp.com>; Peng Ma <peng.ma@nxp.com>
> Subject: [PATCH v5 1/8] dm: mmc: use block layer in mmc driver
> 
> At present the MMC subsystem maintains its own list of MMC devices. This
> cannot work with driver model when CONFIG_BLK is enabled, use blk_dread to
> replace previous mmc read interface, use mmc_get_blk_desc to get the mmc
> device property
> 
> Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
> ---
> Change in v5:
> 		use block layer in mmc driver
> 
>  arch/arm/cpu/armv8/fsl-layerscape/ppa.c |    5 ++---
>  drivers/mmc/mmc_legacy.c                |   10 +++++-----
>  drivers/net/fm/fm.c                     |    2 +-
>  drivers/qe/qe.c                         |    2 +-
>  4 files changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
> b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
> index a31c4d9..95875d3 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
> @@ -99,7 +99,7 @@ int ppa_init(void)
>  	cnt = DIV_ROUND_UP(fdt_header_len, 512);
>  	debug("%s: MMC read PPA FIT header: dev # %u, block # %u,
> count %u\n",
>  	      __func__, dev, blk, cnt);
> -	ret = mmc->block_dev.block_read(&mmc->block_dev, blk, cnt, fitp);
> +	ret = blk_dread(mmc_get_blk_desc(mmc), blk, cnt, fitp);
>  	if (ret != cnt) {
>  		free(fitp);
>  		printf("MMC/SD read of PPA FIT header at offset 0x%x failed\n", @@
> -149,8 +149,7 @@ int ppa_init(void)
>  	cnt = DIV_ROUND_UP(fw_length, 512);
>  	debug("%s: MMC read PPA FIT image: dev # %u, block # %u, count %u\n",
>  	      __func__, dev, blk, cnt);
> -	ret = mmc->block_dev.block_read(&mmc->block_dev,
> -					blk, cnt, ppa_fit_addr);
> +	ret = blk_dread(mmc_get_blk_desc(mmc), blk, cnt, ppa_fit_addr);
>  	if (ret != cnt) {
>  		free(ppa_fit_addr);
>  		printf("MMC/SD read of PPA FIT header at offset 0x%x failed\n", diff
> --git a/drivers/mmc/mmc_legacy.c b/drivers/mmc/mmc_legacy.c index
> 66a7cda..29d94e9 100644
> --- a/drivers/mmc/mmc_legacy.c
> +++ b/drivers/mmc/mmc_legacy.c

[Y.b. Lu] Please don't apply this change to mmc_legacy.c which is for operation where CONFIG_BLK is never enabled.

> @@ -42,7 +42,7 @@ struct mmc *find_mmc_device(int dev_num)
>  	list_for_each(entry, &mmc_devices) {
>  		m = list_entry(entry, struct mmc, link);
> 
> -		if (m->block_dev.devnum == dev_num)
> +		if (mmc_get_blk_desc(m)->devnum == dev_num)
>  			return m;
>  	}
> 
> @@ -60,7 +60,7 @@ int mmc_get_next_devnum(void)
> 
>  struct blk_desc *mmc_get_blk_desc(struct mmc *mmc)  {
> -	return &mmc->block_dev;
> +	return mmc_get_blk_desc(mmc);
>  }
> 
>  int get_mmc_num(void)
> @@ -113,7 +113,7 @@ void print_mmc_devices(char separator)
>  		else
>  			mmc_type = NULL;
> 
> -		printf("%s: %d", m->cfg->name, m->block_dev.devnum);
> +		printf("%s: %d", m->cfg->name, mmc_get_blk_desc(m)->devnum);
>  		if (mmc_type)
>  			printf(" (%s)", mmc_type);
> 
> @@ -218,7 +218,7 @@ static int mmc_select_hwpartp(struct blk_desc *desc,
> int hwpart)
>  	if (!mmc)
>  		return -ENODEV;
> 
> -	if (mmc->block_dev.hwpart == hwpart)
> +	if (mmc_get_blk_desc(mmc)->hwpart == hwpart)
>  		return 0;
> 
>  	if (mmc->part_config == MMCPART_NOAVAILABLE) @@ -242,7 +242,7
> @@ static int mmc_get_dev(int dev, struct blk_desc **descp)
>  	if (ret)
>  		return ret;
> 
> -	*descp = &mmc->block_dev;
> +	*descp = mmc_get_blk_desc(mmc);
> 
>  	return 0;
>  }
> diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c index 3327073..c5cf188
> 100644
> --- a/drivers/net/fm/fm.c
> +++ b/drivers/net/fm/fm.c
> @@ -402,7 +402,7 @@ int fm_init_common(int index, struct ccsr_fman *reg)
>  		printf("\nMMC read: dev # %u, block # %u, count %u ...\n",
>  				dev, blk, cnt);
>  		mmc_init(mmc);
> -		(void)mmc->block_dev.block_read(&mmc->block_dev, blk, cnt,
> +		(void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt,
>  						addr);
>  	}
>  #elif defined(CONFIG_SYS_QE_FMAN_FW_IN_REMOTE)
> diff --git a/drivers/qe/qe.c b/drivers/qe/qe.c index 7654df8..7010bbc 100644
> --- a/drivers/qe/qe.c
> +++ b/drivers/qe/qe.c
> @@ -218,7 +218,7 @@ void u_qe_init(void)
>  		printf("\nMMC read: dev # %u, block # %u, count %u ...\n",
>  		       dev, blk, cnt);
>  		mmc_init(mmc);
> -		(void)mmc->block_dev.block_read(&mmc->block_dev, blk, cnt,
> +		(void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt,
>  						addr);
>  	}
>  #endif
> --
> 1.7.1

Patch

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
index a31c4d9..95875d3 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c
@@ -99,7 +99,7 @@  int ppa_init(void)
 	cnt = DIV_ROUND_UP(fdt_header_len, 512);
 	debug("%s: MMC read PPA FIT header: dev # %u, block # %u, count %u\n",
 	      __func__, dev, blk, cnt);
-	ret = mmc->block_dev.block_read(&mmc->block_dev, blk, cnt, fitp);
+	ret = blk_dread(mmc_get_blk_desc(mmc), blk, cnt, fitp);
 	if (ret != cnt) {
 		free(fitp);
 		printf("MMC/SD read of PPA FIT header at offset 0x%x failed\n",
@@ -149,8 +149,7 @@  int ppa_init(void)
 	cnt = DIV_ROUND_UP(fw_length, 512);
 	debug("%s: MMC read PPA FIT image: dev # %u, block # %u, count %u\n",
 	      __func__, dev, blk, cnt);
-	ret = mmc->block_dev.block_read(&mmc->block_dev,
-					blk, cnt, ppa_fit_addr);
+	ret = blk_dread(mmc_get_blk_desc(mmc), blk, cnt, ppa_fit_addr);
 	if (ret != cnt) {
 		free(ppa_fit_addr);
 		printf("MMC/SD read of PPA FIT header at offset 0x%x failed\n",
diff --git a/drivers/mmc/mmc_legacy.c b/drivers/mmc/mmc_legacy.c
index 66a7cda..29d94e9 100644
--- a/drivers/mmc/mmc_legacy.c
+++ b/drivers/mmc/mmc_legacy.c
@@ -42,7 +42,7 @@  struct mmc *find_mmc_device(int dev_num)
 	list_for_each(entry, &mmc_devices) {
 		m = list_entry(entry, struct mmc, link);
 
-		if (m->block_dev.devnum == dev_num)
+		if (mmc_get_blk_desc(m)->devnum == dev_num)
 			return m;
 	}
 
@@ -60,7 +60,7 @@  int mmc_get_next_devnum(void)
 
 struct blk_desc *mmc_get_blk_desc(struct mmc *mmc)
 {
-	return &mmc->block_dev;
+	return mmc_get_blk_desc(mmc);
 }
 
 int get_mmc_num(void)
@@ -113,7 +113,7 @@  void print_mmc_devices(char separator)
 		else
 			mmc_type = NULL;
 
-		printf("%s: %d", m->cfg->name, m->block_dev.devnum);
+		printf("%s: %d", m->cfg->name, mmc_get_blk_desc(m)->devnum);
 		if (mmc_type)
 			printf(" (%s)", mmc_type);
 
@@ -218,7 +218,7 @@  static int mmc_select_hwpartp(struct blk_desc *desc, int hwpart)
 	if (!mmc)
 		return -ENODEV;
 
-	if (mmc->block_dev.hwpart == hwpart)
+	if (mmc_get_blk_desc(mmc)->hwpart == hwpart)
 		return 0;
 
 	if (mmc->part_config == MMCPART_NOAVAILABLE)
@@ -242,7 +242,7 @@  static int mmc_get_dev(int dev, struct blk_desc **descp)
 	if (ret)
 		return ret;
 
-	*descp = &mmc->block_dev;
+	*descp = mmc_get_blk_desc(mmc);
 
 	return 0;
 }
diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index 3327073..c5cf188 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -402,7 +402,7 @@  int fm_init_common(int index, struct ccsr_fman *reg)
 		printf("\nMMC read: dev # %u, block # %u, count %u ...\n",
 				dev, blk, cnt);
 		mmc_init(mmc);
-		(void)mmc->block_dev.block_read(&mmc->block_dev, blk, cnt,
+		(void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt,
 						addr);
 	}
 #elif defined(CONFIG_SYS_QE_FMAN_FW_IN_REMOTE)
diff --git a/drivers/qe/qe.c b/drivers/qe/qe.c
index 7654df8..7010bbc 100644
--- a/drivers/qe/qe.c
+++ b/drivers/qe/qe.c
@@ -218,7 +218,7 @@  void u_qe_init(void)
 		printf("\nMMC read: dev # %u, block # %u, count %u ...\n",
 		       dev, blk, cnt);
 		mmc_init(mmc);
-		(void)mmc->block_dev.block_read(&mmc->block_dev, blk, cnt,
+		(void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt,
 						addr);
 	}
 #endif