board: asus: transformer: add ASUS Transformer Pad TF701T support

The ASUS Transformer Pad TF701T is an Android tablet computer made by
ASUS, successor to the ASUS Transformer Pad Infinity. The tablet includes
a Tegra 4 T114 processor clocked at 1.9 GHz, and an upgraded 2560×1600
pixel resolution screen, increasing the pixel density to 300 PPI and
a mobile dock. Transformers (t114) board derives from Nvidia Macallan
development board.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
This commit is contained in:
Svyatoslav Ryhel 2023-03-14 18:24:51 +02:00
parent 69dffab941
commit 00d4996a82
13 changed files with 1582 additions and 0 deletions

View file

@ -118,6 +118,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += \
tegra30-ouya.dtb \
tegra30-tec-ng.dtb \
tegra30-wexler-qc750.dtb \
tegra114-asus-tf701t.dtb \
tegra114-dalmore.dtb \
tegra124-apalis.dtb \
tegra124-jetson-tk1.dtb \

File diff suppressed because it is too large Load diff

View file

@ -8,11 +8,16 @@ config TARGET_DALMORE
bool "NVIDIA Tegra114 Dalmore evaluation board"
select BOARD_LATE_INIT
config TARGET_TRANSFORMER_T114
bool "ASUS Tegra114 Transformer board"
select BOARD_LATE_INIT
endchoice
config SYS_SOC
default "tegra114"
source "board/nvidia/dalmore/Kconfig"
source "board/asus/transformer-t114/Kconfig"
endif

View file

@ -0,0 +1,16 @@
if TARGET_TRANSFORMER_T114
config SYS_BOARD
default "transformer-t114"
config SYS_VENDOR
default "asus"
config SYS_CONFIG_NAME
default "transformer-t114"
config TEGRA_BOARD_STRING
string "Default Tegra board name"
default "ASUS Transformer T114"
endif

View file

@ -0,0 +1,8 @@
TRANSFORMER T114 BOARD
M: Svyatoslav Ryhel <clamor95@gmail.com>
S: Maintained
F: arch/arm/dts/tegra114-asus-tf701t.dts
F: board/asus/transformer-t114/
F: configs/tf701t_defconfig
F: doc/board/asus/transformer_t114.rst
F: include/configs/transformer-t114.h

View file

@ -0,0 +1,10 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (c) 2010-2013, NVIDIA CORPORATION. All rights reserved.
#
# Copyright (c) 2023, Svyatoslav Ryhel <clamor95@gmail.com>
#
obj-$(CONFIG_XPL_BUILD) += transformer-t114-spl.o
obj-y += transformer-t114.o

View file

@ -0,0 +1,42 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* T114 Transformers SPL stage configuration
*
* (C) Copyright 2010-2013
* NVIDIA Corporation <www.nvidia.com>
*
* (C) Copyright 2023
* Svyatoslav Ryhel <clamor95@gmail.com>
*/
#include <asm/arch/tegra.h>
#include <asm/arch-tegra/tegra_i2c.h>
#include <linux/delay.h>
#define TPS65913_I2C_ADDR (0x58 << 1)
#define TPS65913_SMPS12_CTRL 0x20
#define TPS65913_SMPS12_VOLTAGE 0x23
#define TPS65913_SMPS45_CTRL 0x28
#define TPS65913_SMPS45_VOLTAGE 0x2B
#define TPS65913_SMPS12_CTRL_DATA (0x5100 | TPS65913_SMPS12_CTRL)
#define TPS65913_SMPS12_VOLTAGE_DATA (0x3900 | TPS65913_SMPS12_VOLTAGE)
#define TPS65913_SMPS45_CTRL_DATA (0x5100 | TPS65913_SMPS45_CTRL)
#define TPS65913_SMPS45_VOLTAGE_DATA (0x4c00 | TPS65913_SMPS45_VOLTAGE)
void pmic_enable_cpu_vdd(void)
{
/* Set CORE VDD to 1.200V. */
tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_VOLTAGE_DATA);
udelay(1000);
tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_CTRL_DATA);
udelay(1000);
/* Set CPU VDD to 1.0125V. */
tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_VOLTAGE_DATA);
udelay(1000);
tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_CTRL_DATA);
udelay(10 * 1000);
}

View file

