[U-Boot-Users] [PATCH] mpc85xx: fix upmconfig

Andy Fleming afleming at gmail.com
Tue Jul 15 02:32:56 CEST 2008


On Thu, Jul 10, 2008 at 7:36 AM, Sebastian Siewior
<bigeasy at linutronix.de> wrote:
> This actually shouldn't work. Imagina 0xf0000000 base address that
> gets translated into 0x1e000 and causes my box to hang. Writing
> to 0xf0000000 seems the better way.
> Also don't compare against the UPM mask but agaist the MSEL mask.
>
> Cc: Sergei Poselenov <sposelenov at emcraft.com>
> Cc: Andy Fleming <afleming at freescale.com>
> Signed-off-by: Sebastian Siewior <bigeasy at linutronix.de>
> ---
>  cpu/mpc85xx/cpu.c |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/cpu/mpc85xx/cpu.c b/cpu/mpc85xx/cpu.c
> index 0497422..2373b4a 100644
> --- a/cpu/mpc85xx/cpu.c
> +++ b/cpu/mpc85xx/cpu.c
> @@ -71,8 +71,7 @@ struct cpu_type *identify_cpu(u32 ver)
>
>  static void set_lcb_clock(uint clkdiv)
>  {
> -       volatile immap_t *immap = (immap_t *)CFG_IMMR;
> -       volatile ccsr_lbc_t *lbc= &immap->im_lbc;
> +       volatile ccsr_lbc_t *lbc = (void *)(CFG_MPC85xx_LBC_ADDR);
>        uint lcrr;
>
>        lcrr = lbc->lcrr;
> @@ -352,8 +351,8 @@ void upmconfig (uint upm, uint * table, uint size)
>                 i++, brp += 2, orp += 2) {
>
>                /* Look for a valid BR with selected UPM */
> -               if ((in_be32(brp) & (BR_V | upmmask)) == (BR_V | upmmask)) {
> -                       dummy = (volatile u8*)(in_be32(brp) >> BR_BA_SHIFT);
> +               if ((in_be32(brp) & (BR_V | BR_MSEL)) == (BR_V | upmmask)) {
> +                       dummy = (volatile u8*)(in_be32(brp) & BR_BA);

This looks pretty good to me, but I'm not very familiar with this
code.  Could you explain a little more deeply what is wrong with the
old way, and why the new way is better?  I think I understand the
problem with the BA_SHIFT (actually, it alarms me, a bit), but I'm not
so sure about using MSEL on one side of the ==, and not the other.

Andy




More information about the U-Boot mailing list