From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Tue, 14 Aug 2012 19:11:36 +0200 Subject: [U-Boot] [PATCH 3/4] arm: Support new Xilinx Zynq platform In-Reply-To: References: <1344944567-1694-1-git-send-email-monstr@monstr.eu> <1344944567-1694-4-git-send-email-monstr@monstr.eu> <502A7C99.40303@monstr.eu> Message-ID: <502A86C8.1040508@monstr.eu> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 08/14/2012 06:41 PM, Joe Hershberger wrote: > Hi Michal, > > On Tue, Aug 14, 2012 at 11:28 AM, Michal Simek wrote: >> On 08/14/2012 05:36 PM, Joe Hershberger wrote: >>> >>> Hi Michal, >>> >>> On Tue, Aug 14, 2012 at 6:42 AM, Michal Simek wrote: >>>> >>>> Add timer driver. >>>> >>>> Signed-off-by: Michal Simek >>>> --- >>>> arch/arm/cpu/armv7/zynq/Makefile | 48 ++++++++++++ >>>> arch/arm/cpu/armv7/zynq/timer.c | 151 >>>> ++++++++++++++++++++++++++++++++++++++ >>>> 2 files changed, 199 insertions(+), 0 deletions(-) >>>> create mode 100644 arch/arm/cpu/armv7/zynq/Makefile >>>> create mode 100644 arch/arm/cpu/armv7/zynq/timer.c >>>> >>>> diff --git a/arch/arm/cpu/armv7/zynq/Makefile >>>> b/arch/arm/cpu/armv7/zynq/Makefile >>>> new file mode 100644 >>>> index 0000000..814c1d4 >>>> --- /dev/null >>>> +++ b/arch/arm/cpu/armv7/zynq/Makefile >>>> @@ -0,0 +1,48 @@ >>>> +# >>>> +# (C) Copyright 2000-2003 >>>> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de. >>>> +# >>>> +# (C) Copyright 2008 >>>> +# Guennadi Liakhovetki, DENX Software Engineering, >>>> +# >>>> +# 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 >>>> +# >>>> + >>>> +include $(TOPDIR)/config.mk >>>> + >>>> +LIB = $(obj)lib$(SOC).o >>>> + >>> >>> >>> You should include the lowlevel_init.o here instead of in the board. >> >> >> Probably make sense. >> >> >> >>> >>>> +COBJS = timer.o >>>> + >>> >>> >>> Preferably emulate the Makefile in arch/arm/cpu/armv7/tegra2/. By >>> that I mean use COBJS-y instead of COBJS directly. This is more >>> forward looking to allow for features to be disabled in the future. >> >> >> no problem with that. >> >> >>> >>>> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >>>> +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) >>>> + >>>> +all: $(obj).depend $(LIB) >>>> + >>>> +$(LIB): $(OBJS) >>>> + $(call cmd_link_o_target, $(OBJS)) >>>> + >>>> >>>> +######################################################################### >>>> + >>>> +# defines $(obj).depend target >>>> +include $(SRCTREE)/rules.mk >>>> + >>>> +sinclude $(obj).depend >>>> + >>>> >>>> +######################################################################### >>>> diff --git a/arch/arm/cpu/armv7/zynq/timer.c >>>> b/arch/arm/cpu/armv7/zynq/timer.c >>>> new file mode 100644 >>>> index 0000000..d79da97 >>>> --- /dev/null >>>> +++ b/arch/arm/cpu/armv7/zynq/timer.c >>>> @@ -0,0 +1,151 @@ >>>> +/* >>>> + * Copyright (C) 2012 Michal Simek >>>> + * Copyright (C) 2011-2012 Xilinx, Inc. All rights reserved. >>>> + * >>>> + * (C) Copyright 2008 >>>> + * Guennadi Liakhovetki, DENX Software Engineering, >>>> + * >>>> + * (C) Copyright 2004 >>>> + * Philippe Robin, ARM Ltd. >>>> + * >>>> + * (C) Copyright 2002-2004 >>>> + * Gary Jennejohn, DENX Software Engineering, >>>> + * >>>> + * (C) Copyright 2003 >>>> + * Texas Instruments >>>> + * >>>> + * (C) Copyright 2002 >>>> + * Sysgo Real-Time Solutions, GmbH >>>> + * Marius Groeger >>>> + * >>>> + * (C) Copyright 2002 >>>> + * Sysgo Real-Time Solutions, GmbH >>>> + * Alex Zuepke >>>> + * >>>> + * 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 >>>> + */ >>>> + >>>> +#include >>>> +#include >>>> +#include >>>> + >>>> +DECLARE_GLOBAL_DATA_PTR; >>>> + >>>> +struct scu_timer { >>>> + u32 load; /* Timer Load Register */ >>>> + u32 counter; /* Timer Counter Register */ >>>> + u32 control; /* Timer Control Register */ >>>> +}; >>> >>> >>> You are using the timer in the ARM Cortex A9 core. This is not >>> Zynq-specific in any way. It should be made available in a different >>> place. Probably in arch/arm/lib. It should be stripped on any "XSCU" >>> references. Use ARM names instead. >> >> >> >> Based on this I can't see the reason why XSCU should be stripped. >> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0407f/BABDEAGJ.html >> >> It is SCU private timer. Agree that we can remove X prefix. >> >> >> I don't think that arch/arm/lib is the proper location for that. >> I am not arm specialist to say that this timer is available in all arm >> families >> to be in lib folder. > > I'm not sure that it is available on more than armv7 (like > arch/arm/lib/cache-pl310.c). If it is only available in armv7, then > it can go in arch/arm/cpu/armv7/. For me was just safer to use it in zynq folder because I am not familiar with others ARMs. + I see that other armv7 cpus uses own timer drivers. Any input from arm custodian will be helpful. Thanks, Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian