All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minkyu Kang <mk7.kang@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] Exynos5: Add support for USB download boot mode
Date: Wed, 17 Apr 2013 11:09:39 +0900	[thread overview]
Message-ID: <516E0463.2000702@samsung.com> (raw)
In-Reply-To: <CAFp+6iGNghQ=gqxNm0M61ASWHNNgDSqTZRWO=+eX6634WcdV4g@mail.gmail.com>

On 15/04/13 14:36, Vivek Gautam wrote:
> Hi,
> 
> 
> On Sat, Apr 13, 2013 at 7:50 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi,
>>
>> On Tue, Feb 5, 2013 at 9:04 PM, Vivek Gautam <gautamvivek1987@gmail.com> wrote:
>>> Hi Simon,
>>>
>>>
>>> On Tue, Feb 5, 2013 at 2:56 AM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi,
>>>>
>>>> On Mon, Jan 28, 2013 at 2:39 AM, Vivek Gautam <gautam.vivek@samsung.com> wrote:
>>>>> Exynos5250 supports secondary USB device boot mode. If the iROM fails
>>>>> to download u-boot from the primary boot device (such as SD or eMMC),
>>>>> it will try to retrieve from the secondary boot device (such as USB).
>>>>>
>>>>> Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
>>>>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>>>> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
>>>>
>>>> Acked-by: Simon Glass <sjg@chromium.org>
>>>>
>>>
>>> Thanks for reviewing.
>>>
>>>> But please see comment below.
>>>>
>>>>> ---
>>>>>
>>>>> NOTE:
>>>>>  - Based on 'master' branch of u-boot-samsung.
>>>>>  - Tested with smdk5250 for usb download mode.
>>>>>
>>>>>  board/samsung/smdk5250/spl_boot.c |   40 +++++++++++++++++++++++++++++++++++-
>>>>>  include/configs/exynos5250-dt.h   |    5 ++++
>>>>>  2 files changed, 43 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/board/samsung/smdk5250/spl_boot.c b/board/samsung/smdk5250/spl_boot.c
>>>>> index d8f3c1e..c0bcf46 100644
>>>>> --- a/board/samsung/smdk5250/spl_boot.c
>>>>> +++ b/board/samsung/smdk5250/spl_boot.c
>>>>> @@ -32,6 +32,21 @@ enum boot_mode {
>>>>>  };
>>>>>
>>>>>         typedef u32 (*spi_copy_func_t)(u32 offset, u32 nblock, u32 dst);
>>>>> +       typedef u32 (*usb_copy_func_t)(void);
>>>>> +
>>>>> +/*
>>>>> + * Set/clear program flow prediction and return the previous state.
>>>>> + */
>>>>> +static int config_branch_prediction(int set_cr_z)
>>>>> +{
>>>>> +       unsigned int cr;
>>>>> +
>>>>> +       /* System Control Register: 11th bit Z Branch prediction enable */
>>>>> +       cr = get_cr();
>>>>> +       set_cr(set_cr_z ? cr | CR_Z : cr & ~CR_Z);
>>>>> +
>>>>> +       return cr & CR_Z;
>>>>> +}
>>>>>
>>>>>  /*
>>>>>  * Copy U-boot from mmc to RAM:
>>>>> @@ -41,10 +56,20 @@ enum boot_mode {
>>>>>  void copy_uboot_to_ram(void)
>>>>>  {
>>>>>         spi_copy_func_t spi_copy;
>>>>> -       enum boot_mode bootmode;
>>>>> +       usb_copy_func_t usb_copy;
>>>>> +
>>>>> +       int is_cr_z_set;
>>>>> +       unsigned int sec_boot_check;
>>>>> +       enum boot_mode bootmode = BOOT_MODE_OM;
>>>>>         u32 (*copy_bl2)(u32, u32, u32);
>>>>>
>>>>> -       bootmode = readl(EXYNOS5_POWER_BASE) & OM_STAT;
>>>>> +       /* Read iRAM location to check for secondary USB boot mode */
>>>>> +       sec_boot_check = readl(EXYNOS_IRAM_SECONDARY_BASE);
>>>>> +       if (sec_boot_check == EXYNOS_USB_SECONDARY_BOOT)
>>>>> +               bootmode = BOOT_MODE_USB;
>>>>> +
>>>>> +       if (bootmode == BOOT_MODE_OM)
>>>>> +               bootmode = readl(EXYNOS5_POWER_BASE) & OM_STAT;
>>>>>
>>>>>         switch (bootmode) {
>>>>>         case BOOT_MODE_SERIAL:
>>>>> @@ -57,6 +82,17 @@ void copy_uboot_to_ram(void)
>>>>>                 copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT,
>>>>>                                                 CONFIG_SYS_TEXT_BASE);
>>>>>                 break;
>>>>> +       case BOOT_MODE_USB:
>>>>> +               /*
>>>>> +                * iROM needs program flow prediction to be disabled
>>>>> +                * before copy from USB device to RAM
>>>>> +                */
>>>>> +               is_cr_z_set = config_branch_prediction(0);
>>>>> +               usb_copy = *(usb_copy_func_t *)
>>>>> +                               EXYNOS_COPY_USB_FNPTR_ADDR;
>>>>> +               usb_copy();
>>>>> +               config_branch_prediction(is_cr_z_set);
>>>>> +               break;
>>>>>         default:
>>>>>                 break;
>>>>>         }
>>>>> diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h
>>>>> index cabd2f2..6728b0e 100644
>>>>> --- a/include/configs/exynos5250-dt.h
>>>>> +++ b/include/configs/exynos5250-dt.h
>>>>> @@ -123,6 +123,11 @@
>>>>>  #define CONFIG_USB_EHCI_EXYNOS
>>>>>  #define CONFIG_USB_STORAGE
>>>>>
>>>>> +/* USB boot mode */
>>>>> +#define EXYNOS_COPY_USB_FNPTR_ADDR     0x02020070
>>>>> +#define EXYNOS_USB_SECONDARY_BOOT      0xfeed0002
>>>>> +#define EXYNOS_IRAM_SECONDARY_BASE     0x02020018
>>>>
>>>>
>>>> What happened to the function pointer table patch?
>>>>
>>> I think i missed that patch from Amar, :-(
>>> will remove these #defines and use the function pointer table instead.
>>
>> I notice that this patch has not made it to mainline. It really should
>> be there since without it it is not possible to USB boot on snow,
>> which makes development awkward.
>>
>> Can we get this applied in time for the release? The comment made
>> above can be dealt with later perhaps.
> 
> Sorry for not responding to this patch for long, but was still waiting
> for Amar's emmc booting patch
> to get merged (which carries the funtion pointer table).
> 
> Hi Minkyu,
> Is it fine with you if we pull this in for now, and post a patch later
> to make things aligned
> with funtion-pointer table ?
> 
> This patch cleanly applies on u-boot-samsung/master.
> 
> 

applied to u-boot-samsung

Thanks,
Minkyu Kang.

      reply	other threads:[~2013-04-17  2:09 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-28 10:39 [U-Boot] [PATCH] Exynos5: Add support for USB download boot mode Vivek Gautam
2013-02-04 21:26 ` Simon Glass
2013-02-06  5:04   ` Vivek Gautam
2013-04-13 14:20     ` Simon Glass
2013-04-15  5:36       ` Vivek Gautam
2013-04-17  2:09         ` Minkyu Kang [this message]

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=516E0463.2000702@samsung.com \
    --to=mk7.kang@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 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.