tegra_cec.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Tegra CEC register definitions
  4. *
  5. * The original 3.10 CEC driver using a custom API:
  6. *
  7. * Copyright (c) 2012-2015, NVIDIA CORPORATION. All rights reserved.
  8. *
  9. * Conversion to the CEC framework and to the mainline kernel:
  10. *
  11. * Copyright 2016-2017 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
  12. */
  13. #ifndef TEGRA_CEC_H
  14. #define TEGRA_CEC_H
  15. /* CEC registers */
  16. #define TEGRA_CEC_SW_CONTROL 0x000
  17. #define TEGRA_CEC_HW_CONTROL 0x004
  18. #define TEGRA_CEC_INPUT_FILTER 0x008
  19. #define TEGRA_CEC_TX_REGISTER 0x010
  20. #define TEGRA_CEC_RX_REGISTER 0x014
  21. #define TEGRA_CEC_RX_TIMING_0 0x018
  22. #define TEGRA_CEC_RX_TIMING_1 0x01c
  23. #define TEGRA_CEC_RX_TIMING_2 0x020
  24. #define TEGRA_CEC_TX_TIMING_0 0x024
  25. #define TEGRA_CEC_TX_TIMING_1 0x028
  26. #define TEGRA_CEC_TX_TIMING_2 0x02c
  27. #define TEGRA_CEC_INT_STAT 0x030
  28. #define TEGRA_CEC_INT_MASK 0x034
  29. #define TEGRA_CEC_HW_DEBUG_RX 0x038
  30. #define TEGRA_CEC_HW_DEBUG_TX 0x03c
  31. #define TEGRA_CEC_HWCTRL_RX_LADDR_MASK 0x7fff
  32. #define TEGRA_CEC_HWCTRL_RX_LADDR(x) \
  33. ((x) & TEGRA_CEC_HWCTRL_RX_LADDR_MASK)
  34. #define TEGRA_CEC_HWCTRL_RX_SNOOP BIT(15)
  35. #define TEGRA_CEC_HWCTRL_RX_NAK_MODE BIT(16)
  36. #define TEGRA_CEC_HWCTRL_TX_NAK_MODE BIT(24)
  37. #define TEGRA_CEC_HWCTRL_FAST_SIM_MODE BIT(30)
  38. #define TEGRA_CEC_HWCTRL_TX_RX_MODE BIT(31)
  39. #define TEGRA_CEC_INPUT_FILTER_MODE BIT(31)
  40. #define TEGRA_CEC_INPUT_FILTER_FIFO_LENGTH_SHIFT 0
  41. #define TEGRA_CEC_TX_REG_DATA_SHIFT 0
  42. #define TEGRA_CEC_TX_REG_EOM BIT(8)
  43. #define TEGRA_CEC_TX_REG_BCAST BIT(12)
  44. #define TEGRA_CEC_TX_REG_START_BIT BIT(16)
  45. #define TEGRA_CEC_TX_REG_RETRY BIT(17)
  46. #define TEGRA_CEC_RX_REGISTER_SHIFT 0
  47. #define TEGRA_CEC_RX_REGISTER_EOM BIT(8)
  48. #define TEGRA_CEC_RX_REGISTER_ACK BIT(9)
  49. #define TEGRA_CEC_RX_TIM0_START_BIT_MAX_LO_TIME_SHIFT 0
  50. #define TEGRA_CEC_RX_TIM0_START_BIT_MIN_LO_TIME_SHIFT 8
  51. #define TEGRA_CEC_RX_TIM0_START_BIT_MAX_DURATION_SHIFT 16
  52. #define TEGRA_CEC_RX_TIM0_START_BIT_MIN_DURATION_SHIFT 24
  53. #define TEGRA_CEC_RX_TIM1_DATA_BIT_MAX_LO_TIME_SHIFT 0
  54. #define TEGRA_CEC_RX_TIM1_DATA_BIT_SAMPLE_TIME_SHIFT 8
  55. #define TEGRA_CEC_RX_TIM1_DATA_BIT_MAX_DURATION_SHIFT 16
  56. #define TEGRA_CEC_RX_TIM1_DATA_BIT_MIN_DURATION_SHIFT 24
  57. #define TEGRA_CEC_RX_TIM2_END_OF_BLOCK_TIME_SHIFT 0
  58. #define TEGRA_CEC_TX_TIM0_START_BIT_LO_TIME_SHIFT 0
  59. #define TEGRA_CEC_TX_TIM0_START_BIT_DURATION_SHIFT 8
  60. #define TEGRA_CEC_TX_TIM0_BUS_XITION_TIME_SHIFT 16
  61. #define TEGRA_CEC_TX_TIM0_BUS_ERROR_LO_TIME_SHIFT 24
  62. #define TEGRA_CEC_TX_TIM1_LO_DATA_BIT_LO_TIME_SHIFT 0
  63. #define TEGRA_CEC_TX_TIM1_HI_DATA_BIT_LO_TIME_SHIFT 8
  64. #define TEGRA_CEC_TX_TIM1_DATA_BIT_DURATION_SHIFT 16
  65. #define TEGRA_CEC_TX_TIM1_ACK_NAK_BIT_SAMPLE_TIME_SHIFT 24
  66. #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_ADDITIONAL_FRAME_SHIFT 0
  67. #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_NEW_FRAME_SHIFT 4
  68. #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_RETRY_FRAME_SHIFT 8
  69. #define TEGRA_CEC_INT_STAT_TX_REGISTER_EMPTY BIT(0)
  70. #define TEGRA_CEC_INT_STAT_TX_REGISTER_UNDERRUN BIT(1)
  71. #define TEGRA_CEC_INT_STAT_TX_FRAME_OR_BLOCK_NAKD BIT(2)
  72. #define TEGRA_CEC_INT_STAT_TX_ARBITRATION_FAILED BIT(3)
  73. #define TEGRA_CEC_INT_STAT_TX_BUS_ANOMALY_DETECTED BIT(4)
  74. #define TEGRA_CEC_INT_STAT_TX_FRAME_TRANSMITTED BIT(5)
  75. #define TEGRA_CEC_INT_STAT_RX_REGISTER_FULL BIT(8)
  76. #define TEGRA_CEC_INT_STAT_RX_REGISTER_OVERRUN BIT(9)
  77. #define TEGRA_CEC_INT_STAT_RX_START_BIT_DETECTED BIT(10)
  78. #define TEGRA_CEC_INT_STAT_RX_BUS_ANOMALY_DETECTED BIT(11)
  79. #define TEGRA_CEC_INT_STAT_RX_BUS_ERROR_DETECTED BIT(12)
  80. #define TEGRA_CEC_INT_STAT_FILTERED_RX_DATA_PIN_TRANSITION_H2L BIT(13)
  81. #define TEGRA_CEC_INT_STAT_FILTERED_RX_DATA_PIN_TRANSITION_L2H BIT(14)
  82. #define TEGRA_CEC_INT_MASK_TX_REGISTER_EMPTY BIT(0)
  83. #define TEGRA_CEC_INT_MASK_TX_REGISTER_UNDERRUN BIT(1)
  84. #define TEGRA_CEC_INT_MASK_TX_FRAME_OR_BLOCK_NAKD BIT(2)
  85. #define TEGRA_CEC_INT_MASK_TX_ARBITRATION_FAILED BIT(3)
  86. #define TEGRA_CEC_INT_MASK_TX_BUS_ANOMALY_DETECTED BIT(4)
  87. #define TEGRA_CEC_INT_MASK_TX_FRAME_TRANSMITTED BIT(5)
  88. #define TEGRA_CEC_INT_MASK_RX_REGISTER_FULL BIT(8)
  89. #define TEGRA_CEC_INT_MASK_RX_REGISTER_OVERRUN BIT(9)
  90. #define TEGRA_CEC_INT_MASK_RX_START_BIT_DETECTED BIT(10)
  91. #define TEGRA_CEC_INT_MASK_RX_BUS_ANOMALY_DETECTED BIT(11)
  92. #define TEGRA_CEC_INT_MASK_RX_BUS_ERROR_DETECTED BIT(12)
  93. #define TEGRA_CEC_INT_MASK_FILTERED_RX_DATA_PIN_TRANSITION_H2L BIT(13)
  94. #define TEGRA_CEC_INT_MASK_FILTERED_RX_DATA_PIN_TRANSITION_L2H BIT(14)
  95. #define TEGRA_CEC_HW_DEBUG_TX_DURATION_COUNT_SHIFT 0
  96. #define TEGRA_CEC_HW_DEBUG_TX_TXBIT_COUNT_SHIFT 17
  97. #define TEGRA_CEC_HW_DEBUG_TX_STATE_SHIFT 21
  98. #define TEGRA_CEC_HW_DEBUG_TX_FORCELOOUT BIT(25)
  99. #define TEGRA_CEC_HW_DEBUG_TX_TXDATABIT_SAMPLE_TIMER BIT(26)
  100. #endif /* TEGRA_CEC_H */