@ -0,0 +1,57 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2010-2013
* NVIDIA Corporation <www.nvidia.com>
*
* (C) Copyright 2023
* Svyatoslav Ryhel <clamor95@gmail.com>
*/
/* T114 Transformers derive from Macallan board */
#include <dm.h>
#include <fdt_support.h>
#include <i2c.h>
#include <log.h>
#ifdef CONFIG_MMC_SDHCI_TEGRA
#define TPS65913_I2C_ADDRESS 0x58
#define TPS65913_PRIMARY_SECONDARY_PAD2 0xfb
#define GPIO_4 BIT(0)
#define TPS65913_PRIMARY_SECONDARY_PAD3 0xfe
#define DVFS2 BIT(1)
#define DVFS1 BIT(0)
/* We are using this function only till palmas pinctrl driver is available */
void pin_mux_mmc(void)
{
struct udevice *dev;
int ret;
ret = i2c_get_chip_for_busnum(0, TPS65913_I2C_ADDRESS, 1, &dev);
if (ret) {
log_debug("%s: cannot find PMIC I2C chip\n", __func__);
return;
}
/* GPIO4 function has to be GPIO */
dm_i2c_reg_clrset(dev, TPS65913_PRIMARY_SECONDARY_PAD2,
GPIO_4, 0);
/* DVFS1 is enabled, DVFS2 is disabled */
dm_i2c_reg_clrset(dev, TPS65913_PRIMARY_SECONDARY_PAD3,
DVFS2 | DVFS1, DVFS1);
}
#endif
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
int ft_board_setup(void *blob, struct bd_info *bd)
{
/* Remove TrustZone nodes */
fdt_del_node_and_alias(blob, "/firmware");
fdt_del_node_and_alias(blob, "/reserved-memory/trustzone@bfe00000");
return 0;
}
#endif

View file

@ -0,0 +1,15 @@
button_cmd_0_name=Volume Down
button_cmd_0=bootmenu
button_cmd_1_name=Hall Sensor
button_cmd_1=poweroff
fastboot_partition_alias_boot=CAC
fastboot_partition_alias_root=UDA
bootmenu_0=mount internal storage=usb start && ums 0 mmc 0:e; bootmenu
bootmenu_1=mount external storage=usb start && ums 0 mmc 1; bootmenu
bootmenu_2=fastboot=echo Starting Fastboot protocol ...; fastboot usb 0; bootmenu
bootmenu_3=reboot RCM=enterrcm
bootmenu_4=reboot=reset
bootmenu_5=power off=poweroff
bootmenu_delay=-1

89
configs/tf701t_defconfig Normal file
View file

@ -0,0 +1,89 @@
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_SYS_MALLOC_LEN=0x2500000
CONFIG_NR_DRAM_BANKS=2
CONFIG_ENV_SOURCE_FILE="transformer-t114"
CONFIG_ENV_SIZE=0x3000
CONFIG_ENV_OFFSET=0xFFFFD000
CONFIG_DEFAULT_DEVICE_TREE="tegra114-asus-tf701t"
CONFIG_SPL_STACK=0x800ffffc
CONFIG_SPL_TEXT_BASE=0x80108000
CONFIG_SYS_LOAD_ADDR=0x82000000
CONFIG_TEGRA114=y
CONFIG_TARGET_TRANSFORMER_T114=y
CONFIG_TEGRA_ENABLE_UARTD=y
CONFIG_BUTTON_CMD=y
CONFIG_BOOTDELAY=0
CONFIG_AUTOBOOT_KEYED=y
CONFIG_AUTOBOOT_KEYED_CTRLC=y
CONFIG_OF_BOARD_SETUP=y
CONFIG_OF_SYSTEM_SETUP=y
CONFIG_BOOTCOMMAND="bootflow scan; echo 'Boot configuration not found... Power off in 3 sec'; sleep 3; poweroff"
CONFIG_SYS_PBSIZE=2086
CONFIG_SPL_FOOTPRINT_LIMIT=y
CONFIG_SPL_MAX_FOOTPRINT=0x8000
# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
CONFIG_SPL_HAVE_INIT_STACK=y
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="Tegra114 (Transformer) # "
# CONFIG_CMD_BOOTEFI_BOOTMGR is not set
CONFIG_CMD_BOOTMENU=y
# CONFIG_CMD_IMI is not set
CONFIG_CMD_GPIO=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_POWEROFF=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_TEGRA_PARTITION=y
# CONFIG_SPL_DOS_PARTITION is not set
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SYS_MMC_ENV_PART=2
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_PALMAS_GPIO=y
CONFIG_SYS_I2C_TEGRA=y
CONFIG_BUTTON_KEYBOARD=y
CONFIG_DM_PMIC=y
CONFIG_PMIC_PALMAS=y
CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_PALMAS=y
CONFIG_PWM_TEGRA=y
CONFIG_SYS_NS16550=y
CONFIG_SYSRESET_PALMAS=y
CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_TEGRA=y
CONFIG_USB_KEYBOARD=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="ASUS"
CONFIG_USB_GADGET_VENDOR_NUM=0x0b05
CONFIG_USB_GADGET_PRODUCT_NUM=0x4daf
CONFIG_CI_UDC=y
CONFIG_VIDEO=y
# CONFIG_VIDEO_FONT_8X16 is not set
CONFIG_VIDEO_FONT_16X32=y
# CONFIG_VIDEO_LOGO is not set
CONFIG_VIDEO_LCD_SHARP_LQ101R1SX01=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_VIDEO_DSI_TEGRA=y

