]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
Added bbconfig support.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Wed, 20 Jan 2010 16:57:32 +0000 (17:57 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Wed, 20 Jan 2010 16:57:32 +0000 (17:57 +0100)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
arch/arm/generic/defines/Makefile.omk
arch/arm/generic/defines/bbconf_info.h [new file with mode: 0644]
arch/arm/generic/libs/misc/Makefile.omk
arch/arm/generic/libs/misc/bbconf_info.c [new file with mode: 0644]
arch/arm/mach-lpc21xx/libs/hal/ivt.S
board/arm/ul_usb1/libs/ldscripts/lpc2103.ld-cfg
board/arm/ul_usb1/libs/ldscripts/lpc2105.ld-cfg
board/arm/ul_usb1/libs/ldscripts/lpc2148.ld-cfg

index a1c80a5b1c8dc002bfab694258452091b474de35..134ab99204cd3429a94d9df515cbd9ec3bcde6eb 100644 (file)
@@ -2,4 +2,4 @@
 
 #include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h))
 
-include_HEADERS = cpu_def.h hal_intr.h types.h
+include_HEADERS = cpu_def.h hal_intr.h types.h bbconf_info.h
diff --git a/arch/arm/generic/defines/bbconf_info.h b/arch/arm/generic/defines/bbconf_info.h
new file mode 100644 (file)
index 0000000..385628a
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _BBCONF_INFO_H_
+#define _BBCONF_INFO_H_
+
+#if 1 /* Provide FLASH start directly */
+
+#define BBCONF_FLASH_START 0x10000000
+
+#else /* FLASH start taken from ldscript */
+
+#ifndef __ASSEMBLY__
+extern char __flash_base;
+#define BBCONF_FLASH_START ((unsigned long)(&__flash_base))
+#else /*__ASSEMBLY__*/
+.global __flash_base
+#define BBCONF_FLASH_START __flash_base
+#endif /*__ASSEMBLY__*/
+
+#endif /* decission about flash start */
+
+#define BBCONF_MAGIC_VAL  0xd1ab46d6
+
+#define BBCONF_MAGIC_ADDR (BBCONF_FLASH_START+0x40)
+#define BBCONF_PTPTR_ADDR (BBCONF_FLASH_START+0x44)
+
+#define BBCONF_PTTAG_END          0x00
+#define BBCONF_PTTAG_BBVER        0x01
+#define BBCONF_PTTAG_KVPB_START   0x12
+#define BBCONF_PTTAG_KVPB_BYCFI   0x13
+#define BBCONF_PTTAG_KVPB_SIZE    0x14
+#define BBCONF_PTTAG_WITH_BATPACK 0x15
+
+#define BBCONF_PT_MAX_CNT         0x80
+
+
+#ifndef __ASSEMBLY__
+
+int bbconf_get_param(unsigned long tag, unsigned long *pval);
+
+#endif /*__ASSEMBLY__*/
+
+#endif /*_BBCONF_INFO_H_*/
index b94858cefb704bc160b58af03d6907482f763618..078e1634fc09a7756a30aedc56a296d9eaee4175 100644 (file)
@@ -4,6 +4,6 @@ include_HEADERS = system_stub.h
 
 lib_LIBRARIES = arch
 
-arch_SOURCES = system_stub.c
+arch_SOURCES = system_stub.c bbconf_info.c
 
 lib_obj_SOURCES = system_stub.c
diff --git a/arch/arm/generic/libs/misc/bbconf_info.c b/arch/arm/generic/libs/misc/bbconf_info.c
new file mode 100644 (file)
index 0000000..a0db0eb
--- /dev/null
@@ -0,0 +1,38 @@
+/*******************************************************************
+  Components for embedded applications builded for
+  laboratory and medical instruments firmware
+
+  bbconf_info.c - boot block config parameters retrieval
+
+  Copyright (C) 2001 by Pavel Pisa pisa@cmp.felk.cvut.cz
+            (C) 2002 by PiKRON Ltd. http://www.pikron.com
+
+ *******************************************************************/
+
+#include <string.h>
+#include <bbconf_info.h>
+
+int bbconf_get_param(unsigned long tag, unsigned long *pval)
+{
+  unsigned long *magic  = (unsigned long *)BBCONF_MAGIC_ADDR;
+  unsigned long *pt_ptr = (unsigned long *)BBCONF_PTPTR_ADDR;
+  unsigned long *pt;
+  int cnt;
+
+  if(*magic != BBCONF_MAGIC_VAL)
+    return -2;
+
+  if(!(*pt_ptr) || !(*pt_ptr+1))
+    return -2;
+
+  pt = (unsigned long *)*pt_ptr;
+
+  for(cnt = 0; (cnt < BBCONF_PT_MAX_CNT) &&
+      (pt[0] != BBCONF_PTTAG_END); cnt++, pt += 2) {
+    if(pt[0] == tag) {
+      *pval=pt[1];
+      return 1;
+    }
+  }
+  return -1;
+}
index 8fdbeaf83cd372b5637f49c9758cfde2aa2e5569..c51e7c708fe9177ddf93ed5f01a2f1e8cebf72eb 100644 (file)
@@ -1,6 +1,12 @@
 /* Setup vector table.  Note that undf, pabt, dabt, fiq just execute
 a null loop. */
 
+#include <bbconf_info.h>
+
+.global __bbconf_magic_addr
+.global __bbconf_ptptr_addr
+.global __bbconf_pt_addr
+
 .section .ivt,"ax"
          .code 32
          .align 0
@@ -35,6 +41,11 @@ PAbt_Handler:   B       PAbt_Handler
 DAbt_Handler:   B       DAbt_Handler
 FIQ_Handler:    B       FIQ_Handler
 
+__bbconf_magic_addr:
+       .word   BBCONF_MAGIC_VAL
+__bbconf_ptptr_addr:
+       .word   __bbconf_pt_addr
+
 #if defined(__thumb__)
 IRQ_Trampoline:
                sub     lr, lr, #4
index a29dfc82d99fd1e2e26fc251f1e9f92862ba78f4..8352fba17a957861c2bbcecce335f370b7db7df0 100644 (file)
@@ -1,3 +1,4 @@
+PROVIDE( __bbconf_pt_addr = 0 );
 
 /* Memory Definitions */
 MEMORY
index 13b4966ba6d4fd8775531479978a288fb1663aaf..932a4e5aa016dc80426561c92bb9cbee30c1adac 100644 (file)
@@ -1,6 +1,8 @@
 
 KEYVAL_PAGE_LEN = 0x00002000;
 
+PROVIDE( __bbconf_pt_addr = 0 );
+
 /* Memory Definitions */
 MEMORY
 {
index 7534208b9278d55eddcf0e1be61dc574e36d4b4b..b20b96433aa6e00e31f9164f4a18001cbc1ba068 100644 (file)
@@ -1,6 +1,8 @@
 
 KEYVAL_PAGE_LEN = 0x00001000;
 
+PROVIDE( __bbconf_pt_addr = 0 );
+
 /* Memory Definitions */
 MEMORY
 {