Tegra210/P2571 initial support
Subsystems (10)
v3 cover Tegra210/P2571 initial support
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC code. Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
Changes in V3:
- moved DTSI file into SoC patch, made DTS files conform with 64-bit FDT
- removed untested/unneeded DT nodes like APBDMA, PWM, etc.
- used common ARMV7 Kconfig option for 32-bit T210 Tegra SoCs
- removed funcmux UART init on T210 - pinmux_init does it all
- fix redundant strings in xusb-padctl.c
- updated tegra210-car dt binding from treding
- fix/update PLLU/ehci-tegra support for T210: USB works now
- roll in some 64-bit Tegra fixes from treding/swarren
- add fdt_high/initrd_high 64-bit fix from treading/swarren
- fix COUNTER_FREQUENCY to match T210/P2571 OSC freq (38.4)
Changes in V2:
- minor fixes as per swarren review
Tom Warren (6):
Tegra210: Fix 64-bit build warning about save_boot_params_ret()
Tegra: Rework KConfig options to allow 64-bit builds (T210)
ARM: Tegra210: Add SoC code/include files for T210
ARM: Tegra210: Add support to common Tegra source/config files
P2571: dts: Add DT file for Tegra210 P2571 board
T210: Add support for 64-bit T210-based P2571 board
arch/arm/Kconfig | 11 - arch/arm/dts/Makefile | 3 +- arch/arm/dts/tegra210-p2571.dts | 106 ++ arch/arm/dts/tegra210.dtsi | 283 ++++++ arch/arm/include/asm/arch-tegra/ap.h | 6 +- arch/arm/include/asm/arch-tegra/clk_rst.h | 36 +- arch/arm/include/asm/arch-tegra/gp_padctrl.h | 3 +- arch/arm/include/asm/arch-tegra/pmc.h | 7 +- arch/arm/include/asm/arch-tegra/tegra.h | 4 +- arch/arm/include/asm/arch-tegra/usb.h | 3 + arch/arm/include/asm/arch-tegra210/ahb.h | 91 ++ arch/arm/include/asm/arch-tegra210/clock-tables.h | 566 +++++++++++ arch/arm/include/asm/arch-tegra210/clock.h | 27 + arch/arm/include/asm/arch-tegra210/flow.h | 45 + arch/arm/include/asm/arch-tegra210/funcmux.h | 23 + arch/arm/include/asm/arch-tegra210/gp_padctrl.h | 74 ++ arch/arm/include/asm/arch-tegra210/gpio.h | 303 ++++++ arch/arm/include/asm/arch-tegra210/mc.h | 72 ++ arch/arm/include/asm/arch-tegra210/pmu.h | 14 + arch/arm/include/asm/arch-tegra210/powergate.h | 12 + arch/arm/include/asm/arch-tegra210/sysctr.h | 26 + arch/arm/include/asm/arch-tegra210/tegra.h | 32 + arch/arm/mach-tegra/Kconfig | 30 + arch/arm/mach-tegra/Makefile | 5 +- arch/arm/mach-tegra/ap.c | 11 +- arch/arm/mach-tegra/board.c | 12 +- arch/arm/mach-tegra/board2.c | 3 + arch/arm/mach-tegra/cache.c | 2 + arch/arm/mach-tegra/clock.c | 30 +- arch/arm/mach-tegra/cpu.c | 55 +- arch/arm/mach-tegra/cpu.h | 10 +- arch/arm/mach-tegra/lowlevel_init.S | 15 + arch/arm/mach-tegra/tegra210/Kconfig | 18 + arch/arm/mach-tegra/tegra210/Makefile | 11 + arch/arm/mach-tegra/tegra210/clock.c | 1091 +++++++++++++++++++++ arch/arm/mach-tegra/tegra210/funcmux.c | 40 + arch/arm/mach-tegra/tegra210/xusb-padctl.c | 495 ++++++++++ board/nvidia/p2571/Kconfig | 12 + board/nvidia/p2571/MAINTAINERS | 6 + board/nvidia/p2571/Makefile | 9 + board/nvidia/p2571/max77620_init.c | 85 ++ board/nvidia/p2571/max77620_init.h | 67 ++ board/nvidia/p2571/p2571.c | 41 + board/nvidia/p2571/pinmux-config-p2571.h | 237 +++++ configs/p2571_defconfig | 16 + drivers/mmc/tegra_mmc.c | 12 +- drivers/usb/host/ehci-tegra.c | 31 +- include/configs/p2571.h | 78 ++ include/configs/tegra-common-post.h | 12 +- include/configs/tegra210-common.h | 76 ++ include/dt-bindings/clock/tegra210-car.h | 342 +++++++ include/fdtdec.h | 3 + lib/fdtdec.c | 2 + 53 files changed, 4974 insertions(+), 55 deletions(-) create mode 100644 arch/arm/dts/tegra210-p2571.dts create mode 100644 arch/arm/dts/tegra210.dtsi create mode 100644 arch/arm/include/asm/arch-tegra210/ahb.h create mode 100644 arch/arm/include/asm/arch-tegra210/clock-tables.h create mode 100644 arch/arm/include/asm/arch-tegra210/clock.h create mode 100644 arch/arm/include/asm/arch-tegra210/flow.h create mode 100644 arch/arm/include/asm/arch-tegra210/funcmux.h create mode 100644 arch/arm/include/asm/arch-tegra210/gp_padctrl.h create mode 100644 arch/arm/include/asm/arch-tegra210/gpio.h create mode 100644 arch/arm/include/asm/arch-tegra210/mc.h create mode 100644 arch/arm/include/asm/arch-tegra210/pmu.h create mode 100644 arch/arm/include/asm/arch-tegra210/powergate.h create mode 100644 arch/arm/include/asm/arch-tegra210/sysctr.h create mode 100644 arch/arm/include/asm/arch-tegra210/tegra.h create mode 100644 arch/arm/mach-tegra/tegra210/Kconfig create mode 100644 arch/arm/mach-tegra/tegra210/Makefile create mode 100644 arch/arm/mach-tegra/tegra210/clock.c create mode 100644 arch/arm/mach-tegra/tegra210/funcmux.c create mode 100644 arch/arm/mach-tegra/tegra210/xusb-padctl.c create mode 100644 board/nvidia/p2571/Kconfig create mode 100644 board/nvidia/p2571/MAINTAINERS create mode 100644 board/nvidia/p2571/Makefile create mode 100644 board/nvidia/p2571/max77620_init.c create mode 100644 board/nvidia/p2571/max77620_init.h create mode 100644 board/nvidia/p2571/p2571.c create mode 100644 board/nvidia/p2571/pinmux-config-p2571.h create mode 100644 configs/p2571_defconfig create mode 100644 include/configs/p2571.h create mode 100644 include/configs/tegra210-common.h create mode 100644 include/dt-bindings/clock/tegra210-car.h
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 1/6 Tegra210: Fix 64-bit build warning about save_boot_params_ret()
Simon's 'tegra124: Implement spl_was_boot_source()' needs a prototype for save_boot_params_ret() to build cleanly for 64-bit Tegra210.
---
Changes in V3: None
Changes in V2: New patch
arch/arm/mach-tegra/board.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/mach-tegra/board.c +2 -0
@@ -18,6 +18,8 @@#include <asm/arch-tegra/sys_proto.h> #include <asm/arch-tegra/warmboot.h> +void save_boot_params_ret (void ); +DECLARE_GLOBAL_DATA_PTR ;enum {
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 2/6 Tegra: Rework KConfig options to allow 64-bit builds (T210)
In reply to Tom WarrenMoved Tegra config options to mach-tegra/Kconfig so that both 32-bit and 64-bit builds can co-exist for Tegra SoCs.
T210 will be 64-bit only (no SPL) and will require a 32-bit AVP/BPMP loader.
---
Changes in V3:
- used common ARMV7 Kconfig option for 32-bit T210 Tegra SoCs Changes in V2: None
arch/arm/Kconfig | 11 ----------- arch/arm/mach-tegra/Kconfig | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 11 deletions(-)
arch/arm/Kconfig +0 -11
@@ -681,17 +681,6 @@ config TARGET_XILINX_ZYNQMP config TEGRA bool "NVIDIA Tegra" - select SUPPORT_SPL - select SPL - select OF_CONTROL - select SPL_DISABLE_OF_CONTROL - select CPU_V7 - select DM - select DM_SPI_FLASH - select DM_SERIAL - select DM_I2C - select DM_SPI - select DM_GPIO config TARGET_VEXPRESS64_AEMV8A bool "Support vexpress_aemv8a"
arch/arm/mach-tegra/Kconfig +18 -0
@@ -1,20 +1,38 @@ if TEGRA +config TEGRA_ARMV7_COMMON + bool "Tegra 32-bit" + select SUPPORT_SPL + select SPL + select OF_CONTROL + select SPL_DISABLE_OF_CONTROL + select CPU_V7 + select DM + select DM_SPI_FLASH + select DM_SERIAL + select DM_I2C + select DM_SPI + select DM_GPIO + choice prompt "Tegra SoC select" optional config TEGRA20 bool "Tegra20 family" + select TEGRA_ARMV7_COMMON config TEGRA30 bool "Tegra30 family" + select TEGRA_ARMV7_COMMON config TEGRA114 bool "Tegra114 family" + select TEGRA_ARMV7_COMMON config TEGRA124 bool "Tegra124 family" + select TEGRA_ARMV7_COMMON endchoice
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 3/6 ARM: Tegra210: Add SoC code/include files for T210
In reply to Tom WarrenAll based off of Tegra124. As a Tegra210 board is brought up, these may change a bit to match the HW more closely, but probably 90% of this is identical to T124.
Note that since T210 is a 64-bit build, it has no SPL component, and hence no cpu.c for Tegra210.
---
Changes in V3:
- removed funcmux UART init on T210 - pinmux_init does it all
- fix redundant strings in xusb-padctl.c
- updated tegra210-car dt bindings from treding Changes in V2:
- minor fixes as per swarren review
arch/arm/include/asm/arch-tegra210/ahb.h | 91 ++ arch/arm/include/asm/arch-tegra210/clock-tables.h | 566 +++++++++++ arch/arm/include/asm/arch-tegra210/clock.h | 27 + arch/arm/include/asm/arch-tegra210/flow.h | 45 + arch/arm/include/asm/arch-tegra210/funcmux.h | 23 + arch/arm/include/asm/arch-tegra210/gp_padctrl.h | 74 ++ arch/arm/include/asm/arch-tegra210/gpio.h | 303 ++++++ arch/arm/include/asm/arch-tegra210/mc.h | 72 ++ arch/arm/include/asm/arch-tegra210/pmu.h | 14 + arch/arm/include/asm/arch-tegra210/powergate.h | 12 + arch/arm/include/asm/arch-tegra210/sysctr.h | 26 + arch/arm/include/asm/arch-tegra210/tegra.h | 32 + arch/arm/mach-tegra/tegra210/Kconfig | 11 + arch/arm/mach-tegra/tegra210/Makefile | 11 + arch/arm/mach-tegra/tegra210/clock.c | 1091 +++++++++++++++++++++ arch/arm/mach-tegra/tegra210/funcmux.c | 40 + arch/arm/mach-tegra/tegra210/xusb-padctl.c | 495 ++++++++++ include/dt-bindings/clock/tegra210-car.h | 342 +++++++ 18 files changed, 3275 insertions(+) create mode 100644 arch/arm/include/asm/arch-tegra210/ahb.h create mode 100644 arch/arm/include/asm/arch-tegra210/clock-tables.h create mode 100644 arch/arm/include/asm/arch-tegra210/clock.h create mode 100644 arch/arm/include/asm/arch-tegra210/flow.h create mode 100644 arch/arm/include/asm/arch-tegra210/funcmux.h create mode 100644 arch/arm/include/asm/arch-tegra210/gp_padctrl.h create mode 100644 arch/arm/include/asm/arch-tegra210/gpio.h create mode 100644 arch/arm/include/asm/arch-tegra210/mc.h create mode 100644 arch/arm/include/asm/arch-tegra210/pmu.h create mode 100644 arch/arm/include/asm/arch-tegra210/powergate.h create mode 100644 arch/arm/include/asm/arch-tegra210/sysctr.h create mode 100644 arch/arm/include/asm/arch-tegra210/tegra.h create mode 100644 arch/arm/mach-tegra/tegra210/Kconfig create mode 100644 arch/arm/mach-tegra/tegra210/Makefile create mode 100644 arch/arm/mach-tegra/tegra210/clock.c create mode 100644 arch/arm/mach-tegra/tegra210/funcmux.c create mode 100644 arch/arm/mach-tegra/tegra210/xusb-padctl.c create mode 100644 include/dt-bindings/clock/tegra210-car.h
arch/arm/include/asm/arch-tegra210/ahb.h new file +91 -0
@@ -0,0 +1,91 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef _TEGRA210_AHB_H_ +#define _TEGRA210_AHB_H_ + +struct ahb_ctlr { +u32 reserved0;/* 00h */ +u32 arbitration_disable;/* _ARBITRATION_DISABLE_0, 04h */ +u32 arbitration_priority_ctrl;/* _ARBITRATION_PRIORITY_CTRL_0,08h */ +u32 arbitration_usr_protect;/* _ARBITRATION_USR_PROTECT_0, 0ch */ +u32 gizmo_ahb_mem;/* _GIZMO_AHB_MEM_0, 10h */ +u32 gizmo_apb_dma;/* _GIZMO_APB_DMA_0, 14h */ +u32 reserved6[2 ];/* 18h, 1ch */ +u32 gizmo_usb;/* _GIZMO_USB_0, 20h */ +u32 gizmo_ahb_xbar_bridge;/* _GIZMO_AHB_XBAR_BRIDGE_0, 24h */ +u32 gizmo_cpu_ahb_bridge;/* _GIZMO_CPU_AHB_BRIDGE_0, 28h */ +u32 gizmo_cop_ahb_bridge;/* _GIZMO_COP_AHB_BRIDGE_0, 2ch */ +u32 gizmo_xbar_apb_ctlr;/* _GIZMO_XBAR_APB_CTLR_0, 30h */ +u32 gizmo_vcp_ahb_bridge;/* _GIZMO_VCP_AHB_BRIDGE_0, 34h */ +u32 reserved13[2 ];/* 38h, 3ch */ +u32 gizmo_nand;/* _GIZMO_NAND_0, 40h */ +u32 reserved15;/* 44h */ +u32 gizmo_sdmmc4;/* _GIZMO_SDMMC4_0, 48h */ +u32 reserved17;/* 4ch */ +u32 gizmo_se;/* _GIZMO_SE_0, 50h */ +u32 gizmo_tzram;/* _GIZMO_TZRAM_0, 54h */ +u32 reserved20[3 ];/* 58h, 5ch, 60h */ +u32 gizmo_bsev;/* _GIZMO_BSEV_0, 64h */ +u32 reserved22[3 ];/* 68h, 6ch, 70h */ +u32 gizmo_bsea;/* _GIZMO_BSEA_0, 74h */ +u32 gizmo_nor;/* _GIZMO_NOR_0, 78h */ +u32 gizmo_usb2;/* _GIZMO_USB2_0, 7ch */ +u32 gizmo_usb3;/* _GIZMO_USB3_0, 80h */ +u32 gizmo_sdmmc1;/* _GIZMO_SDMMC1_0, 84h */ +u32 gizmo_sdmmc2;/* _GIZMO_SDMMC2_0, 88h */ +u32 gizmo_sdmmc3;/* _GIZMO_SDMMC3_0, 8ch */ +u32 reserved30[13 ];/* 90h ~ c0h */ +u32 ahb_wrq_empty;/* _AHB_WRQ_EMPTY_0, c4h */ +u32 reserved32[5 ];/* c8h ~ d8h */ +u32 ahb_mem_prefetch_cfg_x;/* _AHB_MEM_PREFETCH_CFG_X_0, dch */ +u32 arbitration_xbar_ctrl;/* _ARBITRATION_XBAR_CTRL_0, e0h */ +u32 ahb_mem_prefetch_cfg3;/* _AHB_MEM_PREFETCH_CFG3_0, e4h */ +u32 ahb_mem_prefetch_cfg4;/* _AHB_MEM_PREFETCH_CFG3_0, e8h */ +u32 avp_ppcs_rd_coh_status;/* _AVP_PPCS_RD_COH_STATUS_0, ech */ +u32 ahb_mem_prefetch_cfg1;/* _AHB_MEM_PREFETCH_CFG1_0, f0h */ +u32 ahb_mem_prefetch_cfg2;/* _AHB_MEM_PREFETCH_CFG2_0, f4h */ +u32 ahbslvmem_status;/* _AHBSLVMEM_STATUS_0, f8h */ +/* _ARBITRATION_AHB_MEM_WRQUE_MST_ID_0, fch */ +u32 arbitration_ahb_mem_wrque_mst_id; +u32 arbitration_cpu_abort_addr;/* _ARBITRATION_CPU_ABORT_ADDR_0,100h */ +u32 arbitration_cpu_abort_info;/* _ARBITRATION_CPU_ABORT_INFO_0,104h */ +u32 arbitration_cop_abort_addr;/* _ARBITRATION_COP_ABORT_ADDR_0,108h */ +u32 arbitration_cop_abort_info;/* _ARBITRATION_COP_ABORT_INFO_0,10ch */ +u32 reserved46[4 ];/* 110h ~ 11ch */ +u32 avpc_mccif_fifoctrl;/* _AVPC_MCCIF_FIFOCTRL_0, 120h */ +u32 timeout_wcoal_avpc;/* _TIMEOUT_WCOAL_AVPC_0, 124h */ +u32 mpcorelp_mccif_fifoctrl;/* _MPCORELP_MCCIF_FIFOCTRL_0, 128h */ +u32 mpcore_mccif_fifoctrl;/* _MPCORE_MCCIF_FIFOCTRL_0, 12ch */ +u32 axicif_fastsync_ctrl;/* AXICIF_FASTSYNC_CTRL_0, 130h */ +u32 axicif_fastsync_statistics;/* _AXICIF_FASTSYNC_STATISTICS_0,134h */ +/* _AXICIF_FASTSYNC0_CPUCLK_TO_MCCLK_0, 138h */ +u32 axicif_fastsync0_cpuclk_to_mcclk; +/* _AXICIF_FASTSYNC1_CPUCLK_TO_MCCLK_0, 13ch */ +u32 axicif_fastsync1_cpuclk_to_mcclk; +/* _AXICIF_FASTSYNC2_CPUCLK_TO_MCCLK_0, 140h */ +u32 axicif_fastsync2_cpuclk_to_mcclk; +/* _AXICIF_FASTSYNC0_MCCLK_TO_CPUCLK_0, 144h */ +u32 axicif_fastsync0_mcclk_to_cpuclk; +/* _AXICIF_FASTSYNC1_MCCLK_TO_CPUCLK_0, 148h */ +u32 axicif_fastsync1_mcclk_to_cpuclk; +/* _AXICIF_FASTSYNC2_MCCLK_TO_CPUCLK_0, 14ch */ +u32 axicif_fastsync2_mcclk_to_cpuclk; +}; + +#define PPSB_STOPCLK_ENABLE (1 << 2) + +#define GIZ_ENABLE_SPLIT (1 << 0) +#define GIZ_ENB_FAST_REARB (1 << 2) +#define GIZ_DONT_SPLIT_AHB_WR (1 << 7) + +#define GIZ_USB_IMMEDIATE (1 << 18) + +/* AHB_ARBITRATION_XBAR_CTRL_0 0xe0 */ +#define ARBITRATION_XBAR_CTRL_PPSB_ENABLE (1 << 2) + +#endif /* _TEGRA210_AHB_H_ */
arch/arm/include/asm/arch-tegra210/clock-tables.h new file +566 -0
566 lines not on this page · raw message
arch/arm/include/asm/arch-tegra210/clock.h new file +27 -0
@@ -0,0 +1,27 @@ +/* +* (C) Copyright 2010-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +/* Tegra210 clock control definitions */ + +#ifndef _TEGRA210_CLOCK_H_ +#define _TEGRA210_CLOCK_H_ + +#include <asm/arch-tegra/clock.h> + +/* CLK_RST_CONTROLLER_OSC_CTRL_0 */ +#define OSC_FREQ_SHIFT 28 +#define OSC_FREQ_MASK (0xF << OSC_FREQ_SHIFT) + +/* PLL bits that differ from generic clk_rst.h */ +#define PLLC_RESET 30 +#define PLLC_IDDQ 27 +#define PLLD_ENABLE_CLK 21 +#define PLLD_EN_LCKDET 28 + +int tegra_plle_enable (void ); + +#endif /* _TEGRA210_CLOCK_H_ */
arch/arm/include/asm/arch-tegra210/flow.h new file +45 -0
45 lines not on this page · raw message
arch/arm/include/asm/arch-tegra210/funcmux.h new file +23 -0
@@ -0,0 +1,23 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +/* Tegra210 high-level function multiplexing */ + +#ifndef _TEGRA210_FUNCMUX_H_ +#define _TEGRA210_FUNCMUX_H_ + +#include <asm/arch-tegra/funcmux.h> + +/* Configs supported by the func mux */ +enum { +FUNCMUX_DEFAULT =0 ,/* default config */ + +/* UART configs */ +FUNCMUX_UART1_UART1 =0 , +FUNCMUX_UART4_UART4 =0 , +}; +#endif /* _TEGRA210_FUNCMUX_H_ */
arch/arm/include/asm/arch-tegra210/gp_padctrl.h new file +74 -0
74 lines not on this page · raw message
arch/arm/include/asm/arch-tegra210/gpio.h new file +303 -0
303 lines not on this page · raw message
arch/arm/include/asm/arch-tegra210/mc.h new file +72 -0
72 lines not on this page · raw message
arch/arm/include/asm/arch-tegra210/pmu.h new file +14 -0
@@ -0,0 +1,14 @@ +/* +* (C) Copyright 2010-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef _TEGRA210_PMU_H_ +#define _TEGRA210_PMU_H_ + +/* Set core and CPU voltages to nominal levels */ +int pmu_set_nominal (void ); + +#endif /* _TEGRA210_PMU_H_ */
arch/arm/include/asm/arch-tegra210/powergate.h new file +12 -0
@@ -0,0 +1,12 @@ +/* +* Copyright (c) 2014-2015 NVIDIA CORPORATION. All rights reserved. +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef _TEGRA210_POWERGATE_H_ +#define _TEGRA210_POWERGATE_H_ + +#include <asm/arch-tegra/powergate.h> + +#endif /* _TEGRA210_POWERGATE_H_ */
arch/arm/include/asm/arch-tegra210/sysctr.h new file +26 -0
@@ -0,0 +1,26 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef _TEGRA210_SYSCTR_H_ +#define _TEGRA210_SYSCTR_H_ + +struct sysctr_ctlr { +u32 cntcr;/* 0x00: SYSCTR0_CNTCR Counter Control */ +u32 cntsr;/* 0x04: SYSCTR0_CNTSR Counter Status */ +u32 cntcv0;/* 0x08: SYSCTR0_CNTCV0 Counter Count 31:00 */ +u32 cntcv1;/* 0x0C: SYSCTR0_CNTCV1 Counter Count 63:32 */ +u32 reserved1[4 ];/* 0x10 - 0x1C */ +u32 cntfid0;/* 0x20: SYSCTR0_CNTFID0 Freq Table Entry */ +u32 cntfid1;/* 0x24: SYSCTR0_CNTFID1 Freq Table End */ +u32 reserved2[1002 ];/* 0x28 - 0xFCC */ +u32 counterid[12 ];/* 0xFD0 - 0xFxx CounterID regs, RO */ +}; + +#define TSC_CNTCR_ENABLE (1 << 0)/* Enable */ +#define TSC_CNTCR_HDBG (1 << 1)/* Halt on debug */ + +#endif /* _TEGRA210_SYSCTR_H_ */
arch/arm/include/asm/arch-tegra210/tegra.h new file +32 -0
@@ -0,0 +1,32 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef _TEGRA210_TEGRA_H_ +#define _TEGRA210_TEGRA_H_ + +#define GICD_BASE 0x50041000/* Generic Int Cntrlr Distrib */ +#define GICC_BASE 0x50042000/* Generic Int Cntrlr CPU I/F */ +#define NV_PA_AHB_BASE 0x6000C000/* System regs (AHB, etc.) */ +#define NV_PA_TSC_BASE 0x700F0000/* System Counter TSC regs */ +#define NV_PA_MC_BASE 0x70019000/* Mem Ctlr regs (MCB, etc.) */ +#define NV_PA_SDRAM_BASE 0x80000000 + +#include <asm/arch-tegra/tegra.h> + +#define BCT_ODMDATA_OFFSET 1288/* offset to ODMDATA word */ + +#undef NVBOOTINFOTABLE_BCTSIZE +#undef NVBOOTINFOTABLE_BCTPTR +#define NVBOOTINFOTABLE_BCTSIZE 0x48/* BCT size in BIT in IRAM */ +#define NVBOOTINFOTABLE_BCTPTR 0x4C/* BCT pointer in BIT in IRAM */ + +#define MAX_NUM_CPU 4 +#define MCB_EMEM_ARB_OVERRIDE (NV_PA_MC_BASE + 0xE8) + +#define TEGRA_USB1_BASE 0x7D000000 + +#endif /* _TEGRA210_TEGRA_H_ */
arch/arm/mach-tegra/tegra210/Kconfig new file +11 -0
@@ -0,0 +1,11 @@ +if TEGRA210 + +choice + prompt "Tegra210 board select" + +endchoice + +config SYS_SOC + default "tegra210" + +endif
arch/arm/mach-tegra/tegra210/Makefile new file +11 -0
@@ -0,0 +1,11 @@ +# +# (C) Copyright 2013-2015 +# NVIDIA Corporation <www.nvidia.com> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += clock.o +obj-y += funcmux.o +obj-y += pinmux.o +obj-y += xusb-padctl.o
arch/arm/mach-tegra/tegra210/clock.c new file +1091 -0
1,091 lines not on this page · raw message
arch/arm/mach-tegra/tegra210/funcmux.c new file +40 -0
@@ -0,0 +1,40 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +/* Tegra210 high-level function multiplexing */ + +#include <common.h> +#include <asm/arch/clock.h> +#include <asm/arch/funcmux.h> +#include <asm/arch/pinmux.h> + +int funcmux_select (enum periph_id id,int config) +{ +int bad_config = config !=FUNCMUX_DEFAULT ; + +switch (id) { +/* +* Add other periph IDs here as needed. +* Note that all pinmux/pads should have already +* been set up in the board pinmux table in +* pinmux-config-<board>.h for all periphs. +* Leave this in for the odd case where a mux +* needs to be changed on-the-fly. +*/ + +default : +debug ("%s: invalid periph_id %d" , __func__, id); +return -1 ; + } + +if (bad_config) { +debug ("%s: invalid config %d for periph_id %d" , __func__, + config, id); +return -1 ; + } +return 0 ; +}
arch/arm/mach-tegra/tegra210/xusb-padctl.c new file +495 -0
495 lines not on this page · raw message
include/dt-bindings/clock/tegra210-car.h new file +342 -0
67 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.8.2.1.610.g562af5b
Part of the diff is not shown here. View the raw message.
PATCH v3 3/6 ARM: Tegra210: Add SoC code/include files for T210
Quoted 9 lines · Tom Warren
All based off of Tegra124. As a Tegra210 board is brought up, these may change a bit to match the HW more closely, but probably 90% of this is identical to T124.
Note that since T210 is a 64-bit build, it has no SPL component, and hence no
cpu.cfor Tegra210.arch/arm/include/asm/arch-tegra210/funcmux.h +0
-0
arch/arm/include/asm/arch-tegra210/funcmux.h line 22
Quoted 10 lines
arch/arm/include/asm/arch-tegra210/funcmux.h +10
-0+#include <asm/arch-tegra/funcmux.h> + +/* Configs supported by the func mux */ +enum { +FUNCMUX_DEFAULT =0 ,/* default config */ + +/* UART configs */ +FUNCMUX_UART1_UART1 =0 , +FUNCMUX_UART4_UART4 =0 , +};
Since FUNCMUX_UART* aren't implemented, perhaps don't define them? you'd need to edit the next patch not to reference these symbols too.
Also, setup_uarts() should be fixed not to call funcmux_select() if uart_configs[i]==-1, since funcmux_select() will print an error if DEBUG is defined since those values aren't implemnted. Perhaps you could ifdef out the call for T210+ rather than checking the funcmux value.
This could all be done in a followon patch if you wanted.
PATCH v3 3/6 ARM: Tegra210: Add SoC code/include files for T210
Stephen,
Quoted 20 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 10:53 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 3/6] ARM: Tegra210: Add SoC code/include files for T210Quoted 9 lines · Tom Warren
All based off of Tegra124. As a Tegra210 board is brought up, these may change a bit to match the HW more closely, but probably 90% of this is identical to T124.
Note that since T210 is a 64-bit build, it has no SPL component, and hence no
cpu.cfor Tegra210.arch/arm/include/asm/arch-tegra210/funcmux.h +0
-0
Quoted 12 lines
arch/arm/include/asm/arch-tegra210/funcmux.h line 22
Quoted 9 lines
arch/arm/include/asm/arch-tegra210/funcmux.h +9
-0+#include <asm/arch-tegra/funcmux.h> + +/* Configs supported by the func mux */ enum { +FUNCMUX_DEFAULT =0 ,/* default config */ + +/* UART configs */ +FUNCMUX_UART1_UART1 =0 , +FUNCMUX_UART4_UART4 =0 , +};Since FUNCMUX_UART* aren't implemented, perhaps don't define them? you'd need to edit the next patch not to reference these symbols too.
I left these in so the array (uart_configs) would be filled for T210 (even though it's not used, to avoid a warning.
Quoted 5 lines
Also,
setup_uarts()should be fixed not to callfuncmux_select()if uart_configs[i]==-1, sincefuncmux_select()will print an error if DEBUG is defined since those values aren't implemnted. Perhaps you could ifdef out the call for T210+ rather than checking the funcmux value.
I thought of doing that, but to me it was too messy. Since all boards call pinmux_init before this, I'll look into a follow-on patch to fix them all (i.e. none need funcmux_select now for UART setup).
Quoted 2 lines
This could all be done in a followon patch if you wanted.
--
nvpublic
PATCH v3 4/6 ARM: Tegra210: Add support to common Tegra source/config files
In reply to Tom WarrenDerived from Tegra124, modified as appropriate during T210 board bringup. Cleaned up debug statements to conserve string space, too. This also adds misc 64-bit changes from Thierry Reding/Stephen Warren.
---
Changes in V3:
- moved DTSI file into SoC patch, made DTS files conform with 64-bit FDT
- removed untested/unneeded nodes like APBDMA, PWM, etc.
- fix/update PLLU/ehci-tegra support for T210: USB works now
- roll in some 64-bit Tegra fixes from treding/swarren
- add fdt_high/initrd_high 64-bit fix from treading/swarren Changes in V2:
- minor fixes as per swarren review
arch/arm/dts/tegra210.dtsi | 283 +++++++++++++++++++++++++++ arch/arm/include/asm/arch-tegra/ap.h | 6 +- arch/arm/include/asm/arch-tegra/clk_rst.h | 36 +++- arch/arm/include/asm/arch-tegra/gp_padctrl.h | 3 +- arch/arm/include/asm/arch-tegra/pmc.h | 7 +- arch/arm/include/asm/arch-tegra/tegra.h | 4 +- arch/arm/include/asm/arch-tegra/usb.h | 3 + arch/arm/mach-tegra/Kconfig | 12 ++ arch/arm/mach-tegra/Makefile | 5 +- arch/arm/mach-tegra/ap.c | 11 +- arch/arm/mach-tegra/board.c | 10 +- arch/arm/mach-tegra/cache.c | 2 + arch/arm/mach-tegra/clock.c | 30 ++- arch/arm/mach-tegra/cpu.c | 55 ++++-- arch/arm/mach-tegra/cpu.h | 10 +- arch/arm/mach-tegra/lowlevel_init.S | 15 ++ drivers/mmc/tegra_mmc.c | 12 +- drivers/usb/host/ehci-tegra.c | 31 ++- include/configs/tegra-common-post.h | 12 +- include/fdtdec.h | 3 + lib/fdtdec.c | 2 + 21 files changed, 509 insertions(+), 43 deletions(-) create mode 100644 arch/arm/dts/tegra210.dtsi
arch/arm/dts/tegra210.dtsi new file +283 -0
@@ -0,0 +1,283 @@ +#include <dt-bindings/clock/tegra210-car.h> +#include <dt-bindings/gpio/tegra-gpio.h> +#include <dt-bindings/pinctrl/pinctrl-tegra.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h> + +#include "skeleton.dtsi" + +/ { + compatible = "nvidia,tegra210"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + gic: interrupt-controller at 0,50041000 { + compatible = "arm,gic-400"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0x0 0x50041000 0x0 0x1000>, + <0x0 0x50042000 0x0 0x2000>, + <0x0 0x50044000 0x0 0x2000>, + <0x0 0x50046000 0x0 0x2000>; + interrupts = <GIC_PPI 9 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; + interrupt-parent = <&gic>; + }; + + tegra_car: clock at 0,60006000 { + compatible = "nvidia,tegra210-car"; + reg = <0x0 0x60006000 0x0 0x1000>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + gpio: gpio at 0,6000d000 { + compatible = "nvidia,tegra210-gpio", "nvidia,tegra124-gpio", "nvidia,tegra30-gpio"; + reg = <0x0 0x6000d000 0x0 0x1000>; + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; + #gpio-cells = <2>; + gpio-controller; + #interrupt-cells = <2>; + interrupt-controller; + }; + + i2c at 0,7000c000 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000c000 0x0 0x100>; + interrupts = <0 38 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 12>; + status = "disabled"; + }; + + i2c at 0,7000c400 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000c400 0x0 0x100>; + interrupts = <0 84 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 54>; + status = "disabled"; + }; + + i2c at 0,7000c500 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000c500 0x0 0x100>; + interrupts = <0 92 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 67>; + status = "disabled"; + }; + + i2c at 0,7000c700 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000c700 0x0 0x100>; + interrupts = <0 120 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 103>; + status = "disabled"; + }; + + i2c at 0,7000d000 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000d000 0x0 0x100>; + interrupts = <0 53 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 47>; + status = "disabled"; + }; + + i2c at 0,7000d100 { + compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c"; + reg = <0x0 0x7000d100 0x0 0x100>; + interrupts = <0 53 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 47>; + status = "disabled"; + }; + + uarta: serial at 0,70006000 { + compatible = "nvidia,tegra210-uart", "nvidia,tegra20-uart"; + reg = <0x0 0x70006000 0x0 0x40>; + reg-shift = <2>; + interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&tegra_car TEGRA210_CLK_UARTA>; + resets = <&tegra_car 6>; + reset-names = "serial"; + status = "disabled"; + }; + + uartb: serial at 0,70006040 { + compatible = "nvidia,tegra210-uart", "nvidia,tegra20-uart"; + reg = <0x0 0x70006040 0x0 0x40>; + reg-shift = <2>; + interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&tegra_car TEGRA210_CLK_UARTB>; + resets = <&tegra_car 7>; + reset-names = "serial"; + status = "disabled"; + }; + + uartc: serial at 0,70006200 { + compatible = "nvidia,tegra210-uart", "nvidia,tegra20-uart"; + reg = <0x0 0x70006200 0x0 0x40>; + reg-shift = <2>; + interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&tegra_car TEGRA210_CLK_UARTC>; + resets = <&tegra_car 55>; + reset-names = "serial"; + status = "disabled"; + }; + + uartd: serial at 0,70006300 { + compatible = "nvidia,tegra210-uart", "nvidia,tegra20-uart"; + reg = <0x0 0x70006300 0x0 0x40>; + reg-shift = <2>; + interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&tegra_car TEGRA210_CLK_UARTD>; + resets = <&tegra_car 65>; + reset-names = "serial"; + status = "disabled"; + }; + + spi at 0,7000d400 { + compatible = "nvidia,tegra210-spi", "nvidia,tegra114-spi"; + reg = <0x0 0x7000d400 0x0 0x200>; + interrupts = <0 59 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car TEGRA210_CLK_SBC1>; + resets = <&tegra_car 41>; + reset-names = "spi"; + status = "disabled"; + }; + + spi at 0,7000d600 { + compatible = "nvidia,tegra210-spi", "nvidia,tegra114-spi"; + reg = <0x0 0x7000d600 0x0 0x200>; + interrupts = <0 82 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car TEGRA210_CLK_SBC2>; + resets = <&tegra_car 44>; + reset-names = "spi"; + status = "disabled"; + }; + + spi at 0,7000d800 { + compatible = "nvidia,tegra210-spi", "nvidia,tegra114-spi"; + reg = <0x0 0x7000d800 0x0 0x200>; + interrupts = <0 83 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car TEGRA210_CLK_SBC3>; + resets = <&tegra_car 46>; + reset-names = "spi"; + status = "disabled"; + }; + + spi at 0,7000da00 { + compatible = "nvidia,tegra210-spi", "nvidia,tegra114-spi"; + reg = <0x0 0x7000da00 0x0 0x200>; + interrupts = <0 93 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car TEGRA210_CLK_SBC4>; + resets = <&tegra_car 68>; + reset-names = "spi"; + status = "disabled"; + }; + + spi at 0,70410000 { + compatible = "nvidia,tegra210-qspi"; + reg = <0x0 0x70410000 0x0 0x1000>; + interrupts = <0 10 0x04>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&tegra_car 211>; + status = "disabled"; + }; + + padctl: padctl at 0,7009f000 { + compatible = "nvidia,tegra210-xusb-padctl"; + reg = <0x0 0x7009f000 0x0 0x1000>; + resets = <&tegra_car 142>; + reset-names = "padctl"; + #phy-cells = <1>; + }; + + sdhci at 0,700b0000 { + compatible = "nvidia,tegra210-sdhci"; + reg = <0x0 0x700b0000 0x0 0x200>; + interrupts = <0 14 0x04>; + clocks = <&tegra_car TEGRA210_CLK_SDMMC1>; + resets = <&tegra_car 14>; + reset-names = "sdhci"; + status = "disabled"; + }; + + sdhci at 0,700b0200 { + compatible = "nvidia,tegra210-sdhci"; + reg = <0x0 0x700b0200 0x0 0x200>; + interrupts = <0 15 0x04>; + clocks = <&tegra_car TEGRA210_CLK_SDMMC2>; + resets = <&tegra_car 9>; + reset-names = "sdhci"; + status = "disabled"; + }; + + sdhci at 0,700b0400 { + compatible = "nvidia,tegra210-sdhci"; + reg = <0x0 0x700b0400 0x0 0x200>; + interrupts = <0 19 0x04>; + clocks = <&tegra_car TEGRA210_CLK_SDMMC3>; + resets = <&tegra_car 69>; + reset-names = "sdhci"; + status = "disabled"; + }; + + sdhci at 0,700b0600 { + compatible = "nvidia,tegra210-sdhci"; + reg = <0x0 0x700b0600 0x0 0x200>; + interrupts = <0 31 0x04>; + clocks = <&tegra_car TEGRA210_CLK_SDMMC4>; + resets = <&tegra_car 15>; + reset-names = "sdhci"; + status = "disabled"; + }; + + usb at 0,7d000000 { + compatible = "nvidia,tegra210-ehci"; + reg = <0x0 0x7d000000 0x0 0x4000>; + interrupts = <0 20 0x04>; + phy_type = "utmi"; + clocks = <&tegra_car TEGRA210_CLK_USBD>; + resets = <&tegra_car 22>; + reset-names = "usb"; + status = "disabled"; + }; + + usb at 0,7d004000 { + compatible = "nvidia,tegra210-ehci"; + reg = <0x0 0x7d004000 0x0 0x4000>; + interrupts = < 53 >; + phy_type = "utmi"; + clocks = <&tegra_car TEGRA210_CLK_USB2>; + resets = <&tegra_car 58>; + reset-names = "usb"; + status = "disabled"; + }; +};
arch/arm/include/asm/arch-tegra/ap.h +2 -4
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010-2011 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -24,8 +24,6 @@#define PG_UP_TAG_0_PID_CPU 0x55555555/* CPU aka "a9" aka "mpcore" */ #define PG_UP_TAG_0 0x0 -#define CORESIGHT_UNLOCK 0xC5ACCE55; -/* AP base physical address of internal SRAM */ #define NV_PA_BASE_SRAM 0x40000000
@@ -66,7 +64,7 @@ int tegra_get_sku_info(void);/* Do any chip-specific cache config */ void config_cache (void ); -#if defined(CONFIG_TEGRA124 ) +#if defined(CONFIG_TEGRA124 ) || defined(CONFIG_TEGRA210 )/* Do chip-specific vpr config */ void config_vpr (void );#else
arch/arm/include/asm/arch-tegra/clk_rst.h +31 -5
@@ -48,6 +48,7 @@ enum {TEGRA_CLK_REGS_VW =2 ,/* Number of clock enable regs V/W */ TEGRA_CLK_SOURCES_VW =32 ,/* Number of ppl clock sources V/W */ TEGRA_CLK_SOURCES_X =32 ,/* Number of ppl clock sources X */ + TEGRA_CLK_SOURCES_Y = 18, /* Number of ppl clock sources Y */ };/* Clock/Reset Controller (CLK_RST_CONTROLLER_) regs */
@@ -94,7 +95,15 @@ struct clk_rst_ctlr {uint crc_rst_dev_x_set;/* _RST_DEV_X_SET_0, 0x290 */ uint crc_rst_dev_x_clr;/* _RST_DEV_X_CLR_0, 0x294 */ -uint crc_reserved21[23 ];/* _reserved_21, 0x298-2f0 */ +uint crc_clk_out_enb_y;/* _CLK_OUT_ENB_Y_0, 0x298 */ +uint crc_clk_enb_y_set;/* _CLK_ENB_Y_SET_0, 0x29c */ +uint crc_clk_enb_y_clr;/* _CLK_ENB_Y_CLR_0, 0x2a0 */ + +uint crc_rst_devices_y;/* _RST_DEVICES_Y_0, 0x2a4 */ +uint crc_rst_dev_y_set;/* _RST_DEV_Y_SET_0, 0x2a8 */ +uint crc_rst_dev_y_clr;/* _RST_DEV_Y_CLR_0, 0x2ac */ + +uint crc_reserved21[17 ];/* _reserved_21, 0x2b0-2f0 */ uint crc_dfll_base;/* _DFLL_BASE_0, 0x2f4 */
@@ -136,7 +145,7 @@ struct clk_rst_ctlr {struct clk_set_clr crc_rst_dev_ex_vw[TEGRA_CLK_REGS_VW ];/* _CLK_ENB_V/W_CLR_0 0x440 ~ 0x44c */ struct clk_set_clr crc_clk_enb_ex_vw[TEGRA_CLK_REGS_VW ]; -/* Additional (T114) registers */ +/* Additional (T114+) registers */ uint crc_rst_cpug_cmplx_set;/* _RST_CPUG_CMPLX_SET_0, 0x450 */ uint crc_rst_cpug_cmplx_clr;/* _RST_CPUG_CMPLX_CLR_0, 0x454 */ uint crc_rst_cpulp_cmplx_set;/* _RST_CPULP_CMPLX_SET_0, 0x458 */
@@ -207,9 +216,18 @@ struct clk_rst_ctlr {u32 _rsv32_1[7 ];/* 0x574-58c */ struct clk_pll_simple plldp;/* _PLLDP_BASE, 0x590 _PLLDP_MISC */ u32 crc_plldp_ss_cfg;/* _PLLDP_SS_CFG, 0x598 */ -u32 _rsrv32_2[25 ]; -/* Tegra124 */ -uint crc_clk_src_x[TEGRA_CLK_SOURCES_X ];/* XUSB, etc, 0x600-0x678 */ + +/* Tegra124+ - skip to 0x600 here for new CLK_SOURCE_ regs */ +uint _rsrv32_2[25 ];/* _0x59C - 0x5FC */ +uint crc_clk_src_x[TEGRA_CLK_SOURCES_X ];/* XUSB, etc, 0x600-0x67C */ + +/* Tegra210 - skip to 0x694 here for new CLK_SOURCE_ regs */ +uint crc_reserved61[5 ];/* _reserved_61, 0x680 - 0x690 */ +/* +* NOTE: PLLA1 regs are in the middle of this Y region. Break this in +* two later if PLLA1 is needed, but for now this is cleaner. +*/ +uint crc_clk_src_y[TEGRA_CLK_SOURCES_Y ];/* SPARE1, etc, 0x694-0x6D8 */ };/* CLK_RST_CONTROLLER_CLK_CPU_CMPLX_0 */
@@ -233,6 +251,8 @@ struct clk_rst_ctlr {#define PLL_DIVP_SHIFT 20#define PLL_DIVP_MASK (7U << PLL_DIVP_SHIFT) +/* Special case for T210 PLLU DIVP */ +#define PLLU_DIVP_SHIFT 16#define PLL_DIVN_SHIFT 8#define PLL_DIVN_MASK (0x3ffU << PLL_DIVN_SHIFT)
@@ -261,6 +281,12 @@ struct clk_rst_ctlr {#define PLL_LFCON_SHIFT 4#define PLL_LFCON_MASK (15U << PLL_LFCON_SHIFT) +/* CPCON/LFCON replaced by KCP/KVCO in T210 PLLU */ +#define PLLU_KVCO_SHIFT 24 +#define PLLU_KVCO_MASK (3U << PLLU_KVCO_SHIFT) +#define PLLU_KCP_SHIFT 25 +#define PLLU_KCP_MASK (1U << PLLU_KCP_SHIFT) +#define PLLU_VCO_FREQ_SHIFT 20#define PLLU_VCO_FREQ_MASK (1U << PLLU_VCO_FREQ_SHIFT)
arch/arm/include/asm/arch-tegra/gp_padctrl.h +2 -1
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010-2012 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -21,5 +21,6 @@#define CHIPID_TEGRA30 0x30#define CHIPID_TEGRA114 0x35#define CHIPID_TEGRA124 0x40 +#define CHIPID_TEGRA210 0x21#endif /* _TEGRA_GP_PADCTRL_H_ */
arch/arm/include/asm/arch-tegra/pmc.h +4 -3
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010,2011,2014 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -294,6 +294,7 @@ struct pmc_ctlr {#define CRAIL 0#define CE0 14#define C0NC 15 +#define SOR 17#define PMC_XOFS_SHIFT 1#define PMC_XOFS_MASK (0x3F << PMC_XOFS_SHIFT)
@@ -303,7 +304,7 @@ struct pmc_ctlr {#define TIMER_MULT_MASK (3 << TIMER_MULT_SHIFT)#define TIMER_MULT_CPU_SHIFT 2#define TIMER_MULT_CPU_MASK (3 << TIMER_MULT_CPU_SHIFT) -#elif defined(CONFIG_TEGRA124 ) +#elif defined(CONFIG_TEGRA124 ) || defined(CONFIG_TEGRA210 )#define TIMER_MULT_SHIFT 0#define TIMER_MULT_MASK (7 << TIMER_MULT_SHIFT)#define TIMER_MULT_CPU_SHIFT 3
@@ -314,7 +315,7 @@ struct pmc_ctlr {#define MULT_2 1#define MULT_4 2#define MULT_8 3 -#if defined(CONFIG_TEGRA124 ) +#if defined(CONFIG_TEGRA124 ) || defined(CONFIG_TEGRA210 )#define MULT_16 4#endif
arch/arm/include/asm/arch-tegra/tegra.h +3 -1
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010,2011 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -74,6 +74,7 @@ enum {SKU_ID_T114_ENG =0x00 ,/* Dalmore value, unfused */ SKU_ID_T114_1 =0x01 ,SKU_ID_T124_ENG =0x00 ,/* Venice2 value, unfused */ + SKU_ID_T210_ENG = 0x00, /* unfused value TBD */ };/*
@@ -88,6 +89,7 @@ enum {TEGRA_SOC_T30 ,TEGRA_SOC_T114 ,TEGRA_SOC_T124 , +TEGRA_SOC_T210 ,TEGRA_SOC_CNT , TEGRA_SOC_UNKNOWN = -1,
arch/arm/include/asm/arch-tegra/usb.h +3 -0
@@ -266,6 +266,9 @@ struct usb_ctlr {/* USBx_UTMIP_BIAS_CFG1_0 */ #define UTMIP_FORCE_PDTRK_POWERDOWN 1 +#define UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT 8 +#define UTMIP_BIAS_DEBOUNCE_TIMESCALE_MASK \ + (0x3f << UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT)#define UTMIP_BIAS_PDTRK_COUNT_SHIFT 3#define UTMIP_BIAS_PDTRK_COUNT_MASK \ (0x1f << UTMIP_BIAS_PDTRK_COUNT_SHIFT)
arch/arm/mach-tegra/Kconfig +12 -0
@@ -34,6 +34,17 @@ config TEGRA124 bool "Tegra124 family" select TEGRA_ARMV7_COMMON +config TEGRA210 + bool "Tegra210 family" + select OF_CONTROL + select ARM64 + select DM + select DM_SPI_FLASH + select DM_SERIAL + select DM_I2C + select DM_SPI + select DM_GPIO + endchoice config SYS_MALLOC_F_LEN
@@ -43,5 +54,6 @@ source "arch/arm/mach-tegra/tegra20/Kconfig" source "arch/arm/mach-tegra/tegra30/Kconfig" source "arch/arm/mach-tegra/tegra114/Kconfig" source "arch/arm/mach-tegra/tegra124/Kconfig" +source "arch/arm/mach-tegra/tegra210/Kconfig" endif
arch/arm/mach-tegra/Makefile +4 -1
@@ -1,5 +1,5 @@ # -# (C) Copyright 2010,2011 Nvidia Corporation. +# (C) Copyright 2010-2015 Nvidia Corporation. # # (C) Copyright 2000-2008 # Wolfgang Denk, DENX Software Engineering, [email protected].
@@ -24,7 +24,9 @@ obj-y += pinmux-common.o obj-y += powergate.o obj-y += xusb-padctl.o obj-$(CONFIG_DISPLAY_CPUINFO) += sys_info.o +#TCW Fix this to use a common config switch (CONFIG_LOCK_VPR?) obj-$(CONFIG_TEGRA124) += vpr.o +obj-$(CONFIG_TEGRA210) += vpr.o obj-$(CONFIG_TEGRA_CLOCK_SCALING) += emc.o ifndef CONFIG_SPL_BUILD
@@ -35,3 +37,4 @@ obj-$(CONFIG_TEGRA20) += tegra20/ obj-$(CONFIG_TEGRA30) += tegra30/ obj-$(CONFIG_TEGRA114) += tegra114/ obj-$(CONFIG_TEGRA124) += tegra124/ +obj-$(CONFIG_TEGRA210) += tegra210/
arch/arm/mach-tegra/ap.c +10 -1
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010-2014 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -92,6 +92,13 @@ int tegra_get_chip_sku(void)return TEGRA_SOC_T124 ; }break ; +case CHIPID_TEGRA210 : +switch (sku_id) { +case SKU_ID_T210_ENG : +default : +return TEGRA_SOC_T210 ; + } +break ; }/* unknown chip/sku id */
@@ -100,6 +107,7 @@ int tegra_get_chip_sku(void)return TEGRA_SOC_UNKNOWN ; } +#ifndef CONFIG_ARM64 static void enable_scu (void ) {struct scu_ctlr *scu = (struct scu_ctlr *)NV_PA_ARM_PERIPHBASE ;
@@ -222,3 +230,4 @@ void s_init(void)/* init vpr */ config_vpr(); } +#endif
arch/arm/mach-tegra/board.c +8 -2
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010-2014 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -143,12 +143,18 @@ static int uart_configs[] = { -1, FUNCMUX_UART4_GMI, /* UARTD */ -1, -#else /* Tegra124 */ +#elif defined(CONFIG_TEGRA124)FUNCMUX_UART1_KBC ,/* UARTA */ -1 ,-1 ,FUNCMUX_UART4_GPIO ,/* UARTD */ -1 , +#else /* Tegra210 */ +FUNCMUX_UART1_UART1 ,/* UARTA */ +-1 , +-1 , +FUNCMUX_UART4_UART4 ,/* UARTD */ + -1, #endif };
arch/arm/mach-tegra/cache.c +2 -0
@@ -21,6 +21,7 @@#include <asm/arch-tegra/ap.h> #include <asm/arch/gp_padctrl.h> +#ifndef CONFIG_ARM64 void config_cache (void ) {u32 reg =0 ;
@@ -44,3 +45,4 @@ void config_cache(void) reg |=2 ; asm("mcr p15, 1, %0, c9, c0, 2" : : "r" (reg)); } +#endif
arch/arm/mach-tegra/clock.c +28 -2
@@ -1,5 +1,5 @@/* -* Copyright (c) 2010-2014, NVIDIA CORPORATION. All rights reserved. +* Copyright (c) 2010-2015, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License,
@@ -113,7 +113,11 @@ int clock_ll_read_pll(enum clock_id clkid, u32 *divm, u32 *divn, data =readl (&pll->pll_misc); *cpcon = (data &PLL_CPCON_MASK ) >>PLL_CPCON_SHIFT ; *lfcon = (data &PLL_LFCON_MASK ) >>PLL_LFCON_SHIFT ; - +#if defined(CONFIG_TEGRA210 ) +/* T210 PLLU uses KCP/KVCO instead of CPCON/LFCON */ + *cpcon = (data &PLLU_KCP_MASK ) >>PLLU_KCP_SHIFT ; + *lfcon = (data &PLLU_KVCO_MASK ) >>PLLU_KVCO_SHIFT ; +#endif return 0 ; }
@@ -132,14 +136,28 @@ unsigned long clock_start_pll(enum clock_id clkid, u32 divm, u32 divn,* - same fields are always mapped at same offsets, except DCCON * - DCCON is always 0, doesn't conflict * - M,N, P of PLLP values are ignored for PLLP +* NOTE: Above is no longer true with T210 - TBD: FIX THIS */ misc_data = (cpcon <<PLL_CPCON_SHIFT ) | (lfcon <<PLL_LFCON_SHIFT ); +#if defined(CONFIG_TEGRA210 ) +/* T210 PLLU uses KCP/KVCO instead of cpcon/lfcon */ +if (clkid ==CLOCK_ID_USB ) { +/* preserve EN_LOCKDET, set by default */ + misc_data =readl (&pll->pll_misc); + misc_data |= (cpcon <<PLLU_KCP_SHIFT ) | + (lfcon <<PLLU_KVCO_SHIFT ); + } +#endif data = (divm <<PLL_DIVM_SHIFT ) | (divn <<PLL_DIVN_SHIFT ) | (0 <<PLL_BYPASS_SHIFT ) | (1 <<PLL_ENABLE_SHIFT ); if (clkid == CLOCK_ID_USB) +#if defined(CONFIG_TEGRA210 ) + data |= divp <<PLLU_DIVP_SHIFT ; +#else data |= divp <<PLLU_VCO_FREQ_SHIFT ; +#endif else data |= divp << PLL_DIVP_SHIFT;if (pll) {
@@ -534,8 +552,15 @@ int clock_set_rate(enum clock_id clkid, u32 n, u32 m, u32 p, u32 cpcon)/* Set cpcon to PLL_MISC */ misc_reg =readl (&pll->pll_misc); +#if !defined(CONFIG_TEGRA210 ) misc_reg &= ~PLL_CPCON_MASK ; misc_reg |= cpcon <<PLL_CPCON_SHIFT ; +#else +/* T210 uses KCP instead, use the most common bit shift (PLLA/U/D2) */ + misc_reg &= ~PLLU_KCP_MASK ; + misc_reg |= cpcon <<PLLU_KCP_SHIFT ; +#endif +writel (misc_reg, &pll->pll_misc);/* Enable PLL */
@@ -634,6 +659,7 @@ static void set_avp_clock_source(u32 src)/* * This function is useful on Tegra30, and any later SoCs that have compatible * PLLP configuration registers. +* NOTE: Not used on Tegra210 - see tegra210_setup_pllp in T210 clock.c */ void tegra30_set_up_pllp (void ) {
arch/arm/mach-tegra/cpu.c +39 -16
165 lines not on this page · raw message
arch/arm/mach-tegra/cpu.h +7 -3
@@ -1,5 +1,5 @@/* -* (C) Copyright 2010-2014 +* (C) Copyright 2010-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+
@@ -14,7 +14,7 @@#define NVBL_PLLP_KHZ 216000#define CSITE_KHZ 144000#elif defined(CONFIG_TEGRA30 ) || defined(CONFIG_TEGRA114 ) || \ - defined(CONFIG_TEGRA124 ) + defined(CONFIG_TEGRA124 ) || defined(CONFIG_TEGRA210 )#define NVBL_PLLP_KHZ 408000#define CSITE_KHZ 204000#else
@@ -35,7 +35,7 @@#define PG_UP_TAG_0_PID_CPU 0x55555555/* CPU aka "a9" aka "mpcore" */ #define PG_UP_TAG_0 0x0 -#define CORESIGHT_UNLOCK 0xC5ACCE55; +#define CORESIGHT_UNLOCK 0xC5ACCE55#define EXCEP_VECTOR_CPU_RESET_VECTOR (NV_PA_EVP_BASE + 0x100)#define CSITE_CPU_DBG0_LAR (NV_PA_CSITE_BASE + 0x10FB0)
@@ -53,6 +53,10 @@#define SIMPLE_PLLX (CLOCK_ID_XCPU - CLOCK_ID_FIRST_SIMPLE) +/* SB_AA64_RESET_LOW and _HIGH defines for CPU reset vector */ +#define SB_AA64_RESET_LOW 0x6000C230 +#define SB_AA64_RESET_HIGH 0x6000C234 +struct clk_pll_table {u16 n;u16 m;
arch/arm/mach-tegra/lowlevel_init.S +15 -0
@@ -10,6 +10,20 @@ #include <config.h> #include <linux/linkage.h> +#ifdef CONFIG_ARM64 + .align 5 +ENTRY(reset_cpu) + /* get address for global reset register */ + ldr x1, =PRM_RSTCTRL + ldr w3, [x1] + /* force reset */ + orr w3, w3, #0x10 + str w3, [x1] + mov w0, w0 +1: + b 1b +ENDPROC(reset_cpu) +#else .align 5 ENTRY(reset_cpu) ldr r1, rstctl @ get addr for global reset
@@ -23,3 +37,4 @@ _loop_forever: rstctl: .word PRM_RSTCTRL ENDPROC(reset_cpu) +#endif
drivers/mmc/tegra_mmc.c +11 -1
@@ -2,7 +2,7 @@* (C) Copyright 2009 SAMSUNG Electronics * Minkyu Kang <[email protected]> * Jaehoon Chung <[email protected]> -* Portions Copyright 2011-2013 NVIDIA Corporation +* Portions Copyright 2011-2015 NVIDIA Corporation * * SPDX-License-Identifier: GPL-2.0+ */
@@ -668,6 +668,16 @@ void tegra_mmc_init(void)const void *blob = gd->fdt_blob;debug ("%s entry\n" , __func__); +/* See if any Tegra210 MMC controllers are present */ + count =fdtdec_find_aliases_for_id (blob,"sdhci" , +COMPAT_NVIDIA_TEGRA210_SDMMC , node_list, +CONFIG_SYS_MMC_MAX_DEVICE ); +debug ("%s: count of Tegra210 sdhci nodes is %d\n" , __func__, count); +if (process_nodes (blob, node_list, count)) { +printf ("%s: Error processing T30 mmc node(s)!\n" , __func__); +return ; + } +/* See if any Tegra124 MMC controllers are present */ count = fdtdec_find_aliases_for_id(blob, "sdhci", COMPAT_NVIDIA_TEGRA124_SDMMC, node_list,
drivers/usb/host/ehci-tegra.c +30 -1
@@ -1,6 +1,6 @@/* * Copyright (c) 2011 The Chromium OS Authors. -* Copyright (c) 2009-2013 NVIDIA Corporation +* Copyright (c) 2009-2015 NVIDIA Corporation * Copyright (c) 2013 Lucas Stach * * SPDX-License-Identifier: GPL-2.0+
@@ -64,6 +64,7 @@ enum usb_ctlr_type {USB_CTLR_T20 ,USB_CTLR_T30 ,USB_CTLR_T114 , +USB_CTLR_T210 , USB_CTRL_COUNT, };
@@ -149,6 +150,15 @@ static const unsigned T114_usb_pll[CLOCK_OSC_FREQ_COUNT][PARAM_COUNT] = { { 0x3C0, 0x1A, 0x00, 0xC, 2, 0x04, 0x66, 0x09, 0xFE, 0xFDE8, 0xB } }; +/* NOTE: 13/26MHz settings are N/A for T210, so dupe 12MHz settings for now */ +static const unsigned T210_usb_pll[CLOCK_OSC_FREQ_COUNT ][PARAM_COUNT ] = { +/* DivN, DivM, DivP, KCP, KVCO, Delays Debounce, Bias */ + {0x028 ,0x01 ,0x01 ,0x0 ,0 ,0x02 ,0x2F ,0x08 ,0x76 ,30000 ,5 }, + {0x019 ,0x01 ,0x01 ,0x0 ,0 ,0x03 ,0x4B ,0x0C ,0xBB ,48000 ,8 }, + {0x028 ,0x01 ,0x01 ,0x0 ,0 ,0x02 ,0x2F ,0x08 ,0x76 ,30000 ,5 }, + {0x028 ,0x01 ,0x01 ,0x0 ,0 ,0x02 ,0x2F ,0x08 ,0x76 ,30000 ,5 }, +}; +/* UTMIP Idle Wait Delay */ static const u8 utmip_idle_wait_delay =17 ;
@@ -177,6 +187,10 @@ static struct fdt_usb_controller fdt_usb_controllers[USB_CTRL_COUNT] = { .has_hostpc = 1, .pll_parameter = (const unsigned *)T114_usb_pll, }, + { + .has_hostpc = 1, + .pll_parameter = (const unsigned *)T210_usb_pll, + }, };/*
@@ -458,6 +472,16 @@ static int init_utmi_usb_controller(struct fdt_usb *config,UTMIP_DEBOUNCE_CFG0_MASK , timing[PARAM_DEBOUNCE_A_TIME] << UTMIP_DEBOUNCE_CFG0_SHIFT); +if (timing[PARAM_DEBOUNCE_A_TIME ] >0xFFFF ) { +clrsetbits_le32 (&usbctlr->utmip_debounce_cfg0, +UTMIP_DEBOUNCE_CFG0_MASK , + (timing[PARAM_DEBOUNCE_A_TIME ] >>1 ) + <<UTMIP_DEBOUNCE_CFG0_SHIFT ); +clrsetbits_le32 (&usbctlr->utmip_bias_cfg1, +UTMIP_BIAS_DEBOUNCE_TIMESCALE_MASK , +1 <<UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT ); + } +setbits_le32 (&usbctlr->utmip_tx_cfg0,UTMIP_FS_PREAMBLE_J );/* Disable battery charge enabling bit */
@@ -643,6 +667,10 @@ static int init_ulpi_usb_controller(struct fdt_usb *config,static void config_clock (const u32 timing[]) { +debug ("%s: DIVM = %d, DIVN = %d, DIVP = %d, cpcon/lfcon = %d/%d\n" , + __func__, timing[PARAM_DIVM ], timing[PARAM_DIVN ], + timing[PARAM_DIVP ], timing[PARAM_CPCON ], timing[PARAM_LFCON ]); +clock_start_pll (CLOCK_ID_USB , timing[PARAM_DIVM ], timing[PARAM_DIVN ], timing[PARAM_DIVP ], timing[PARAM_CPCON ], timing[PARAM_LFCON ]);
@@ -823,6 +851,7 @@ static const struct udevice_id ehci_usb_ids[] = { { .compatible = "nvidia,tegra20-ehci", .data = USB_CTLR_T20 }, { .compatible = "nvidia,tegra30-ehci", .data = USB_CTLR_T30 }, { .compatible = "nvidia,tegra114-ehci", .data = USB_CTLR_T114 }, + { .compatible = "nvidia,tegra210-ehci", .data = USB_CTLR_T210 }, { } };
include/configs/tegra-common-post.h +10 -2
@@ -62,11 +62,19 @@#define CONFIG_CHROMEOS_EXTRA_ENV_SETTINGS #endif +#ifdef CONFIG_ARM64 +#define FDT_HIGH "ffffffffffffffff" +#define INITRD_HIGH "ffffffffffffffff" +#else +#define FDT_HIGH "ffffffff" +#define INITRD_HIGH "ffffffff" +#endif +#define CONFIG_EXTRA_ENV_SETTINGS \ TEGRA_DEVICE_SETTINGS \ MEM_LAYOUT_ENV_SETTINGS \ - "fdt_high=ffffffff\0" \ - "initrd_high=ffffffff\0" \ + "fdt_high=" FDT_HIGH "\0" \ + "initrd_high=" INITRD_HIGH "\0" \ BOOTENV \ BOARD_EXTRA_ENV_SETTINGS \ CONFIG_CHROMEOS_EXTRA_ENV_SETTINGS
include/fdtdec.h +3 -0
@@ -137,6 +137,7 @@ enum fdt_compat_id {COMPAT_NVIDIA_TEGRA124_SOR ,/* Tegra 124 Serial Output Resource */ COMPAT_NVIDIA_TEGRA124_PMC ,/* Tegra 124 power mgmt controller */ COMPAT_NVIDIA_TEGRA20_DC ,/* Tegra 2 Display controller */ +COMPAT_NVIDIA_TEGRA210_SDMMC ,/* Tegra210 SDMMC controller */ COMPAT_NVIDIA_TEGRA124_SDMMC ,/* Tegra124 SDMMC controller */ COMPAT_NVIDIA_TEGRA30_SDMMC ,/* Tegra30 SDMMC controller */ COMPAT_NVIDIA_TEGRA20_SDMMC, /* Tegra20 SDMMC controller */
@@ -145,6 +146,8 @@ enum fdt_compat_id {COMPAT_NVIDIA_TEGRA20_PCIE ,/* Tegra 20 PCIe controller */ COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL ,/* Tegra124 XUSB pad controller */ +COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL , +/* Tegra210 XUSB pad controller */ COMPAT_SMSC_LAN9215 ,/* SMSC 10/100 Ethernet LAN9215 */ COMPAT_SAMSUNG_EXYNOS5_SROMC ,/* Exynos5 SROMC */ COMPAT_SAMSUNG_S3C2440_I2C, /* Exynos I2C Controller */
lib/fdtdec.c +2 -0
@@ -31,6 +31,7 @@ static const char * const compat_names[COMPAT_COUNT] = {COMPAT (NVIDIA_TEGRA124_SOR ,"nvidia,tegra124-sor" ),COMPAT (NVIDIA_TEGRA124_PMC ,"nvidia,tegra124-pmc" ),COMPAT (NVIDIA_TEGRA20_DC ,"nvidia,tegra20-dc" ), +COMPAT (NVIDIA_TEGRA210_SDMMC ,"nvidia,tegra210-sdhci" ),COMPAT (NVIDIA_TEGRA124_SDMMC ,"nvidia,tegra124-sdhci" ),COMPAT (NVIDIA_TEGRA30_SDMMC ,"nvidia,tegra30-sdhci" ), COMPAT(NVIDIA_TEGRA20_SDMMC, "nvidia,tegra20-sdhci"),
@@ -38,6 +39,7 @@ static const char * const compat_names[COMPAT_COUNT] = {COMPAT (NVIDIA_TEGRA30_PCIE ,"nvidia,tegra30-pcie" ),COMPAT (NVIDIA_TEGRA20_PCIE ,"nvidia,tegra20-pcie" ),COMPAT (NVIDIA_TEGRA124_XUSB_PADCTL ,"nvidia,tegra124-xusb-padctl" ), +COMPAT (NVIDIA_TEGRA210_XUSB_PADCTL ,"nvidia,tegra210-xusb-padctl" ),COMPAT (SMSC_LAN9215 ,"smsc,lan9215" ),COMPAT (SAMSUNG_EXYNOS5_SROMC ,"samsung,exynos-sromc" ), COMPAT(SAMSUNG_S3C2440_I2C, "samsung,s3c2440-i2c"),
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 4/6 ARM: Tegra210: Add support to common Tegra source/config files
arch/arm/dts/tegra210.dtsi line 36
Quoted 9 lines · Tom Warren
Derived from Tegra124, modified as appropriate during T210 board bringup. Cleaned up debug statements to conserve string space, too. This also adds misc 64-bit changes from Thierry Reding/Stephen Warren.
arch/arm/dts/tegra210.dtsi +2
-0+ gpio: gpio at 0,6000d000 { + compatible = "nvidia,tegra210-gpio", "nvidia,tegra124-gpio", "nvidia,tegra30-gpio";
I think only the 210 and 30 values are required? Feel free to fix this up when applying; no need to resend.
PATCH v3 4/6 ARM: Tegra210: Add support to common Tegra source/config files
Stephen,
Quoted 14 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 10:55 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 4/6] ARM: Tegra210: Add support to common Tegra source/config filesQuoted 3 lines · Tom Warren
Derived from Tegra124, modified as appropriate during T210 board bringup. Cleaned up debug statements to conserve string space, too. This also adds misc 64-bit changes from Thierry Reding/Stephen Warren.
Quoted 8 lines
arch/arm/dts/tegra210.dtsi
Quoted 5 lines
arch/arm/dts/tegra210.dtsi +3
-0+ gpio: gpio at 0,6000d000 { + compatible = "nvidia,tegra210-gpio", "nvidia,tegra124-gpio", +"nvidia,tegra30-gpio";I think only the 210 and 30 values are required? Feel free to fix this up when applying; no need to resend.
This came from Thierry's DTSI file IIRC, but I'll pull the tegra124 value when I apply it. Thanks.
--
nvpublic
PATCH v3 5/6 P2571: dts: Add DT file for Tegra210 P2571 board
In reply to Tom WarrenBased on T124 Venice2. SDMMC1 is SD-card slot.
---
Changes in V3:
- made DTS file conform with 64-bit FDT
- removed untested/unneeded nodes like APBDMA, PWM, etc. Changes in V2: None
arch/arm/dts/Makefile | 3 +- arch/arm/dts/tegra210-p2571.dts | 106 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 arch/arm/dts/tegra210-p2571.dts
arch/arm/dts/Makefile +2 -1
@@ -32,7 +32,8 @@ dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \ tegra114-dalmore.dtb \ tegra124-jetson-tk1.dtb \ tegra124-nyan-big.dtb \ - tegra124-venice2.dtb + tegra124-venice2.dtb \ + tegra210-p2571.dtb dtb-$(CONFIG_ARCH_UNIPHIER) += \ uniphier-ph1-sld3-ref.dtb \ uniphier-ph1-pro4-ref.dtb \
arch/arm/dts/tegra210-p2571.dts new file +106 -0
106 lines not on this page · raw message
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
In reply to Tom WarrenBased on Venice2, incorporates Stephen Warren's
latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this
will build and and boot in 64-bit on my P2571
(when used with a 32-bit AVP loader).
---
Changes in V3:
- fix COUNTER_FREQUENCY to match T210/P2571 OSC freq (38.4)
- Add back USB net config switches now that USB is working Changes in V2:
- minor fixes as per swarren review
arch/arm/mach-tegra/tegra210/Kconfig | 7 +
board/nvidia/{beaver => p2571}/Kconfig | 6 +-
board/nvidia/p2571/MAINTAINERS | 6 +
.../tegra210 => board/nvidia/p2571}/Makefile | 6 +-
board/nvidia/p2571/max77620_init.c | 85 ++++++++
board/nvidia/p2571/max77620_init.h | 67 ++++++
board/nvidia/p2571/p2571.c | 29 +++
board/nvidia/p2571/pinmux-config-p2571.h | 235 +++++++++++++++++++++
configs/{beaver_defconfig => p2571_defconfig} | 6 +-
include/configs/{venice2.h => p2571.h} | 33 +--
.../{tegra124-common.h => tegra210-common.h} | 15 +-
11 files changed, 467 insertions(+), 28 deletions(-)
copy board/nvidia/{beaver => p2571}/Kconfig (61%)
create mode 100644 board/nvidia/p2571/MAINTAINERS
copy {arch/arm/mach-tegra/tegra210 => board/nvidia/p2571}/Makefile (59%)
create mode 100644 board/nvidia/p2571/max77620_init.c
create mode 100644 board/nvidia/p2571/max77620_init.h
create mode 100644 board/nvidia/p2571/p2571.c
create mode 100644 board/nvidia/p2571/pinmux-config-p2571.h
copy configs/{beaver_defconfig => p2571_defconfig} (77%)
copy include/configs/{venice2.h => p2571.h} (67%)
copy include/configs/{tegra124-common.h => tegra210-common.h} (89%)arch/arm/mach-tegra/tegra210/Kconfig +7 -0
@@ -3,9 +3,16 @@ if TEGRA210 choice prompt "Tegra210 board select" +config TARGET_P2571 + bool "NVIDIA Tegra210 P2571 base board" + help + P2571 is a P2530 married to a P1963 I/O board + endchoice config SYS_SOC default "tegra210" +source "board/nvidia/p2571/Kconfig" + endif
board/nvidia/p2571/Kconfig renamed from board/nvidia/beaver/Kconfig +3 -3
@@ -1,12 +1,12 @@ -if TARGET_BEAVER +if TARGET_P2571 config SYS_BOARD - default "beaver" + default "p2571" config SYS_VENDOR default "nvidia" config SYS_CONFIG_NAME - default "beaver" + default "p2571" endif
board/nvidia/p2571/MAINTAINERS new file +6 -0
@@ -0,0 +1,6 @@ +P2571 BOARD +M: Tom Warren <[email protected]> +S: Maintained +F: board/nvidia/p2571/ +F: include/configs/p2571.h +F: configs/p2571_defconfig
board/nvidia/p2571/Makefile renamed from arch/arm/mach-tegra/tegra210/Makefile +2 -4
@@ -5,7 +5,5 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-y += clock.o -obj-y += funcmux.o -obj-y += pinmux.o -obj-y += xusb-padctl.o +obj-y += max77620_init.o +obj-y += p2571.o
board/nvidia/p2571/max77620_init.c new file +85 -0
85 lines not on this page · raw message
board/nvidia/p2571/max77620_init.h new file +67 -0
67 lines not on this page · raw message
board/nvidia/p2571/p2571.c new file +29 -0
@@ -0,0 +1,29 @@ +/* +* (C) Copyright 2013-2015 +* NVIDIA Corporation <www.nvidia.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <asm/arch/gpio.h> +#include <asm/arch/pinmux.h> +#include "pinmux-config-p2571.h" + +/* +* Routine: pinmux_init +* Description: Do individual peripheral pinmux configs +*/ +void pinmux_init (void ) +{ +pinmux_clear_tristate_input_clamping (); + +gpio_config_table (p2571_gpio_inits, +ARRAY_SIZE (p2571_gpio_inits)); + +pinmux_config_pingrp_table (p2571_pingrps, +ARRAY_SIZE (p2571_pingrps)); + +pinmux_config_drvgrp_table (p2571_drvgrps, +ARRAY_SIZE (p2571_drvgrps)); +}
board/nvidia/p2571/pinmux-config-p2571.h new file +235 -0
235 lines not on this page · raw message
configs/p2571_defconfig renamed from configs/beaver_defconfig +3 -3
@@ -1,8 +1,8 @@ CONFIG_ARM=y CONFIG_TEGRA=y -CONFIG_TEGRA30=y -CONFIG_TARGET_BEAVER=y -CONFIG_DEFAULT_DEVICE_TREE="tegra30-beaver" +CONFIG_TEGRA210=y +CONFIG_TARGET_P2571=y +CONFIG_DEFAULT_DEVICE_TREE="tegra210-p2571" # CONFIG_CMD_IMI is not set # CONFIG_CMD_IMLS is not set # CONFIG_CMD_FLASH is not set
include/configs/p2571.h renamed from include/configs/venice2.h +21 -12
@@ -1,20 +1,23 @@/* -* (C) Copyright 2013-2014 +* (C) Copyright 2013-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+ */ -#ifndef __CONFIG_H -#define __CONFIG_H +#ifndef _P2571_H +#define _P2571_H#include <linux/sizes.h> -#include "tegra124-common.h" +/* enable PMIC */ +#define CONFIG_MAX77620_POWER + +#include "tegra210-common.h" /* High-level configuration options */ -#define V_PROMPT "Tegra124 (Venice2) # " -#define CONFIG_TEGRA_BOARD_STRING "NVIDIA Venice2" +#define V_PROMPT "Tegra210 (P2571) # " +#define CONFIG_TEGRA_BOARD_STRING "NVIDIA P2571"/* Board-specific serial config */ #define CONFIG_SERIAL_MULTI
@@ -41,13 +44,13 @@#define CONFIG_TEGRA114_SPI /* Compatible w/ Tegra114 SPI */ #define CONFIG_TEGRA114_SPI_CTRLS 6#define CONFIG_SPI_FLASH_WINBOND -#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0 -#define CONFIG_SF_DEFAULT_SPEED 24000000 +#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0 +#define CONFIG_SF_DEFAULT_SPEED 24000000#define CONFIG_CMD_SPI #define CONFIG_CMD_SF -#define CONFIG_SPI_FLASH_SIZE (4 << 20) +#define CONFIG_SPI_FLASH_SIZE (4 << 20) -/* USB Host support */ +/* USB2.0 Host support */ #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_TEGRA #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
@@ -61,7 +64,13 @@/* General networking support */ #define CONFIG_CMD_DHCP -#include "tegra-common-usb-gadget.h" +/* +* TODO([email protected]) - add tegra-common-usb-gadget.h back +* breaks 64-bit build in ci_udc.c +*/ #include "tegra-common-post.h" -#endif /* __CONFIG_H */ +#define COUNTER_FREQUENCY 38400000 +#define CPU_RELEASE_ADDR 0x80000000 + +#endif /* _P2571_H */
include/configs/tegra210-common.h renamed from include/configs/tegra124-common.h +9 -6
@@ -1,16 +1,16 @@/* -* (C) Copyright 2013 +* (C) Copyright 2013-2015 * NVIDIA Corporation <www.nvidia.com> * * SPDX-License-Identifier: GPL-2.0+ */ -#ifndef _TEGRA124_COMMON_H_ -#define _TEGRA124_COMMON_H_ +#ifndef _TEGRA210_COMMON_H_ +#define _TEGRA210_COMMON_H_#include "tegra-common.h" -/* Cortex-A15 uses a cache line size of 64 bytes */ +/* Cortex-A57 uses a cache line size of 64 bytes */ #define CONFIG_SYS_CACHELINE_SIZE 64/*
@@ -26,7 +26,10 @@/*----------------------------------------------------------------------- * Physical Memory Map */ -#define CONFIG_SYS_TEXT_BASE 0x80110000 +#define CONFIG_SYS_TEXT_BASE 0x8010E000 + +/* Generic Interrupt Controller */ +#define CONFIG_GICV2 /* * Memory layout for where various images get loaded by boot scripts:
@@ -70,4 +73,4 @@#define CONFIG_USB_EHCI_TXFIFO_THRESH 0x10#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1 -#endif /* _TEGRA124_COMMON_H_ */ +#endif /* _TEGRA210_COMMON_H_ */
Signature · 1 line
1.8.2.1.610.g562af5b
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
include/configs/p2571.h line 74
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
include/configs/p2571.h renamed from include/configs/venice2.h +1
-0+#define CPU_RELEASE_ADDR 0x80000000
That define isn't used at all; it's only referenced if CONFIG_ARMV8_MULTIENTRY is set, and it isn't for Tegra. I'd suggest dropping it when you apply this patch (no need to resend).
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
In reply to Tom Warrenboard/nvidia/p2571/max77620_init.c
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +1
-0+void pmic_enable_cpu_vdd (void )
This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c line 77
Quoted 6 lines
board/nvidia/p2571/max77620_init.c +6
-0+debug ("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n" , __func__); +/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );
This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good name and call-site would be yet.
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
Quoted 29 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Tuesday, July 28, 2015 12:27 PM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 6/6] T210: Add support for 64-bit T210-based P2571 boardboard/nvidia/p2571/max77620_init.c
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +1
-0+void pmic_enable_cpu_vdd (void )This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c
Quoted 1 line
board/nvidia/p2571/max77620_init.c +1
-0+ debug("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n",
__func__);
Quoted 10 lines
board/nvidia/p2571/max77620_init.c line 77
Quoted 5 lines
board/nvidia/p2571/max77620_init.c +5
-0+/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
Makes sense. My initial development was on a 32-bit build (32-bit AVP SPL + 32-bit U-Boot CPU), so this was called from the AVP code. I still use this 32-bit AVP SPL 'portion' to load my 64-bit CPU binary, so LDO2 does get inited. Your flow is with a different AVP 32-bit 'loader', so some PMIC rails aren't set.
Quoted 6 lines
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good name and call-site would be yet.
Sounds reasonable. I'll look into rewriting this and calling it in the CPU binary, unless you get to it first.
Tom
--
nvpublic
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
In reply to Stephen WarrenQuoted 28 lines · Stephen Warren
board/nvidia/p2571/max77620_init.c
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +1
-0+void pmic_enable_cpu_vdd (void )This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c line 77
Quoted 6 lines
board/nvidia/p2571/max77620_init.c +6
-0+debug ("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n" , __func__); +/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
Quoted 5 lines
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good name and call-site would be yet.
Have you looked at my P2371 support patches? Specifically commit "ARM:
tegra: Add NVIDIA P2371 support" has the board-level code that I've used to boot upstream on the device. There's a board_mmc_power_init() implementation which overrides the weak dummy provided in drivers/mmc/mmc.c.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150729/2296c7ac/attachment.sig>
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
Quoted 46 lines
-----Original Message-----
From: Thierry Reding
Sent: Wednesday, July 29, 2015 4:08 AM
To: Stephen Warren
Cc: Tom Warren; u-boot at lists.denx.de; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 6/6] T210: Add support for 64-bit T210-based P2571 boardQuoted 10 lines · Stephen Warren
Quoted 8 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +0
-0Quoted 7 lines
Quoted 1 line
+void
pmic_enable_cpu_vdd(void)This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c
Quoted 1 line
board/nvidia/p2571/max77620_init.c +1
-0+ debug("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n",
__func__);Quoted 11 lines
board/nvidia/p2571/max77620_init.c line 77
Quoted 5 lines
board/nvidia/p2571/max77620_init.c +5
-0+/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
Quoted 5 lines
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good
name and call-site would be yet.
Quoted 7 lines
Have you looked at my P2371 support patches? Specifically commit "ARM:
tegra: Add NVIDIA P2371 support" has the board-level code that I've used to boot upstream on the device. There's aboard_mmc_power_init()implementation which overrides the weak dummy provided indrivers/mmc/mmc.c.Thierry
There's also pin_mux_mmc() which a few Tegra boards are already using. I have an implementation for P2571 that I'll be uploading soon for review.
Tom
--
nvpublic
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
In reply to Thierry RedingQuoted 35 lines · Thierry Reding
Quoted 28 lines · Stephen Warren
board/nvidia/p2571/max77620_init.c
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +1
-0+void pmic_enable_cpu_vdd (void )This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c line 77
Quoted 6 lines
board/nvidia/p2571/max77620_init.c +6
-0+debug ("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n" , __func__); +/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
Quoted 5 lines
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good name and call-site would be yet.
Quoted 5 lines
Have you looked at my P2371 support patches? Specifically commit "ARM:
tegra: Add NVIDIA P2371 support" has the board-level code that I've used to boot upstream on the device. There's aboard_mmc_power_init()implementation which overrides the weak dummy provided indrivers/mmc/mmc.c.
Do you have a git repo and branch link?
I wasn't aware that U-Boot had been ported to either p2371, so I re-created the support for those boards yesterday for L4T's U-Boot, and I was planning to cherry-pick them into upstream U-Boot and retest that today.
PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board
Quoted 36 lines · Stephen Warren
Quoted 35 lines · Thierry Reding
Quoted 33 lines · Stephen Warren
board/nvidia/p2571/max77620_init.c
Quoted 10 lines · Tom Warren
Based on Venice2, incorporates Stephen Warren's latest P2571 pinmux table.
With Thierry Reding's 64-bit build fixes, this will build and and boot in 64-bit on my P2571 (when used with a 32-bit AVP loader).
board/nvidia/p2571/max77620_init.c +1
-0+void pmic_enable_cpu_vdd (void )This function is never called, or even linked into the binary. For previous Tegra SoCs, it was called from the SPL before booting the CCPLEX. Since there is no SPL for Tegra210, nothing calls this.
board/nvidia/p2571/max77620_init.c line 77
Quoted 6 lines
board/nvidia/p2571/max77620_init.c +6
-0+debug ("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n" , __func__); +/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */ + reg =0xF200 |MAX77620_CNFG1_L2_REG ; +tegra_i2c_ll_write_addr (MAX77620_I2C_ADDR ,2 ); +tegra_i2c_ll_write_data (reg,I2C_SEND_2_BYTES ); +udelay (10 *1000 );This explains why the SD card isn't working for me on p2371-2180; I guess the PMIC OTP on that board has this regulator disabled, and since this code never runs, it never gets turned on. If I manually turn it on using the i2c command, then "mmc dev 1" works.
For p2571, I think we should either delete this file entirely. Or, at least strip it down so that it's not touching global PMIC configuration but rather just enabling any non-CCPLEX rails that U-Boot might need such as SD card and USB, then rename the function and arrange for it to be called from somewhere. I'm not sure what a good name and call-site would be yet.
Quoted 7 lines
Quoted 5 lines
Have you looked at my P2371 support patches? Specifically commit "ARM:
tegra: Add NVIDIA P2371 support" has the board-level code that I've used to boot upstream on the device. There's aboard_mmc_power_init()implementation which overrides the weak dummy provided indrivers/mmc/mmc.c.Do you have a git repo and branch link?
https://github.com/thierryreding/u-boot/commits/staging/work
That's still based on the earlier Tegra210 work and not rebased on top of what Tom sent out. For board support this shouldn't matter very much, though.
Thierry
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
v3 cover Tegra210/P2571 initial support
In reply to Tom WarrenQuoted 8 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC code. Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
b) I applied it to our internal L4T U-Boot branch, ported it to another T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
v3 cover Tegra210/P2571 initial support
Thanks, Stephen!
Quoted 24 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 11:01 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial supportQuoted 5 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC code. Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
Acked-by Stephen Warren <[email protected]>I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
Quoted 7 lines
b) I applied it to our internal L4T U-Boot branch, ported it to another T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
v3 cover Tegra210/P2571 initial support
In reply to Stephen WarrenTomR/Albert,
Quoted 24 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 11:01 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial supportQuoted 5 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC code. Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
Acked-by Stephen Warren <[email protected]>I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
Quoted 7 lines
b) I applied it to our internal L4T U-Boot branch, ported it to another T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
I've applied my T210 work on top of Stephen's recent 10-patch 'arm' 64-bit cleanup series and his 3-patch 'tegra' 64-bit fixes, onto my current u-boot-tegra/master after rebasing it against TOT u-boot/master. Everything builds OK (all Tegra 32-bit, and all ARM 64-bit), and my T210 boots OK to cmd prompt, with all periphs working (USB, I2C, SPI, GPIO, MMC).
So my question is, how should I go about issuing a PR for the T210 work? It should apply OK w/o Stephen's 64-bit fixes, but it won't build w/o them. But only a few are actually Tegra-specific (the 3 from today).
Is it OK if I send one PR with _all_ these patches in u-boot-tegra/master, including the 'arm' 64-bit, the 'tegra' 64-bit, and finally my T210 series on top? Or do you want them split up and the 'arm' 64-bit fixes taken in to either u-boot-arm/master or u-boot/master first (just pulled from the list, I guess), then a PR from me for the 3 Tegra 64-bit fixes plus my T210 series?
Let me know,
Tom
--
nvpublic
v3 cover Tegra210/P2571 initial support
Quoted 34 lines · Tom Warren
TomR/Albert,
Quoted 24 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 11:01 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial supportQuoted 5 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC code. Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
Acked-by Stephen Warren <[email protected]>I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
Quoted 7 lines
b) I applied it to our internal L4T U-Boot branch, ported it to another T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
Quoted 5 lines
I've applied my T210 work on top of Stephen's recent 10-patch 'arm' 64-bit cleanup series and his 3-patch 'tegra' 64-bit fixes, onto my current u-boot-tegra/master after rebasing it against TOT u-boot/master. Everything builds OK (all Tegra 32-bit, and all ARM 64-bit), and my T210 boots OK to cmd prompt, with all periphs working (USB, I2C, SPI, GPIO, MMC).
So my question is, how should I go about issuing a PR for the T210 work? It should apply OK w/o Stephen's 64-bit fixes, but it won't build w/o them. But only a few are actually Tegra-specific (the 3 from today).
Is it OK if I send one PR with _all_ these patches in u-boot-tegra/master, including the 'arm' 64-bit, the 'tegra' 64-bit, and finally my T210 series on top? Or do you want them split up and the 'arm' 64-bit fixes taken in to either u-boot-arm/master or u-boot/master first (just pulled from the list, I guess), then a PR from me for the 3 Tegra 64-bit fixes plus my T210 series?
One PR with everything sounds OK to me.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150727/9e747d44/attachment.sig>
v3 cover Tegra210/P2571 initial support
Thanks, Tom.
Simon Glass reviewed the earlier 64-bit patches, so I'll take that as the stamp of approval for them.
Stephen/Thierry - what about the most recent 3 'ARM: tegra' 64-bit patches? Do I need to wait until someone else has Ack'd / reviewed them, or do you feel they're good to go? I guess I can say that I've 'tested' them, but I'd really like someone besides myself to approve them.
Tom
--
nvpublic
Quoted 70 lines
-----Original Message-----
From: Tom Rini [mailto:trini at konsulko.com]
Sent: Monday, July 27, 2015 3:08 PM
To: Tom Warren
Cc: Albert Aribaud; u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial support* PGP Signed by an unknown key
Quoted 14 lines · Tom Warren
TomR/Albert,
Quoted 12 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 11:01 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial supportQuoted 3 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC
code.
Quoted 17 lines
Quoted 17 lines
Quoted 2 lines
Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
Acked-by Stephen Warren <[email protected]>I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
b) I applied it to our internal L4T U-Boot branch, ported it to another
T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).Quoted 5 lines
Quoted 3 lines
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
I've applied my T210 work on top of Stephen's recent 10-patch 'arm' 64-bit
cleanup series and his 3-patch 'tegra' 64-bit fixes, onto my current u-boot- tegra/master after rebasing it against TOT u-boot/master. Everything builds OK (all Tegra 32-bit, and all ARM 64-bit), and my T210 boots OK to cmd prompt, with all periphs working (USB, I2C, SPI, GPIO, MMC).
Quoted 2 lines
So my question is, how should I go about issuing a PR for the T210 work? It
should apply OK w/o Stephen's 64-bit fixes, but it won't build w/o them. But only a few are actually Tegra-specific (the 3 from today).
Quoted 2 lines
Is it OK if I send one PR with _all_ these patches in u-boot-tegra/master,
including the 'arm' 64-bit, the 'tegra' 64-bit, and finally my T210 series on top? Or do you want them split up and the 'arm' 64-bit fixes taken in to either u- boot-arm/master or u-boot/master first (just pulled from the list, I guess), then a PR from me for the 3 Tegra 64-bit fixes plus my T210 series?
One PR with everything sounds OK to me.
--
Tom* Unknown Key
*0x56D6FECD
v3 cover Tegra210/P2571 initial support
Quoted 5 lines · Tom Warren
Thanks, Tom.
Simon Glass reviewed the earlier 64-bit patches, so I'll take that as the stamp of approval for them.
Stephen/Thierry - what about the most recent 3 'ARM: tegra' 64-bit patches? Do I need to wait until someone else has Ack'd / reviewed them, or do you feel they're good to go? I guess I can say that I've 'tested' them, but I'd really like someone besides myself to approve them.
I think as the Tegra maintainer, it's your privilege to take those patches whenever you wish, at least provided there's been reasonable opportunity for others to review them if they wish (probably ranging from little time at all for trivial/obvious fixes to a good few days for more complex or potentially disagreeable changes).
Quoted 81 lines
Tom
--
nvpublicQuoted 63 lines
-----Original Message-----
From: Tom Rini [mailto:trini at konsulko.com]
Sent: Monday, July 27, 2015 3:08 PM
To: Tom Warren
Cc: Albert Aribaud; u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial support* PGP Signed by an unknown key
Quoted 14 lines · Tom Warren
TomR/Albert,
Quoted 12 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Monday, July 27, 2015 11:01 AM
To: Tom Warren
Cc: u-boot at lists.denx.de; Thierry Reding; Stephen Warren; tomcwarren3959 at gmail.com
Subject: Re: [U-Boot] [PATCH V3 0/6] Tegra210/P2571 initial supportQuoted 3 lines · Tom Warren
This patch series adds support for the Tegra210 SoC and the P2571 board. Most of the T210 info is identical to T124 at this point, so I just cloned Venice2/Jetson-TK1 board files and T124 header/SoC
code.
Quoted 17 lines
Quoted 17 lines
Quoted 2 lines
Pinmux is the major area of difference at this time, but other changes will be made as more features of the board are brought up.
The series,
Acked-by Stephen Warren <[email protected]>I've also validated that:
a) I can compile it when applied to upstream u-boot/master (a couple days old).
b) I applied it to our internal L4T U-Boot branch, ported it to another
T210 board, flashed it, and booted an L4T kernel (with a few other L4T-specific patches on top).Quoted 5 lines
Quoted 3 lines
I don't think that's quite enough for a Tested-by tag upstream since I haven't actually booted the upstream code, but it's good enough for me to consider the series tested:-)
I've applied my T210 work on top of Stephen's recent 10-patch 'arm' 64-bit
cleanup series and his 3-patch 'tegra' 64-bit fixes, onto my current u-boot- tegra/master after rebasing it against TOT u-boot/master. Everything builds OK (all Tegra 32-bit, and all ARM 64-bit), and my T210 boots OK to cmd prompt, with all periphs working (USB, I2C, SPI, GPIO, MMC).
Quoted 2 lines
So my question is, how should I go about issuing a PR for the T210 work? It
should apply OK w/o Stephen's 64-bit fixes, but it won't build w/o them. But only a few are actually Tegra-specific (the 3 from today).
Quoted 2 lines
Is it OK if I send one PR with _all_ these patches in u-boot-tegra/master,
including the 'arm' 64-bit, the 'tegra' 64-bit, and finally my T210 series on top? Or do you want them split up and the 'arm' 64-bit fixes taken in to either u- boot-arm/master or u-boot/master first (just pulled from the list, I guess), then a PR from me for the 3 Tegra 64-bit fixes plus my T210 series?
Quoted 7 lines
One PR with everything sounds OK to me.
--
Tom* Unknown Key
*0x56D6FECD_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot