Merge git://git.denx.de/u-boot-usb
[platform/kernel/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_USB_OTG_PWR  IMX_GPIO_NR(3, 22)
17 #define GP_SD3_CD       IMX_GPIO_NR(7, 0)
18 #define GP_RS232_EN     IMX_GPIO_NR(2, 11)
19 #define GP_MSATA_SEL    IMX_GPIO_NR(2, 8)
20
21 #define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |             \
22         PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
23         PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
24
25 #define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |             \
26         PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |               \
27         PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
28
29 #define ENET_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |             \
30         PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED   |             \
31         PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
32
33 #define SPI_PAD_CTRL (PAD_CTL_HYS |                             \
34         PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED |             \
35         PAD_CTL_DSE_40ohm     | PAD_CTL_SRE_FAST)
36
37 #define I2C_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                    \
38         PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
39         PAD_CTL_ODE | PAD_CTL_SRE_FAST)
40
41 #define IRQ_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |              \
42         PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
43         PAD_CTL_DSE_34ohm | PAD_CTL_HYS | PAD_CTL_SRE_FAST)
44
45 #define DIO_PAD_CFG   (MUX_PAD_CTRL(IRQ_PAD_CTRL) | MUX_MODE_SION)
46
47 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
48
49 /*
50  * each baseboard has 4 user configurable Digital IO lines which can
51  * be pinmuxed as a GPIO or in some cases a PWM
52  */
53 struct dio_cfg {
54         iomux_v3_cfg_t gpio_padmux[2];
55         unsigned gpio_param;
56         iomux_v3_cfg_t pwm_padmux[2];
57         unsigned pwm_param;
58 };
59
60 struct ventana {
61         /* pinmux */
62         iomux_v3_cfg_t const *gpio_pads;
63         int num_pads;
64         /* DIO pinmux/val */
65         struct dio_cfg dio_cfg[4];
66         int num_gpios;
67         /* various gpios (0 if non-existent) */
68         int leds[3];
69         int pcie_rst;
70         int mezz_pwren;
71         int mezz_irq;
72         int rs485en;
73         int gps_shdn;
74         int vidin_en;
75         int dioi2c_en;
76         int pcie_sson;
77         int usb_sel;
78         int wdis;
79 };
80
81 extern struct ventana gpio_cfg[GW_UNKNOWN];
82
83 /* configure i2c iomux */
84 void setup_ventana_i2c(void);
85 /* configure uart iomux */
86 void setup_iomux_uart(void);
87 /* conifgure PMIC */
88 void setup_pmic(void);
89 /* configure gpio iomux/defaults */
90 void setup_iomux_gpio(int board, struct ventana_board_info *);
91 /* late setup of GPIO (configuration per baseboard and env) */
92 void setup_board_gpio(int board, struct ventana_board_info *);
93
94 #endif /* #ifndef _GWVENTANA_COMMON_H_ */