[U-Boot] [PATCH 2/2] Tegra2: Add support for Toradex Colibri T20 board

Marek Vasut marek.vasut at gmail.com
Mon Oct 3 12:35:38 CEST 2011


On Monday, October 03, 2011 05:52:17 AM Simon Glass wrote:
> Hi Marek,

Hi Simon,

[...]

> > +static void uart_init(void)
> > +{
> > +       struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr
> > *)NV_PA_CLK_RST_BASE; +       struct clk_pll *pll =
> > &clkrst->crc_pll[CLOCK_PLL_ID_PERIPH]; +       uint32_t reg;
> > +
> > +       reg = readl(&pll->pll_base);
> > +       if (!(reg & PLL_BASE_OVRRIDE_MASK)) {
> > +               /* Override pllp setup for 216MHz operation. */
> > +               reg = PLL_BYPASS_MASK | PLL_BASE_OVRRIDE_MASK |
> > +                       (1 << PLL_DIVP_SHIFT) | (0xd << PLL_DIVM_SHIFT);

Here, read below ...

> > +               reg |= (NVRM_PLLP_FIXED_FREQ_KHZ / 500) <<
> > PLL_DIVN_SHIFT; +               writel(reg, &pll->pll_base);
> > +
> > +               reg |= PLL_ENABLE_MASK;
> > +               writel(reg, &pll->pll_base);
> > +
> > +               reg &= ~PLL_BYPASS_MASK;
> > +               writel(reg, &pll->pll_base);
> > +       }
> 
> This block of code should already be in clock.c

Well ... the 0xd is different from the common code. So maybe that should be 
converted like in the PATCH 1/2 ?

> 
> > +
> > +#ifdef CONFIG_TEGRA2_ENABLE_UARTA
> > +       /* Assert UART reset and enable clock */
> > +       reset_set_enable(PERIPH_ID_UART1, 1);
> > +       clock_enable(PERIPH_ID_UART1);
> > +
> > +       /* Enable pllp_out0 to UART */
> > +       clrbits_le32(&clkrst->crc_clk_src_uarta, 3 << 30);
> > +
> > +       /* wait for 2us */
> > +       udelay(2);
> > +
> > +       /* De-assert reset to UART */
> > +       reset_set_enable(PERIPH_ID_UART1, 0);
> > +#endif
> 
> and this should really be in board.c along with the other UARTs.

You mean nvidia/board.c ?

> 
> I think there is a new set of patches which Albert was going to apply
> to the 'next' branch of ARM. Can you please track these down and take
> a look, because the above can now be simplified.

Will check.

> 
> > +}
> > +
> > +static void pinmux_init(void)
> > +{
> > +       struct pmux_tri_ctlr *pmt = (struct pmux_tri_ctlr
> > *)NV_PA_APB_MISC_BASE; +
> > +       /* SDIO 1 */
> > +       clrbits_le32(&pmt->pmt_tri[TRISTATE_REG(PIN_ATA)], 1 << 30);
> > +
> > +       /* Mux SDB/SDC to PWM */
> > +       clrsetbits_le32(&pmt->pmt_ctl_d, 0xcc00, 0x4400);
> > +
> > +       /* Mux SDIO1 to UARTA */
> > +       setbits_le32(&pmt->pmt_ctl_a, 3 << 30);
> > +
> > +       return 0;
> > +}
> 
> There are pinmux functions also :-)

Really ? Where are these ?!
> 
> > +
> > +#ifdef CONFIG_BOARD_EARLY_INIT_F
> > +extern int tegra2_start(void);
> > +int board_early_init_f(void)
> > +{
> > +       pinmux_init();
> > +       uart_init();
> > +       tegra2_start();
> > +       return 0;
> > +}
> > +#endif
> > +
> > +int board_init(void)
> > +{
> > +       gd->bd->bi_boot_params = NV_PA_SDRAM_BASE + 0x100;
> > +       return 0;
> > +}
> > diff --git a/boards.cfg b/boards.cfg
> > index c485cd7..6cc2855 100644
> > --- a/boards.cfg
> > +++ b/boards.cfg
> > @@ -188,6 +188,7 @@ s5pc210_universal            arm         armv7      
> > universal_c210      samsung smdkv310                    arm        
> > armv7       smdkv310            samsung        s5pc2xx harmony          
> >            arm         armv7       harmony             nvidia        
> > tegra2 seaboard                     arm         armv7       seaboard    
> >        nvidia         tegra2 +colibri_t20                 arm        
> > armv7       colibri_t20         toradex        tegra2 u8500_href        
> >           arm         armv7       u8500               st-ericsson  
> >  u8500 actux1_4_16                  arm         ixp         actux1      
> >        -              -           actux1:FLASH2X2 actux1_8_16          
> >        arm         ixp         actux1              -              -    
> >       actux1:FLASH1X8 diff --git a/include/configs/colibri_t20.h
> > b/include/configs/colibri_t20.h new file mode 100644
> > index 0000000..8fc0898
> > --- /dev/null
> > +++ b/include/configs/colibri_t20.h
> > @@ -0,0 +1,162 @@
> > +/*
> > + * Toradex Colibri T20 Configuration File
> > + *
> > + * Copyright (C) 2011 Marek Vasut <marek.vasut at gmail.com>
> > + *
> > + * Based on code:
> > + *
> > + * Copyright (C) 2011 Ant Micro <www.antmicro.com>
> > + * Copyright (C) 2010, 2011 NVIDIA Corporation <www.nvidia.com>
> > + *
> > + * See file CREDITS for list of people who contributed to this
> > + * project.
> > + *
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License as
> > + * published by the Free Software Foundation; either version 2 of
> > + * the License, or (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> > + * MA 02111-1307 USA
> > + */
> > +
> > +#ifndef        __CONFIG_H
> > +#define        __CONFIG_H
> > +
> > +#include <asm/sizes.h>
> > +#include <asm/arch/tegra2.h>
> 
> Are you ok with including tegra2-common.h here?

No, I had to do multiple changes (like different stack position etc).

[...]

> 
> Regards,
> Simon (Warren?)

Cheers


More information about the U-Boot mailing list