[U-Boot] [PATCH 2/6] i.mx: Add the initial support for freescale i.MX6Q processor

Marek Vasut marek.vasut at gmail.com
Mon Nov 14 11:45:13 CET 2011


> On Mon, Nov 14, 2011 at 7:11 AM, Marek Vasut <marek.vasut at gmail.com> wrote:
> >> i.MX6Q is freescale quad core processors with ARM cortex_a9 complex.
> >> This patch is to add the initial support for this processor.
> >> 
> >> Signed-off-by: Jason Liu <jason.hui at linaro.org>
> >> ---
> >>  arch/arm/cpu/armv7/mx6/Makefile           |   48 +
> >>  arch/arm/cpu/armv7/mx6/clock.c            |  388 +++++++
> >>  arch/arm/cpu/armv7/mx6/iomux-v3.c         |   76 ++
> >>  arch/arm/cpu/armv7/mx6/lowlevel_init.S    |   60 +
> >>  arch/arm/cpu/armv7/mx6/soc.c              |   57 +
> >>  arch/arm/include/asm/arch-mx6/ccm_regs.h  |  894 +++++++++++++++
> >>  arch/arm/include/asm/arch-mx6/clock.h     |   50 +
> >>  arch/arm/include/asm/arch-mx6/gpio.h      |   35 +
> >>  arch/arm/include/asm/arch-mx6/imx-regs.h  |  233 ++++
> >>  arch/arm/include/asm/arch-mx6/iomux-v3.h  |  104 ++
> >>  arch/arm/include/asm/arch-mx6/mx6x_pins.h | 1683
> >> +++++++++++++++++++++++++++++ arch/arm/include/asm/arch-mx6/sys_proto.h
> >> | 38 +
> >>  12 files changed, 3666 insertions(+), 0 deletions(-)
> > 
> > [...]
> > 
> >> diff --git a/arch/arm/cpu/armv7/mx6/lowlevel_init.S
> >> b/arch/arm/cpu/armv7/mx6/lowlevel_init.S new file mode 100644
> >> index 0000000..7a03f59
> >> --- /dev/null
> >> +++ b/arch/arm/cpu/armv7/mx6/lowlevel_init.S
> >> @@ -0,0 +1,60 @@
> >> +/*
> >> + * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
> >> + *
> >> + * 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
> >> + */
> >> +
> >> +#include <config.h>
> >> +#include <asm/arch/imx-regs.h>
> >> +
> >> +/*
> >> + * AIPS setup - Only setup MPROTx registers.
> >> + * Set all MPROTx to be non-bufferable,
> >> + * trusted for R/W, not forced to user-mode.
> >> + * The PACR default values are good.
> >> + */
> >> +.macro init_aips
> >> +     ldr r0, =AIPS1_ON_BASE_ADDR
> >> +     ldr r1, =0x77777777
> >> +     str r1, [r0, #0x0]
> >> +     str r1, [r0, #0x4]
> >> +     ldr r1, =0x0
> >> +     str r1, [r0, #0x40]
> >> +     str r1, [r0, #0x44]
> >> +     str r1, [r0, #0x48]
> >> +     str r1, [r0, #0x4C]
> >> +     str r1, [r0, #0x50]
> >> +
> >> +     ldr r0, =AIPS2_ON_BASE_ADDR
> >> +     ldr r1, =0x77777777
> >> +     str r1, [r0, #0x0]
> >> +     str r1, [r0, #0x4]
> >> +     ldr r1, =0x0
> >> +     str r1, [r0, #0x40]
> >> +     str r1, [r0, #0x44]
> >> +     str r1, [r0, #0x48]
> >> +     str r1, [r0, #0x4C]
> >> +     str r1, [r0, #0x50]
> >> +.endm /* init_aips */
> > 
> > Can't this be done in C code? Why the assembly ?
> 
> I think this should be initialized as early as possible, so I put it here.

As early as arch_cpu_init is late (see arch/arm/lib/board.c)?
> 
> >> +
> >> +.section ".text.init", "x"
> >> +
> >> +.globl lowlevel_init
> >> +lowlevel_init:
> >> +
> >> +     init_aips
> >> +
> >> +     mov pc, lr
> > 
> > [...]
> > 
> >> +#define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET            (2)
> > 
> > Drop parenthesis around stuff similar to this.
> 
> Yes, thanks.
> 
> >> +#endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */
> >> diff --git a/arch/arm/include/asm/arch-mx6/clock.h
> >> b/arch/arm/include/asm/arch-mx6/clock.h new file mode 100644
> >> index 0000000..636458f
> >> --- /dev/null
> >> +++ b/arch/arm/include/asm/arch-mx6/clock.h
> >> @@ -0,0 +1,50 @@
> >> +/*
> >> + * (C) Copyright 2009
> >> + * Stefano Babic, DENX Software Engineering, sbabic at denx.de.
> >> + *
> >> + * 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 __ASM_ARCH_CLOCK_H
> >> +#define __ASM_ARCH_CLOCK_H
> >> +
> >> +enum mxc_clock {
> >> +     MXC_ARM_CLK = 0,
> >> +     MXC_PER_CLK,
> >> +     MXC_AHB_CLK,
> >> +     MXC_IPG_CLK,
> >> +     MXC_IPG_PERCLK,
> >> +     MXC_UART_CLK,
> >> +     MXC_CSPI_CLK,
> >> +     MXC_AXI_CLK,
> >> +     MXC_EMI_SLOW_CLK,
> >> +     MXC_DDR_CLK,
> >> +     MXC_ESDHC_CLK,
> >> +     MXC_ESDHC2_CLK,
> >> +     MXC_ESDHC3_CLK,
> >> +     MXC_ESDHC4_CLK,
> >> +     MXC_SATA_CLK,
> >> +     MXC_NFC_CLK,
> >> +};
> >> +
> >> +u32 imx_get_uartclk(void);
> >> +u32 imx_get_fecclk(void);
> >> +unsigned int mxc_get_clock(enum mxc_clock clk);
> >> +
> >> +#endif /* __ASM_ARCH_CLOCK_H */
> >> diff --git a/arch/arm/include/asm/arch-mx6/gpio.h
> >> b/arch/arm/include/asm/arch-mx6/gpio.h new file mode 100644
> >> index 0000000..1dc34e9
> >> --- /dev/null
> >> +++ b/arch/arm/include/asm/arch-mx6/gpio.h
> >> @@ -0,0 +1,35 @@
> >> +/*
> >> + * Copyright (C) 2011
> >> + * Stefano Babic, DENX Software Engineering, <sbabic at denx.de>
> >> + *
> >> + * 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
> >> + */
> >> +
> >> 
> >> +/* GPIO registers */
> >> +struct gpio_regs {
> >> +     u32     gpio_dr;
> >> +     u32     gpio_dir;
> >> +     u32     gpio_psr;
> >> +};
> >> +
> > 
> > You'll have GPIO driver, so why expose this structure ?
> 
> yes, we already had drivers/gpio/mxc_gpio.c driver. In this driver, we will
> use this structure. And it's the same as i.mx5 before.

So why do you need to expose the structure, isn't it internal to the driver?

> 
> Jason Liu
> 
> >> +#endif
> > 
> > M


More information about the U-Boot mailing list