mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
board: microsoft: surface-rt: add Microsoft Surface RT support
Surface RT is a hybrid tablet computer developed and manufactured by Microsoft and shipped with Windows RT. The tablet uses a 1.3 GHz quad-core Nvidia Tegra 3 chipset with 2 GB of RAM, features 10.8 inch 1366x768 screen and 32/64 GB of internal memory that can be supplemented with a microSDXC card giving up to 200 GB of additional storage. Tested-by: Jethro Bull <jethrob@hotmail.com> Signed-off-by: Jonas Schwöbel <jonasschwoebel@yahoo.de> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
This commit is contained in:
parent
2c4a399682
commit
3486fd0739
@ -124,6 +124,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += \
|
||||
tegra30-htc-endeavoru.dtb \
|
||||
tegra30-lg-p880.dtb \
|
||||
tegra30-lg-p895.dtb \
|
||||
tegra30-microsoft-surface-rt.dtb \
|
||||
tegra30-tec-ng.dtb \
|
||||
tegra30-wexler-qc750.dtb \
|
||||
tegra114-dalmore.dtb \
|
||||
|
||||
1083
arch/arm/dts/tegra30-microsoft-surface-rt.dts
Normal file
1083
arch/arm/dts/tegra30-microsoft-surface-rt.dts
Normal file
File diff suppressed because it is too large
Load Diff
@ -32,6 +32,10 @@ config TARGET_QC750
|
||||
bool "Wexler QC750 board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_SURFACE_RT
|
||||
bool "Microsoft Tegra30 Surface RT board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_TEC_NG
|
||||
bool "Avionic Design TEC-NG board"
|
||||
select BOARD_LATE_INIT
|
||||
@ -56,6 +60,7 @@ source "board/toradex/colibri_t30/Kconfig"
|
||||
source "board/htc/endeavoru/Kconfig"
|
||||
source "board/asus/grouper/Kconfig"
|
||||
source "board/wexler/qc750/Kconfig"
|
||||
source "board/microsoft/surface-rt/Kconfig"
|
||||
source "board/avionic-design/tec-ng/Kconfig"
|
||||
source "board/asus/transformer-t30/Kconfig"
|
||||
source "board/lg/x3-t30/Kconfig"
|
||||
|
||||
12
board/microsoft/surface-rt/Kconfig
Normal file
12
board/microsoft/surface-rt/Kconfig
Normal file
@ -0,0 +1,12 @@
|
||||
if TARGET_SURFACE_RT
|
||||
|
||||
config SYS_BOARD
|
||||
default "surface-rt"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "microsoft"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "surface-rt"
|
||||
|
||||
endif
|
||||
7
board/microsoft/surface-rt/MAINTAINERS
Normal file
7
board/microsoft/surface-rt/MAINTAINERS
Normal file
@ -0,0 +1,7 @@
|
||||
Microsoft Surface RT
|
||||
M: Jonas Schwöbel <jonasschwoebel@yahoo.de>
|
||||
S: Maintained
|
||||
F: board/microsoft/surface-rt/
|
||||
F: configs/surface-rt_defconfig
|
||||
F: doc/board/microsoft/surface-rt.rst
|
||||
F: include/configs/surface-rt.h
|
||||
6
board/microsoft/surface-rt/Makefile
Normal file
6
board/microsoft/surface-rt/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# (C) Copyright 2021
|
||||
# Open Surface RT
|
||||
|
||||
obj-$(CONFIG_SPL_BUILD) += surface-rt-spl.o
|
||||
41
board/microsoft/surface-rt/surface-rt-spl.c
Normal file
41
board/microsoft/surface-rt/surface-rt-spl.c
Normal file
@ -0,0 +1,41 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Surface RT SPL stage configuration
|
||||
*
|
||||
* (C) Copyright 2010-2013
|
||||
* NVIDIA Corporation <www.nvidia.com>
|
||||
*
|
||||
* (C) Copyright 2021
|
||||
* Svyatoslav Ryhel <clamor95@gmail.com>
|
||||
*/
|
||||
|
||||
#include <asm/arch/tegra.h>
|
||||
#include <asm/arch-tegra/tegra_i2c.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#define TPS65911_I2C_ADDR (0x2D << 1)
|
||||
#define TPS65911_VDDCTRL_OP_REG 0x28
|
||||
#define TPS65911_VDDCTRL_SR_REG 0x27
|
||||
#define TPS65911_VDDCTRL_OP_DATA (0x2400 | TPS65911_VDDCTRL_OP_REG)
|
||||
#define TPS65911_VDDCTRL_SR_DATA (0x0100 | TPS65911_VDDCTRL_SR_REG)
|
||||
|
||||
#define TPS62361B_I2C_ADDR (0x60 << 1)
|
||||
#define TPS62361B_SET3_REG 0x03
|
||||
#define TPS62361B_SET3_DATA (0x4600 | TPS62361B_SET3_REG)
|
||||
|
||||
void pmic_enable_cpu_vdd(void)
|
||||
{
|
||||
/* Set VDD_CORE to 1.200V. */
|
||||
tegra_i2c_ll_write(TPS62361B_I2C_ADDR, TPS62361B_SET3_DATA);
|
||||
|
||||
udelay(1000);
|
||||
|
||||
/*
|
||||
* Bring up CPU VDD via the TPS65911x PMIC on the DVC I2C bus.
|
||||
* First set VDD to 1.0125V, then enable the VDD regulator.
|
||||
*/
|
||||
tegra_i2c_ll_write(TPS65911_I2C_ADDR, TPS65911_VDDCTRL_OP_DATA);
|
||||
udelay(1000);
|
||||
tegra_i2c_ll_write(TPS65911_I2C_ADDR, TPS65911_VDDCTRL_SR_DATA);
|
||||
udelay(10 * 1000);
|
||||
}
|
||||
80
configs/surface-rt_defconfig
Normal file
80
configs/surface-rt_defconfig
Normal file
@ -0,0 +1,80 @@
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_SUPPORT_PASSING_ATAGS=y
|
||||
CONFIG_CMDLINE_TAG=y
|
||||
CONFIG_INITRD_TAG=y
|
||||
CONFIG_TEXT_BASE=0x80110000
|
||||
CONFIG_NR_DRAM_BANKS=2
|
||||
CONFIG_ENV_SIZE=0x3000
|
||||
CONFIG_ENV_OFFSET=0xFFFFD000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="tegra30-microsoft-surface-rt"
|
||||
CONFIG_SPL_TEXT_BASE=0x80108000
|
||||
CONFIG_SPL_STACK=0x800ffffc
|
||||
CONFIG_TEGRA30=y
|
||||
CONFIG_TARGET_SURFACE_RT=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x82000000
|
||||
CONFIG_BUTTON_CMD=y
|
||||
CONFIG_BOOTDELAY=0
|
||||
CONFIG_AUTOBOOT_KEYED=y
|
||||
CONFIG_AUTOBOOT_KEYED_CTRLC=y
|
||||
CONFIG_OF_SYSTEM_SETUP=y
|
||||
CONFIG_SYS_PBSIZE=2084
|
||||
CONFIG_SPL_FOOTPRINT_LIMIT=y
|
||||
CONFIG_SPL_MAX_FOOTPRINT=0x8000
|
||||
# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
|
||||
CONFIG_SPL_SYS_MALLOC=y
|
||||
CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y
|
||||
CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR=0x80090000
|
||||
CONFIG_SPL_SYS_MALLOC_SIZE=0x10000
|
||||
CONFIG_SYS_PROMPT="Tegra30 (Surface RT) # "
|
||||
# CONFIG_CMD_BOOTEFI_BOOTMGR is not set
|
||||
CONFIG_CMD_BOOTMENU=y
|
||||
# CONFIG_CMD_IMI is not set
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_GPT_RENAME=y
|
||||
CONFIG_CMD_I2C=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_POWEROFF=y
|
||||
CONFIG_CMD_SPI=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_USB_MASS_STORAGE=y
|
||||
CONFIG_CMD_UMS_ABORT_KEYED=y
|
||||
# CONFIG_CMD_SETEXPR is not set
|
||||
CONFIG_CMD_PAUSE=y
|
||||
CONFIG_CMD_REGULATOR=y
|
||||
CONFIG_CMD_EXT4_WRITE=y
|
||||
# CONFIG_SPL_DOS_PARTITION is not set
|
||||
# CONFIG_SPL_EFI_PARTITION is not set
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_SYS_MMC_ENV_PART=1
|
||||
CONFIG_BUTTON=y
|
||||
CONFIG_USB_FUNCTION_FASTBOOT=y
|
||||
CONFIG_FASTBOOT_BUF_ADDR=0x91000000
|
||||
CONFIG_FASTBOOT_BUF_SIZE=0x10000000
|
||||
CONFIG_FASTBOOT_FLASH=y
|
||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
|
||||
CONFIG_GPIO_HOG=y
|
||||
CONFIG_SYS_I2C_TEGRA=y
|
||||
CONFIG_BUTTON_KEYBOARD=y
|
||||
CONFIG_SPI_FLASH_WINBOND=y
|
||||
CONFIG_DM_PMIC=y
|
||||
CONFIG_DM_PMIC_TPS65910=y
|
||||
CONFIG_DM_REGULATOR=y
|
||||
CONFIG_DM_REGULATOR_FIXED=y
|
||||
CONFIG_DM_REGULATOR_TPS65911=y
|
||||
CONFIG_PWM_TEGRA=y
|
||||
CONFIG_SYS_NS16550=y
|
||||
CONFIG_TEGRA20_SLINK=y
|
||||
CONFIG_SYSRESET_TPS65910=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_TEGRA=y
|
||||
CONFIG_USB_KEYBOARD=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_VIDEO=y
|
||||
# CONFIG_VIDEO_LOGO is not set
|
||||
CONFIG_VIDEO_TEGRA20=y
|
||||
@ -34,6 +34,7 @@ Board-specific doc
|
||||
lg/index
|
||||
mediatek/index
|
||||
microchip/index
|
||||
microsoft/index
|
||||
nxp/index
|
||||
openpiton/index
|
||||
phytec/index
|
||||
|
||||
9
doc/board/microsoft/index.rst
Normal file
9
doc/board/microsoft/index.rst
Normal file
@ -0,0 +1,9 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
Microsoft
|
||||
=========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
surface-rt
|
||||
41
doc/board/microsoft/surface-rt.rst
Normal file
41
doc/board/microsoft/surface-rt.rst
Normal file
@ -0,0 +1,41 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
U-Boot for the Microsoft Surface RT tablet
|
||||
==========================================
|
||||
|
||||
Quick Start
|
||||
-----------
|
||||
|
||||
- Build U-Boot
|
||||
- Boot
|
||||
|
||||
Build U-Boot
|
||||
------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ export CROSS_COMPILE=arm-linux-gnueabi-
|
||||
$ make surface-rt_defconfig
|
||||
$ make
|
||||
|
||||
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
|
||||
image, ready for loading.
|
||||
|
||||
Boot
|
||||
----
|
||||
|
||||
Currently, U-Boot can be preloaded into RAM via the Fusée Gelée. To enter
|
||||
RCM protocol use ``power`` and ``volume up`` key combination from powered
|
||||
off device. The host PC should recognize an APX device.
|
||||
|
||||
Built U-Boot ``u-boot-dtb-tegra.bin`` can be loaded from fusee-tools
|
||||
directory with
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ./run_bootloader.sh -s T30 -t ./bct/surface-rt.bct
|
||||
|
||||
To boot Linux, U-Boot will look for an ``extlinux.conf`` on MicroSD and then on
|
||||
eMMC. Additionally, if the Volume Down button is pressed while loading, the
|
||||
device will enter bootmenu. Bootmenu contains entries to mount MicroSD and eMMC
|
||||
as mass storage, fastboot, reboot, reboot RCM, poweroffand enter U-Boot console.
|
||||
39
include/configs/surface-rt.h
Normal file
39
include/configs/surface-rt.h
Normal file
@ -0,0 +1,39 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2010-2012, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* Copyright (c) 2021, Open Surface RT
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#include "tegra30-common.h"
|
||||
|
||||
/* High-level configuration options */
|
||||
#define CFG_TEGRA_BOARD_STRING "Microsoft Surface RT"
|
||||
|
||||
#define SURFACE_RT_BOOTMENU \
|
||||
"bootmenu_0=mount internal storage=usb start && ums 0 mmc 0; bootmenu\0" \
|
||||
"bootmenu_1=mount external storage=usb start && ums 0 mmc 1; bootmenu\0" \
|
||||
"bootmenu_2=fastboot=echo Starting Fastboot protocol ...; fastboot usb 0; bootmenu\0" \
|
||||
"bootmenu_3=boot from USB=usb reset; usb start; bootflow scan\0" \
|
||||
"bootmenu_4=reboot RCM=enterrcm\0" \
|
||||
"bootmenu_5=reboot=reset\0" \
|
||||
"bootmenu_6=power off=poweroff\0" \
|
||||
"bootmenu_delay=-1\0"
|
||||
|
||||
#define BOARD_EXTRA_ENV_SETTINGS \
|
||||
"button_cmd_0_name=Volume Down\0" \
|
||||
"button_cmd_0=bootmenu\0" \
|
||||
"button_cmd_1_name=Hall Sensor\0" \
|
||||
"button_cmd_1=poweroff\0" \
|
||||
"partitions=name=emmc,start=0,size=-,uuid=${uuid_gpt_rootfs}\0" \
|
||||
SURFACE_RT_BOOTMENU
|
||||
|
||||
/* Board-specific serial config */
|
||||
#define CFG_SYS_NS16550_COM1 NV_PA_APB_UARTA_BASE
|
||||
|
||||
#include "tegra-common-post.h"
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
Loading…
x
Reference in New Issue
Block a user