Merge branch 'master' of git://git.denx.de/u-boot-usb
authorWolfgang Denk <wd@denx.de>
Mon, 12 Dec 2011 06:58:58 +0000 (07:58 +0100)
committerWolfgang Denk <wd@denx.de>
Mon, 12 Dec 2011 06:58:58 +0000 (07:58 +0100)
* 'master' of git://git.denx.de/u-boot-usb:
  USB: efikamx: Enable USB on EfikaMX and EfikaSB
  USB: Add generic ULPI layer and a viewport
  USB: EHCI: Allow EHCI post-powerup configuration in board files
  USB: mx51evk: add end enable USB host support on port 1
  USB: mx53loco: add end enable USB host support on port 1
  USB: MX5: Add MX5 usb post-init callback
  USB: MX5: Abstract out mx51 USB pixmux configuration
  USB: MX5: add generic USB EHCI support for mx51 and mx53
  USB: MX5: add helper functions to enable USB clocks
  usb:gadget:s5p Enable the USB Gadget framework at GONI
  usb:gadget:s5p USB Device Controller (UDC) implementation
  ehci: speed up initialization
  usb: add help for missing start subcommand
  cosmetic: remove excess whitespace from usb command help
  usb: align usb_endpoint_descriptor to 16-bit boundary
  usbtty: init endpoints prior to startup events
  pxa: convert pxa27x_udc to use read and write functions
  pxa: activate the first usb host port on pxa27x by default
  pxa: fix usb host register mismatch
  ehci-fsl: correct size of ehci caplength
  USB: Add usb_event_poll() to get keyboards working with EHCI
  USB: gadaget: add Marvell controller support
  USB: Fix complaints about strict aliasing in OHCI-HCD
  USB: Drop dead code from usb_kbd.c
  USB: Rework usb_kbd.c
  USB: Add functionality to poll the USB keyboard via control EP

arch/arm/lib/eabi_compat.c
arch/sandbox/config.mk
arch/sandbox/cpu/Makefile
arch/sandbox/cpu/cpu.c
arch/sandbox/cpu/os.c
arch/sandbox/lib/board.c
board/sandbox/sandbox/sandbox.c
common/Makefile
include/os.h
post/post.c

index e1b87bebadbf727dc425ce7c1899e1cb6896a879..2028dbd715b97c6454e1807717a0008332c3e76b 100644 (file)
@@ -23,3 +23,7 @@ int raise (int signum)
 void __aeabi_unwind_cpp_pr0(void)
 {
 };
+
+void __aeabi_unwind_cpp_pr1(void)
+{
+};
index ab330265e6200920adc05ae1788eba21b7431e95..2ec1bb772bd7beeb21b52bdcb404f414b5d798ed 100644 (file)
@@ -18,3 +18,4 @@
 # MA 02111-1307 USA
 
 PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__
+PLATFORM_LIBS += -lrt
index e5e860b71565197641407a362591c68712e71c44..2ae0f7155c022967b7950c915eb128d7da660317 100644 (file)
@@ -23,9 +23,6 @@
 # MA 02111-1307 USA
 #
 
-# os.c is build in the system environment, so needs standard includes
-CPPFLAGS_arch/sandbox/cpu/os.o += -I/usr/include
-
 include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(CPU).o
@@ -40,6 +37,10 @@ all: $(obj).depend $(LIB)
 $(LIB):        $(OBJS)
        $(call cmd_link_o_target, $(OBJS))
 
+# os.c is build in the system environment, so needs standard includes
+$(obj)os.o: ALL_CFLAGS := $(filter-out -nostdinc,$(ALL_CFLAGS))
+$(obj).depend.os: CPPFLAGS := $(filter-out -nostdinc,$(CPPFLAGS))
+
 #########################################################################
 
 # defines $(obj).depend target
index c7bf8a9155801ca162402a0560e8ea1a1ae1a9e2..d7684d38eb7f9b35909a5ad625f063bc22ab552e 100644 (file)
@@ -34,12 +34,12 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 /* delay x useconds */
 void __udelay(unsigned long usec)
 {
-       /* Ignore this for now */
+       os_usleep(usec);
 }
 
 unsigned long timer_get_us(void)
 {
-       return 0;
+       return os_get_nsec() / 1000;
 }
 
 int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
index f80faac1f5ff5d911e9b76f92a803b542aeb04cf..6d55b5cbcef54577d16e5efec823cd38916c2bd8 100644 (file)
 #include <stdlib.h>
 #include <termios.h>
 #include <unistd.h>
+#include <time.h>
+#include <errno.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/mman.h>
+#include <linux/types.h>
 
 #include <os.h>
 
@@ -87,3 +91,33 @@ void os_tty_raw(int fd)
 
        atexit(os_fd_restore);
 }
