Re: [U-Boot] [PATCH v1 1/4] mmc: omap_hsmmc: do not embed struct mmc in struct omap_hsmmc_plat

2018-02-26 Thread Jean-Jacques Hiblot


On 23/02/2018 21:59, Simon Glass wrote:

Hi Jean-Jacques,

On 22 February 2018 at 03:25, Jean-Jacques Hiblot  wrote:

The area for struct mmc can be allocated dynamically. It greatly reduces
the size of struct omap_hsmmc_plat. This is useful in cases where the board
level code declares one or two struct omap_hsmmc_plat because it doesn't
use the Driver Model.

This saves around 740 bytes for the am335x_evm SPL.

Signed-off-by: Jean-Jacques Hiblot 
---

  arch/arm/include/asm/omap_mmc.h | 2 +-
  drivers/mmc/omap_hsmmc.c| 6 +++---
  2 files changed, 4 insertions(+), 4 deletions(-)


Reviewed-by: Simon Glass 

I would like to understand why this saves memory though. Presumably
the pointer has to point to a real struct anyway, which uses memory.
So how does this help?
struct omap_hsmmc_plat are initialized variables so they are part of the 
binary. With this patch the memory is dynamically allocated so that it's 
not taking space in the binary.


JJ


- Simon



___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v1 1/4] mmc: omap_hsmmc: do not embed struct mmc in struct omap_hsmmc_plat

2018-02-23 Thread Simon Glass
Hi Jean-Jacques,

On 22 February 2018 at 03:25, Jean-Jacques Hiblot  wrote:
> The area for struct mmc can be allocated dynamically. It greatly reduces
> the size of struct omap_hsmmc_plat. This is useful in cases where the board
> level code declares one or two struct omap_hsmmc_plat because it doesn't
> use the Driver Model.
>
> This saves around 740 bytes for the am335x_evm SPL.
>
> Signed-off-by: Jean-Jacques Hiblot 
> ---
>
>  arch/arm/include/asm/omap_mmc.h | 2 +-
>  drivers/mmc/omap_hsmmc.c| 6 +++---
>  2 files changed, 4 insertions(+), 4 deletions(-)
>

Reviewed-by: Simon Glass 

I would like to understand why this saves memory though. Presumably
the pointer has to point to a real struct anyway, which uses memory.
So how does this help?

- Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v1 1/4] mmc: omap_hsmmc: do not embed struct mmc in struct omap_hsmmc_plat

2018-02-22 Thread Tom Rini
On Thu, Feb 22, 2018 at 11:25:45AM +0100, Jean-Jacques Hiblot wrote:

> The area for struct mmc can be allocated dynamically. It greatly reduces
> the size of struct omap_hsmmc_plat. This is useful in cases where the board
> level code declares one or two struct omap_hsmmc_plat because it doesn't
> use the Driver Model.
> 
> This saves around 740 bytes for the am335x_evm SPL.
> 
> Signed-off-by: Jean-Jacques Hiblot 

Reviewed-by: Tom Rini 

-- 
Tom


signature.asc
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v1 1/4] mmc: omap_hsmmc: do not embed struct mmc in struct omap_hsmmc_plat

2018-02-22 Thread Jean-Jacques Hiblot
The area for struct mmc can be allocated dynamically. It greatly reduces
the size of struct omap_hsmmc_plat. This is useful in cases where the board
level code declares one or two struct omap_hsmmc_plat because it doesn't
use the Driver Model.

This saves around 740 bytes for the am335x_evm SPL.

Signed-off-by: Jean-Jacques Hiblot 
---

 arch/arm/include/asm/omap_mmc.h | 2 +-
 drivers/mmc/omap_hsmmc.c| 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/include/asm/omap_mmc.h b/arch/arm/include/asm/omap_mmc.h
index 3d70148..42ce8dc 100644
--- a/arch/arm/include/asm/omap_mmc.h
+++ b/arch/arm/include/asm/omap_mmc.h
@@ -67,7 +67,7 @@ struct hsmmc {
 struct omap_hsmmc_plat {
struct mmc_config cfg;
struct hsmmc *base_addr;
-   struct mmc mmc;
+   struct mmc *mmc;
bool cd_inverted;
u32 controller_flags;
const char *hw_rev;
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
index 02970f2..e0b679a 100644
--- a/drivers/mmc/omap_hsmmc.c
+++ b/drivers/mmc/omap_hsmmc.c
@@ -1858,8 +1858,8 @@ static int omap_hsmmc_ofdata_to_platdata(struct udevice 
*dev)
 static int omap_hsmmc_bind(struct udevice *dev)
 {
struct omap_hsmmc_plat *plat = dev_get_platdata(dev);
-
-   return mmc_bind(dev, >mmc, >cfg);
+   plat->mmc = calloc(1, sizeof(struct mmc));
+   return mmc_bind(dev, plat->mmc, >cfg);
 }
 #endif
 static int omap_hsmmc_probe(struct udevice *dev)
@@ -1882,7 +1882,7 @@ static int omap_hsmmc_probe(struct udevice *dev)
 #endif
 
 #ifdef CONFIG_BLK
-   mmc = >mmc;
+   mmc = plat->mmc;
 #else
mmc = mmc_create(cfg, priv);
if (mmc == NULL)
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot