common.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. #ifndef _GWVENTANA_COMMON_H_
  9. #define _GWVENTANA_COMMON_H_
  10. #include "ventana_eeprom.h"
  11. /* GPIO's common to all baseboards */
  12. #define GP_PHY_RST IMX_GPIO_NR(1, 30)
  13. #define GP_USB_OTG_PWR IMX_GPIO_NR(3, 22)
  14. #define GP_SD3_CD IMX_GPIO_NR(7, 0)
  15. #define GP_RS232_EN IMX_GPIO_NR(2, 11)
  16. #define GP_MSATA_SEL IMX_GPIO_NR(2, 8)
  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. #define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
  21. PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \
  22. PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
  23. #define ENET_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
  24. PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
  25. PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
  26. #define SPI_PAD_CTRL (PAD_CTL_HYS | \
  27. PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED | \
  28. PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
  29. #define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
  30. PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \
  31. PAD_CTL_ODE | PAD_CTL_SRE_FAST)
  32. #define IRQ_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
  33. PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
  34. PAD_CTL_DSE_34ohm | PAD_CTL_HYS | PAD_CTL_SRE_FAST)
  35. #define DIO_PAD_CFG (MUX_PAD_CTRL(IRQ_PAD_CTRL) | MUX_MODE_SION)
  36. #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
  37. /*
  38. * each baseboard has 4 user configurable Digital IO lines which can
  39. * be pinmuxed as a GPIO or in some cases a PWM
  40. */
  41. struct dio_cfg {
  42. iomux_v3_cfg_t gpio_padmux[2];
  43. unsigned gpio_param;
  44. iomux_v3_cfg_t pwm_padmux[2];
  45. unsigned pwm_param;
  46. };
  47. struct ventana {
  48. /* pinmux */
  49. iomux_v3_cfg_t const *gpio_pads;
  50. int num_pads;
  51. /* DIO pinmux/val */
  52. struct dio_cfg dio_cfg[4];
  53. int num_gpios;
  54. /* various gpios (0 if non-existent) */
  55. int leds[3];
  56. int pcie_rst;
  57. int mezz_pwren;
  58. int mezz_irq;
  59. int rs485en;
  60. int gps_shdn;
  61. int vidin_en;
  62. int dioi2c_en;
  63. int pcie_sson;
  64. int usb_sel;
  65. int wdis;
  66. };
  67. extern struct ventana gpio_cfg[GW_UNKNOWN];
  68. /* configure i2c iomux */
  69. void setup_ventana_i2c(void);
  70. /* configure uart iomux */
  71. void setup_iomux_uart(void);
  72. /* conifgure PMIC */
  73. void setup_pmic(void);
  74. /* configure gpio iomux/defaults */
  75. void setup_iomux_gpio(int board, struct ventana_board_info *);
  76. /* late setup of GPIO (configuration per baseboard and env) */
  77. void setup_board_gpio(int board, struct ventana_board_info *);
  78. #endif /* #ifndef _GWVENTANA_COMMON_H_ */