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