public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Przemyslaw Marczak <p.marczak@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/4] mmc: exynos dwmmc: check boot mode before init dwmmc
Date: Wed, 18 Feb 2015 11:50:41 +0100	[thread overview]
Message-ID: <54E46E81.6030303@samsung.com> (raw)
In-Reply-To: <CAPnjgZ1iN5JA=dG-SdUF7sumxE-SaezZNw-c4yKrwBmkE+Hgyg@mail.gmail.com>

Hello Simon,

On 02/18/2015 06:02 AM, Simon Glass wrote:
> Hi Przemyslaw,
>
> On 17 February 2015 at 06:09, Przemyslaw Marczak <p.marczak@samsung.com> wrote:
>> Before this commit, the mmc devices were always registered
>> in the same order. So dwmmc channel 0 was registered as mmc 0,
>> channel 1 as mmc 1, etc.
>> In case of possibility to boot from more then one device,
>> the CONFIG_SYS_MMC_ENV_DEV should always point to right mmc device.
>>
>> This can be achieved by init boot device as first, so it will be
>> always registered as mmc 0. Thanks to this, the 'saveenv' command
>> will work fine for all mmc boot devices.
>>
>> Exynos based boards usually uses mmc host channels configuration:
>> - 0, or 0+1 for 8 bit  - as a default boot device (usually eMMC)
>> - 2 for 4bit - as an optional boot device (usually SD card slot)
>>
>> And usually the boot order is defined by OM pin configuration,
>> which can be changed in a few ways, eg.
>> - Odroid U3     - eMMC card insertion -> first boot from eMMC
>> - Odroid X2/XU3 - boot priority jumper
>>
>> By this commit, Exynos dwmmc driver will check the OM pin configuration,
>> and then try to init the boot device and register it as mmc 0.
>
> I think a better way to do this would be to make
> CONFIG_SYS_MMC_ENV_DEV support an option where the device can be
> selected at run-time.
>
> However that would probably be better done when the drive rmodel
> conversion is complete.
>
> So this seems a reasonable patch given where we are.
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>

This was just a quick solution to solve the issue on XU3, when the same 
binary can boot from sd or eMMC slots.


