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 leds[3]; 65 int pcie_rst; 66 int mezz_pwren; 67 int mezz_irq; 68 int rs485en; 69 int gps_shdn; 70 int vidin_en; 71 int dioi2c_en; 72 int pcie_sson; 73 int usb_sel; 74 int wdis; 75 int msata_en; 76 int rs232_en; 77 int vsel_pin; 78 int mmc_cd; 79 /* various features */ 80 bool usd_vsel; 81 bool nand; 82 }; 83 84 extern struct ventana gpio_cfg[GW_UNKNOWN]; 85 86 /* configure i2c iomux */ 87 void setup_ventana_i2c(int); 88 /* configure uart iomux */ 89 void setup_iomux_uart(void); 90 /* conifgure PMIC */ 91 void setup_pmic(void); 92 /* configure gpio iomux/defaults */ 93 void setup_iomux_gpio(int board, struct ventana_board_info *); 94 /* late setup of GPIO (configuration per baseboard and env) */ 95 void setup_board_gpio(int board, struct ventana_board_info *); 96 97 #endif /* #ifndef _GWVENTANA_COMMON_H_ */ 98