- Update cmdline parameter to be an env var in zimage boot - Various minor fixes for Intel Edison board
This commit is contained in:
@@ -10,9 +10,11 @@ config INTEL_TANGIER
|
|||||||
imply MMC_SDHCI
|
imply MMC_SDHCI
|
||||||
imply MMC_SDHCI_SDMA
|
imply MMC_SDHCI_SDMA
|
||||||
imply MMC_SDHCI_TANGIER
|
imply MMC_SDHCI_TANGIER
|
||||||
|
imply MISC
|
||||||
imply USB
|
imply USB
|
||||||
|
imply USB_XHCI_HCD
|
||||||
imply USB_DWC3
|
imply USB_DWC3
|
||||||
imply BINMAN
|
imply USB_DWC3_GENERIC
|
||||||
|
|
||||||
if INTEL_TANGIER
|
if INTEL_TANGIER
|
||||||
|
|
||||||
@@ -27,8 +29,4 @@ config SYS_CAR_SIZE
|
|||||||
Space in bytes in eSRAM used as Cache-As-RAM (CAR).
|
Space in bytes in eSRAM used as Cache-As-RAM (CAR).
|
||||||
Note this size must not exceed eSRAM's total size.
|
Note this size must not exceed eSRAM's total size.
|
||||||
|
|
||||||
config SYS_USB_OTG_BASE
|
|
||||||
hex
|
|
||||||
default 0xf9100000
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -196,6 +196,49 @@ unsigned int install_e820_map(unsigned int max_entries,
|
|||||||
return sfi_setup_e820(max_entries, entries);
|
return sfi_setup_e820(max_entries, entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function looks for the highest region of memory lower than 2GB which
|
||||||
|
* has enough space for U-Boot where U-Boot is aligned on a page boundary. It
|
||||||
|
* overrides the default implementation found elsewhere which simply picks the
|
||||||
|
* end of RAM, wherever that may be. The location of the stack, the relocation
|
||||||
|
* address, and how far U-Boot is moved by relocation are set in the global
|
||||||
|
* data structure.
|
||||||
|
*/
|
||||||
|
ulong board_get_usable_ram_top(ulong total_size)
|
||||||
|
{
|
||||||
|
struct sfi_table_simple *sb;
|
||||||
|
struct sfi_mem_entry *mentry;
|
||||||
|
ulong dest_addr = 0;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
|
sb = sfi_search_mmap();
|
||||||
|
if (!sb)
|
||||||
|
panic("No available memory found for relocation");
|
||||||
|
|
||||||
|
sfi_for_each_mentry(i, sb, mentry) {
|
||||||
|
unsigned long long start, end;
|
||||||
|
|
||||||
|
if (mentry->type != SFI_MEM_CONV)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
start = mentry->phys_start;
|
||||||
|
end = start + (mentry->pages << 12);
|
||||||
|
|
||||||
|
/* Filter memory over 2GB. */
|
||||||
|
if (end > 0x7fffffffULL)
|
||||||
|
end = 0x80000000ULL;
|
||||||
|
/* Skip this region if it's too small. */
|
||||||
|
if (end - start < total_size)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Use this address if it's the largest so far. */
|
||||||
|
if (end > dest_addr)
|
||||||
|
dest_addr = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dest_addr;
|
||||||
|
}
|
||||||
|
|
||||||
int dram_init_banksize(void)
|
int dram_init_banksize(void)
|
||||||
{
|
{
|
||||||
sfi_get_bank_size();
|
sfi_get_bank_size();
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Intel Edison";
|
model = "Intel Edison";
|
||||||
compatible = "intel,edison";
|
compatible = "intel,edison", "intel,tangier";
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &serial0;
|
serial0 = &serial0;
|
||||||
@@ -105,6 +105,18 @@
|
|||||||
reg = <0xff009000 0x1000>;
|
reg = <0xff009000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usb: usb@f9100000 {
|
||||||
|
compatible = "intel,tangier-dwc3";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
dwc3: dwc3 {
|
||||||
|
reg = <0xf9100000 0x100000>;
|
||||||
|
maximum-speed = "high-speed";
|
||||||
|
dr_mode = "peripheral";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
watchdog: wdt@0 {
|
watchdog: wdt@0 {
|
||||||
compatible = "intel,tangier-wdt";
|
compatible = "intel,tangier-wdt";
|
||||||
};
|
};
|
||||||
|
@@ -60,8 +60,8 @@
|
|||||||
* BZIMAGE_LOAD_ADDR or ZIMAGE_LOAD_ADDR
|
* BZIMAGE_LOAD_ADDR or ZIMAGE_LOAD_ADDR
|
||||||
* @base_ptr: Pointer to the boot parameters, typically at address
|
* @base_ptr: Pointer to the boot parameters, typically at address
|
||||||
* DEFAULT_SETUP_BASE
|
* DEFAULT_SETUP_BASE
|
||||||
* @cmdline: Address of 'override' command line, or 0 to use the one in the
|
* @cmdline: Environment variable containing the 'override' command line, or
|
||||||
* setup block
|
* NULL to use the one in the setup block
|
||||||
*/
|
*/
|
||||||
struct zboot_state {
|
struct zboot_state {
|
||||||
ulong bzimage_addr;
|
ulong bzimage_addr;
|
||||||
@@ -70,7 +70,7 @@ struct zboot_state {
|
|||||||
ulong initrd_size;
|
ulong initrd_size;
|
||||||
ulong load_address;
|
ulong load_address;
|
||||||
struct boot_params *base_ptr;
|
struct boot_params *base_ptr;
|
||||||
ulong cmdline;
|
char *cmdline;
|
||||||
} state;
|
} state;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -406,7 +406,7 @@ static int do_zboot_start(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||||||
state.bzimage_addr = 0;
|
state.bzimage_addr = 0;
|
||||||
}
|
}
|
||||||
if (argc >= 7)
|
if (argc >= 7)
|
||||||
state.cmdline = simple_strtoul(argv[6], NULL, 16);
|
state.cmdline = env_get(argv[6]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -452,7 +452,7 @@ static int do_zboot_setup(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||||||
}
|
}
|
||||||
ret = setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
|
ret = setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
|
||||||
0, state.initrd_addr, state.initrd_size,
|
0, state.initrd_addr, state.initrd_size,
|
||||||
state.cmdline);
|
(ulong)state.cmdline);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
puts("Setting up boot parameters failed ...\n");
|
puts("Setting up boot parameters failed ...\n");
|
||||||
return CMD_RET_FAILURE;
|
return CMD_RET_FAILURE;
|
||||||
@@ -743,8 +743,9 @@ U_BOOT_CMDREP_COMPLETE(
|
|||||||
" initrd size - The size of the initrd image to use, if any.\n"
|
" initrd size - The size of the initrd image to use, if any.\n"
|
||||||
" setup - The address of the kernel setup region, if this\n"
|
" setup - The address of the kernel setup region, if this\n"
|
||||||
" is not at addr\n"
|
" is not at addr\n"
|
||||||
" cmdline - The address of the kernel command line, to\n"
|
" cmdline - Environment variable containing the kernel\n"
|
||||||
" override U-Boot's normal cmdline generation\n"
|
" command line, to override U-Boot's normal\n"
|
||||||
|
" cmdline generation\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Sub-commands to do part of the zboot sequence:\n"
|
"Sub-commands to do part of the zboot sequence:\n"
|
||||||
"\tstart [addr [arg ...]] - specify arguments\n"
|
"\tstart [addr [arg ...]] - specify arguments\n"
|
||||||
|
@@ -31,5 +31,6 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
|||||||
select INTEL_TANGIER
|
select INTEL_TANGIER
|
||||||
select BOARD_LATE_INIT
|
select BOARD_LATE_INIT
|
||||||
select MD5
|
select MD5
|
||||||
|
imply BINMAN
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -3,15 +3,10 @@
|
|||||||
* Copyright (c) 2017 Intel Corporation
|
* Copyright (c) 2017 Intel Corporation
|
||||||
*/
|
*/
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dwc3-uboot.h>
|
|
||||||
#include <env.h>
|
#include <env.h>
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
#include <u-boot/md5.h>
|
#include <u-boot/md5.h>
|
||||||
#include <usb.h>
|
|
||||||
#include <watchdog.h>
|
|
||||||
|
|
||||||
#include <linux/usb/gadget.h>
|
|
||||||
|
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/pmu.h>
|
#include <asm/pmu.h>
|
||||||
@@ -27,36 +22,6 @@ int board_early_init_r(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct dwc3_device dwc3_device_data = {
|
|
||||||
.maximum_speed = USB_SPEED_HIGH,
|
|
||||||
.base = CONFIG_SYS_USB_OTG_BASE,
|
|
||||||
.dr_mode = USB_DR_MODE_PERIPHERAL,
|
|
||||||
.index = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts(int controller_index)
|
|
||||||
{
|
|
||||||
dwc3_uboot_handle_interrupt(controller_index);
|
|
||||||
WATCHDOG_RESET();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_usb_init(int index, enum usb_init_type init)
|
|
||||||
{
|
|
||||||
if (index == 0 && init == USB_INIT_DEVICE)
|
|
||||||
return dwc3_uboot_init(&dwc3_device_data);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_usb_cleanup(int index, enum usb_init_type init)
|
|
||||||
{
|
|
||||||
if (index == 0 && init == USB_INIT_DEVICE) {
|
|
||||||
dwc3_uboot_exit(index);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void assign_serial(void)
|
static void assign_serial(void)
|
||||||
{
|
{
|
||||||
struct mmc *mmc = find_mmc_device(0);
|
struct mmc *mmc = find_mmc_device(0);
|
||||||
|
@@ -37,7 +37,7 @@ CONFIG_DFU_TIMEOUT=y
|
|||||||
CONFIG_DFU_MMC=y
|
CONFIG_DFU_MMC=y
|
||||||
CONFIG_DFU_RAM=y
|
CONFIG_DFU_RAM=y
|
||||||
CONFIG_SUPPORT_EMMC_BOOT=y
|
CONFIG_SUPPORT_EMMC_BOOT=y
|
||||||
CONFIG_DM_PCI_COMPAT=y
|
CONFIG_DM_USB_GADGET=y
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_GADGET_MANUFACTURER="Intel"
|
CONFIG_USB_GADGET_MANUFACTURER="Intel"
|
||||||
CONFIG_USB_GADGET_VENDOR_NUM=0x8087
|
CONFIG_USB_GADGET_VENDOR_NUM=0x8087
|
||||||
|
@@ -449,6 +449,7 @@ static const struct udevice_id dwc3_glue_ids[] = {
|
|||||||
{ .compatible = "rockchip,rk3328-dwc3" },
|
{ .compatible = "rockchip,rk3328-dwc3" },
|
||||||
{ .compatible = "rockchip,rk3399-dwc3" },
|
{ .compatible = "rockchip,rk3399-dwc3" },
|
||||||
{ .compatible = "qcom,dwc3" },
|
{ .compatible = "qcom,dwc3" },
|
||||||
|
{ .compatible = "intel,tangier-dwc3" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -15,10 +15,13 @@
|
|||||||
"read mmc 2:2 100000 0 80; setexpr loader *001004f0; " \
|
"read mmc 2:2 100000 0 80; setexpr loader *001004f0; " \
|
||||||
"setexpr size *00100518; setexpr blocks $size / 200; " \
|
"setexpr size *00100518; setexpr blocks $size / 200; " \
|
||||||
"read mmc 2:2 100000 80 $blocks; setexpr setup $loader - 1000; " \
|
"read mmc 2:2 100000 80 $blocks; setexpr setup $loader - 1000; " \
|
||||||
"setexpr cmdline $loader - 2000; " \
|
"setexpr cmdline_ptr $loader - 2000; " \
|
||||||
"part uuid mmc 2:2 uuid; setenv bootargs_U $uuid; " \
|
"setexpr.s cmdline *$cmdline_ptr; " \
|
||||||
"zboot start 100000 0 0 0 $setup $cmdline; " \
|
"setexpr cmdline gsub %U \\\\${uuid}; " \
|
||||||
"zboot load; zboot setup; zboot dump; zboot go"
|
"if part uuid mmc 2:2 uuid; then " \
|
||||||
|
"zboot start 100000 0 0 0 $setup cmdline; " \
|
||||||
|
"zboot load; zboot setup; zboot dump; zboot go;" \
|
||||||
|
"fi"
|
||||||
|
|
||||||
#include <configs/x86-common.h>
|
#include <configs/x86-common.h>
|
||||||
#include <configs/x86-chromebook.h>
|
#include <configs/x86-chromebook.h>
|
||||||
|
Reference in New Issue
Block a user