All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [question] need help with mmc-env-addr
@ 2018-10-25  9:59 Frank Wunderlich
       [not found] ` <trinity-6f20402e-6bfb-4686-9b4f-0c27d18d4bfd-1540463204387@3c-app-gmx-bs24>
  0 siblings, 1 reply; 2+ messages in thread
From: Frank Wunderlich @ 2018-10-25  9:59 UTC (permalink / raw)
  To: u-boot


Hi,

i hope questions are also allowed on this mailing list :)

i try to port environment-saving from 2014-04 to 2018-11...and in 2014 i see that an offset of 1 MB is added to address when booting from SD-Card. I have the boot-device-detection ready, but i'm unsure how to implement the env-adress...
 
i know i can override mmc_get_env_addr (because it's weak), but original function uses an inline-function mmc_offset which i cannot use outside (without removing the inline-statement and/or adding function to mmc.h).

this is the function call i'm talking about:

https://github.com/frank-w/u-boot/blob/bpi-r2_v2/env/mmc.c#L113

here i want to add it:

https://github.com/frank-w/u-boot/blob/bpi-r2_v2/board/mediatek/mt7623/mt7623_rfb.c

and this is how it's implemented in 2014 uboot:

https://github.com/BPI-SINOVOIP/BPI-R2-bsp/commit/0b7eb9e24a66d405970aff1b466bb50b21f925b8

especially this mmc_offset is differently implemented depending on CONFIG_IS_ENABLED(OF_CONTROL)...if this is set, there are accesses to Device-tree...imho i have not (yet) enabled this (what does it exactly?).

if this flag is not used i want to implement the function like this:

int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr)
{
	s64 offset = CONFIG_ENV_OFFSET;
    #ifdef CONFIG_ENV_OFFSET_REDUND
    	if (copy)
     		offset = CONFIG_ENV_OFFSET_REDUND;
    #endif
	if (offset < 0)
		offset += mmc->capacity;

        //If mmc is SD, then set offset 1Mb
        if(mmc_get_boot_dev() == 1)
	    *env_addr = offset + 0x100000;
        else
	    *env_addr = offset;

    return 0;
}

maybe the question "why adding an additional offset??" this is because on SD-Card on BPI-R2 there are additional headers for booting (MMC_BOOT and BRLYT-signature). for more see here: https://www.fw-web.de/dokuwiki/doku.php?id=en/bpi-r2/storage#extended_boot-headers

i hope i have explained enough...

what is the best way to implement it? imho propagate the mmc_offset-functions to outside but this changes common code (why is this function "hidden" and can/should this be changed?). i don't want to create too much redundant code (reimplement mmc_offset) and the 1MB-offset should also be defined in board-specific area (in opposition to 2014-code).

regards Frank

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [U-Boot] Fw: [question] need help with mmc-env-addr
       [not found] ` <trinity-6f20402e-6bfb-4686-9b4f-0c27d18d4bfd-1540463204387@3c-app-gmx-bs24>
@ 2018-11-15 16:09   ` Frank Wunderlich
  0 siblings, 0 replies; 2+ messages in thread
From: Frank Wunderlich @ 2018-11-15 16:09 UTC (permalink / raw)
  To: u-boot

can anybody help me here:

tried implementation here

https://github.com/frank-w/u-boot/blob/7a31819225b51d41cd6f1202250c2316e274aacf/board/mediatek/mt7623/mt7623_rfb.c#L55

but i'm unsure it's right, so currently it is disabled and mmc_get_env_dev always return CONFIG_SYS_MMC_ENV_DEV=0=emmc (ignores return-value of mmc_get_boot_dev())

hoping anybody can confirm i'm right

regards Frank

Gesendet: Donnerstag, 25. Oktober 2018 um 11:59 Uhr
Von: "Frank Wunderlich"
An: u-boot at lists.denx.de
Betreff: [question] need help with mmc-env-addr
Hi,

i hope questions are also allowed on this mailing list :)

i try to port environment-saving from 2014-04 to 2018-11...and in 2014 i see that an offset of 1 MB is added to address when booting from SD-Card. I have the boot-device-detection ready, but i'm unsure how to implement the env-adress...
 
i know i can override mmc_get_env_addr (because it's weak), but original function uses an inline-function mmc_offset which i cannot use outside (without removing the inline-statement and/or adding function to mmc.h).

this is the function call i'm talking about:

https://github.com/frank-w/u-boot/blob/bpi-r2_v2/env/mmc.c#L113

here i want to add it:

https://github.com/frank-w/u-boot/blob/bpi-r2_v2/board/mediatek/mt7623/mt7623_rfb.c[https://github.com/frank-w/u-boot/blob/bpi-r2_v2/board/mediatek/mt7623/mt7623_rfb.c]

and this is how it's implemented in 2014 uboot:

https://github.com/BPI-SINOVOIP/BPI-R2-bsp/commit/0b7eb9e24a66d405970aff1b466bb50b21f925b8[https://github.com/BPI-SINOVOIP/BPI-R2-bsp/commit/0b7eb9e24a66d405970aff1b466bb50b21f925b8]

especially this mmc_offset is differently implemented depending on CONFIG_IS_ENABLED(OF_CONTROL)...if this is set, there are accesses to Device-tree...imho i have not (yet) enabled this (what does it exactly?).

if this flag is not used i want to implement the function like this:

int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr)
{
s64 offset = CONFIG_ENV_OFFSET;
#ifdef CONFIG_ENV_OFFSET_REDUND
if (copy)
offset = CONFIG_ENV_OFFSET_REDUND;
#endif
if (offset < 0)
offset += mmc->capacity;

//If mmc is SD, then set offset 1Mb
if(mmc_get_boot_dev() == 1)
*env_addr = offset + 0x100000;
else
*env_addr = offset;

return 0;
}

maybe the question "why adding an additional offset??" this is because on SD-Card on BPI-R2 there are additional headers for booting (MMC_BOOT and BRLYT-signature). for more see here: https://www.fw-web.de/dokuwiki/doku.php?id=en/bpi-r2/storage#extended_boot-headers[https://www.fw-web.de/dokuwiki/doku.php?id=en/bpi-r2/storage#extended_boot-headers]

i hope i have explained enough...

what is the best way to implement it? imho propagate the mmc_offset-functions to outside but this changes common code (why is this function "hidden" and can/should this be changed?). i don't want to create too much redundant code (reimplement mmc_offset) and the 1MB-offset should also be defined in board-specific area (in opposition to 2014-code).

regards Frank

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-11-15 16:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-25  9:59 [U-Boot] [question] need help with mmc-env-addr Frank Wunderlich
     [not found] ` <trinity-6f20402e-6bfb-4686-9b4f-0c27d18d4bfd-1540463204387@3c-app-gmx-bs24>
2018-11-15 16:09   ` [U-Boot] Fw: " Frank Wunderlich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.