linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 4/4 v4] mmc, ARM: Add zboot from eSD support for SuperH
Date: Wed, 16 Mar 2011 01:14:42 +0000	[thread overview]
Message-ID: <20110316011427.GB6724@verge.net.au> (raw)
In-Reply-To: <AANLkTimgwpP-WTGF-E=KO3TAXDX7FP4WnW3XQiHi0Ton@mail.gmail.com>

Hi Magnus,

On Wed, Mar 16, 2011 at 09:37:50AM +0900, Magnus Damm wrote:
> Hi Simon,
> 
> Thanks for your work on this!

[ snip ]

> 
> On Wed, Mar 16, 2011 at 7:27 AM, Simon Horman <horms@verge.net.au> wrote:
> > This allows a ROM-able zImage to be written to eSD and for SuperH Mobile
> > ARM to boot directly from the SDHI hardware block.
> >
> > This is achieved by the MaskROM loading the first portion of the image into
> > MERAM and then jumping to it.  This portion contains loader code which
> > copies the entire image to SDRAM and jumps to it. From there the zImage
> > boot code proceeds as normal, uncompressing the image into its final
> > location and then jumping to it.
> >
> > Cc: Paul Mundt <lethal@linux-sh.org>
> > Cc: Magnus Damm <magnus.damm@gmail.com>
> > Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > Signed-off-by: Simon Horman <horms@verge.net.au>
> >
> > ---
> >
> > This patch is based on the for-next branch of
> > Russell King's linux-2.6-arm tree
> >
> > v2
> > * Consistently use __raw_readw(). As pointed out by Paul Mundt
> >
> > v3
> > * Remove mmcif_update_progress2(), it was for debugging during development
> > * Move CPU specific code into mach/sdhi.h
> >  As requested by Magnus Damm
> > * Use linux/mmc/tmio.h now that it exists
> > * Remove SDHI_EXT_SWAP, it is unused
> > * Replace use of MMCIF_PROGRESS_* with MMC_PROGRESS_*
> > * Don't include linux/mmc/sh_mmcif.h
> >  + Replace use of MMCIF_CE_RESP_CMD12 with RESP_CMD12
> >  + Include linux/io.h
> >
> > v4
> > * Move definition of SDHI_BASE into CPU-specific code.
> >  Thanks to Magnus Damm.
> > ---
> 
> > +asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
> > +{
> > +       int high_capacity;
> > +
> > +       mmc_init_progress();
> > +
> > +       mmc_update_progress(MMC_PROGRESS_ENTER);
> > +       sdhi_boot_enter();
> > +
> > +       /* setup SDHI hardware */
> > +       mmc_update_progress(MMC_PROGRESS_INIT);
> > +       high_capacity = sdhi_boot_init(SDHI_BASE);
> > +       if (high_capacity < 0)
> > +               goto err;
> > +
> > +       mmc_update_progress(MMC_PROGRESS_LOAD);
> > +       /* load kernel */
> > +       if (sdhi_boot_do_read(SDHI_BASE, high_capacity,
> > +                             0, /* Kernel is at block 1 */
> > +                             (len + TMIO_BBS - 1) / TMIO_BBS, buf))
> > +               goto err;
> > +
> > +       sdhi_boot_cleanup();
> > +
> > +       mmc_update_progress(MMC_PROGRESS_DONE);
> > +
> > +       return;
> > +err:
> > +       __raw_writel(__raw_readl(PORTR031_000DR) | 1, PORTR031_000DR);
> > +       for(;;);
> > +
> > +}
> 
> Sorry for not catching this earlier, but this __raw_writel() to
> PORTR031_000DR is cpu specific as well. So please move that to the CPU
> specific code.

I will just remove that code, its was useful for development
but I didn't mean to include it in my patch submission.

> Not sure if it makes sense at this point, but perhaps it's a good idea
> to move the mmc_loader() function into the CPU specific portion. As
> you know, the CPU itself has multiple SDHI hardware blocks, and
> because of that we want the common SDHI loader to be written to
> support any SDHI hardware block instance.

Wouldn't that mean moving all of
arch/arm/boot/compressed/sdhi-shmobile.c into CPU specific code?
That could easily be achived by just guarding its compilation with
CONFIG_ARCH_SH7372 (as mmcif-sh7372.c already is) and perhaps
renaming the file to sdhi-sh7372.c. We could probably move
arch/arm/mach-shmobile/include/mach/sdhi-sh7372.h back into
sdhi-shmobile.c.

> Right now the SDHI_BASE variable is limiting the shared SDHI loader
> code to a fixed hardware block instance. That's fine because we only
> boot from a single SDHI hardware block instance on sh7372, but future
> processors most likely support selecting boot SDHI hardware block
> instance.

So mmc_loader() would need to take SDHI_BASE as an argument?
That sounds like a fairly small amount of refactoring.

How do you envisage that the hardware block would be selected?
At compile time through Kconfig? If so the current #define mechanism
might be sufficient.

> Apart from those minor bits I think the code is getting into a really
> good shape!

Thanks

  reply	other threads:[~2011-03-16  1:14 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-14  2:57 [PATCH 0/4] [rfc v3] mmc, ARM: Add zboot from eSD support for SuperH Mobile ARM Simon Horman
2011-03-14  2:57 ` [PATCH 1/4] mmc: tmio_mmc: Move some defines into a shared header Simon Horman
2011-03-24  8:54   ` Guennadi Liakhovetski
2011-03-24  9:03     ` [PATCH 1/4] mmc: tmio_mmc: Move some defines into a shared Simon Horman
2011-03-14  2:57 ` [PATCH 2/4] mmc, ARM: Rename SuperH Mobile ARM zboot helpers Simon Horman
2011-03-14  2:57 ` [PATCH 3/4] mmc: Add MMC_PROGRESS_* Simon Horman
2011-03-14  2:57 ` [PATCH 4/4] mmc, ARM: Add zboot from eSD support for SuperH Mobile ARM Simon Horman
2011-03-15 22:27   ` [PATCH 4/4 v4] mmc, ARM: Add zboot from eSD support for SuperH Simon Horman
2011-03-16  0:37     ` Magnus Damm
2011-03-16  1:14       ` Simon Horman [this message]
2011-03-16  2:20         ` Magnus Damm
2011-03-16  5:16           ` Simon Horman
2011-03-16  5:26             ` Magnus Damm
2011-03-16  5:35               ` Simon Horman
2011-03-16  7:03                 ` [PATCH 4/4 v5] " Simon Horman
2011-03-24  6:57                   ` [PATCH 4/4 v6] " Simon Horman

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=20110316011427.GB6724@verge.net.au \
    --to=horms@verge.net.au \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).