Documentation updates for endeavoru, lg_x3, grouper and transformers,
addition of MIPI calibration clock name for T114 (inline with T124+),
conversion of TEGRA_SUPPORT_NON_SECURE into Kconfig and endeavoru
stability improvements.
This commit is contained in:
Tom Rini 2024-01-06 09:57:56 -05:00
commit c2c598e87c
11 changed files with 434 additions and 209 deletions

7
README
View file

@ -300,13 +300,6 @@ The following options need to be configured:
different from COUNTER_FREQUENCY, and can only be determined different from COUNTER_FREQUENCY, and can only be determined
at run time. at run time.
- Tegra SoC options:
CONFIG_TEGRA_SUPPORT_NON_SECURE
Support executing U-Boot in non-secure (NS) mode. Certain
impossible actions will be skipped if the CPU is in NS mode,
such as ARM architectural timer initialization.
- Linux Kernel Interface: - Linux Kernel Interface:
CONFIG_OF_LIBFDT CONFIG_OF_LIBFDT

View file

@ -109,7 +109,7 @@ enum periph_id {
PERIPH_ID_UART3, PERIPH_ID_UART3,
/* 56 */ /* 56 */
PERIPH_ID_RESERVED56, PERIPH_ID_MIPI_CAL,
PERIPH_ID_EMC, PERIPH_ID_EMC,
PERIPH_ID_USB2, PERIPH_ID_USB2,
PERIPH_ID_USB3, PERIPH_ID_USB3,

View file

@ -25,9 +25,34 @@ struct mc_ctlr {
u32 mc_emem_adr_cfg; /* offset 0x54 */ u32 mc_emem_adr_cfg; /* offset 0x54 */
u32 mc_emem_adr_cfg_dev0; /* offset 0x58 */ u32 mc_emem_adr_cfg_dev0; /* offset 0x58 */
u32 mc_emem_adr_cfg_dev1; /* offset 0x5C */ u32 mc_emem_adr_cfg_dev1; /* offset 0x5C */
u32 reserved3[12]; /* offset 0x60 - 0x8C */ u32 reserved3[4]; /* offset 0x60 - 0x6C */
u32 mc_security_cfg0; /* offset 0x70 */
u32 mc_security_cfg1; /* offset 0x74 */
u32 reserved4[6]; /* offset 0x7C - 0x8C */
u32 mc_emem_arb_reserved[28]; /* offset 0x90 - 0xFC */ u32 mc_emem_arb_reserved[28]; /* offset 0x90 - 0xFC */
u32 reserved4[338]; /* offset 0x100 - 0x644 */ u32 reserved5[74]; /* offset 0x100 - 0x224 */
u32 mc_smmu_translation_enable_0; /* offset 0x228 */
u32 mc_smmu_translation_enable_1; /* offset 0x22C */
u32 mc_smmu_translation_enable_2; /* offset 0x230 */
u32 mc_smmu_translation_enable_3; /* offset 0x234 */
u32 mc_smmu_afi_asid; /* offset 0x238 */
u32 mc_smmu_avpc_asid; /* offset 0x23C */
u32 mc_smmu_dc_asid; /* offset 0x240 */
u32 mc_smmu_dcb_asid; /* offset 0x244 */
u32 reserved6[2]; /* offset 0x248 - 0x24C */
u32 mc_smmu_hc_asid; /* offset 0x250 */
u32 mc_smmu_hda_asid; /* offset 0x254 */
u32 mc_smmu_isp_asid; /* offset 0x258 */
u32 reserved7[2]; /* offset 0x25C - 0x260 */
u32 mc_smmu_mpe_asid; /* offset 0x264 */
u32 mc_smmu_nv_asid; /* offset 0x268 */
u32 mc_smmu_nv2_asid; /* offset 0x26C */
u32 mc_smmu_ppcs_asid; /* offset 0x270 */
u32 reserved8[1]; /* offset 0x274 */
u32 mc_smmu_sata_asid; /* offset 0x278 */
u32 mc_smmu_vde_asid; /* offset 0x27C */
u32 mc_smmu_vi_asid; /* offset 0x280 */
u32 reserved9[241]; /* offset 0x284 - 0x644 */
u32 mc_video_protect_bom; /* offset 0x648 */ u32 mc_video_protect_bom; /* offset 0x648 */
u32 mc_video_protect_size_mb; /* offset 0x64c */ u32 mc_video_protect_size_mb; /* offset 0x64c */
u32 mc_video_protect_reg_ctrl; /* offset 0x650 */ u32 mc_video_protect_reg_ctrl; /* offset 0x650 */

View file

@ -176,6 +176,13 @@ config TEGRA_DISCONNECT_UDC_ON_BOOT
USB controller when U-Boot boots to avoid leaving a stale USB device USB controller when U-Boot boots to avoid leaving a stale USB device
present. present.
config TEGRA_SUPPORT_NON_SECURE
bool "Support executing U-Boot in non-secure (NS) mode"
depends on TEGRA114 || TEGRA124
help
Certain impossible actions will be skipped if the CPU is in NS mode,
such as ARM architectural timer initialization.
config CI_UDC_HAS_HOSTPC config CI_UDC_HAS_HOSTPC
def_bool y def_bool y
depends on CI_UDC && !TEGRA20 depends on CI_UDC && !TEGRA20

View file

@ -77,9 +77,6 @@ bool spl_was_boot_source(void)
} }
#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE) #if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
#if !defined(CONFIG_TEGRA124)
#error tegra_cpu_is_non_secure has only been validated on Tegra124
#endif
bool tegra_cpu_is_non_secure(void) bool tegra_cpu_is_non_secure(void)
{ {
/* /*

View file

@ -299,7 +299,7 @@ static s8 periph_id_to_internal_id[PERIPH_ID_COUNT] = {
PERIPHC_UART3, PERIPHC_UART3,
/* 56 */ /* 56 */
NONE(RESERVED56), NONE(MIPI_CAL),
PERIPHC_EMC, PERIPHC_EMC,
NONE(USB2), NONE(USB2),
NONE(USB3), NONE(USB3),
@ -635,7 +635,6 @@ enum periph_id clk_id_to_periph_id(int clk_id)
case PERIPH_ID_RESERVED35: case PERIPH_ID_RESERVED35:
case PERIPH_ID_RESERVED43: case PERIPH_ID_RESERVED43:
case PERIPH_ID_RESERVED45: case PERIPH_ID_RESERVED45:
case PERIPH_ID_RESERVED56:
case PERIPH_ID_RESERVED76: case PERIPH_ID_RESERVED76:
case PERIPH_ID_RESERVED77: case PERIPH_ID_RESERVED77:
case PERIPH_ID_RESERVED78: case PERIPH_ID_RESERVED78:

View file

@ -9,7 +9,12 @@
* Svyatoslav Ryhel <clamor95@gmail.com> * Svyatoslav Ryhel <clamor95@gmail.com>
*/ */
#include <asm/io.h>
#include <asm/gpio.h>
#include <asm/arch/pinmux.h>
#include <asm/arch/tegra.h> #include <asm/arch/tegra.h>
#include <asm/arch-tegra/board.h>
#include <asm/arch-tegra/pmc.h>
#include <asm/arch-tegra/tegra_i2c.h> #include <asm/arch-tegra/tegra_i2c.h>
#include <linux/delay.h> #include <linux/delay.h>
@ -30,6 +35,8 @@
#define TPS80032_SMPS1_CFG_STATE_DATA (0x0100 | TPS80032_SMPS1_CFG_STATE_REG) #define TPS80032_SMPS1_CFG_STATE_DATA (0x0100 | TPS80032_SMPS1_CFG_STATE_REG)
#define TPS80032_SMPS2_CFG_STATE_DATA (0x0100 | TPS80032_SMPS2_CFG_STATE_REG) #define TPS80032_SMPS2_CFG_STATE_DATA (0x0100 | TPS80032_SMPS2_CFG_STATE_REG)
#define TEGRA_GPIO_PS0 144
void pmic_enable_cpu_vdd(void) void pmic_enable_cpu_vdd(void)
{ {
/* Set VDD_CORE to 1.200V. */ /* Set VDD_CORE to 1.200V. */
@ -45,3 +52,52 @@ void pmic_enable_cpu_vdd(void)
tegra_i2c_ll_write(TPS80032_CTL1_I2C_ADDR, TPS80032_SMPS1_CFG_STATE_DATA); tegra_i2c_ll_write(TPS80032_CTL1_I2C_ADDR, TPS80032_SMPS1_CFG_STATE_DATA);
udelay(10 * 1000); udelay(10 * 1000);
} }
/*
* Unlike all other supported Tegra devices and most known Tegra devices, the
* HTC One X has no hardware way to enter APX/RCM mode, which may lead to a
* dangerous situation when, if BCT is set correctly and the bootloader is
* faulty, the device will hang in a permanent brick state. Exiting from this
* state can be done only by disassembling the device and shortening testpad
* to the ground.
*
* To prevent this or to minimize the probability of such an accident, it was
* proposed to add the RCM rebooting hook as early into SPL as possible since
* SPL is much more robust and has minimal changes that can break bootflow.
*
* gpio_early_init_uart() function was chosen as it is the earliest function
* exposed for setup by the device. Hook performs a check for volume up
* button state and triggers RCM if it is pressed.
*/
void gpio_early_init_uart(void)
{
struct gpio_ctlr *ctlr = (struct gpio_ctlr *)NV_PA_GPIO_BASE;
struct gpio_ctlr_bank *bank = &ctlr->gpio_bank[GPIO_BANK(TEGRA_GPIO_PS0)];
u32 value;
/* Configure pinmux */
pinmux_set_func(PMUX_PINGRP_KB_ROW8_PS0, PMUX_FUNC_KBC);
pinmux_set_pullupdown(PMUX_PINGRP_KB_ROW8_PS0, PMUX_PULL_UP);
pinmux_tristate_disable(PMUX_PINGRP_KB_ROW8_PS0);
pinmux_set_io(PMUX_PINGRP_KB_ROW8_PS0, PMUX_PIN_INPUT);
/* Configure GPIO direction as input. */
value = readl(&bank->gpio_dir_out[GPIO_PORT(TEGRA_GPIO_PS0)]);
value &= ~(1 << GPIO_BIT(TEGRA_GPIO_PS0));
writel(value, &bank->gpio_dir_out[GPIO_PORT(TEGRA_GPIO_PS0)]);
/* Enable the pin as a GPIO */
value = readl(&bank->gpio_config[GPIO_PORT(TEGRA_GPIO_PS0)]);
value |= 1 << GPIO_BIT(TEGRA_GPIO_PS0);
writel(value, &bank->gpio_config[GPIO_PORT(TEGRA_GPIO_PS0)]);
/* Get GPIO value */
value = readl(&bank->gpio_in[GPIO_PORT(TEGRA_GPIO_PS0)]);
value = (value >> GPIO_BIT(TEGRA_GPIO_PS0)) & 1;
/* Enter RCM if button is pressed */
if (!value) {
tegra_pmc_writel(2, PMC_SCRATCH0);
tegra_pmc_writel(PMC_CNTRL_MAIN_RST, PMC_CNTRL);
}
}

View file

@ -3,26 +3,25 @@
U-Boot for the ASUS/Google Nexus 7 (2012) U-Boot for the ASUS/Google Nexus 7 (2012)
========================================= =========================================
``DISCLAMER!`` Moving your ASUS/Google Nexus 7 (2012) to use ``DISCLAMER!`` Moving your ASUS/Google Nexus 7 (2012) to use U-Boot assumes
U-Boot assumes replacement of the vendor ASUS bootloader. Vendor replacement of the vendor ASUS bootloader. Vendor android firmwares will no
android firmwares will no longer be able to run on the device. longer be able to run on the device. This replacement IS reversible.
This replacement IS reversible.
Quick Start Quick Start
----------- -----------
- Build U-Boot - Build U-Boot
- Pack U-Boot into repart-block - Process U-Boot
- Flash repart-block into the eMMC - Flashing U-Boot into the eMMC
- Boot - Boot
- Self Upgrading - Self Upgrading
Build U-Boot Build U-Boot
------------ ------------
Device support is implemented by applying config fragment to a generic Device support is implemented by applying config fragment to a generic board
board defconfig. Valid fragments are ``grouper_E1565.config``, defconfig. Valid fragments are ``tilapia.config``, ``grouper_E1565.config``
``grouper_PM269.config`` and ``tilapia.config``. and ``grouper_PM269.config``.
.. code-block:: bash .. code-block:: bash
@ -31,64 +30,103 @@ board defconfig. Valid fragments are ``grouper_E1565.config``,
$ make $ make
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin`` After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
image, ready for flashing (but check the next section for additional image, ready for further processing.
adjustments).
Pack U-Boot into repar-block Process U-Boot
---------------------------- --------------
``DISCLAMER!`` All questions related to re-crypt work should be asked ``DISCLAMER!`` All questions related to the re-crypt work should be asked
in re-crypt repo issues. NOT HERE! in re-crypt repo issues. NOT HERE!
re-crypt is a small script which packs ``u-boot-dtb-tegra.bin`` in re-crypt is a tool that processes the ``u-boot-dtb-tegra.bin`` binary into form
form usable by device. This process is required only on the first usable by device. This process is required only on the first installation or
installation or to recover the device in case of a failed update. to recover the device in case of a failed update. You need to know your
You need to know your tablet's individual SBK to continue. tablet's individual SBK to continue.
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Processing for the NV3P protocol
********************************
.. code-block:: bash .. code-block:: bash
$ git clone https://github.com/clamor-s/re-crypt.git $ git clone https://gitlab.com/grate-driver/re-crypt.git
$ cd re-crypt # place your u-boot-dtb-regra.bin here $ cd re-crypt # place your u-boot-dtb-tegra.bin here
$ ./re-crypt.sh -d grouper -k deadbeefdeadc0dedeadd00dfee1dead $ ./re-crypt.py --dev grouper --sbk <your sbk>
Script will produce you a ``repart-block.bin`` ready to flash. where SBK has next form ``0xXXXXXXXX`` ``0xXXXXXXXX`` ``0xXXXXXXXX`` ``0xXXXXXXXX``
Flash repart-block into the eMMC The script will produce a ``repart-block.bin`` ready to flash.
--------------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked Processing for pre-loaded U-Boot
in the proper place. NOT HERE! Flashing repart-block will erase ********************************
all your eMMC, so make a backup before!
``repart-block.bin`` contains BCT and bootloader in encrypted state The procedure is the same, but the ``--split`` argument is used with the
in form which can just be written RAW at the start of eMMC. ``re-crypt.py``. The script will produce ``bct.img`` and ``ebt.img`` ready
to flash.
Flashing U-Boot into the eMMC
-----------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked in the proper
place. NOT HERE! Flashing U-Boot will erase all eMMC, so make a backup before!
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Flashing with the NV3P protocol
*******************************
Nv3p is a custom Nvidia protocol used to recover bricked devices. Devices can
enter it either by using ``wheelie`` with the correct ``blob.bin`` file or by
pre-loading vendor bootloader with the Fusée Gelée.
With nv3p, ``repart-block.bin`` is used. It contains BCT and a bootloader in
encrypted state in form, which can just be written RAW at the start of eMMC.
.. code-block:: bash .. code-block:: bash
$ wheelie --blob blob.bin $ wheelie --blob blob.bin
$ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin $ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin
When flashing is done, reboot the device.
Flashing with a pre-loaded U-Boot
*********************************
U-Boot pre-loaded into RAM acts the same as when it was booted "cold". Currently
U-Boot supports bootmenu entry fastboot, which allows to write a processed copy
of U-Boot permanently into eMMC.
While pre-loading U-Boot, hold the ``volume down`` button which will trigger
the bootmenu. There, select ``fastboot`` using the volume and power buttons.
After, on host PC, do:
.. code-block:: bash
$ fastboot flash 0.1 bct.img
$ fastboot flash 0.2 ebt.img
$ fastboot reboot
Device will reboot.
Boot Boot
---- ----
After flashing ``repart-block.bin`` the device should reboot and turn To boot Linux, U-Boot will look for an ``extlinux.conf`` on eMMC. Additionally,
itself off. This is normal behavior if no boot configuration is if the Volume Down button is pressed while booting, the device will enter
found. bootmenu. Bootmenu contains entries to mount eMMC as mass storage, fastboot,
reboot, reboot RCM, poweroff, enter U-Boot console and update bootloader (check
the next chapter).
To boot Linux, U-Boot will look for an ``extlinux.conf`` configuration Flashing ``repart-block.bin`` eliminates vendor restrictions on eMMC and allows
on eMMC. Additionally if Volume Down button is pressed while booting the user to use/partition it in any way the user desires.
device will enter bootmenu. Bootmenu contains entries to mount eMMC as
mass storage, fastboot, reboot, reboot RCM, poweroff, enter U-Boot
console and update bootloader (check next chapter).
Flashing ``repart-block.bin`` eliminates vendor restriction on eMMC
and allows the user to use/partition it in any way the user desires.
Self Upgrading Self Upgrading
-------------- --------------
Place your ``u-boot-dtb-tegra.bin`` on the first partition of the Place your ``u-boot-dtb-tegra.bin`` on the first partition of the eMMC (using
eMMC (using ability of u-boot to mount it). Enter bootmenu, choose ability of u-boot to mount it). Enter bootmenu, choose update bootloader option
update bootloader option with Power button and U-Boot should update with Power button and U-Boot should update itself. Once the process is
itself. Once the process is completed, U-Boot will ask to press any completed, U-Boot will ask to press any button to reboot.
button to reboot.

View file

@ -3,28 +3,27 @@
U-Boot for the ASUS Transformer device family U-Boot for the ASUS Transformer device family
============================================= =============================================
``DISCLAMER!`` Moving your ASUS Transformer to use U-Boot ``DISCLAMER!`` Moving your ASUS Transformer to use U-Boot assumes replacement
assumes replacement of the vendor ASUS bootloader. Vendor of the vendor ASUS bootloader. Vendor Android firmwares will no longer be
android firmwares will no longer be able to run on the device. able to run on the device. This replacement IS reversible.
This replacement IS reversible.
Quick Start Quick Start
----------- -----------
- Build U-Boot - Build U-Boot
- Pack U-Boot into repart-block - Process U-Boot
- Flash repart-block into the eMMC - Flashing U-Boot into the eMMC
- Flash repart-block into TF600T SPI flash - Flashing U-Boot into the SPI flash
- Boot - Boot
- Self Upgrading - Self Upgrading
Build U-Boot Build U-Boot
------------ ------------
Device support is implemented by applying config fragment Device support is implemented by applying a config fragment to a generic board
to a generic board defconfig. Valid fragments are ``tf201.config``, defconfig. Valid fragments are ``tf201.config``, ``tf300t.config``,
``tf300t.config``, ``tf300tg.config``, ``tf300tl.config``, ``tf300tg.config``, ``tf300tl.config``, ``tf700t.config``, ``tf600t.config`` and
``tf700t.config``, ``tf600t.config`` and ``p1801-t.config``. ``p1801-t.config``.
.. code-block:: bash .. code-block:: bash
@ -33,84 +32,124 @@ to a generic board defconfig. Valid fragments are ``tf201.config``,
$ make $ make
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin`` After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
image, ready for flashing (but check the next section for additional image, ready for further processing.
adjustments).
Pack U-Boot into repar-block Process U-Boot
---------------------------- --------------
``DISCLAMER!`` All questions related to re-crypt work should be asked ``DISCLAMER!`` All questions related to the re-crypt work should be asked
in re-crypt repo issues. NOT HERE! in re-crypt repo issues. NOT HERE!
re-crypt is a small script which packs ``u-boot-dtb-tegra.bin`` in re-crypt is a tool that processes the ``u-boot-dtb-tegra.bin`` binary into form
form usable by device. This process is required only on the first usable by device. This process is required only on the first installation or
installation or to recover the device in case of a failed update. to recover the device in case of a failed update. You need to know your
You need to know your tablet's individual SBK to continue. tablet's individual SBK to continue.
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Processing for the NV3P protocol
********************************
.. code-block:: bash .. code-block:: bash
$ git clone https://github.com/clamor-s/re-crypt.git $ git clone https://gitlab.com/grate-driver/re-crypt.git
$ cd re-crypt # place your u-boot-dtb-regra.bin here $ cd re-crypt # place your u-boot-dtb-tegra.bin here
$ ./re-crypt.sh -d tf201 -k deadbeefdeadc0dedeadd00dfee1dead $ ./re-crypt.py --dev tf201 --sbk <your sbk>
Script will produce you a `repart-block.bin` ready to flash. where SBK has next form ``0xXXXXXXXX`` ``0xXXXXXXXX`` ``0xXXXXXXXX`` ``0xXXXXXXXX``
Flash repart-block into the eMMC The script will produce a ``repart-block.bin`` ready to flash.
--------------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked Processing for pre-loaded U-Boot
in the proper place. NOT HERE! Flashing repart-block will erase ********************************
all your eMMC, so make a backup before!
``repart-block.bin`` contains BCT and bootloader in encrypted state The procedure is the same, but the ``--split`` argument is used with the
in form which can just be written RAW at the start of eMMC. ``re-crypt.py``. The script will produce ``bct.img`` and ``ebt.img`` ready
to flash.
Flashing U-Boot into the eMMC
-----------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked in the proper
place. NOT HERE! Flashing U-Boot will erase all eMMC, so make a backup before!
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Flashing with the NV3P protocol
*******************************
Nv3p is a custom Nvidia protocol used to recover bricked devices. Devices can
enter it either by using ``wheelie`` with the correct ``blob.bin`` file or by
pre-loading vendor bootloader with the Fusée Gelée.
With nv3p, ``repart-block.bin`` is used. It contains BCT and a bootloader in
encrypted state in form, which can just be written RAW at the start of eMMC.
.. code-block:: bash .. code-block:: bash
$ wheelie --blob blob.bin $ wheelie --blob blob.bin
$ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin $ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin
Flash repart-block into TF600T SPI flash When flashing is done, reboot the device.
----------------------------------------
Unlike other transformers TF600T uses separate 4 MB SPI flash which Flashing with a pre-loaded U-Boot
contains all data required for boot. It is flashed from within u-boot *********************************
itself preloaded into RAM using fusee gelee. After creating your
``repart-block.bin`` you have to place it on a 1st partition of microSD
card formated in fat. Then insert this microSD card into your tablet
and boot it using fusee gelee and u-boot which was included into
repart-block.bin, while booting you must hold volume down button.
Process should take less then a minute, if everything goes correct,
on microSD will appear ``spi-flash-backup.bin`` file, which is dump of
your spi flash content and can be used to restore UEFI, do not loose it,
tablet will power itself off.
Self-updating of u-boot is performed by placing ``u-boot-dtb-tegra.bin`` U-Boot pre-loaded into RAM acts the same as when it was booted "cold". Currently
on 1st partition of microSD, inserting it into tablet and booting with U-Boot supports bootmenu entry fastboot, which allows to write a processed copy
pressed volume down button. of U-Boot permanently into eMMC.
While pre-loading U-Boot, hold the ``volume down`` button which will trigger
the bootmenu. There, select ``fastboot`` using the volume and power buttons.
After, on host PC, do:
.. code-block:: bash
$ fastboot flash 0.1 bct.img
$ fastboot flash 0.2 ebt.img
$ fastboot reboot
Device will reboot.
Flashing U-Boot into the SPI Flash
----------------------------------
Some of Transformers use a separate 4 MB SPI flash, which contains all data
required for boot. It is flashed from within U-Boot itself, preloaded into RAM
using Fusée Gelée.
After creating your ``repart-block.bin`` you have to place it on a 1st partition
of microSD card formated in fat. Then insert this microSD card into your tablet
and boot it using Fusée Gelée and U-Boot, which was included into
``repart-block.bin``, while booting you must hold the ``volume down`` button.
The process should take less than a minute, if everything goes correctly,
on microSD will appear ``spi-flash-backup.bin`` file, which is the dump of your
SPI Flash content and can be used to restore UEFI, do not lose it, tablet will
power itself off.
Self-updating of U-Boot is performed by placing ``u-boot-dtb-tegra.bin`` on 1st
partition of microSD, inserting it into the tablet and booting with a pressed
``volume down`` button.
Boot Boot
---- ----
After flashing ``repart-block.bin`` the device should reboot and turn To boot Linux, U-Boot will look for an ``extlinux.conf`` on MicroSD and then on
itself off. This is normal behavior if no boot configuration is eMMC. Additionally, if the Volume Down button is pressed while booting, the
found. device will enter bootmenu. Bootmenu contains entries to mount MicroSD and eMMC
as mass storage, fastboot, reboot, reboot RCM, poweroff, enter U-Boot console
and update bootloader (check the next chapter).
To boot Linux, U-Boot will look for an ``extlinux.conf`` on MicroSD Flashing ``repart-block.bin`` eliminates vendor restrictions on eMMC and allows
and then on eMMC. Additionally if Volume Down button is pressed the user to use/partition it in any way the user desires.
while booting device will enter bootmenu. Bootmenu contains entries
to mount MicroSD and eMMC as mass storage, fastboot, reboot, reboot
RCM, poweroff, enter U-Boot console and update bootloader (check next
chapter).
Flashing ``repart-block.bin`` eliminates vendor restriction on eMMC
and allows the user to use/partition it in any way the user desires.
Self Upgrading Self Upgrading
-------------- --------------
Place your ``u-boot-dtb-tegra.bin`` on the first partition of the Place your ``u-boot-dtb-tegra.bin`` on the first partition of the MicroSD card
MicroSD card and insert it into the tablet. Enter bootmenu, choose and insert it into the tablet. Enter bootmenu, choose update the bootloader
update bootloader option with Power button and U-Boot should update option with the Power button and U-Boot should update itself. Once the process
itself. Once the process is completed, U-Boot will ask to press any is completed, U-Boot will ask to press any button to reboot.
button to reboot.

View file

@ -3,17 +3,16 @@
U-Boot for the HTC One X (endeavoru) U-Boot for the HTC One X (endeavoru)
==================================== ====================================
``DISCLAMER!`` Moving your HTC ONe X to use U-Boot assumes ``DISCLAMER!`` Moving your HTC ONe X to use U-Boot assumes replacement of the
replacement of the vendor hboot. Vendor android firmwares vendor hboot. Vendor android firmwares will no longer be able to run on the
will no longer be able to run on the device. device. This replacement IS reversible.
This replacement IS reversible.
Quick Start Quick Start
----------- -----------
- Build U-Boot - Build U-Boot
- Pack U-Boot into repart-block - Process U-Boot
- Flash repart-block into the eMMC - Flashing U-Boot into the eMMC
- Boot - Boot
- Self Upgrading - Self Upgrading
@ -27,63 +26,100 @@ Build U-Boot
$ make $ make
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin`` After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
image, ready for flashing (but check the next section for additional image, ready for further processing.
adjustments).
Pack U-Boot into repar-block Process U-Boot
---------------------------- --------------
``DISCLAMER!`` All questions related to re-crypt work should be ``DISCLAMER!`` All questions related to the re-crypt work should be asked
asked in re-crypt repo issues. NOT HERE! in re-crypt repo issues. NOT HERE!
re-crypt is a small script which packs ``u-boot-dtb-tegra.bin`` in re-crypt is a tool that processes the ``u-boot-dtb-tegra.bin`` binary into form
form usable by device. This process is required only on the first usable by device. This process is required only on the first installation or
installation or to recover the device in case of a failed update. to recover the device in case of a failed update.
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Processing for the NV3P protocol
********************************
.. code-block:: bash .. code-block:: bash
$ git clone https://github.com/clamor-s/re-crypt.git $ git clone https://gitlab.com/grate-driver/re-crypt.git
$ cd re-crypt # place your u-boot-dtb-regra.bin here $ cd re-crypt # place your u-boot-dtb-tegra.bin here
$ ./re-crypt.sh -d endeavoru $ ./re-crypt.py --dev endeavoru
Script will produce you a ``repart-block.bin`` ready to flash. The script will produce a ``repart-block.bin`` ready to flash.
Flash repart-block into the eMMC Processing for pre-loaded U-Boot
-------------------------------- ********************************
``DISCLAMER!`` All questions related to NvFlash should be asked The procedure is the same, but the ``--split`` argument is used with the
in the proper place. NOT HERE! Flashing repart-block will erase ``re-crypt.py``. The script will produce ``bct.img`` and ``ebt.img`` ready
all your eMMC, so make a backup before! to flash.
``repart-block.bin`` contains BCT and bootloader in encrypted state Flashing U-Boot into the eMMC
in form which can just be written RAW at the start of eMMC. -----------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked in the proper
place. NOT HERE! Flashing U-Boot will erase all eMMC, so make a backup before!
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Flashing with the NV3P protocol
*******************************
Nv3p is a custom Nvidia protocol used to recover bricked devices. Devices can
enter it either by using ``wheelie`` with the correct ``blob.bin`` file or by
pre-loading vendor bootloader with the Fusée Gelée.
With nv3p, ``repart-block.bin`` is used. It contains BCT and a bootloader in
encrypted state in form, which can just be written RAW at the start of eMMC.
.. code-block:: bash .. code-block:: bash
$ wheelie --blob blob.bin $ wheelie --blob blob.bin
$ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin $ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin
When flashing is done, reboot the device.
Flashing with a pre-loaded U-Boot
*********************************
U-Boot pre-loaded into RAM acts the same as when it was booted "cold". Currently
U-Boot supports bootmenu entry fastboot, which allows to write a processed copy
of U-Boot permanently into eMMC.
While pre-loading U-Boot, hold the ``volume down`` button which will trigger
the bootmenu. There, select ``fastboot`` using the volume and power buttons.
After, on host PC, do:
.. code-block:: bash
$ fastboot flash 0.1 bct.img
$ fastboot flash 0.2 ebt.img
$ fastboot reboot
Device will reboot.
Boot Boot
---- ----
After flashing ``repart-block.bin`` the device should reboot and turn To boot Linux, U-Boot will look for an ``extlinux.conf`` on eMMC. Additionally,
itself off. This is normal behavior if no boot configuration is if the Volume Down button is pressed while booting, the device will enter
found. bootmenu. Bootmenu contains entries to mount eMMC as mass storage, fastboot,
reboot, reboot RCM, poweroff, enter U-Boot console and update bootloader (check
the next chapter).
To boot Linux, U-Boot will look for an ``extlinux.conf`` configuration Flashing ``repart-block.bin`` eliminates vendor restrictions on eMMC and allows
on eMMC. Additionally if Volume Down button is pressed while booting the user to use/partition it in any way the user desires.
device will enter bootmenu. Bootmenu contains entries to mount eMMC as
mass storage, fastboot, reboot, reboot RCM, poweroff, enter U-Boot
console and update bootloader (check next chapter).
Flashing ``repart-block.bin`` eliminates vendor restriction on eMMC
and allows the user to use/partition it in any way the user desires.
Self Upgrading Self Upgrading
-------------- --------------
Place your ``u-boot-dtb-tegra.bin`` on the first partition of the Place your ``u-boot-dtb-tegra.bin`` on the first partition of the eMMC (using
eMMC (using ability of u-boot to mount it). Enter bootmenu, choose ability of u-boot to mount it). Enter bootmenu, choose update bootloader option
update bootloader option with Power button and U-Boot should update with Power button and U-Boot should update itself. Once the process is
itself. Once the process is completed, U-Boot will ask to press any completed, U-Boot will ask to press any button to reboot.
button to reboot.

View file

@ -3,17 +3,16 @@
U-Boot for the LG X3 T30 device family U-Boot for the LG X3 T30 device family
====================================== ======================================
``DISCLAMER!`` Moving your LG P880 or P895 to use U-Boot ``DISCLAMER!`` Moving your LG P880 or P895 to use U-Boot assumes replacement
assumes replacement of the vendor LG bootloader. Vendor of the vendor LG bootloader. Vendor android firmwares will no longer be able
android firmwares will no longer be able to run on the to run on the device. This replacement IS reversible.
device. This replacement IS reversible.
Quick Start Quick Start
----------- -----------
- Build U-Boot - Build U-Boot
- Pack U-Boot into repart-block - Process U-Boot
- Flash repart-block into the eMMC - Flashing U-Boot into the eMMC
- Boot - Boot
- Self Upgrading - Self Upgrading
@ -30,64 +29,100 @@ board defconfig. Valid fragments are ``p880.config`` and ``p895.config``.
$ make $ make
After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin`` After the build succeeds, you will obtain the final ``u-boot-dtb-tegra.bin``
image, ready for flashing (but check the next section for additional image, ready for further processing.
adjustments).
Pack U-Boot into repar-block Process U-Boot
---------------------------- --------------
``DISCLAMER!`` All questions related to re-crypt work should be ``DISCLAMER!`` All questions related to the re-crypt work should be asked
asked in re-crypt repo issues. NOT HERE! in re-crypt repo issues. NOT HERE!
re-crypt is a small script which packs ``u-boot-dtb-tegra.bin`` in re-crypt is a tool that processes the ``u-boot-dtb-tegra.bin`` binary into form
form usable by device. This process is required only on the first usable by device. This process is required only on the first installation or
installation or to recover the device in case of a failed update. to recover the device in case of a failed update.
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Processing for the NV3P protocol
********************************
.. code-block:: bash .. code-block:: bash
$ git clone https://github.com/clamor-s/re-crypt.git $ git clone https://gitlab.com/grate-driver/re-crypt.git
$ cd re-crypt # place your u-boot-dtb-regra.bin here $ cd re-crypt # place your u-boot-dtb-tegra.bin here
$ ./re-crypt.sh -d p895 $ ./re-crypt.py --dev p895
Script will produce you a ``repart-block.bin`` ready to flash. The script will produce a ``repart-block.bin`` ready to flash.
Flash repart-block into the eMMC Processing for pre-loaded U-Boot
-------------------------------- ********************************
``DISCLAMER!`` All questions related to NvFlash should be asked The procedure is the same, but the ``--split`` argument is used with the
in the proper place. NOT HERE! Flashing repart-block will erase ``re-crypt.py``. The script will produce ``bct.img`` and ``ebt.img`` ready
all your eMMC, so make a backup before! to flash.
``repart-block.bin`` contains BCT and bootloader in encrypted state Flashing U-Boot into the eMMC
in form which can just be written RAW at the start of eMMC. -----------------------------
``DISCLAMER!`` All questions related to NvFlash should be asked in the proper
place. NOT HERE! Flashing U-Boot will erase all eMMC, so make a backup before!
Permanent installation can be performed either by using the nv3p protocol or by
pre-loading just built U-Boot into RAM.
Flashing with the NV3P protocol
*******************************
Nv3p is a custom Nvidia protocol used to recover bricked devices. Devices can
enter it either by using ``wheelie`` with the correct ``blob.bin`` file or by
pre-loading vendor bootloader with the Fusée Gelée.
With nv3p, ``repart-block.bin`` is used. It contains BCT and a bootloader in
encrypted state in form, which can just be written RAW at the start of eMMC.
.. code-block:: bash .. code-block:: bash
$ wheelie --blob blob.bin $ wheelie --blob blob.bin
$ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin $ nvflash --resume --rawdevicewrite 0 1024 repart-block.bin
When flashing is done, reboot the device.
Flashing with a pre-loaded U-Boot
*********************************
U-Boot pre-loaded into RAM acts the same as when it was booted "cold". Currently
U-Boot supports bootmenu entry fastboot, which allows to write a processed copy
of U-Boot permanently into eMMC.
While pre-loading U-Boot, hold the ``volume down`` button which will trigger
the bootmenu. There, select ``fastboot`` using the volume and power buttons.
After, on host PC, do:
.. code-block:: bash
$ fastboot flash 0.1 bct.img
$ fastboot flash 0.2 ebt.img
$ fastboot reboot
Device will reboot.
Boot Boot
---- ----
After flashing ``repart-block.bin`` the device should reboot and turn To boot Linux, U-Boot will look for an ``extlinux.conf`` on eMMC. Additionally,
itself off. This is normal behavior if no boot configuration is if the Volume Down button is pressed while booting, the device will enter
found. bootmenu. Bootmenu contains entries to mount eMMC as mass storage, fastboot,
reboot, reboot RCM, poweroff, enter U-Boot console and update bootloader (check
the next chapter).
To boot Linux, U-Boot will look for an ``extlinux.conf`` on MicroSD Flashing ``repart-block.bin`` eliminates vendor restrictions on eMMC and allows
and then on eMMC. Additionally if Volume Down button is pressed the user to use/partition it in any way the user desires.
while booting device will enter bootmenu. Bootmenu contains entries
to mount MicroSD and eMMC as mass storage, fastboot, reboot, reboot
RCM, poweroff, enter U-Boot console and update bootloader (check next
chapter).
Flashing ``repart-block.bin`` eliminates vendor restriction on eMMC
and allows the user to use/partition it in any way the user desires.
Self Upgrading Self Upgrading
-------------- --------------
Place your ``u-boot-dtb-tegra.bin`` on the first partition of the Place your ``u-boot-dtb-tegra.bin`` on the first partition of the eMMC (using
eMMC (using ability of u-boot to mount it). Enter bootmenu, choose ability of u-boot to mount it). Enter bootmenu, choose update bootloader option
update bootloader option with Power button and U-Boot should update with Power button and U-Boot should update itself. Once the process is
itself. Once the process is completed, U-Boot will ask to press any completed, U-Boot will ask to press any button to reboot.
button to reboot.