+
+void *os_malloc(size_t length)
+{
+       return mmap(NULL, length, PROT_READ | PROT_WRITE,
+                       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+}
+
+void os_usleep(unsigned long usec)
+{
+       usleep(usec);
+}
+
+u64 os_get_nsec(void)
+{
+#if defined(CLOCK_MONOTONIC) && defined(_POSIX_MONOTONIC_CLOCK)
+       struct timespec tp;
+       if (EINVAL == clock_gettime(CLOCK_MONOTONIC, &tp)) {
+               struct timeval tv;
+
+               gettimeofday(&tv, NULL);
+               tp.tv_sec = tv.tv_sec;
+               tp.tv_nsec = tv.tv_usec * 1000;
+       }
+       return tp.tv_sec * 1000000000ULL + tp.tv_nsec;
+#else
+       struct timeval tv;
+       gettimeofday(&tv, NULL);
+       return tv.tv_sec * 1000000000ULL + tv.tv_usec * 1000;
+#endif
+}
index ae5a5176056cc7322d051edc94c117b03e05a02c..b7997e9a73ee63cc92d825fe0c200a4d3bf47fcf 100644 (file)
 #include <version.h>
 #include <serial.h>
 
+#include <os.h>
+
 DECLARE_GLOBAL_DATA_PTR;
 
+static gd_t gd_mem;
+
 /************************************************************************
  * Init Utilities                                                      *
  ************************************************************************
@@ -147,7 +151,7 @@ void board_init_f(ulong bootflag)
        uchar *mem;
        unsigned long addr_sp, addr, size;
 
-       gd = malloc(sizeof(gd_t));
+       gd = &gd_mem;
        assert(gd);
 
        memset((void *)gd, 0, sizeof(gd_t));
@@ -158,7 +162,8 @@ void board_init_f(ulong bootflag)
        }
 
        size = CONFIG_SYS_SDRAM_SIZE;
-       mem = malloc(size);
+       mem = os_malloc(CONFIG_SYS_SDRAM_SIZE);
+
        assert(mem);
        gd->ram_buf = mem;
        addr = (ulong)(mem + size);
@@ -214,11 +219,9 @@ void board_init_r(gd_t *id, ulong dest_addr)
        post_output_backlog();
 #endif
 
-#if 0 /* Sandbox uses system malloc for now */
-       /* The Malloc area is immediately below the monitor copy in DRAM */
-       malloc_start = dest_addr - TOTAL_MALLOC_LEN;
-       mem_malloc_init(malloc_start, TOTAL_MALLOC_LEN);
-#endif
+       /* The Malloc area is at the top of simulated DRAM */
+       mem_malloc_init((ulong)gd->ram_buf + gd->ram_size - TOTAL_MALLOC_LEN,
+                       TOTAL_MALLOC_LEN);
 
        /* initialize environment */
        env_relocate();
index 95a504597577d28ebc2dccd3ec87e6d85fd39e5d..f376c743578e433ddc7fa63752a1c2f323447283 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <common.h>
 
+#include <os.h>
+
 /*
  * Pointer to initial global data area
  *
@@ -34,7 +36,7 @@ void flush_cache(unsigned long start, unsigned long size)
 
 ulong get_timer(ulong base)
 {
-       return 0;
+       return (os_get_nsec() / 1000000) - base;
 }
 
 int timer_init(void)
index 1be7236035c49eb30eab81549913c1436dbdc8e0..2d9ae8c5c92319f666edd859b28903b179e54eec 100644 (file)
@@ -29,9 +29,6 @@ LIB   = $(obj)libcommon.o
 ifndef CONFIG_SPL_BUILD
 COBJS-y += main.o
 COBJS-y += command.o
-ifndef CONFIG_SANDBOX
-COBJS-y += dlmalloc.o
-endif
 COBJS-y += exports.o
 COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o
 COBJS-y += image.o
index d5df22f77c83c35b8197ec223049afb526f50568..f3af4f0e0e46e80ddd24efd98a5e5274b20a8204 100644 (file)
@@ -76,3 +76,25 @@ void os_exit(int exit_code);
  * Put tty into raw mode to mimic serial console better
  */
 void os_tty_raw(int fd);
+
+/**
+ * Acquires some memory from the underlying os.
+ *
+ * \param length       Number of bytes to be allocated
+ * \return Pointer to length bytes or NULL on error
+ */
+void *os_malloc(size_t length);
+
+/**
+ * Access to the usleep function of the os
+ *
+ * \param usec Time to sleep in micro seconds
+ */
+void os_usleep(unsigned long usec);
+
+/**
+ * Gets a monotonic increasing number of nano seconds from the OS
+ *
+ * \return A monotonic increasing time scaled in nano seconds
+ */
+u64 os_get_nsec(void);
index 45e08f8ccc76c2b2c57e1786007d26abb5f4dcdb..d62f10aa539eb0f3ce49b207aa0059f076892fc3 100644 (file)
@@ -495,7 +495,7 @@ void post_reloc(void)
  */
 unsigned long post_time_ms(unsigned long base)
 {
-#if defined(CONFIG_PPC) || defined(CONFIG_ARM)
+#if defined(CONFIG_PPC) || defined(CONFIG_ARM) && !defined(CONFIG_KIRKWOOD)
        return (unsigned long)lldiv(get_ticks(), get_tbclk() / CONFIG_SYS_HZ)
                - base;
 #else