xref: /rk3399_rockchip-uboot/board/gateworks/gw_ventana/common.h (revision 1622559066d890f1b7622be0ede8a5d64de66ef3)
1e56c5791STim Harvey /*
2e56c5791STim Harvey  * Copyright (C) 2013 Gateworks Corporation
3e56c5791STim Harvey  *
4e56c5791STim Harvey  * Author: Tim Harvey <tharvey@gateworks.com>
5e56c5791STim Harvey  *
6e56c5791STim Harvey  * SPDX-License-Identifier: GPL-2.0+
7e56c5791STim Harvey  */
8e56c5791STim Harvey 
9e56c5791STim Harvey #ifndef _GWVENTANA_COMMON_H_
10e56c5791STim Harvey #define _GWVENTANA_COMMON_H_
11e56c5791STim Harvey 
12e56c5791STim Harvey #include "ventana_eeprom.h"
13e56c5791STim Harvey 
14e56c5791STim Harvey /* GPIO's common to all baseboards */
15e56c5791STim Harvey #define GP_PHY_RST	IMX_GPIO_NR(1, 30)
16e56c5791STim Harvey #define GP_RS232_EN	IMX_GPIO_NR(2, 11)
17e56c5791STim Harvey #define GP_MSATA_SEL	IMX_GPIO_NR(2, 8)
18e56c5791STim Harvey 
19e56c5791STim Harvey #define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |		\
20e56c5791STim Harvey 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |		\
21e56c5791STim Harvey 	PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
22e56c5791STim Harvey 
23e56c5791STim Harvey #define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |		\
24e56c5791STim Harvey 	PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |		\
25e56c5791STim Harvey 	PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
26e56c5791STim Harvey 
27e56c5791STim Harvey #define ENET_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |		\
28e56c5791STim Harvey 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED	  |		\
29e56c5791STim Harvey 	PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
30e56c5791STim Harvey 
31e56c5791STim Harvey #define SPI_PAD_CTRL (PAD_CTL_HYS |				\
32e56c5791STim Harvey 	PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED |		\
33e56c5791STim Harvey 	PAD_CTL_DSE_40ohm     | PAD_CTL_SRE_FAST)
34e56c5791STim Harvey 
35e56c5791STim Harvey #define I2C_PAD_CTRL  (PAD_CTL_PUS_100K_UP |			\
36e56c5791STim Harvey 	PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |	\
37e56c5791STim Harvey 	PAD_CTL_ODE | PAD_CTL_SRE_FAST)
38e56c5791STim Harvey 
39e56c5791STim Harvey #define IRQ_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |		\
40e56c5791STim Harvey 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |		\
41e56c5791STim Harvey 	PAD_CTL_DSE_34ohm | PAD_CTL_HYS | PAD_CTL_SRE_FAST)
42e56c5791STim Harvey 
439a83a815STim Harvey #define DIO_PAD_CFG   (MUX_PAD_CTRL(IRQ_PAD_CTRL) | MUX_MODE_SION)
44e56c5791STim Harvey 
45e56c5791STim Harvey #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
46e56c5791STim Harvey 
47e56c5791STim Harvey /*
481800ffa8STim Harvey  * each baseboard has an optional set user configurable Digital IO lines which
491800ffa8STim Harvey  * can be pinmuxed as a GPIO or in some cases a PWM
50e56c5791STim Harvey  */
51e56c5791STim Harvey struct dio_cfg {
52e56c5791STim Harvey 	iomux_v3_cfg_t gpio_padmux[2];
53e56c5791STim Harvey 	unsigned gpio_param;
54e56c5791STim Harvey 	iomux_v3_cfg_t pwm_padmux[2];
55e56c5791STim Harvey 	unsigned pwm_param;
56e56c5791STim Harvey };
57e56c5791STim Harvey 
58e56c5791STim Harvey struct ventana {
59e56c5791STim Harvey 	/* pinmux */
60e56c5791STim Harvey 	iomux_v3_cfg_t const *gpio_pads;
61e56c5791STim Harvey 	int num_pads;
62e56c5791STim Harvey 	/* DIO pinmux/val */
631800ffa8STim Harvey 	struct dio_cfg *dio_cfg;
641800ffa8STim Harvey 	int dio_num;
65e56c5791STim Harvey 	/* various gpios (0 if non-existent) */
66e56c5791STim Harvey 	int leds[3];
67e56c5791STim Harvey 	int pcie_rst;
68e56c5791STim Harvey 	int mezz_pwren;
69e56c5791STim Harvey 	int mezz_irq;
70e56c5791STim Harvey 	int rs485en;
71e56c5791STim Harvey 	int gps_shdn;
72e56c5791STim Harvey 	int vidin_en;
73e56c5791STim Harvey 	int dioi2c_en;
74e56c5791STim Harvey 	int pcie_sson;
75e56c5791STim Harvey 	int usb_sel;
76e56c5791STim Harvey 	int wdis;
775c55572fSTim Harvey 	int msata_en;
78e49621b3STim Harvey 	int rs232_en;
79f938500fSTim Harvey 	int otgpwr_en;
80f3a8546bSTim Harvey 	int vsel_pin;
81*8d1a6ff8STim Harvey 	int mmc_cd;
82e49621b3STim Harvey 	/* various features */
8334b080b7STim Harvey 	bool usd_vsel;
84e56c5791STim Harvey };
85e56c5791STim Harvey 
86e56c5791STim Harvey extern struct ventana gpio_cfg[GW_UNKNOWN];
87e56c5791STim Harvey 
88e56c5791STim Harvey /* configure i2c iomux */
89e56c5791STim Harvey void setup_ventana_i2c(void);
90e56c5791STim Harvey /* configure uart iomux */
91e56c5791STim Harvey void setup_iomux_uart(void);
92e56c5791STim Harvey /* conifgure PMIC */
936d38f3a8STim Harvey void setup_pmic(void);
94e56c5791STim Harvey /* configure gpio iomux/defaults */
95e56c5791STim Harvey void setup_iomux_gpio(int board, struct ventana_board_info *);
96e56c5791STim Harvey /* late setup of GPIO (configuration per baseboard and env) */
97e56c5791STim Harvey void setup_board_gpio(int board, struct ventana_board_info *);
98e56c5791STim Harvey 
99e56c5791STim Harvey #endif /* #ifndef _GWVENTANA_COMMON_H_ */
100