>>
>> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>> Cc: Jaehoon Chung <jh80.chung@samsung.com>
>> Cc: Pantelis Antoniou <panto@intracom.gr>
>> Cc: Simon Glass <sjg@chromium.org>
>> Cc: Akshay Saraswat <akshay.s@samsung.com>
>> ---
>>   drivers/mmc/exynos_dw_mmc.c | 11 ++++++++++-
>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c
>> index dfa209b..91f0163 100644
>> --- a/drivers/mmc/exynos_dw_mmc.c
>> +++ b/drivers/mmc/exynos_dw_mmc.c
>> @@ -13,6 +13,7 @@
>>   #include <asm/arch/dwmmc.h>
>>   #include <asm/arch/clk.h>
>>   #include <asm/arch/pinmux.h>
>> +#include <asm/arch/power.h>
>>   #include <asm/gpio.h>
>>   #include <asm-generic/errno.h>
>>
>> @@ -166,7 +167,6 @@ static int exynos_dwmci_get_config(const void *blob, int node,
>>          if (host->dev_index == host->dev_id)
>>                  host->dev_index = host->dev_id - PERIPH_ID_SDMMC0;
>>
>> -
>>          /* Get the bus width from the device node */
>>          host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 0);
>>          if (host->buswidth <= 0) {
>> @@ -229,12 +229,21 @@ int exynos_dwmmc_init(const void *blob)
>>   {
>>          int compat_id;
>>          int node_list[DWMMC_MAX_CH_NUM];
>> +       int boot_dev_node;
>>          int err = 0, count;
>>
>>          compat_id = COMPAT_SAMSUNG_EXYNOS_DWMMC;
>>
>>          count = fdtdec_find_aliases_for_id(blob, "mmc",
>>                                  compat_id, node_list, DWMMC_MAX_CH_NUM);
>> +
>> +       /* For DWMMC always set boot device as mmc 0 */
>> +       if (count >= 3 && get_boot_mode() == BOOT_MODE_SD) {
>> +               boot_dev_node = node_list[2];
>> +               node_list[2] = node_list[0];
>> +               node_list[0] = boot_dev_node;
>> +       }
>> +
>>          err = exynos_dwmci_process_node(blob, node_list, count);
>>
>>          return err;
>> --
>> 1.9.1
>>
>
> Regards,
> Simon
>

Thank you for the review. I will send the second version soon.

Best regards,
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

  reply	other threads:[~2015-02-18 10:50 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-17 13:09 [U-Boot] [PATCH 0/4] exynos-dwmmc: check set init priority for boot channel Przemyslaw Marczak
2015-02-17 13:09 ` [U-Boot] [PATCH 1/4] dm: gpio: extend gpio api by dm_gpio_set_pull() Przemyslaw Marczak
2015-02-18  5:01   ` Simon Glass
2015-02-18 10:49     ` Przemyslaw Marczak
2015-02-18 16:39     ` Stephen Warren
2015-02-19 12:11       ` Przemyslaw Marczak
2015-02-19 17:09         ` Stephen Warren
2015-02-20  9:34           ` Przemyslaw Marczak
2015-02-20 17:50             ` Stephen Warren
2015-02-20 19:29               ` Simon Glass
2015-02-23 10:51                 ` Przemyslaw Marczak
2015-02-23 15:30                   ` Simon Glass
2015-02-23 16:56                     ` Przemyslaw Marczak
2015-02-23 17:50                       ` Simon Glass
2015-02-24  9:44                         ` Przemyslaw Marczak
2015-02-23 10:21               ` Przemyslaw Marczak
2015-02-17 13:09 ` [U-Boot] [PATCH 2/4] s5p: gpio: add implementation of dm_gpio_set_pull() Przemyslaw Marczak
2015-02-17 13:09 ` [U-Boot] [PATCH 3/4] mmc: exynos dwmmc: check boot mode before init dwmmc Przemyslaw Marczak
2015-02-18  5:02   ` Simon Glass
2015-02-18 10:50     ` Przemyslaw Marczak [this message]
2015-02-19 14:03       ` Tom Rini
2015-02-19 14:36         ` Przemyslaw Marczak
2015-02-19 16:45           ` Tom Rini
2015-02-20  9:36             ` Przemyslaw Marczak
2015-02-19 14:01     ` Tom Rini
2015-02-17 13:09 ` [U-Boot] [PATCH 4/4] mmc: print SD/eMMC type for inited mmc devices Przemyslaw Marczak
2015-02-18 10:51 ` [U-Boot] [PATCH V2 0/4] exynos-dwmmc: check set init priority for boot channel Przemyslaw Marczak
2015-02-18 10:51   ` [U-Boot] [PATCH V2 1/4] dm: gpio: extend gpio api by dm_gpio_set_pull() Przemyslaw Marczak
2015-02-18 10:51   ` [U-Boot] [PATCH V2 2/4] s5p: gpio: add implementation of dm_gpio_set_pull() Przemyslaw Marczak
2015-02-18 10:51   ` [U-Boot] [PATCH V2 3/4] mmc: exynos dwmmc: check boot mode before init dwmmc Przemyslaw Marczak
2015-02-18 10:51   ` [U-Boot] [PATCH V2 4/4] mmc: print SD/eMMC type for inited mmc devices Przemyslaw Marczak
2015-02-20 11:29 ` [U-Boot] [PATCH V3 0/2] exynos-dwmmc: set init priority for boot channel Przemyslaw Marczak
2015-02-20 11:29   ` [U-Boot] [PATCH V3 1/2] mmc: exynos dwmmc: check boot mode before init dwmmc Przemyslaw Marczak
2015-02-23 17:49     ` Pantelis Antoniou
2015-02-20 11:29   ` [U-Boot] [PATCH V3 2/2] mmc: print SD/eMMC type for inited mmc devices Przemyslaw Marczak
2015-02-23 17:50     ` Pantelis Antoniou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54E46E81.6030303@samsung.com \
    --to=p.marczak@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox