[U-Boot] [PATCH v3 0/23] tegra: warmboot (suspend / resume) support

Simon Glass sjg at chromium.org
Tue Apr 3 01:18:40 CEST 2012


This series adds support for warm boot, allowing the device to suspend
and resume. U-Boot sets up some 'warm boot' code in a special area such
that the SOC can find it on a resume. This code is responsible for
setting up memory and clocked and then allowing the OS to continue
where it left off.

Also included here is support for the EMC, which allows setting the memory
timings correctly in U-Boot for maximum speed operation.

Note: sign-offs are needed from Jimmy Zhang, Wei Ni and Yen Lin.

Changes in v2:
- Add check of undocumented values in hidrev register
- Add debug() output to EMC
- Add new fdtdec_locate_array() function
- Add patch to find DVC bus number
- Check error return from pmu_set_nominal() in debug mode
- Move EMC tables to device tree
- Move structs shared between A9 and AVP into warmboot.h header file
- New patch to add low-level clock functions
- Rely on compiler to optimise out debug_print_vector()
- Remove unused crypto code
- Remove unused crypto code from crypto.c
- Removed check for nominal voltage (not needed as it is done just before)
- Split PMU code into separate TPS6586X driver
- Tidy SDRAM range check in warmboot_prepare_code()
- Tidy whitespace problems
- Use const for sbox arrays
- Use low-level clock functions in warmboot code instead of register access

Changes in v3:
- Add apb_misc.h header file in new patch
- Add better error reporting when EMC setup fails
- Add new fdtdec_next_compatible_subnode() patch
- Add new patch to put abs() in common.h
- Fix CONFIG_TEGRA_I2C define
- Move abs() macro into common.h
- Support nvidia,use-ram-code binding option for EMC
- Try to return a useful error code when EMC config fails

Jimmy Zhang (3):
  tegra: Add EMC support for optimal memory timings
  tegra: Add PMU to manage power supplies
  tegra: Add EMC settings for Seaboard

Simon Glass (14):
  fdt: Add function to locate an array in the device tree
  fdt: Add function to return next compatible subnode
  Add abs() macro to return absolute value
  i2c: Add TPS6586X driver
  tegra: Move ap20.h header into arch location
  tegra: Add functions to access low-level Osc/PLL details
  tegra: Add tegra_get_chip_type() to detect SKU
  tegra: Add header file for APB_MISC register
  tegra: Set up PMU for Nvidia boards
  tegra: Set up warmboot code on Nvidia boards
  fdt: tegra: Add EMC node to device tree
  tegra: i2c: Add function to find DVC bus
  tegra: fdt: Add EMC data for Tegra2 Seaboard
  tegra: Enable LP0 on Seaboard

Wei Ni (1):
  tegra: Turn off power detect in board init

Yen Lin (5):
  Add AES crypto library
  tegra: Add crypto library for warmboot code
  tegra: Add flow, gp_padctl, fuse, sdram headers
  tegra: Add warmboot implementation
  tegra: Setup PMC scratch info from ap20 setup

 arch/arm/cpu/armv7/tegra2/Makefile                 |    4 +
 arch/arm/cpu/armv7/tegra2/ap20.c                   |   44 ++-
 arch/arm/cpu/armv7/tegra2/board.c                  |    4 +-
 arch/arm/cpu/armv7/tegra2/clock.c                  |   32 +
 arch/arm/cpu/armv7/tegra2/crypto.c                 |  230 ++++++++
 arch/arm/cpu/armv7/tegra2/crypto.h                 |   36 ++
 arch/arm/cpu/armv7/tegra2/emc.c                    |  286 ++++++++++
 arch/arm/cpu/armv7/tegra2/pmu.c                    |   70 +++
 arch/arm/cpu/armv7/tegra2/warmboot.c               |  382 +++++++++++++
 arch/arm/cpu/armv7/tegra2/warmboot_avp.c           |  250 ++++++++
 arch/arm/cpu/armv7/tegra2/warmboot_avp.h           |   81 +++
 arch/arm/dts/tegra20.dtsi                          |    7 +
 .../tegra2 => include/asm/arch-tegra2}/ap20.h      |    7 +
 arch/arm/include/asm/arch-tegra2/apb_misc.h        |   36 ++
 arch/arm/include/asm/arch-tegra2/clk_rst.h         |    3 +
 arch/arm/include/asm/arch-tegra2/clock.h           |   22 +
 arch/arm/include/asm/arch-tegra2/emc.h             |  113 ++++
 arch/arm/include/asm/arch-tegra2/flow.h            |   36 ++
 arch/arm/include/asm/arch-tegra2/fuse.h            |   39 ++
 arch/arm/include/asm/arch-tegra2/gp_padctrl.h      |   73 +++
 arch/arm/include/asm/arch-tegra2/pmu.h             |   30 +
 arch/arm/include/asm/arch-tegra2/sdram_param.h     |  148 +++++
 arch/arm/include/asm/arch-tegra2/tegra2.h          |   25 +
 arch/arm/include/asm/arch-tegra2/tegra_i2c.h       |    7 +
 arch/arm/include/asm/arch-tegra2/warmboot.h        |  150 +++++
 board/nvidia/common/Makefile                       |    1 +
 board/nvidia/common/board.c                        |   41 ++-
 board/nvidia/common/emc.c                          |   53 ++
 board/nvidia/common/emc.h                          |   29 +
 board/nvidia/dts/tegra2-seaboard.dts               |   72 +++
 drivers/i2c/tegra_i2c.c                            |   14 +
 drivers/power/Makefile                             |    1 +
 drivers/power/tps6586x.c                           |  280 +++++++++
 include/aes.h                                      |   70 +++
 include/common.h                                   |   13 +
 include/configs/seaboard.h                         |    8 +
 include/configs/tegra2-common.h                    |   17 +
 include/fdtdec.h                                   |   38 ++
 include/tps6586x.h                                 |   68 +++
 lib/Makefile                                       |    1 +
 lib/aes.c                                          |  598 ++++++++++++++++++++
 lib/fdtdec.c                                       |   28 +
 42 files changed, 3443 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/tegra2/crypto.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/crypto.h
 create mode 100644 arch/arm/cpu/armv7/tegra2/emc.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/pmu.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/warmboot.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/warmboot_avp.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/warmboot_avp.h
 rename arch/arm/{cpu/armv7/tegra2 => include/asm/arch-tegra2}/ap20.h (96%)
 create mode 100644 arch/arm/include/asm/arch-tegra2/apb_misc.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/emc.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/flow.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/fuse.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/gp_padctrl.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/pmu.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/sdram_param.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/warmboot.h
 create mode 100644 board/nvidia/common/emc.c
 create mode 100644 board/nvidia/common/emc.h
 create mode 100644 drivers/power/tps6586x.c
 create mode 100644 include/aes.h
 create mode 100644 include/tps6586x.h
 create mode 100644 lib/aes.c

-- 
1.7.7.3



More information about the U-Boot mailing list