View file

@ -9,3 +9,4 @@ ASUS
grouper
transformer_t20
transformer_t30
transformer_t114

View file

@ -0,0 +1,74 @@
.. SPDX-License-Identifier: GPL-2.0+
U-Boot for the ASUS Transformer device family
=============================================
Quick Start
-----------
- Build U-Boot
- Boot U-Boot by loading it into RAM (coldboot)
- Chainloading U-Boot from the vendor bootloader
- Boot
Build U-Boot
------------
U-Boot can be built in two forms: U-Boot with SPL, which is used for booting
by loading directly into RAM and U-Boot without SPL, which can be flashed
and chainloaded from the vendor bootloader.
To build U-Boot with SPL proseed:
.. code-block:: bash
$ export CROSS_COMPILE=arm-none-eabi-
$ make tf701t_defconfig
$ make
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
file, ready for cold booting by loading into RAM.
To build U-Boot without SPL adjust tf701t_defconfig:
.. code-block::
CONFIG_TEXT_BASE=0x80A00000
CONFIG_SKIP_LOWLEVEL_INIT=y
# CONFIG_OF_BOARD_SETUP is not set
CONFIG_TEGRA_SUPPORT_NON_SECURE=y
After the build succeeds, you will obtain the final ``u-boot-dtb.bin`` file,
ready for booting with fastboot boot or which can be further processed into
a flashable boot.img.
Boot U-Boot by loading it into RAM (coldboot)
---------------------------------------------
Done fairly simply by using fusee-tools (using run_bootloader.sh) and placing
``u-boot-dtb-tegra.bin`` generated on the previous step into fusee-tools dir.
This method requires constant access to the host PC or payloader and can fully
eliminate influence of the vendor bootloader onto the boot process.
.. code-block:: bash
$ ./run_bootloader.sh -s T114 -t ./bct/tf701t.bct
Chainloading U-Boot from the vendor bootloader
----------------------------------------------
``u-boot-dtb.bin`` has to be further packed into Android boot image form,
where ``u-boot-dtb.bin`` acts as kernel, while dtb and ramdisk parts should
not be included. Then the generated boot image can be flashed into the /boot
partition of the tablet using vendor bootloader's fastboot and will act as
the bootloader of the last stage.
Boot
----
In both cases after U-Boot obtains control it performs search of extlinux.conf
first on the dock USB device is available, then on MicroSD card if available
and lastly on eMMC. If none of the devices above are present, then the device
is turned off.
If during boot of U-Boot Volume Down button is pressed, the device will enter
U-Boot bootmenu.

View file

@ -0,0 +1,19 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2010-2013, NVIDIA CORPORATION. All rights reserved.
*
* Copyright (c) 2023, Svyatoslav Ryhel <clamor95@gmail.com>
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#include "tegra114-common.h"
#ifdef CONFIG_TEGRA_SUPPORT_NON_SECURE
#define CFG_PRAM 0x20000 /* 128 MB */
#endif
#include "tegra-common-post.h"
#endif /* __CONFIG_H */