From b2be2bbd665328f4ec3dc14d7d84fdbac4c58e11 Mon Sep 17 00:00:00 2001 From: ppisa Date: Sun, 23 Nov 2008 14:11:32 +0100 Subject: [PATCH] Embedded code-base updated to actual version from uLan repository. Signed-off-by: ppisa --- embedded/Makefile | 5 +- embedded/app/Makefile | 4 +- embedded/app/usbcan/Makefile | 4 +- embedded/arch/Makefile | 4 +- embedded/arch/arm/Makefile | 4 +- embedded/arch/arm/generic/Makefile | 4 +- embedded/arch/arm/generic/defines/Makefile | 4 +- embedded/arch/arm/generic/libs/Makefile | 4 +- embedded/arch/arm/generic/libs/misc/Makefile | 4 +- .../arch/arm/generic/libs/misc/system_stub.c | 64 +++++++++-- .../arch/arm/generic/libs/misc/system_stub.h | 2 +- embedded/arch/arm/mach-lpc21xx/Makefile | 4 +- .../arch/arm/mach-lpc21xx/defines/Makefile | 4 +- embedded/arch/arm/mach-lpc21xx/libs/Makefile | 4 +- .../arch/arm/mach-lpc21xx/libs/hal/Makefile | 4 +- .../arch/arm/mach-lpc21xx/libs/iap/Makefile | 4 +- embedded/arch/arm/mach-lpc21xx/libs/iap/iap.c | 12 +- embedded/arch/generic/Makefile | 4 +- embedded/arch/generic/defines/Makefile | 4 +- embedded/arch/generic/defines/Makefile.omk | 2 +- embedded/arch/generic/defines/keyval_id_his.h | 12 ++ embedded/board/Makefile | 4 +- embedded/board/arm/Makefile | 4 +- embedded/board/arm/ul_usb1/Makefile | 4 +- .../board/arm/ul_usb1/config/config.u2uv2 | 1 + .../board/arm/ul_usb1/config/config.ulboot | 5 + embedded/board/arm/ul_usb1/defines/Makefile | 4 +- .../board/arm/ul_usb1/defines/system_def.h | 44 ++++++++ embedded/board/arm/ul_usb1/libs/Makefile | 4 +- .../board/arm/ul_usb1/libs/bspbase/Makefile | 4 +- .../arm/ul_usb1/libs/bspbase/bsp0hwinit.c | 6 +- .../board/arm/ul_usb1/libs/ldscripts/Makefile | 4 +- embedded/libs4c/Makefile | 5 +- embedded/libs4c/i2c/Makefile | 4 +- embedded/libs4c/i2c/i2c_c552.c | 4 +- embedded/libs4c/kbd/Makefile | 4 +- embedded/libs4c/keyval/Makefile | 4 +- embedded/libs4c/keyval/Makefile.omk | 6 +- embedded/libs4c/keyval/keyval_mem_store.c | 63 +++++++++++ embedded/libs4c/keyval/keyval_mem_store.h | 10 ++ embedded/libs4c/keyval/keyvalpb.c | 44 ++++---- embedded/libs4c/keyval/keyvalpb.h | 26 +++-- embedded/libs4c/usb/Makefile | 4 +- embedded/libs4c/usb/base/Makefile | 4 +- embedded/libs4c/usb/base/Makefile.omk | 2 +- embedded/libs4c/usb/base/usb/usb.h | 14 ++- embedded/libs4c/usb/base/usb/usb_devdes.h | 34 ++++++ embedded/libs4c/usb/base/usb/usb_spec.h | 8 +- embedded/libs4c/usb/lpcusb/Makefile | 4 +- embedded/libs4c/usb/lpcusb/lpc.c | 36 +++++- embedded/libs4c/usb/lpcusb/lpcusb.c | 9 +- embedded/libs4c/usb/more/Makefile | 4 +- embedded/libs4c/usb/more/Makefile.omk | 2 + embedded/libs4c/usb/more/usb/usb_loader.h | 13 ++- embedded/libs4c/usb/more/usb_srq.c | 106 ++++++++++++------ embedded/libs4c/usb/pdiusb/Makefile | 4 +- embedded/libs4c/usb/pdiusb/pdi.c | 33 +++++- embedded/libs4c/usb/pdiusb/usb/pdi.h | 6 + 58 files changed, 527 insertions(+), 167 deletions(-) create mode 100644 embedded/arch/generic/defines/keyval_id_his.h create mode 100644 embedded/libs4c/keyval/keyval_mem_store.c create mode 100644 embedded/libs4c/keyval/keyval_mem_store.h create mode 100644 embedded/libs4c/usb/base/usb/usb_devdes.h diff --git a/embedded/Makefile b/embedded/Makefile index bdb6d45..b22a357 100644 --- a/embedded/Makefile +++ b/embedded/Makefile @@ -1,15 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif -# DO NOT DELETE diff --git a/embedded/app/Makefile b/embedded/app/Makefile index f595272..b22a357 100644 --- a/embedded/app/Makefile +++ b/embedded/app/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/app/usbcan/Makefile b/embedded/app/usbcan/Makefile index f595272..b22a357 100644 --- a/embedded/app/usbcan/Makefile +++ b/embedded/app/usbcan/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/Makefile b/embedded/arch/Makefile index f595272..b22a357 100644 --- a/embedded/arch/Makefile +++ b/embedded/arch/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/Makefile b/embedded/arch/arm/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/Makefile +++ b/embedded/arch/arm/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/generic/Makefile b/embedded/arch/arm/generic/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/generic/Makefile +++ b/embedded/arch/arm/generic/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/generic/defines/Makefile b/embedded/arch/arm/generic/defines/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/generic/defines/Makefile +++ b/embedded/arch/arm/generic/defines/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/generic/libs/Makefile b/embedded/arch/arm/generic/libs/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/generic/libs/Makefile +++ b/embedded/arch/arm/generic/libs/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/generic/libs/misc/Makefile b/embedded/arch/arm/generic/libs/misc/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/generic/libs/misc/Makefile +++ b/embedded/arch/arm/generic/libs/misc/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/generic/libs/misc/system_stub.c b/embedded/arch/arm/generic/libs/misc/system_stub.c index 24fa2f9..31a8f66 100644 --- a/embedded/arch/arm/generic/libs/misc/system_stub.c +++ b/embedded/arch/arm/generic/libs/misc/system_stub.c @@ -30,7 +30,7 @@ _read (int file, int _write (int file, - char * ptr, + const char * ptr, int len) { if(!system_stub_ops.write) @@ -76,6 +76,12 @@ _exit (int n) while(1); } +void abort(void) +{ + ((local_call_t*)0)(); + while(1); +} + int _kill (int n, int m) { @@ -83,14 +89,14 @@ _kill (int n, int m) } int -_getpid (int n) +_getpid (void) { return 1; } -caddr_t -_sbrk (int incr) +void * +_sbrk (ptrdiff_t incr) { extern char end asm ("end"); /* Defined by the linker. */ static char *heap_end; @@ -121,7 +127,7 @@ _sbrk (int incr) heap_end += incr; - return (caddr_t) prev_heap_end; + return /*(caddr_t)*/ prev_heap_end; } int @@ -136,13 +142,13 @@ int _stat (const char *fname, struct stat *st) } int -_link (void) +_link (const char *path1, const char *path2 ) { return -1; } int -_unlink (void) +_unlink (const char *path) { return -1; } @@ -207,3 +213,47 @@ _rename (const char * oldpath, const char * newpath) { return -1; } + +/* extern (.*) ([^ ]*) _PARAMS \(\(struct _reent \*(,*)(.*)\)\); */ +/* \1 \2 (struct _reent *\3\4) { return \2(\4);} */ + +struct _reent; + +int _close_r(struct _reent * reent, int file) + { return _close(file);} +/* +int _fcntl_r(struct _reent *, int, int, int) + { return _fcntl( int, int, int);} +*/ +int _fstat_r(struct _reent * reent, int file, struct stat * st) + { return _fstat(file, st);} + +int _getpid_r(struct _reent * reent) + { return _getpid();} + +int _kill_r(struct _reent * reent, int n, int m) + { return _kill(n, m);} + +int _link_r(struct _reent * reent, const char *path1, const char *path2) + { return _link(path1, path2);} + +_off_t _lseek_r(struct _reent * reent, int file, _off_t pos, int dir) + { return _lseek(file, pos, dir);} + +int _open_r(struct _reent * reent, const char * path, int flags, int opts) + { return _open(path, flags, opts);} + +_ssize_t _read_r(struct _reent * reent, int file, void * ptr, size_t len) + { return _read(file, ptr, len);} + +void *_sbrk_r(struct _reent * reent, ptrdiff_t incr) + { return _sbrk(incr);} + +int _stat_r(struct _reent * reent, const char * path, struct stat * st) + { return _stat(path, st);} + +int _unlink_r(struct _reent * reent, const char * path) + { return _unlink(path);} + +_ssize_t _write_r(struct _reent * reent, int file, const void * ptr, size_t len) + { return _write(file, ptr, len);} diff --git a/embedded/arch/arm/generic/libs/misc/system_stub.h b/embedded/arch/arm/generic/libs/misc/system_stub.h index b1e3375..d697635 100644 --- a/embedded/arch/arm/generic/libs/misc/system_stub.h +++ b/embedded/arch/arm/generic/libs/misc/system_stub.h @@ -7,7 +7,7 @@ typedef struct system_stub_ops_t { int (*open)(const char * path, int flags, ...); int (*close)(int file); int (*read)(int file, char * ptr, int len); - int (*write)(int file, char * ptr, int len); + int (*write)(int file, const char * ptr, int len); int (*lseek)(int file, int ptr, int dir); } system_stub_ops_t; diff --git a/embedded/arch/arm/mach-lpc21xx/Makefile b/embedded/arch/arm/mach-lpc21xx/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/mach-lpc21xx/Makefile +++ b/embedded/arch/arm/mach-lpc21xx/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/mach-lpc21xx/defines/Makefile b/embedded/arch/arm/mach-lpc21xx/defines/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/mach-lpc21xx/defines/Makefile +++ b/embedded/arch/arm/mach-lpc21xx/defines/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/mach-lpc21xx/libs/Makefile b/embedded/arch/arm/mach-lpc21xx/libs/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/mach-lpc21xx/libs/Makefile +++ b/embedded/arch/arm/mach-lpc21xx/libs/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/mach-lpc21xx/libs/hal/Makefile b/embedded/arch/arm/mach-lpc21xx/libs/hal/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/mach-lpc21xx/libs/hal/Makefile +++ b/embedded/arch/arm/mach-lpc21xx/libs/hal/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/mach-lpc21xx/libs/iap/Makefile b/embedded/arch/arm/mach-lpc21xx/libs/iap/Makefile index f595272..b22a357 100644 --- a/embedded/arch/arm/mach-lpc21xx/libs/iap/Makefile +++ b/embedded/arch/arm/mach-lpc21xx/libs/iap/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/arm/mach-lpc21xx/libs/iap/iap.c b/embedded/arch/arm/mach-lpc21xx/libs/iap/iap.c index 9403f68..cc39097 100644 --- a/embedded/arch/arm/mach-lpc21xx/libs/iap/iap.c +++ b/embedded/arch/arm/mach-lpc21xx/libs/iap/iap.c @@ -2,6 +2,8 @@ #include #include +#define IAP_PLL_FULL_SPEED 1 + #define CMD_SUCCESS 0 #define BUSY 11 @@ -21,7 +23,7 @@ inline int addr2sec(unsigned long addr) { return addr/0x2000; } -#elif defined INC_LPC214x_H +#elif defined INC_LPC214x_H || defined INC_LPC2348_H inline int addr2sec(unsigned long addr) { if (addr<0x8000) return (addr>>12); @@ -74,14 +76,18 @@ int lpcisp_erase(void *addr, int len) if (end/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/generic/defines/Makefile b/embedded/arch/generic/defines/Makefile index f595272..b22a357 100644 --- a/embedded/arch/generic/defines/Makefile +++ b/embedded/arch/generic/defines/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/arch/generic/defines/Makefile.omk b/embedded/arch/generic/defines/Makefile.omk index 5bbf0f6..65c8142 100644 --- a/embedded/arch/generic/defines/Makefile.omk +++ b/embedded/arch/generic/defines/Makefile.omk @@ -1,4 +1,4 @@ # -*- makefile -*- -include_HEADERS += byteswap.h endian.h lt_timer.h lt_timer_types.h +include_HEADERS += byteswap.h endian.h lt_timer.h lt_timer_types.h keyval_id_his.h #include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h)) diff --git a/embedded/arch/generic/defines/keyval_id_his.h b/embedded/arch/generic/defines/keyval_id_his.h new file mode 100644 index 0000000..f07cc45 --- /dev/null +++ b/embedded/arch/generic/defines/keyval_id_his.h @@ -0,0 +1,12 @@ +#ifndef _KEYVAL_ID_HIS_H_ +#define _KEYVAL_ID_HISC_H_ + +#include "keyvalpb.h" + +#define KVPB_KEYID_BLINDER_POSSITION 0x20 +#define KVPB_KEYID_BLINDER_OPENTIME 0x21 +#define KVPB_KEYID_BLP_UP 0x22 +#define KVPB_KEYID_BLP_DOWN 0x23 + +#endif /* _KEYVAL_ID_HIS_H_ */ + diff --git a/embedded/board/Makefile b/embedded/board/Makefile index f595272..b22a357 100644 --- a/embedded/board/Makefile +++ b/embedded/board/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/Makefile b/embedded/board/arm/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/Makefile +++ b/embedded/board/arm/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/ul_usb1/Makefile b/embedded/board/arm/ul_usb1/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/ul_usb1/Makefile +++ b/embedded/board/arm/ul_usb1/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/ul_usb1/config/config.u2uv2 b/embedded/board/arm/ul_usb1/config/config.u2uv2 index 6deb39e..e320cf6 100644 --- a/embedded/board/arm/ul_usb1/config/config.u2uv2 +++ b/embedded/board/arm/ul_usb1/config/config.u2uv2 @@ -14,6 +14,7 @@ CONFIG_OC_UL_DRV_U450_TMELATE=y #CONFIG_KEYVAL=y CONFIG_USB_BASE=y CONFIG_USB_LPCUSB=y +CONFIG_USB_MORE=y CONFIG_APP_U2U_V2=y #CONFIG_APP_TEST_LPC=y diff --git a/embedded/board/arm/ul_usb1/config/config.ulboot b/embedded/board/arm/ul_usb1/config/config.ulboot index 52b0004..509c3d7 100644 --- a/embedded/board/arm/ul_usb1/config/config.ulboot +++ b/embedded/board/arm/ul_usb1/config/config.ulboot @@ -5,6 +5,7 @@ MACH=lpc21xx BOARD=ul_usb1 CONFIG_ULBOOT=y +CONFIG_ULBOOT_WITH_USB=y CONFIG_OC_UL_DRV_SYSLESS=y CONFIG_OC_UL_DRV_U450_VARPINS=y @@ -13,6 +14,10 @@ CONFIG_OC_UL_DRV_U450_TMELATE=y CONFIG_KEYVAL=y CONFIG_ULAN_DY=y +CONFIG_USB_BASE=y +CONFIG_USB_LPCUSB=y +CONFIG_USB_MORE=y + # CONFIG_STDIO_COM_PORT=0 CROSS_COMPILE = arm-elf- diff --git a/embedded/board/arm/ul_usb1/defines/Makefile b/embedded/board/arm/ul_usb1/defines/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/ul_usb1/defines/Makefile +++ b/embedded/board/arm/ul_usb1/defines/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/ul_usb1/defines/system_def.h b/embedded/board/arm/ul_usb1/defines/system_def.h index 12c6cac..4364199 100644 --- a/embedded/board/arm/ul_usb1/defines/system_def.h +++ b/embedded/board/arm/ul_usb1/defines/system_def.h @@ -252,4 +252,48 @@ #define I2C_DRV_SYSLESS_BITRATE 100000 #define I2C_DRV_SYSLESS_SLADR 0 +/***************************************************************************/ +/* Constants for JTAG and supply control port pins: */ +#define JTAGIN (IO0PIN) // Control ports are on P5.x +#define JTAGSET (IO0SET) +#define JTAGCLR (IO0CLR) +#define JTAGDIR (IO0DIR) +#define JTAGOUT_RDBACK (IO0PIN) // used to read actual TCLK output value +#undef JTAGSEL +#define TMS_PIN (1<<20) // P0.20 JTAG TMS input pin +#define TDI_PIN (1<<19) // P0.19 JTAG TDI input pin (SIMO1 if SPI mode) +#define TDO_PIN (1<<18) // P0.18 JTAG TDO output pin (SOMI1 if SPI mode) +#define TCK_PIN (1<<17) // P0.17 JTAG TCK input pin (UCLK1 if SPI mode) +#define TDICTRL2_PIN 0 // Px.x switch TDO to TDI +#define TDICTRL1_PIN 0 // Px.x connects TDI +#define TEST_PIN 0 // Px.x TEST pin (20 & 28-pin devices only) +#define VCCTGT_PIN 0 // Px.x Supply voltage of target board +#define TCLK_PIN TDI_PIN // P7.3 TDI (former XOUT) receives TCLK + +#define ClrTMS() do {(JTAGCLR) |= (TMS_PIN);} while(0); +#define SetTMS() do {(JTAGSET) |= (TMS_PIN);} while(0); +#define ClrTDI() do {(JTAGCLR) |= (TDI_PIN);} while(0); +#define SetTDI() do {(JTAGSET) |= (TDI_PIN);} while(0); +#define ClrTCK() do {(JTAGCLR) |= (TCK_PIN);} while(0); +#define SetTCK() do {(JTAGSET) |= (TCK_PIN);} while(0); +#define ClrTCLK() do {(JTAGCLR) |= (TCLK_PIN);} while(0); +#define SetTCLK() do {(JTAGSET) |= (TCLK_PIN);} while(0); +#define StoreTCLK() ((JTAGOUT_RDBACK & TCLK_PIN) ? 1:0) +#define RestoreTCLK(x) (x == 0 ? (JTAGCLR |= TCLK_PIN) : (JTAGSET |= TCLK_PIN)) +#define ScanTDO() ((JTAGIN & TDO_PIN)) // assumes TDO to be bit0 + +#define JTAG_IODELAY() __asm__ __volatile__ ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n": : ) + +/****************************************************************************/ +/* Define section for user, related to the controller used (here MSP430F149)*/ +/****************************************************************************/ + +// Constants for Error LED control port: +#define JTAGLEDSET (IO0SET) // LED ports are P0.x +#define JTAGLEDCLR (IO0CLR) // LED ports are P0.x +#define JTAGLEDDIR (IO0DIR) +#undef JTAGLEDSEL /*P1SEL*/ +#define JTAGLEDRED (1<<13) // P0.13 Red LED (ERROR) +#define JTAGLEDGREEN (1<<15) // P0.15 Green LED (OK) + #endif /* _SYSTEM_DEF_H_ */ diff --git a/embedded/board/arm/ul_usb1/libs/Makefile b/embedded/board/arm/ul_usb1/libs/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/ul_usb1/libs/Makefile +++ b/embedded/board/arm/ul_usb1/libs/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/ul_usb1/libs/bspbase/Makefile b/embedded/board/arm/ul_usb1/libs/bspbase/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/ul_usb1/libs/bspbase/Makefile +++ b/embedded/board/arm/ul_usb1/libs/bspbase/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/board/arm/ul_usb1/libs/bspbase/bsp0hwinit.c b/embedded/board/arm/ul_usb1/libs/bspbase/bsp0hwinit.c index eceffb4..468e172 100644 --- a/embedded/board/arm/ul_usb1/libs/bspbase/bsp0hwinit.c +++ b/embedded/board/arm/ul_usb1/libs/bspbase/bsp0hwinit.c @@ -88,7 +88,7 @@ void timerInit(void) #ifdef CONFIG_STDIO_COM_PORT -int uartcon_write(int file, char * ptr, int len) +int uartcon_write(int file, const char * ptr, int len) { int cnt; unsigned char ch; @@ -269,7 +269,9 @@ int uLanInit() UL_DRV_SYSLESS_BAUD, /* baud */ UL_DRV_SYSLESS_MY_ADR_DEFAULT, /* my adr */ #ifdef CONFIG_OC_UL_DRV_U450_VARPINS - #ifdef CONFIG_OC_UL_DRV_U450_VARPINS_MSRSWAP + #if defined(CONFIG_OC_UL_DRV_U450_VARPINS_DIRNEG) && defined(CONFIG_OC_UL_DRV_U450_VARPINS_MSRSWAP) + "16450-dirneg-msrswap", /* chip name */ + #elif defined(CONFIG_OC_UL_DRV_U450_VARPINS_MSRSWAP) "16450-msrswap", /* chip name */ #elif defined(CONFIG_OC_UL_DRV_U450_VARPINS_DIRNEG) "16450-dirneg", /* chip name */ diff --git a/embedded/board/arm/ul_usb1/libs/ldscripts/Makefile b/embedded/board/arm/ul_usb1/libs/ldscripts/Makefile index f595272..b22a357 100644 --- a/embedded/board/arm/ul_usb1/libs/ldscripts/Makefile +++ b/embedded/board/arm/ul_usb1/libs/ldscripts/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/Makefile b/embedded/libs4c/Makefile index bdb6d45..b22a357 100644 --- a/embedded/libs4c/Makefile +++ b/embedded/libs4c/Makefile @@ -1,15 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif -# DO NOT DELETE diff --git a/embedded/libs4c/i2c/Makefile b/embedded/libs4c/i2c/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/i2c/Makefile +++ b/embedded/libs4c/i2c/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/i2c/i2c_c552.c b/embedded/libs4c/i2c/i2c_c552.c index 56837d0..7cede72 100644 --- a/embedded/libs4c/i2c/i2c_c552.c +++ b/embedded/libs4c/i2c/i2c_c552.c @@ -79,14 +79,14 @@ static int c552_sfnc_ms_end(struct i2c_drv *drv) i2c_msg_head_t *msg=drv->msg_act; if(msg) { - if((msg->flags&I2C_MSG_CB_END) && (msg->callback)) - msg->callback(drv,I2C_MSG_CB_END,msg); if(msg->flags&I2C_MSG_REPEAT){ drv->master_queue=msg->next; }else{ i2c_drv_queue_msg(msg->flags&I2C_MSG_NOPROC?NULL:&drv->proc_queue,msg); } msg->flags|=I2C_MSG_FINISHED; + if((msg->flags&I2C_MSG_CB_END) && (msg->callback)) + msg->callback(drv,I2C_MSG_CB_END,msg); } if(drv->master_queue) { diff --git a/embedded/libs4c/kbd/Makefile b/embedded/libs4c/kbd/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/kbd/Makefile +++ b/embedded/libs4c/kbd/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/keyval/Makefile b/embedded/libs4c/keyval/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/keyval/Makefile +++ b/embedded/libs4c/keyval/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/keyval/Makefile.omk b/embedded/libs4c/keyval/Makefile.omk index 36743e7..35b5272 100644 --- a/embedded/libs4c/keyval/Makefile.omk +++ b/embedded/libs4c/keyval/Makefile.omk @@ -5,5 +5,9 @@ default_CONFIG = CONFIG_KEYVAL=n ifeq ($(CONFIG_KEYVAL),y) lib_LIBRARIES = keyval include_HEADERS += keyvalpb.h keyval_id.h -keyval_SOURCES += keyvalpb.c +keyval_SOURCES += keyvalpb.c + +include_HEADERS += keyval_mem_store.h +keyval_SOURCES += keyval_mem_store.c + endif #CONFIG_KEYVAL diff --git a/embedded/libs4c/keyval/keyval_mem_store.c b/embedded/libs4c/keyval/keyval_mem_store.c new file mode 100644 index 0000000..b32e4df --- /dev/null +++ b/embedded/libs4c/keyval/keyval_mem_store.c @@ -0,0 +1,63 @@ +/******************************************************************************/ +/* Key Value block in RAM */ + +#include +#include +#include +#include + +int kvpb_mem_erase(kvpb_block_t *store, void *base,int size) +{ + memset(base,0xff,size); + return 0; +} + +int kvpb_mem_copy(kvpb_block_t *store, void *dst,const void *src,int len) +{ + memcpy(dst,src,len); + return 0; +} + +#ifndef KVPB_MINIMALIZED +kvpb_block_t *kvpb_store_create_ram(int size) +{ + kvpb_block_t *store; + int res; + + if(!size) + size=0x4000; + + store = malloc(sizeof(*store)); + if(store == NULL) + return NULL; + + memset(store, 0, sizeof(*store)); + + store->base = malloc(size*2); + if(store->base == NULL) + goto error_ret; + + store->size = size; + store->flags = KVPB_DESC_DOUBLE; + #ifndef KVPB_MINIMALIZED + store->erase = kvpb_mem_erase, + store->copy = kvpb_mem_copy; + #endif /* KVPB_MINIMALIZED */ + + kvpb_block_erase(store, store->base,store->size); + if(store->flags & KVPB_DESC_DOUBLE) + kvpb_block_erase(store, (uint8_t*)store->base+store->size,store->size); + + res=kvpb_check(store,3); + + if(res<0) + goto error_ret; + + return store; + + error_ret: + if(store) + free(store); + return NULL; +} +#endif /* KVPB_MINIMALIZED */ diff --git a/embedded/libs4c/keyval/keyval_mem_store.h b/embedded/libs4c/keyval/keyval_mem_store.h new file mode 100644 index 0000000..af3fdeb --- /dev/null +++ b/embedded/libs4c/keyval/keyval_mem_store.h @@ -0,0 +1,10 @@ +#ifndef _KEYVAL_MEM_STORE_H +#define _KEYVAL_MEM_STORE_H + +#include + +int kvpb_mem_erase(kvpb_block_t *store, void *base,int size); +int kvpb_mem_copy(kvpb_block_t *store, void *dst,const void *src,int len); +kvpb_block_t *kvpb_store_create_ram(int size); + +#endif /*_KEYVAL_MEM_STORE_H*/ diff --git a/embedded/libs4c/keyval/keyvalpb.c b/embedded/libs4c/keyval/keyvalpb.c index 8dd6d1e..e1f48b3 100644 --- a/embedded/libs4c/keyval/keyvalpb.c +++ b/embedded/libs4c/keyval/keyvalpb.c @@ -17,7 +17,7 @@ some of the licenses, he/she can delete appropriate line. Warning, if you delete all lines, you are not allowed to distribute source code and/or binaries utilizing code. - + See files COPYING and README for details. *******************************************************************/ @@ -57,16 +57,16 @@ kvpb_sum_t kvpb_memsum(KVPB_DPTRTYPE uint8_t *base, kvpb_size_t size) * File: keyvalpb.c */ KVPB_DPTRTYPE kvpb_sum_t *kvpb_get_psum(kvpb_block_t *kvpb_block, - KVPB_DPTRTYPE uint8_t *base, kvpb_size_t size) + KVPB_DPTRTYPE uint8_t *base, kvpb_size_t size) #else KVPB_DPTRTYPE kvpb_sum_t *__kvpb_get_psum( - KVPB_DPTRTYPE uint8_t *base, kvpb_size_t size) + KVPB_DPTRTYPE uint8_t *base, kvpb_size_t size) #endif { KVPB_DPTRTYPE kvpb_sum_t *psum; psum=kvpb_psum_align(kvpb_block,(KVPB_DPTRTYPE kvpb_sum_t*)(base+size)-1); while((KVPB_DPTRTYPE uint8_t*)psum>=base) { - if (*kvpb_psum_valid_loc(kvpb_block,psum)!=0) + if (*kvpb_psum_valid_loc(kvpb_block,psum)!=0) return psum; psum=kvpb_psum_align(kvpb_block,psum-1); } @@ -142,9 +142,9 @@ int __kvpb_check(uint8_t mode) KVPB_DPTRTYPE uint8_t *p; KVPB_LOCALDATA int ret=-1; KVPB_LOCALDATA kvpb_sum_t sum; - + kvpb_block->flags&=~KVPB_DESC_USE2ND; - + p=kvpb_region_base(kvpb_block,0); kvpb_block->psum1=kvpb_get_psum(kvpb_block,p,kvpb_block->size); if (kvpb_block->psum1) { @@ -172,7 +172,7 @@ int __kvpb_check(uint8_t mode) if(ret>=0) ret=0; } - + if(ret){ if(!mode) { kvpb_block->flags|=KVPB_DESC_RO; @@ -207,7 +207,7 @@ int __kvpb_check(uint8_t mode) kvpb_block->flags&=~KVPB_DESC_RO; } } - kvpb_block_flush(kvpb_block); + kvpb_block_flush(kvpb_block); if(ret>=0) kvpb_block->flags|=KVPB_DESC_VALID; return ret; } @@ -236,7 +236,7 @@ KVPB_DPTRTYPE kvpb_key_t *__kvpb_first(uint8_t mode) } while(*kvpb_keyid_valid(kvpb_block,key)==KVPB_KEYID_INVALID) { key=kvpb_next(kvpb_block,key); - if (!key) + if (!key) return NULL; } return key->size!=KVPB_EMPTY?key:NULL; @@ -310,9 +310,9 @@ KVPB_DPTRTYPE kvpb_key_t *__kvpb_find(kvpb_keyid_t keyid, uint8_t mode, KVPB_DPT * Return Value: Operation cannot be finished. * File: keyvalpb.c */ -int kvpb_compact_region(kvpb_block_t *kvpb_block, uint8_t mode, kvpb_keyid_t keyid) +int kvpb_compact_region(kvpb_block_t *kvpb_block, uint8_t mode, kvpb_keyid_t keyid) #else -int __kvpb_compact_region(uint8_t mode, kvpb_keyid_t keyid) +int __kvpb_compact_region(uint8_t mode, kvpb_keyid_t keyid) #endif { KVPB_DPTRTYPE uint8_t *p; @@ -321,22 +321,24 @@ int __kvpb_compact_region(uint8_t mode, kvpb_keyid_t keyid) p=kvpb_region_base(kvpb_block,0); src=(KVPB_DPTRTYPE kvpb_key_t*)kvpb_region_base(kvpb_block,1); des=(KVPB_DPTRTYPE kvpb_key_t*)p; - kvpb_block->psum1=kvpb_psum_align(kvpb_block, - (KVPB_DPTRTYPE kvpb_sum_t*)(kvpb_region_base(kvpb_block,1))-1); if((!mode && (kvpb_block->flags & KVPB_DESC_USE2ND))||(mode==2)) { if(!(kvpb_block->flags&KVPB_DESC_DOUBLE)) return -1; + des=src; src=(KVPB_DPTRTYPE kvpb_key_t*)p; - des=(KVPB_DPTRTYPE kvpb_key_t*)kvpb_region_base(kvpb_block,1); + p=(KVPB_DPTRTYPE uint8_t *)des; kvpb_block->psum2=kvpb_psum_align(kvpb_block, - (KVPB_DPTRTYPE kvpb_sum_t*)(kvpb_region_base(kvpb_block,2))-1); + (KVPB_DPTRTYPE kvpb_sum_t*)(p+kvpb_block->size)-1); + } else { + kvpb_block->psum1=kvpb_psum_align(kvpb_block, + (KVPB_DPTRTYPE kvpb_sum_t*)(p+kvpb_block->size)-1); } kvpb_block_flush(kvpb_block); kvpb_block_erase(kvpb_block,des,kvpb_block->size); while(src) { int s=kvpb_chunk_align(kvpb_block,src->size+sizeof(kvpb_key_t)); if((*kvpb_keyid_valid(kvpb_block,src)!=KVPB_KEYID_INVALID) && (src->keyid!=keyid)) { - kvpb_block_copy(kvpb_block,des,src,s); + kvpb_block_copy(kvpb_block,des,src,s); if (kvpb_block->flags&KVPB_DESC_CHUNKWO) s+=kvpb_chunk_size(kvpb_block); des=(KVPB_DPTRTYPE kvpb_key_t*)((uint8_t*)des+s); } @@ -397,12 +399,12 @@ int __kvpb_set_key(kvpb_keyid_t keyid, kvpb_size_t size, const void *buf) KVPB_DPTRTYPE kvpb_sum_t *psum; KVPB_DPTRTYPE kvpb_key_t *key; KVPB_DPTRTYPE uint8_t *p; - + if(!(kvpb_block->flags&KVPB_DESC_VALID)) return -1; if(kvpb_block->flags&KVPB_DESC_RO) return -1; - + /*first region*/ psum=kvpb_psum_align(kvpb_block,kvpb_block->psum1); sum=0; @@ -429,10 +431,10 @@ int __kvpb_set_key(kvpb_keyid_t keyid, kvpb_size_t size, const void *buf) p=kvpb_region_base(kvpb_block,0); sum=kvpb_memsum(p,(KVPB_DPTRTYPE uint8_t*)kvpb_block->psum1-p); - kvpb_block_copy(kvpb_block,kvpb_block->psum1,&sum,sizeof(kvpb_sum_t)); + kvpb_block_copy(kvpb_block,kvpb_block->psum1,&sum,sizeof(kvpb_sum_t)); kvpb_block_flush(kvpb_block); if(!(kvpb_block->flags&KVPB_DESC_DOUBLE)) - return key?size:-1; + return key?size:-1; /*Write in the first region failed, switching to backup region */ if(kvpb_block->flags&KVPB_DESC_RO){ @@ -462,7 +464,7 @@ int __kvpb_set_key(kvpb_keyid_t keyid, kvpb_size_t size, const void *buf) kvpb_block_copy(kvpb_block,(uint8_t*)(key+1),buf,/*align???*/ size); } kvpb_block_flush(kvpb_block); - + p=kvpb_region_base(kvpb_block,1); sum=kvpb_memsum(p,(KVPB_DPTRTYPE uint8_t*)kvpb_block->psum2-p); kvpb_block_copy(kvpb_block,kvpb_block->psum2,&sum,sizeof(kvpb_sum_t)); diff --git a/embedded/libs4c/keyval/keyvalpb.h b/embedded/libs4c/keyval/keyvalpb.h index dbb7774..210a02b 100644 --- a/embedded/libs4c/keyval/keyvalpb.h +++ b/embedded/libs4c/keyval/keyvalpb.h @@ -17,7 +17,7 @@ some of the licenses, he/she can delete appropriate line. Warning, if you delete all lines, you are not allowed to distribute source code and/or binaries utilizing code. - + See files COPYING and README for details. *******************************************************************/ @@ -63,7 +63,7 @@ #define KVPB_DESC_RO 0x08 #define KVPB_DESC_CHUNKWO 0x10 #define KVPB_DESC_ALIGN4 0x40 -#define KVPB_DESC_FLASH 0x80 +#define KVPB_DESC_FLASH 0x80 #ifdef KVPB_MINIMALIZED typedef uint16_t kvpb_sum_t; @@ -84,7 +84,7 @@ typedef uint32_t kvpb_keyid_t; * %KVPB_DESC_USE2ND - data will be read from the second copy because first one is damaged; * %KVPB_DESC_VALID - at least one region is valid; * %KVPB_DESC_RO - because of some problems, only read access is allowed - * %KVPB_DESC_CHUNKWO - chunk can be written only once between erase operations + * %KVPB_DESC_CHUNKWO - chunk can be written only once between erase operations * %KVPB_DESC_ALIGN4 - data has to be aligned to four bytes * %KVPB_DESC_FLASH - flash memory is used for data storage * @psum1: Pointer to the control checksum of the first data region @@ -111,14 +111,15 @@ typedef struct kvpb_block { } kvpb_block_t; -#define kvpb_region_base(block,regidx) (((block)->base+(regidx*(block)->size))) +#define kvpb_region_base(block,regidx) \ + ((((KVPB_DPTRTYPE uint8_t *)(block)->base)+(regidx*(block)->size))) #ifndef KVPB_MINIMALIZED #ifndef kvpb_chunk_size #define kvpb_chunk_size(store) ((store)->chunk_size<4?4:(store)->chunk_size) #endif /*kvpb_chunk_size*/ #define kvpb_chunk_size_mask(store) (kvpb_chunk_size(store)-1) - + /** * kvpb_chunk_align - Round up KVPB size to minimal store chunk size multiple * @store: Pointer to the KVPB access information/state structure @@ -135,7 +136,7 @@ typedef struct kvpb_block { /** * kvpb_psum_align - Round up KVPB size to minimal store chunk size multiple * @store: Pointer to the KVPB access information/state structure - * @psum: Pointer to proposed location of next check sum location + * @psum: Pointer to proposed location of next check sum location * * Return Value: Pointer to next check sum location rounded down to next slot. * File: keyvalpb.h @@ -180,7 +181,7 @@ typedef struct kvpb_block { */ static inline int kvpb_block_erase(struct kvpb_block *store, void *base,int size) { - return store->erase(store, base,size) ; + return store->erase(store, base,size) ; } /** @@ -222,15 +223,18 @@ typedef struct kvpb_block { ((KVPB_DPTRTYPE kvpb_sum_t*)((unsigned)(x)&~kvpb_chunk_size_mask(store))) #define kvpb_psum_valid_loc(store,x) \ ((kvpb_sum_t*)((char*)(x)+0*kvpb_chunk_size(store))) +#ifndef kvpb_block_copy #define kvpb_block_erase(store, base, size) flash_erase(base, size) - #define kvpb_block_copy(store, des, src, len) flash_copy(des, src, len) - #define kvpb_block_flush(store) flash_flush() + #define kvpb_block_copy(store, des, src, len) flash_copy(des, src, len) + #define kvpb_block_flush(store) flash_flush() + /* forward declarations for external procedures */ int flash_erase(void *base,int size); int flash_copy(void *des,const void *src,int len); #ifndef flash_flush int flash_flush(void); #endif /* flash_flush */ +#endif /* kvpb_block_copy */ #endif /* KVPB_MINIMALIZED */ /** @@ -284,7 +288,7 @@ int __kvpb_check(uint8_t mode); #define kvpb_find(block, keyid, mode, key) __kvpb_find(keyid, mode, key) #define kvpb_get_key(block, keyid, size, buf) __kvpb_get_key(keyid, size, buf) #define kvpb_set_key(block, keyid, size, buf) __kvpb_set_key(keyid, size, buf) -#define kvpb_err_keys(block,keyid) kvpb_set_key(block,keyid,0,NULL) +#define kvpb_err_keys(block,keyid) kvpb_set_key(block,keyid,0,NULL) #define kvpb_check(block, mode) __kvpb_check(mode) #define kvpb_compact_region(block, mode, keyid) __kvpb_compact_region(mode, keyid) #define kvpb_get_cfk(block,mode,size) __kvpb_get_cfk(mode,size) @@ -301,7 +305,7 @@ int __kvpb_check(uint8_t mode); */ #define kvpb_for_each(root, key,mode) \ for(key=kvpb_first(root,mode);key;\ - key=kvpb_next(key)) + key=kvpb_next(root, key)) /** * kvpb_for_each - Iterate over all key value pairs matching given key ID diff --git a/embedded/libs4c/usb/Makefile b/embedded/libs4c/usb/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/usb/Makefile +++ b/embedded/libs4c/usb/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/usb/base/Makefile b/embedded/libs4c/usb/base/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/usb/base/Makefile +++ b/embedded/libs4c/usb/base/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/usb/base/Makefile.omk b/embedded/libs4c/usb/base/Makefile.omk index 01d6e0b..b9d0731 100644 --- a/embedded/libs4c/usb/base/Makefile.omk +++ b/embedded/libs4c/usb/base/Makefile.omk @@ -9,7 +9,7 @@ lib_LIBRARIES = usbbase #include_HEADERS = -nobase_include_HEADERS = usb/usb.h usb/usb_spec.h usb/usb_srq.h usb/usbdebug.h +nobase_include_HEADERS = usb/usb.h usb/usb_spec.h usb/usb_srq.h usb/usbdebug.h usb/usb_devdes.h usbbase_SOURCES = usb.c usbdebug.c diff --git a/embedded/libs4c/usb/base/usb/usb.h b/embedded/libs4c/usb/base/usb/usb.h index 40338a6..4807b59 100644 --- a/embedded/libs4c/usb/base/usb/usb.h +++ b/embedded/libs4c/usb/base/usb/usb.h @@ -9,6 +9,7 @@ #define _USB_MODULE_ #include "usb_spec.h" + #include "usb_devdes.h" #if defined(SDCC) || defined(__KEIL__) || defined(__C51__) /*8051 special handling*/ @@ -86,14 +87,19 @@ int (*vendor_fnc)( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to vendor request processing function */ int (*class_fnc)( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to class request processing function */ + const USB_DEVICE_DESCRIPTORS_TABLE *devdes_table; + #ifdef USB_WITH_UDEV_FNC int (*init)( struct usb_device_t *udev) REENTRANT_SIGN; /* function for hw specific part of initialize usb device */ + int (*set_addr)( struct usb_device_t *udev, unsigned char addr) REENTRANT_SIGN; /* set device address */ + int (*set_configuration)( struct usb_device_t *udev, unsigned char iCfg) REENTRANT_SIGN; /* set device configuration */ int (*connect)( struct usb_device_t *udev) REENTRANT_SIGN; /* function for hw specific part of connecting device to usb */ int (*disconnect)( struct usb_device_t *udev) REENTRANT_SIGN; /* function for hw specific part of disconnecting device to usb */ void (*ack_setup)( struct usb_device_t *udev) REENTRANT_SIGN; /* function for hw specific part of control response acknowledge */ void (*ack_control_setup)( struct usb_device_t *udev) REENTRANT_SIGN; /* function for hw specific part of control response acknowledge */ int (*check_events)( struct usb_device_t *udev) REENTRANT_SIGN; /* hw specific part of function for checking events */ - void (*stall)( usb_ep_t *ep) REENTRANT_SIGN; /* hw specific function for stall endpoint */ + void (*stall)( usb_ep_t *ep) REENTRANT_SIGN; /* hw specific function to stall endpoint */ + void (*unstall)( usb_ep_t *ep) REENTRANT_SIGN; /* hw specific function to unstall endpoint */ int (*read_endpoint)( usb_ep_t *ep, void *ptr, int size) REENTRANT_SIGN; int (*write_endpoint)( usb_ep_t *ep, const void *ptr, int size) REENTRANT_SIGN; #endif /*USB_WITH_UDEV_FNC*/ @@ -131,7 +137,8 @@ int usb_connect( usb_device_t *udev); int usb_disconnect( usb_device_t *udev); void usb_stall( usb_ep_t *ep); - + void usb_unstall( usb_ep_t *ep); + #define usb_stall_ep0( udev) \ do { \ usb_stall( &(udev->ep0)); \ @@ -157,6 +164,8 @@ #define usb_udev_is_fnc(_M_udev, _M_fnc) (_M_udev->_M_fnc) #define usb_udev_init(_M_udev) (_M_udev->init(_M_udev)) + #define usb_udev_set_addr(_M_udev, _M_addr) (_M_udev->set_addr(_M_udev, _M_addr)) + #define usb_udev_set_configuration(_M_udev, _M_iCfg) (_M_udev->set_configuration(_M_udev, _M_iCfg)) #define usb_udev_connect(_M_udev) (_M_udev->connect(_M_udev)) #define usb_udev_disconnect(_M_udev) (_M_udev->disconnect(_M_udev)) #define usb_udev_ack_setup(_M_udev) (_M_udev->ack_setup(_M_udev)) @@ -164,6 +173,7 @@ #define usb_udev_check_events(_M_udev) (_M_udev->check_events(_M_udev)) #define usb_udev_stall(_M_ep) ((_M_ep)->udev->stall(_M_ep)) + #define usb_udev_unstall(_M_ep) ((_M_ep)->udev->unstall(_M_ep)) #define usb_udev_read_endpoint(_M_ep, _M_ptr, _M_size) \ ((_M_ep)->udev->read_endpoint(_M_ep, _M_ptr, _M_size)) diff --git a/embedded/libs4c/usb/base/usb/usb_devdes.h b/embedded/libs4c/usb/base/usb/usb_devdes.h new file mode 100644 index 0000000..11d1337 --- /dev/null +++ b/embedded/libs4c/usb/base/usb/usb_devdes.h @@ -0,0 +1,34 @@ +/*************************************************/ +/*** Module : USB device descriptor table ***/ +/*** Author : Roman Bartosinski, Pavel Pisa ***/ +/*** Modify : 10.11.2008 ***/ +/*************************************************/ + +#ifndef _USB_DEVICE_DESCRIPTOR_TABLE + #define _USB_DEVICE_DESCRIPTOR_TABLE + + #include "usb_spec.h" + + struct _tag_usb_device_configuration_entry { + const USB_CONFIGURATION_DESCRIPTOR *pConfigDescription; + int iConfigTotalLength; + }; + typedef struct _tag_usb_device_configuration_entry + USB_DEVICE_CONFIGURATION_ENTRY, *PUSB_DEVICE_CONFIGURATION_ENTRY; + + struct _tag_usb_device_descriptors_table { + const USB_DEVICE_DESCRIPTOR *pDeviceDescription; + const USB_DEVICE_CONFIGURATION_ENTRY *pConfigurations; + const USB_INTERFACE_DESCRIPTOR **pInterfaceDescriptors; + const PUSB_STRING_DESCRIPTOR *pStrings; + int iNumStrings; + uint8_t bNumEndpoints; + uint8_t bNumConfigurations; + uint8_t bNumInterfaces; + }; + typedef struct _tag_usb_device_descriptors_table + USB_DEVICE_DESCRIPTORS_TABLE, *PUSB_DEVICE_DESCRIPTOR_TABLE; + + +#endif /*_USB_DEVICE_DESCRIPTOR_TABLE*/ + diff --git a/embedded/libs4c/usb/base/usb/usb_spec.h b/embedded/libs4c/usb/base/usb/usb_spec.h index 841a2a4..7d6f87b 100644 --- a/embedded/libs4c/usb/base/usb/usb_spec.h +++ b/embedded/libs4c/usb/base/usb/usb_spec.h @@ -29,7 +29,7 @@ uint16_t wLength; } USB_DEVICE_REQUEST; -/****************************************************************************************/ +/****************************************************************************************/ /*** definitions for USB tranfer standard packets described in USB secif. - chapter 9 ***/ /****************************************************************************************/ #define DEVICE_ADDRESS_MASK 0x7F @@ -102,7 +102,7 @@ uint8_t iSerialNumber; uint8_t bNumConfigurations; } PACKED; - typedef struct _tag_usb_device_descriptor + typedef struct _tag_usb_device_descriptor USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; /* *** DEVICE_QUALIFIER *** (spec. 9.6.2) */ @@ -203,7 +203,7 @@ } PACKED; typedef struct _tag_usb_string_descriptor USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR; - + /*******************************************/ /*** USB_IF - Defined USB device classes ***/ @@ -224,5 +224,5 @@ /* define application specific device class subclasses */ #define USB_APPL_SUBCLASS_FIRMWARE_UPDATE 0x01 #define USB_APPL_SUBCLASS_IRDA_USB_BRIDGE 0x02 - + #endif diff --git a/embedded/libs4c/usb/lpcusb/Makefile b/embedded/libs4c/usb/lpcusb/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/usb/lpcusb/Makefile +++ b/embedded/libs4c/usb/lpcusb/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/usb/lpcusb/lpc.c b/embedded/libs4c/usb/lpcusb/lpc.c index 7d9f20c..159c899 100644 --- a/embedded/libs4c/usb/lpcusb/lpc.c +++ b/embedded/libs4c/usb/lpcusb/lpc.c @@ -8,6 +8,23 @@ #include #include +/* set device address */ +int usb_lpc_set_addr( usb_device_t *udev, unsigned char addr) { + lpc_usb_set_addr(addr); + return 0; +} + +int usb_lpc_set_configuration( usb_device_t *udev, unsigned char iCfg) { + lpc_usb_config_device(iCfg); + if ( iCfg) { + int i; + for(i = 0; i < udev->cntep; i++) { + lpc_usb_configEP(udev->ep[i].epnum, udev->ep[i].max_packet_size); + } + } + return 0; +} + /* connect usb */ int usb_lpc_connect( usb_device_t *udev) { lpc_write_cmd_data(USB_CMD_SET_DEV_STAT,USB_DAT_WR_BYTE(USBC_DEV_CON)); @@ -27,12 +44,16 @@ void usb_lpc_ack_setup( usb_device_t *udev) { /* stall endpoint X */ void usb_lpc_stall( usb_ep_t *ep) { - if ( ep->epnum) { - lpc_write_cmd_data(USB_CMD_SEL_EP_CLRI(lpc_ep2addr(ep->epnum)),USB_DAT_WR_BYTE(USBC_EP_STAT_ST)); - } else { // endpoint0 - lpc_write_cmd_data(USB_CMD_SEL_EP_CLRI(lpc_ep2addr(0x80|ep->epnum)),USB_DAT_WR_BYTE(USBC_EP_STAT_ST)); - lpc_write_cmd_data(USB_CMD_SEL_EP_CLRI(lpc_ep2addr(ep->epnum)),USB_DAT_WR_BYTE(USBC_EP_STAT_ST)); - } + if (!ep->epnum) + lpc_usb_setstallEP(0x80|ep->epnum); + lpc_usb_setstallEP(ep->epnum); +} + +/* unstall endpoint X */ +void usb_lpc_unstall( usb_ep_t *ep) { + if (!ep->epnum) + lpc_usb_clrstallEP(0x80|ep->epnum); + lpc_usb_clrstallEP(ep->epnum); } /** @@ -147,10 +168,13 @@ int usb_lpc_write_endpoint( usb_ep_t *ep, const void *ptr, int size) int usb_lpc_init( usb_device_t *udev) { udev->connect = usb_lpc_connect; + udev->set_addr = usb_lpc_set_addr; + udev->set_configuration = usb_lpc_set_configuration; udev->disconnect = usb_lpc_disconnect; udev->ack_setup = usb_lpc_ack_setup; udev->ack_control_setup = NULL; udev->stall = usb_lpc_stall; + udev->unstall = usb_lpc_unstall; udev->check_events = usb_lpc_check_events; udev->read_endpoint = usb_lpc_read_endpoint; udev->write_endpoint = usb_lpc_write_endpoint; diff --git a/embedded/libs4c/usb/lpcusb/lpcusb.c b/embedded/libs4c/usb/lpcusb/lpcusb.c index 1cf130d..09b1eac 100644 --- a/embedded/libs4c/usb/lpcusb/lpcusb.c +++ b/embedded/libs4c/usb/lpcusb/lpcusb.c @@ -150,11 +150,10 @@ int lpc_usb_read_endpoint( unsigned int ep_num, void *ptr, int size) while (USBCtrl & USBCtrl_RD_EN) { dwData = USBRxData; if (p != NULL) { - for (i = 0; i < 4; i++) { - if (size-- != 0) { - *p = dwData & 0xFF; - p++; - } + for (i = 0; (i < 4) && size; i++) { + size--; + *p = dwData & 0xFF; + p++; dwData >>= 8; } } diff --git a/embedded/libs4c/usb/more/Makefile b/embedded/libs4c/usb/more/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/usb/more/Makefile +++ b/embedded/libs4c/usb/more/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/usb/more/Makefile.omk b/embedded/libs4c/usb/more/Makefile.omk index c28fbda..e90fb15 100644 --- a/embedded/libs4c/usb/more/Makefile.omk +++ b/embedded/libs4c/usb/more/Makefile.omk @@ -5,6 +5,8 @@ default_CONFIG = CONFIG_USB_MORE=n ifeq ($(CONFIG_USB_MORE),y) lib_LIBRARIES = usbmore +nobase_include_HEADERS = usb/usb_loader.h + #shared_LIBRARIES = #include_HEADERS = diff --git a/embedded/libs4c/usb/more/usb/usb_loader.h b/embedded/libs4c/usb/more/usb/usb_loader.h index 5c215e4..1246534 100644 --- a/embedded/libs4c/usb/more/usb/usb_loader.h +++ b/embedded/libs4c/usb/more/usb/usb_loader.h @@ -18,14 +18,21 @@ #define USB_VENDOR_MEMORY_BY_BULK 0x80 -#if 0 /* MSP430 */ +/* COMMON */ +#define USB_VENDOR_TARGET_RAM 0x01 +#define USB_VENDOR_TARGET_FLASH 0x02 +/* MSP430 */ #define USB_VENDOR_TARGET_ADAPTER 0x01 #define USB_VENDOR_TARGET_MSP430 0x02 -#else /* MSC1210 */ +/* MSC1210 */ #define USB_VENDOR_TARGET_DATA 0x01 #define USB_VENDOR_TARGET_XDATA 0x02 -#endif #define USB_VENDOR_TARGET_MASK 0x07 +/* bRequest - type of request */ +/* wValue - lower address word */ +/* wIndex - higher address word */ +/* wLength - data or length of data */ + #endif /*_USB_LOADER_H*/ diff --git a/embedded/libs4c/usb/more/usb_srq.c b/embedded/libs4c/usb/more/usb_srq.c index 463f039..d235bb5 100644 --- a/embedded/libs4c/usb/more/usb_srq.c +++ b/embedded/libs4c/usb/more/usb_srq.c @@ -5,20 +5,19 @@ /*****************************************************/ #include - +#include #include #include #include -#include #include #include -#include // **************************** int usb_stdreq_get_status( usb_device_t *udev) { unsigned char c, buf[2] = { 0, 0}; unsigned char epid = (unsigned char) udev->request.wIndex; + usb_ep_t *ep0 = &(udev->ep0); usb_debug_print( DEBUG_LEVEL_HIGH, ("GetStatus\n")); switch( udev->request.bmRequestType & USB_RECIPIENT) { @@ -31,6 +30,7 @@ case USB_RECIPIENT_INTERFACE: break; case USB_RECIPIENT_ENDPOINT: + #if 0 if ( epid & USB_ENDPOINT_DIRECTION_MASK) c = pdiSelectEp(pdiEp2Idx(epid)); // endpoint in else @@ -40,16 +40,19 @@ #else buf[0] = 0; #endif + #endif + #warning usb_stdreq_get_status is DUMMY break; default: return USB_COMPLETE_FAIL; } - pdiWriteEndpoint( PDI_EP0_TX, 2, buf); + usb_udev_write_endpoint( ep0, buf, 2); return USB_COMPLETE_OK; } int usb_stdreq_clear_feature( usb_device_t *udev) { + usb_ep_t *ep = NULL; USB_DEVICE_REQUEST *dreq = &(udev->request); unsigned char epid = (unsigned char) dreq->wIndex; @@ -63,11 +66,20 @@ } break; case USB_RECIPIENT_ENDPOINT: + if(!epid) { + ep = &udev->ep0; + } else { + unsigned char i; + for(i = 0; i < udev->cntep; i++) { + if(udev->ep[i].epnum == epid) { + ep = &udev->ep[i]; + } + } + if(!ep) + break; + } if ( dreq->wValue == USB_FEATURE_ENDPOINT_STALL) { - if ( epid & USB_ENDPOINT_DIRECTION_MASK) - pdiSetEpStatus(pdiEp2Idx(epid), 0); // clear TX stall for IN on EPn - else - pdiSetEpStatus(pdiEp2Idx(epid), 0); // clear RX stall for OUT on EPn + usb_udev_unstall(ep); usb_udev_ack_setup( udev); return USB_COMPLETE_OK; } @@ -78,6 +90,7 @@ int usb_stdreq_set_feature( usb_device_t *udev) { + usb_ep_t *ep = NULL; USB_DEVICE_REQUEST *dreq = &(udev->request); unsigned char epid = (unsigned char) dreq->wIndex; @@ -91,11 +104,20 @@ } break; case USB_RECIPIENT_ENDPOINT: + if(!epid) { + ep = &udev->ep0; + } else { + unsigned char i; + for(i = 0; i < udev->cntep; i++) { + if(udev->ep[i].epnum == epid) { + ep = &udev->ep[i]; + } + } + if(!ep) + break; + } if ( dreq->wValue == USB_FEATURE_ENDPOINT_STALL) { - if ( epid & USB_ENDPOINT_DIRECTION_MASK) - pdiSetEpStatus( pdiEp2Idx(epid), 1); // set TX stall for IN on EPn - else - pdiSetEpStatus( pdiEp2Idx(epid), 1); // set RX stall for OUT on EPn + usb_udev_stall(ep); usb_udev_ack_setup( udev); return USB_COMPLETE_OK; } @@ -106,18 +128,21 @@ int usb_stdreq_set_address( usb_device_t *udev) { + int adr; USB_DEVICE_REQUEST *dreq = &(udev->request); - usb_debug_print( DEBUG_LEVEL_HIGH, ("SetAddr\n")); + adr=dreq->wValue & DEVICE_ADDRESS_MASK; + usb_debug_print( DEBUG_LEVEL_HIGH, ("SetAddr-%d\n",adr)); usb_udev_ack_setup( udev); - pdiSetAddressEnable( (dreq->wValue & DEVICE_ADDRESS_MASK) + PDI_ENAD_ENABLE); + usb_udev_set_addr( udev, adr); return USB_COMPLETE_OK; } int usb_stdreq_get_configuration( usb_device_t *udev) { unsigned char buf = udev->configuration; //usb_flags.configured; + usb_ep_t *ep0 = &(udev->ep0); usb_debug_print( DEBUG_LEVEL_HIGH, ("GetConfig\n")); - pdiWriteEndpoint( PDI_EP0_TX, 1, &buf); + usb_udev_write_endpoint( ep0, &buf, 1); return USB_COMPLETE_OK; } @@ -126,26 +151,37 @@ USB_DEVICE_REQUEST *dreq = &(udev->request); unsigned char iCfg = dreq->wValue & 0xff; usb_debug_print( DEBUG_LEVEL_HIGH, ("SetConfig\n")); - if ( iCfg < 2) { // put device in unconfigured state or set configuration 1 ( no else) - usb_udev_ack_setup( udev); - pdiSetEndpointEnable( 0); // USBInitUnconfig(); - if ( iCfg) { - pdiSetEndpointEnable( PDI_EPEN_ENABLE); //USBInitConfig(); - udev->flags |= USB_FLAG_CONFIGURED; - } else { - udev->flags &= ~USB_FLAG_CONFIGURED; + while (1) { // put device in unconfigured state or set configuration 1 ( no else) + const USB_DEVICE_CONFIGURATION_ENTRY *pcd = udev->devdes_table->pConfigurations; + if(iCfg) { + unsigned char i = udev->devdes_table->bNumConfigurations; + for(; i && (pcd->pConfigDescription->bConfigurationValue != iCfg); i--, pcd++); + if(!i) + break; } + + udev->flags &= ~USB_FLAG_CONFIGURED; + + usb_udev_ack_setup( udev); + + usb_udev_set_configuration( udev, iCfg); + udev->configuration = iCfg; //usb_flags.configured = iCfg; + + if(iCfg) + udev->flags |= USB_FLAG_CONFIGURED; + return USB_COMPLETE_OK; - } else - return USB_COMPLETE_FAIL; + } + return USB_COMPLETE_FAIL; } int usb_stdreq_get_interface( usb_device_t *udev) { unsigned char buf = 0; /// udev->interface + usb_ep_t *ep0 = &(udev->ep0); usb_debug_print( DEBUG_LEVEL_HIGH, ("GetIface\n")); - pdiWriteEndpoint( PDI_EP0_TX, 1, &buf); + usb_udev_write_endpoint( ep0, &buf, 1); return USB_COMPLETE_OK; } @@ -164,9 +200,11 @@ int usb_stdreq_get_descriptor( usb_device_t *udev) { + unsigned char confidx; unsigned char *pDesc; unsigned short Len = 0; USB_DEVICE_REQUEST *dreq = &(udev->request); + const USB_DEVICE_CONFIGURATION_ENTRY *pconfent; int i; i = (dreq->wValue >> 8) & 0xff; /* MSB part of wValue */ @@ -175,22 +213,26 @@ switch (i) { case USB_DESCRIPTOR_TYPE_DEVICE: - pDesc = (unsigned char *)&DeviceDescription; + pDesc = (unsigned char *)udev->devdes_table->pDeviceDescription; Len = sizeof( USB_DEVICE_DESCRIPTOR); break; case USB_DESCRIPTOR_TYPE_CONFIGURATION: - pDesc = (unsigned char *)&ConfigDescription; - Len = CONFIG_DESCRIPTOR_LENGTH; + /* FIXME confidx = udev->configuration; */ + confidx = 0; + pconfent = &udev->devdes_table->pConfigurations[confidx]; + pDesc = (unsigned char *)pconfent->pConfigDescription; + Len = pconfent->iConfigTotalLength; break; case USB_DESCRIPTOR_TYPE_INTERFACE: - pDesc = (unsigned char *)&ConfigDescription.interface; + /* FIXME multiple interfaces */ + pDesc = (unsigned char *)udev->devdes_table->pInterfaceDescriptors[0]; Len = sizeof( USB_INTERFACE_DESCRIPTOR); break; case USB_DESCRIPTOR_TYPE_STRING: i = dreq->wValue & 0xff; /* LSB part of wValue */ /*printf("Get descriptor indx=0x%02x\n", i);*/ - if ( i < CNT_STRINGS) { - pDesc = (unsigned char *) StringDescriptors[ i]; + if ( i < udev->devdes_table->iNumStrings) { + pDesc = (unsigned char *) udev->devdes_table->pStrings[i]; Len = *pDesc; /*usb_debug_print(0,("indx=0x%02x ptr=%p len=%d : '%c'\n", i, pDesc, Len, pDesc[2]));*/ } else { diff --git a/embedded/libs4c/usb/pdiusb/Makefile b/embedded/libs4c/usb/pdiusb/Makefile index f595272..b22a357 100644 --- a/embedded/libs4c/usb/pdiusb/Makefile +++ b/embedded/libs4c/usb/pdiusb/Makefile @@ -1,14 +1,14 @@ # Generic directory or leaf node makefile for OCERA make framework ifndef MAKERULES_DIR -MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" == `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) endif ifeq ($(MAKERULES_DIR),) all : default .DEFAULT:: @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" -else +else include $(MAKERULES_DIR)/Makefile.rules endif diff --git a/embedded/libs4c/usb/pdiusb/pdi.c b/embedded/libs4c/usb/pdiusb/pdi.c index 3229d36..1cc4cb2 100644 --- a/embedded/libs4c/usb/pdiusb/pdi.c +++ b/embedded/libs4c/usb/pdiusb/pdi.c @@ -38,6 +38,24 @@ #endif /*PDIUSBD11*/ + int usb_pdi_set_addr( usb_device_t *udev, unsigned char addr) { + #if !defined(PDIUSBH11A_MULTIPLE) // D11,D12,H11,H11A_S(emb.fnc) + pdiSetAddressEnable(addr | PDI_ENAD_ENABLE); + #else + /*void pdiSetEmbFncAddressEnable( unsigned char byFnc, unsigned char byAddress, unsigned char byEnable);*/ + #error usb_pdi_set_addr not implemented for PDIUSBH11A_MULTIPLE + #endif + return 0; + } + + int usb_pdi_set_configuration( usb_device_t *udev, unsigned char iCfg) USB_UDEV_REENTRANT_SIGN + { + pdiSetEndpointEnable( 0); // USBInitUnconfig(); + if ( iCfg) { + pdiSetEndpointEnable( PDI_EPEN_ENABLE); //USBInitConfig(); + } + return 0; + } /* connect usb */ int usb_pdi_connect( usb_device_t *udev) { @@ -157,7 +175,17 @@ if ( LastInt) { pdiSetEpStatus( ep->epnum, PDI_SET_EP_STALLED); } else { // endpoint0 pdiSetEpStatus( PDI_EP0_TX, PDI_SET_EP_STALLED); - pdiSetEpStatus( PDI_EP0_RX, PDI_SET_EP_STALLED); + pdiSetEpStatus( PDI_EP0_RX, PDI_SET_EP_STALLED); + } + } + +/* stall endpoint X */ + void usb_pdi_unstall( usb_ep_t *ep) { + if ( ep->epnum) { + pdiSetEpStatus( ep->epnum, 0); + } else { // endpoint0 + pdiSetEpStatus( PDI_EP0_TX, 0); + pdiSetEpStatus( PDI_EP0_RX, 0); } } @@ -184,10 +212,13 @@ if ( LastInt) { #ifndef USB_PDI_DIRECT_FNC udev->connect = usb_pdi_connect; + udev->set_addr = usb_pdi_set_addr; + udev->set_configuration = usb_pdi_set_configuration; udev->disconnect = usb_pdi_disconnect; udev->ack_setup = usb_pdi_ack_setup; udev->ack_control_setup = usb_pdi_ack_control_setup; udev->stall = usb_pdi_stall; + udev->unstall = usb_pdi_unstall; udev->check_events = usb_pdi_check_events; udev->read_endpoint = usb_pdi_read_endpoint; udev->write_endpoint = usb_pdi_write_endpoint; diff --git a/embedded/libs4c/usb/pdiusb/usb/pdi.h b/embedded/libs4c/usb/pdiusb/usb/pdi.h index 21bb5db..3493c00 100644 --- a/embedded/libs4c/usb/pdiusb/usb/pdi.h +++ b/embedded/libs4c/usb/pdiusb/usb/pdi.h @@ -18,6 +18,8 @@ #define usb_udev_is_fnc(_M_udev, _M_fnc) (1) #define usb_udev_init usb_pdi_init + #define usb_udev_set_addr usb_pdi_set_addr + #define usb_udev_set_configuration usb_pdi_set_configuration #define usb_udev_connect usb_pdi_connect #define usb_udev_disconnect usb_pdi_disconnect #define usb_udev_ack_setup usb_pdi_ack_setup @@ -25,6 +27,7 @@ #define usb_udev_check_events usb_pdi_check_events #define usb_udev_stall usb_pdi_stall + #define usb_udev_unstall usb_pdi_unstall #define usb_udev_read_endpoint usb_pdi_read_endpoint #define usb_udev_write_endpoint usb_pdi_write_endpoint @@ -33,6 +36,8 @@ #ifdef USB_PDI_EXPORT_FNC int usb_pdi_init( usb_device_t *udev); + int usb_pdi_set_addr( usb_device_t *udev, unsigned char addr); + int usb_pdi_set_configuration( usb_device_t *udev, unsigned char iCfg); int usb_pdi_connect( usb_device_t *udev); int usb_pdi_disconnect( usb_device_t *udev); void usb_pdi_ack_setup( usb_device_t *udev); @@ -40,6 +45,7 @@ int usb_pdi_check_events( usb_device_t *udev); void usb_pdi_stall( usb_ep_t *ep); + void usb_pdi_unstall( usb_ep_t *ep); int usb_pdi_read_endpoint( usb_ep_t *ep, void *ptr, int size) USB_UDEV_REENTRANT_SIGN; int usb_pdi_write_endpoint( usb_ep_t *ep, const void *ptr, int size) USB_UDEV_REENTRANT_SIGN; -- 2.39.2