diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2016-06-06 16:54:42 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2016-06-29 16:49:35 +0200 |
commit | eeb6061f4b93cdd2c946e354ff69224163636282 (patch) | |
tree | c0332fd3e31f147d1141fa0f982ef54ae8b87d4f /arch/arm/mach-tegra/board-apalis-tk1.h | |
parent | 4d58a5bc83475c1ca5f9990cf9bfeba5b2fe3bbc (diff) |
arm: tegra: initial support for apalis tk1Apalis_TK1_LinuxImageV2.6Beta2_20160701
This patch adds support for the Toradex Apalis TK1 acomputer on module
which can be used on different carrier boards.
The module consists of a Tegra TK1 SoC, a PMIC solution, 2 GB of DDR3L
RAM, a bunch of level shifters, an eMMC, a TMP451 temperature sensor
chip, an I210 gigabit Ethernet controller and a SGTL5000 audio codec.
Furthermore, there is a Kinetis MK20DN512 companion micro controller for
analogue, CAN and resistive touch functionality which is not yet
supported.
This is known to boot into either a basic Angstrom/OpenEmbedded/Yocto
or L4T/JetPack Ubuntu based image.
The following things are known to work to a certain extend:
- analogue/digital audio
- debug UART1
- DVFS power management incl. low power core migration
- eMMC
- gigabit Ethernet
- GPIOs
- HDMI (incl. HDA audio)
- I2C
- LVDS
- PCIe
- SATA
- SD/MMC cards
- temperature sensor
- USB host ports
The rest is untested.
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-apalis-tk1.h')
-rw-r--r-- | arch/arm/mach-tegra/board-apalis-tk1.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-apalis-tk1.h b/arch/arm/mach-tegra/board-apalis-tk1.h new file mode 100644 index 000000000000..72161afbd787 --- /dev/null +++ b/arch/arm/mach-tegra/board-apalis-tk1.h @@ -0,0 +1,194 @@ +/* + * arch/arm/mach-tegra/board-apalis-tk1.h + * + * Copyright (c) 2016, Toradex AG. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _MACH_TEGRA_BOARD_APALIS_H +#define _MACH_TEGRA_BOARD_APALIS_H + +#include <mach/gpio-tegra.h> +#include <mach/irqs.h> +#include "gpio-names.h" + +int apalis_tk1_emc_init(void); +int apalis_tk1_display_init(void); +int apalis_tk1_panel_init(void); +int apalis_tk1_sdhci_init(void); +int apalis_tk1_sensors_init(void); +int apalis_tk1_regulator_init(void); +int apalis_tk1_suspend_init(void); +int apalis_tk1_rail_alignment_init(void); +int apalis_tk1_soctherm_init(void); +int apalis_tk1_edp_init(void); +void apalis_tk1_new_sysedp_init(void); +void apalis_tk1_sysedp_dynamic_capping_init(void); +void apalis_tk1_sysedp_batmon_init(void); +void apalis_tk1_camera_auxdata(void *); + +/* Invensense MPU Definitions */ +#define MPU_GYRO_NAME "mpu9250" +#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PS0 +#define MPU_GYRO_ADDR 0x69 +#define MPU_GYRO_BUS_NUM 0 +#define MPU_GYRO_ORIENTATION MTMAT_TOP_CCW_0 +#define MPU_GYRO_ORIENTATION_E1762 MTMAT_TOP_CCW_270 +#define MPU_COMPASS_NAME "ak8975" +#define MPU_COMPASS_ADDR 0x0C +#define MPU_COMPASS_ADDR_TN8 0x0D +#define MPU_COMPASS_ORIENTATION MTMAT_BOT_CCW_270 +#define MPU_BMP_NAME "bmp280" +#define MPU_BMP_ADDR 0x77 + +/* generated soc_therm OC interrupts */ +#define TEGRA_SOC_OC_IRQ_BASE TEGRA_NR_IRQS +#define TEGRA_SOC_OC_NUM_IRQ TEGRA_SOC_OC_IRQ_MAX + +/* External peripheral act as interrupt controller */ + +#define CAM_RSTN TEGRA_GPIO_PBB3 +#define CAM_FLASH_STROBE TEGRA_GPIO_PBB4 +#define CAM2_PWDN TEGRA_GPIO_PBB6 +#define CAM1_PWDN TEGRA_GPIO_PBB5 +#define CAM_AF_PWDN TEGRA_GPIO_PBB7 +#define CAM_BOARD_E1806 + +/* Modem related GPIOs */ +#define MODEM_EN TEGRA_GPIO_PS4 +#define MDM_RST TEGRA_GPIO_PS3 +#define MDM_COLDBOOT TEGRA_GPIO_PO5 +#define MDM_SAR0 TEGRA_GPIO_PG2 +#define MDM_POWER_REPORT TEGRA_GPIO_PK0 + +/* Baseband IDs */ +enum tegra_bb_type { + TEGRA_BB_BRUCE = 1, + TEGRA_BB_HSIC_HUB = 6, +}; + +#define UTMI1_PORT_OWNER_XUSB 0x1 +#define UTMI2_PORT_OWNER_XUSB 0x2 +#define HSIC1_PORT_OWNER_XUSB 0x4 +#define HSIC2_PORT_OWNER_XUSB 0x8 + +/* Touchscreen definitions */ +#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2 +#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4 +#define TOUCH_SPI_ID 0 /*SPI 1 on ardbeg_interposer*/ +#define TOUCH_SPI_CS 0 /*CS 0 on ardbeg_interposer*/ +#define NORRIN_TOUCH_SPI_ID 2 /*SPI 2 on Norrin*/ +#define NORRIN_TOUCH_SPI_CS 1 /*CS 1 on Norrin*/ + +#define TOUCH_GPIO_IRQ_MAXIM_STI_SPI TEGRA_GPIO_PK2 +#define TOUCH_GPIO_RST_MAXIM_STI_SPI TEGRA_GPIO_PK4 + +/* Audio-related GPIOs */ +/*Same GPIO's used for T114(Interposer) and T124*/ +/*Below GPIO's are same for Laguna and Ardbeg*/ +#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PH4 +#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7 +#define NORRIN_GPIO_HP_DET TEGRA_GPIO_PI7 +/*LDO_EN signal is required only for RT5639 and not for RT5645, +on Laguna the LDO_EN signal comes from a GPIO expander and +this is exposed as a fixed regulator directly handeled from +machine driver of rt5639 and for ardebeg we use the below tegra +GPIO, also the GPIO is same for T114 interposer and T124*/ +/* + * TEGRA_GPIO_PR2 is low active Shift_CTRL_OE[3] on Apalis TK1 controlling the + * level shifter of the debug UART1 receive pin! + * #define TEGRA_GPIO_LDO_EN TEGRA_GPIO_PR2 + */ +#define TEGRA_GPIO_LDO_EN TEGRA_GPIO_PR1 + +/*GPIOs used by board panel file */ +#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3 +#define DSI_PANEL_BL_PWM_GPIO TEGRA_GPIO_PH1 + +/* HDMI Hotplug detection pin */ +#define apalis_tk1_hdmi_hpd TEGRA_GPIO_PN7 + +/* I2C related GPIOs */ +/* Same for interposer and t124 */ +#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4 +#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5 +#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5 +#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6 +#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1 +#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2 +#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4 +#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5 +#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6 +#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7 + +/* Laguna specific */ + +int laguna_pinmux_init(void); +int laguna_regulator_init(void); +int laguna_edp_init(void); + +/* Norrin specific */ +int norrin_regulator_init(void); +int norrin_soctherm_init(void); +int norrin_emc_init(void); + +/* loki specific */ +int loki_pinmux_init(void); +int loki_regulator_init(void); +int loki_emc_init(void); +int loki_sdhci_init(void); +int loki_pmon_init(void); +int loki_panel_init(void); +int loki_kbc_init(void); +int loki_sensors_init(void); +int loki_soctherm_init(void); +int loki_edp_init(void); +int loki_fan_init(void); +int loki_rail_alignment_init(void); + +/* AUO Display related GPIO */ +#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3 /* GMI_AD11 */ +#define LCD_RST_L TEGRA_GPIO_PH5 /* GMI_AD13 */ +#define LCD_LR TEGRA_GPIO_PH6 /* GMI_AD14 */ +#define LCD_TE TEGRA_GPIO_PI4 /* GMI_RST_N */ +#define DSI_PANEL_BL_PWM TEGRA_GPIO_PH1 /*GMI_AD9 */ +#define en_vdd_bl TEGRA_GPIO_PP2 /* DAP3_DOUT */ +#define lvds_en TEGRA_GPIO_PI0 /* GMI_WR_N */ +#define refclk_en TEGRA_GPIO_PG4 /* GMI_AD4 */ + +/* HID keyboard and trackpad irq same for interposer and t124 */ +#define I2C_KB_IRQ TEGRA_GPIO_PC7 +#define I2C_TP_IRQ TEGRA_GPIO_PW3 + +/* TN8 specific */ + +int tn8_regulator_init(void); +int tn8_edp_init(void); +void tn8_new_sysedp_init(void); +void tn8_sysedp_dynamic_capping_init(void); + +/* SATA Specific */ + +#define CLK_RST_CNTRL_RST_DEV_W_SET 0x7000E438 +#define CLK_RST_CNTRL_RST_DEV_V_SET 0x7000E430 +#define SET_CEC_RST 0x100 + +#ifdef CONFIG_NV_SENSORHUB +/* Jetson Sensor-hub */ +#define SENSOR_HUB_RST TEGRA_GPIO_PU0 +#define SENSOR_HUB_BOOT0 TEGRA_GPIO_PU1 +#endif + +#endif |