Skip to contentSkip to conversation

Tegra210/P2571 initial support

PATCH Superseded Tom Warren 5 participants 24 messages Jul 24, 2015 – Jul 30, 2015

Subsystems (10)
lore
Share & tools
lore

Tom Warren

author
#0 lore raw

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
author
#1 lore raw

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
index f113041..036bf5e 100644
@@ -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
author
#2 lore raw

PATCH v3 2/6 Tegra: Rework KConfig options to allow 64-bit builds (T210)

In reply to Tom Warren

Moved 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
index 506463c..20ab398 100644
@@ -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
index 54bd648..7533e57 100644
@@ -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
author
#3 lore raw

PATCH v3 3/6 ARM: Tegra210: Add SoC code/include files for T210

In reply to 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.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
new file mode 100644
index 0000000..3a37af4
@@ -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
new file mode 100644
index 0000000..3501be2
@@ -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
new file mode 100644
index 0000000..f0851de
@@ -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
new file mode 100644
index 0000000..1e5f388
@@ -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
new file mode 100644
index 0000000..df6f91d
@@ -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
new file mode 100644
index 0000000..e8a13b5
@@ -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
new file mode 100644
index 0000000..95c67fb
@@ -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
new file mode 100644
index 0000000..f2a0059
@@ -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
new file mode 100644
index 0000000..1fb8d1a
@@ -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
new file mode 100644
index 0000000..618d228
@@ -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.

#4 lore raw

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.c for 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.

author
#5 lore raw

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 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.c for 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 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.

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

author
#6 lore raw

PATCH v3 4/6 ARM: Tegra210: Add support to common Tegra source/config files

In reply to 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.

---
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
new file mode 100644
index 0000000..eca48d3
@@ -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
index ca40e4e..76773b7 100644
@@ -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
index de50e08..f690260 100644
@@ -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
index 7a86acb..695f3e6 100644
@@ -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
index 1dd3154..66c0879 100644
@@ -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
index d63af0e..b6c7cab 100644
@@ -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
index c817088..f400c01 100644
@@ -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
index 7533e57..ba0b865 100644
@@ -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
index fefc180..0db8ee0 100644
@@ -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
index 7b89c01..e62dda5 100644
@@ -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
index 036bf5e..40de72d 100644
@@ -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
index 94f5bce..0e9cb97 100644
@@ -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
index 24047b8..6c6fb07 100644
@@ -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
index b4ca44f..3f38969 100644
@@ -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
index 4bc0a3f..1273f94 100644
@@ -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
index 31b6c56..6f8b4d0 100644
@@ -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
index e2574d7..0edd557 100644
@@ -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
index 483222f..e67ff7b 100644
@@ -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
index 2323603..4b3f8d1 100644
@@ -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
index c0c471d..3eef250 100644
@@ -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
#7 lore raw

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.

author
#8 lore raw

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 files

Quoted 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

author
#9 lore raw

PATCH v3 5/6 P2571: dts: Add DT file for Tegra210 P2571 board

In reply to Tom Warren

Based 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
index 19e1de6..9bd7014 100644
@@ -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
author
#10 lore raw

PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board

In reply to 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).

---
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
index f2a0059..147e6a8 100644
@@ -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
similarity index 61%
copy from board/nvidia/beaver/Kconfig
copy to board/nvidia/p2571/Kconfig
index 23f7c94..7bc4874 100644
@@ -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
new file mode 100644
index 0000000..c165135
@@ -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
similarity index 59%
copy from arch/arm/mach-tegra/tegra210/Makefile
copy to board/nvidia/p2571/Makefile
index 1fb8d1a..223062e 100644
@@ -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
new file mode 100644
index 0000000..fc710c1
@@ -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
similarity index 77%
copy from configs/beaver_defconfig
copy to configs/p2571_defconfig
index ad74b85..8494bb5 100644
@@ -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
similarity index 67%
copy from include/configs/venice2.h
copy to include/configs/p2571.h
index 1d9d053..76ef37a 100644
@@ -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
similarity index 89%
copy from include/configs/tegra124-common.h
copy to include/configs/tegra210-common.h
index af7698d..0348d47 100644
@@ -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
#11 lore raw

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).

#12 lore raw

PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board

In reply to Tom 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.

author
#13 lore raw

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 board

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

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

#14 lore raw

PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board

In reply to Stephen Warren
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.

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>

author
#15 lore raw

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 board

Quoted 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 -0
Quoted 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 a board_mmc_power_init() implementation which overrides the weak dummy provided in drivers/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

#16 lore raw

PATCH v3 6/6 T210: Add support for 64-bit T210-based P2571 board

In reply to Thierry Reding
Quoted 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 a board_mmc_power_init() implementation which overrides the weak dummy provided in drivers/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.

#17 lore raw

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 a board_mmc_power_init() implementation which overrides the weak dummy provided in drivers/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.
-----------------------------------------------------------------------------------

#18 lore raw

v3 cover Tegra210/P2571 initial support

In reply to Tom Warren
Quoted 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:-)

author
#19 lore raw

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 support

Quoted 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,

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.
-----------------------------------------------------------------------------------

author
#20 lore raw

v3 cover Tegra210/P2571 initial support

In reply to Stephen 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 support

Quoted 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,

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

#21 lore raw

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 support

Quoted 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,

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>
author
#22 lore raw

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 support

Quoted 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,

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

#23 lore raw

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

--
nvpublic

Quoted 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 support

Quoted 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,

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