[U-Boot] [PATCH v5] da830: Move common code out of da830evm.c file

TI's DA850/OMAP-L138 platform is similar to DA830/OMAP-L137 in many aspects. So instead of repeating the same code in multiple files, move the common code to a different file and call those functions from the respective da830/da850 files.
Signed-off-by: Sudhakar Rajashekhara sudhakar.raj@ti.com Acked-by: Nick Thompson nick.thompson@ge.com Acked-by: Ben Gardiner bengardiner@nanometrics.ca --- Since v4: a. Moved the irq_init() and davinci_configure_lpsc_items() functions to board/davinci/da830evm/common.c file. b. Renamed davinci_configure_lpsc_items to da8xx_configure_lpsc_items. c. Created board/davinci/da830evm/common.h file.
board/davinci/da830evm/Makefile | 2 +- board/davinci/da830evm/common.c | 55 +++++++++++++++++++++++++++++++++++++ board/davinci/da830evm/common.h | 30 ++++++++++++++++++++ board/davinci/da830evm/da830evm.c | 29 ++++++++----------- 4 files changed, 98 insertions(+), 18 deletions(-) create mode 100644 board/davinci/da830evm/common.c create mode 100644 board/davinci/da830evm/common.h
diff --git a/board/davinci/da830evm/Makefile b/board/davinci/da830evm/Makefile index 02636fa..ee00057 100644 --- a/board/davinci/da830evm/Makefile +++ b/board/davinci/da830evm/Makefile @@ -27,7 +27,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := da830evm.o +COBJS := da830evm.o common.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/davinci/da830evm/common.c b/board/davinci/da830evm/common.c new file mode 100644 index 0000000..9cd5204 --- /dev/null +++ b/board/davinci/da830evm/common.c @@ -0,0 +1,55 @@ +/* + * Miscellaneous DA8XX functions. + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include "common.h" + +#ifndef CONFIG_USE_IRQ +void irq_init(void) +{ + /* + * Mask all IRQs by clearing the global enable and setting + * the enable clear for all the 90 interrupts. + */ + + writel(0, &davinci_aintc_regs->ger); + + writel(0, &davinci_aintc_regs->hier); + + writel(0xffffffff, &davinci_aintc_regs->ecr1); + writel(0xffffffff, &davinci_aintc_regs->ecr2); + writel(0xffffffff, &davinci_aintc_regs->ecr3); +} +#endif + +/* + * Enable PSC for various peripherals. + */ +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + const int n_items) +{ + int i; + + for (i = 0; i < n_items; i++) + lpsc_on(item[i].lpsc_no); + + return 0; +} diff --git a/board/davinci/da830evm/common.h b/board/davinci/da830evm/common.h new file mode 100644 index 0000000..7ae63a6 --- /dev/null +++ b/board/davinci/da830evm/common.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __COMMON_H +#define __COMMON_H + +struct lpsc_resource { + const int lpsc_no; +}; + +void irq_init(void); +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + int n_items); + +#endif /* __COMMON_H */ diff --git a/board/davinci/da830evm/da830evm.c b/board/davinci/da830evm/da830evm.c index 6385443..57506d6 100644 --- a/board/davinci/da830evm/da830evm.c +++ b/board/davinci/da830evm/da830evm.c @@ -41,6 +41,7 @@ #include <asm/arch/emac_defs.h> #include <asm/io.h> #include "../common/misc.h" +#include "common.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -120,21 +121,18 @@ static const struct pinmux_resource pinmuxes[] = { #endif };
+static const struct lpsc_resource lpsc[] = { + { DAVINCI_LPSC_AEMIF }, /* NAND, NOR */ + { DAVINCI_LPSC_SPI0 }, /* Serial Flash */ + { DAVINCI_LPSC_EMAC }, /* image download */ + { DAVINCI_LPSC_UART2 }, /* console */ + { DAVINCI_LPSC_GPIO }, +}; + int board_init(void) { #ifndef CONFIG_USE_IRQ - /* - * Mask all IRQs by clearing the global enable and setting - * the enable clear for all the 90 interrupts. - */ - - writel(0, &davinci_aintc_regs->ger); - - writel(0, &davinci_aintc_regs->hier); - - writel(0xffffffff, &davinci_aintc_regs->ecr1); - writel(0xffffffff, &davinci_aintc_regs->ecr2); - writel(0xffffffff, &davinci_aintc_regs->ecr3); + irq_init(); #endif
#ifdef CONFIG_NAND_DAVINCI @@ -165,11 +163,8 @@ int board_init(void) * assuming here that the DSP bootloader has set the IOPU * such that PSC access is available to ARM */ - lpsc_on(DAVINCI_LPSC_AEMIF); /* NAND, NOR */ - lpsc_on(DAVINCI_LPSC_SPI0); /* Serial Flash */ - lpsc_on(DAVINCI_LPSC_EMAC); /* image download */ - lpsc_on(DAVINCI_LPSC_UART2); /* console */ - lpsc_on(DAVINCI_LPSC_GPIO); + if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc))) + return 1;
/* setup the SUSPSRC for ARM to control emulation suspend */ writel(readl(&davinci_syscfg_regs->suspsrc) &

On Mon, Jun 7, 2010 at 4:29 AM, Sudhakar Rajashekhara sudhakar.raj@ti.com wrote:
TI's DA850/OMAP-L138 platform is similar to DA830/OMAP-L137 in many aspects. So instead of repeating the same code in multiple files, move the common code to a different file and call those functions from the respective da830/da850 files.
Very nice. Thank you, Sudhakar.
Acked-by: Ben Gardiner bengardiner@nanometrics.ca
It applies cleanly to master (9bb3b3d) of git://git.denx.de/u-boot.git and only the da830evm binary has increased in size by the application of this patch:
--- ../davinci-before.out 2010-06-04 09:18:44.130839762 -0400 +++ ../davinci-after.out 2010-06-07 10:09:25.300590587 -0400 @@ -24,8 +24,9 @@ Configuring for davinci_dm6467evm board. 91776 4776 26100 122652 1df1c ./u-boot Configuring for da830evm board... text data bss dec hex filename - 147475 4888 295320 447683 6d4c3 ./u-boot + 147543 4888 295320 447751 6d507 ./u-boot

-----Original Message----- From: Sudhakar Rajashekhara [mailto:sudhakar.raj@ti.com] Sent: Monday, June 07, 2010 4:30 AM To: u-boot@lists.denx.de Cc: Paulraj, Sandeep; Rajashekhara, Sudhakar Subject: [PATCH v5] da830: Move common code out of da830evm.c file
TI's DA850/OMAP-L138 platform is similar to DA830/OMAP-L137 in many aspects. So instead of repeating the same code in multiple files, move the common code to a different file and call those functions from the respective da830/da850 files.
Signed-off-by: Sudhakar Rajashekhara sudhakar.raj@ti.com Acked-by: Nick Thompson nick.thompson@ge.com Acked-by: Ben Gardiner bengardiner@nanometrics.ca
Since v4: a. Moved the irq_init() and davinci_configure_lpsc_items() functions to board/davinci/da830evm/common.c file. b. Renamed davinci_configure_lpsc_items to da8xx_configure_lpsc_items. c. Created board/davinci/da830evm/common.h file.
board/davinci/da830evm/Makefile | 2 +- board/davinci/da830evm/common.c | 55 +++++++++++++++++++++++++++++++++++++ board/davinci/da830evm/common.h | 30 ++++++++++++++++++++ board/davinci/da830evm/da830evm.c | 29 ++++++++----------- 4 files changed, 98 insertions(+), 18 deletions(-) create mode 100644 board/davinci/da830evm/common.c create mode 100644 board/davinci/da830evm/common.h
Sudhakar,
I tried to apply the other patch in the original series for DA850 support.
Unfortunately it would not apply because it seems as if you have modified the Makefile.
Could you please submit updated patches for DA850 on top of this patch?
Testing both DA 830 and 850 would also be appreciated as I don't have those EVMs
Thanks, Sandeep
participants (3)
-
Ben Gardiner
-
Paulraj, Sandeep
-
Sudhakar Rajashekhara