summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>2014-10-11 01:20:30 +0200
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2014-10-11 01:20:30 +0200
commit790af815436bc6a93e4c581840be2419897f23b1 (patch)
tree1ba0aaacad86092aea67d3612ae066b33b117619 /common
parentd0b3723034aa865b8618428739efe1d98b1a2e2b (diff)
parentdb67801bf92f7fae6131dbc0d387131698fb9490 (diff)
Merge branch 'u-boot/master' into 'u-boot-arm/master'
Diffstat (limited to 'common')
-rw-r--r--common/board_r.c8
-rw-r--r--common/cmd_mmc.c2
-rw-r--r--common/cmd_pxe.c9
-rw-r--r--common/cmd_usb.c27
-rw-r--r--common/env_mmc.c2
-rw-r--r--common/image.c1
-rw-r--r--common/spl/spl_sata.c1
-rw-r--r--common/stdio.c13
-rw-r--r--common/usb_kbd.c26
9 files changed, 53 insertions, 36 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 231c6d67115..7e1a76d97f7 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -664,7 +664,7 @@ int initr_mem(void)
/* Also take the logbuffer into account (pram is in kB) */
pram += (LOGBUFF_LEN + LOGBUFF_OVERHEAD) / 1024;
# endif
- sprintf(memsz, "%ldk", (gd->ram_size / 1024) - pram);
+ sprintf(memsz, "%ldk", (long int) ((gd->ram_size / 1024) - pram));
setenv("mem", memsz);
return 0;
@@ -717,6 +717,9 @@ init_fnc_t init_sequence_r[] = {
initr_caches,
#endif
initr_reloc_global_data,
+#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500)
+ initr_unlock_ram_in_cache,
+#endif
initr_barrier,
initr_malloc,
bootstage_relocate,
@@ -759,9 +762,6 @@ init_fnc_t init_sequence_r[] = {
#ifdef CONFIG_SYS_DELAYED_ICACHE
initr_icache_enable,
#endif
-#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500)
- initr_unlock_ram_in_cache,
-#endif
#if defined(CONFIG_PCI) && defined(CONFIG_SYS_EARLY_PCI_INIT)
/*
* Do early PCI configuration _before_ the flash gets initialised,
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index 1e40983c757..4286e269636 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -602,7 +602,7 @@ static cmd_tbl_t cmd_mmc[] = {
U_BOOT_CMD_MKENT(list, 1, 1, do_mmc_list, "", ""),
#ifdef CONFIG_SUPPORT_EMMC_BOOT
U_BOOT_CMD_MKENT(bootbus, 5, 0, do_mmc_bootbus, "", ""),
- U_BOOT_CMD_MKENT(bootpart-resize, 3, 0, do_mmc_boot_resize, "", ""),
+ U_BOOT_CMD_MKENT(bootpart-resize, 4, 0, do_mmc_boot_resize, "", ""),
U_BOOT_CMD_MKENT(partconf, 5, 0, do_mmc_partconf, "", ""),
U_BOOT_CMD_MKENT(rst-function, 3, 0, do_mmc_rst_func, "", ""),
#endif
diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index 0ab1e0aaa63..7e32c95df32 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -674,6 +674,15 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
char bootargs[CONFIG_SYS_CBSIZE] = "";
char finalbootargs[CONFIG_SYS_CBSIZE];
+ if (strlen(label->append ?: "") +
+ strlen(ip_str) + strlen(mac_str) + 1 > sizeof(bootargs)) {
+ printf("bootarg overflow %zd+%zd+%zd+1 > %zd\n",
+ strlen(label->append ?: ""),
+ strlen(ip_str), strlen(mac_str),
+ sizeof(bootargs));
+ return 1;
+ }
+
if (label->append)
strcpy(bootargs, label->append);
strcat(bootargs, ip_str);
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index 2519497dad8..c192498257f 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -430,6 +430,16 @@ static int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
#endif /* CONFIG_USB_STORAGE */
+static int do_usb_stop_keyboard(int force)
+{
+#ifdef CONFIG_USB_KEYBOARD
+ if (usb_kbd_deregister(force) != 0) {
+ printf("USB not stopped: usbkbd still using USB\n");
+ return 1;
+ }
+#endif
+ return 0;
+}
/******************************************************************************
* usb command intepreter
@@ -450,6 +460,8 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if ((strncmp(argv[1], "reset", 5) == 0) ||
(strncmp(argv[1], "start", 5) == 0)) {
bootstage_mark_name(BOOTSTAGE_ID_USB_START, "usb_start");
+ if (do_usb_stop_keyboard(1) != 0)
+ return 1;
usb_stop();
printf("(Re)start USB...\n");
if (usb_init() >= 0) {
@@ -468,19 +480,10 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return 0;
}
if (strncmp(argv[1], "stop", 4) == 0) {
-#ifdef CONFIG_USB_KEYBOARD
- if (argc == 2) {
- if (usb_kbd_deregister() != 0) {
- printf("USB not stopped: usbkbd still"
- " using USB\n");
- return 1;
- }
- } else {
- /* forced stop, switch console in to serial */
+ if (argc != 2)
console_assign(stdin, "serial");
- usb_kbd_deregister();
- }
-#endif
+ if (do_usb_stop_keyboard(0) != 0)
+ return 1;
printf("stopping USB..\n");
usb_stop();
return 0;
diff --git a/common/env_mmc.c b/common/env_mmc.c
index a7621a897c4..14648e37bdf 100644
--- a/common/env_mmc.c
+++ b/common/env_mmc.c
@@ -113,7 +113,7 @@ static void fini_mmc_for_env(struct mmc *mmc)
#ifdef CONFIG_SPL_BUILD
dev = 0;
#endif
- if (CONFIG_SYS_MMC_ENV_PART != mmc->part_num)
+ if (mmc_get_env_part(mmc) != mmc->part_num)
mmc_switch_part(dev, mmc->part_num);
#endif
}
diff --git a/common/image.c b/common/image.c
index 38b56e3deb5..085771c7639 100644
--- a/common/image.c
+++ b/common/image.c
@@ -138,6 +138,7 @@ static const table_entry_t uimage_type[] = {
{ IH_TYPE_PBLIMAGE, "pblimage", "Freescale PBL Boot Image",},
{ IH_TYPE_RAMDISK, "ramdisk", "RAMDisk Image", },
{ IH_TYPE_SCRIPT, "script", "Script", },
+ { IH_TYPE_SOCFPGAIMAGE, "socfpgaimage", "Altera SOCFPGA preloader",},
{ IH_TYPE_STANDALONE, "standalone", "Standalone Program", },
{ IH_TYPE_UBLIMAGE, "ublimage", "Davinci UBL image",},
{ IH_TYPE_MXSIMAGE, "mxsimage", "Freescale MXS Boot Image",},
diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
index 2e7adca0ca6..12e16d96039 100644
--- a/common/spl/spl_sata.c
+++ b/common/spl/spl_sata.c
@@ -32,6 +32,7 @@ void spl_sata_load_image(void)
hang();
} else {
/* try to recognize storage devices immediately */
+ scsi_scan(0);
stor_dev = scsi_get_dev(0);
}
diff --git a/common/stdio.c b/common/stdio.c
index c878103a482..82328150cba 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -34,6 +34,9 @@ char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" };
#define CONFIG_SYS_DEVICE_NULLDEV 1
#endif
+#ifdef CONFIG_SYS_STDIO_DEREGISTER
+#define CONFIG_SYS_DEVICE_NULLDEV 1
+#endif
#ifdef CONFIG_SYS_DEVICE_NULLDEV
void nulldev_putc(struct stdio_dev *dev, const char c)
@@ -172,7 +175,7 @@ int stdio_register(struct stdio_dev *dev)
* returns 0 if success, -1 if device is assigned and 1 if devname not found
*/
#ifdef CONFIG_SYS_STDIO_DEREGISTER
-int stdio_deregister_dev(struct stdio_dev *dev)
+int stdio_deregister_dev(struct stdio_dev *dev, int force)
{
int l;
struct list_head *pos;
@@ -181,6 +184,10 @@ int stdio_deregister_dev(struct stdio_dev *dev)
/* get stdio devices (ListRemoveItem changes the dev list) */
for (l=0 ; l< MAX_FILES; l++) {
if (stdio_devices[l] == dev) {
+ if (force) {
+ strcpy(temp_names[l], "nulldev");
+ continue;
+ }
/* Device is assigned -> report error */
return -1;
}
@@ -202,7 +209,7 @@ int stdio_deregister_dev(struct stdio_dev *dev)
return 0;
}
-int stdio_deregister(const char *devname)
+int stdio_deregister(const char *devname, int force)
{
struct stdio_dev *dev;
@@ -211,7 +218,7 @@ int stdio_deregister(const char *devname)
if (!dev) /* device not found */
return -ENODEV;
- return stdio_deregister_dev(dev);
+ return stdio_deregister_dev(dev, force);
}
#endif /* CONFIG_SYS_STDIO_DEREGISTER */
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index c34fd5c786a..fdc083c70cf 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -8,6 +8,7 @@
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
+#include <errno.h>
#include <malloc.h>
#include <stdio_dev.h>
#include <asm/byteorder.h>
@@ -170,11 +171,12 @@ static void usb_kbd_setled(struct usb_device *dev)
{
struct usb_interface *iface = &dev->config.if_desc[0];
struct usb_kbd_pdata *data = dev->privptr;
- uint32_t leds = data->flags & USB_KBD_LEDMASK;
+ ALLOC_ALIGN_BUFFER(uint32_t, leds, 1, USB_DMA_MINALIGN);
+ *leds = data->flags & USB_KBD_LEDMASK;
usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE,
- 0x200, iface->desc.bInterfaceNumber, (void *)&leds, 1, 0);
+ 0x200, iface->desc.bInterfaceNumber, leds, 1, 0);
}
#define CAPITAL_MASK 0x20
@@ -488,7 +490,7 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
/* Search for keyboard and register it if found. */
int drv_usb_kbd_init(void)
{
- struct stdio_dev usb_kbd_dev, *old_dev;
+ struct stdio_dev usb_kbd_dev;
struct usb_device *dev;
char *stdinname = getenv("stdin");
int error, i;
@@ -507,16 +509,6 @@ int drv_usb_kbd_init(void)
if (usb_kbd_probe(dev, 0) != 1)
continue;
- /* We found a keyboard, check if it is already registered. */
- debug("USB KBD: found set up device.\n");
- old_dev = stdio_get_by_name(DEVNAME);
- if (old_dev) {
- /* Already registered, just return ok. */
- debug("USB KBD: is already registered.\n");
- usb_kbd_deregister();
- return 1;
- }
-
/* Register the keyboard */
debug("USB KBD: register.\n");
memset(&usb_kbd_dev, 0, sizeof(struct stdio_dev));
@@ -555,10 +547,14 @@ int drv_usb_kbd_init(void)
}
/* Deregister the keyboard. */
-int usb_kbd_deregister(void)
+int usb_kbd_deregister(int force)
{
#ifdef CONFIG_SYS_STDIO_DEREGISTER
- return stdio_deregister(DEVNAME);
+ int ret = stdio_deregister(DEVNAME, force);
+ if (ret && ret != -ENODEV)
+ return ret;
+
+ return 0;
#else
return 1;
#endif