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