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