Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Tegra CEC register definitions
0004  *
0005  * The original 3.10 CEC driver using a custom API:
0006  *
0007  * Copyright (c) 2012-2015, NVIDIA CORPORATION.  All rights reserved.
0008  *
0009  * Conversion to the CEC framework and to the mainline kernel:
0010  *
0011  * Copyright 2016-2017 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
0012  */
0013 
0014 #ifndef TEGRA_CEC_H
0015 #define TEGRA_CEC_H
0016 
0017 /* CEC registers */
0018 #define TEGRA_CEC_SW_CONTROL    0x000
0019 #define TEGRA_CEC_HW_CONTROL    0x004
0020 #define TEGRA_CEC_INPUT_FILTER  0x008
0021 #define TEGRA_CEC_TX_REGISTER   0x010
0022 #define TEGRA_CEC_RX_REGISTER   0x014
0023 #define TEGRA_CEC_RX_TIMING_0   0x018
0024 #define TEGRA_CEC_RX_TIMING_1   0x01c
0025 #define TEGRA_CEC_RX_TIMING_2   0x020
0026 #define TEGRA_CEC_TX_TIMING_0   0x024
0027 #define TEGRA_CEC_TX_TIMING_1   0x028
0028 #define TEGRA_CEC_TX_TIMING_2   0x02c
0029 #define TEGRA_CEC_INT_STAT  0x030
0030 #define TEGRA_CEC_INT_MASK  0x034
0031 #define TEGRA_CEC_HW_DEBUG_RX   0x038
0032 #define TEGRA_CEC_HW_DEBUG_TX   0x03c
0033 
0034 #define TEGRA_CEC_HWCTRL_RX_LADDR_MASK              0x7fff
0035 #define TEGRA_CEC_HWCTRL_RX_LADDR(x)    \
0036     ((x) & TEGRA_CEC_HWCTRL_RX_LADDR_MASK)
0037 #define TEGRA_CEC_HWCTRL_RX_SNOOP               BIT(15)
0038 #define TEGRA_CEC_HWCTRL_RX_NAK_MODE                BIT(16)
0039 #define TEGRA_CEC_HWCTRL_TX_NAK_MODE                BIT(24)
0040 #define TEGRA_CEC_HWCTRL_FAST_SIM_MODE              BIT(30)
0041 #define TEGRA_CEC_HWCTRL_TX_RX_MODE             BIT(31)
0042 
0043 #define TEGRA_CEC_INPUT_FILTER_MODE             BIT(31)
0044 #define TEGRA_CEC_INPUT_FILTER_FIFO_LENGTH_SHIFT        0
0045 
0046 #define TEGRA_CEC_TX_REG_DATA_SHIFT             0
0047 #define TEGRA_CEC_TX_REG_EOM                    BIT(8)
0048 #define TEGRA_CEC_TX_REG_BCAST                  BIT(12)
0049 #define TEGRA_CEC_TX_REG_START_BIT              BIT(16)
0050 #define TEGRA_CEC_TX_REG_RETRY                  BIT(17)
0051 
0052 #define TEGRA_CEC_RX_REGISTER_SHIFT             0
0053 #define TEGRA_CEC_RX_REGISTER_EOM               BIT(8)
0054 #define TEGRA_CEC_RX_REGISTER_ACK               BIT(9)
0055 
0056 #define TEGRA_CEC_RX_TIM0_START_BIT_MAX_LO_TIME_SHIFT       0
0057 #define TEGRA_CEC_RX_TIM0_START_BIT_MIN_LO_TIME_SHIFT       8
0058 #define TEGRA_CEC_RX_TIM0_START_BIT_MAX_DURATION_SHIFT      16
0059 #define TEGRA_CEC_RX_TIM0_START_BIT_MIN_DURATION_SHIFT      24
0060 
0061 #define TEGRA_CEC_RX_TIM1_DATA_BIT_MAX_LO_TIME_SHIFT        0
0062 #define TEGRA_CEC_RX_TIM1_DATA_BIT_SAMPLE_TIME_SHIFT        8
0063 #define TEGRA_CEC_RX_TIM1_DATA_BIT_MAX_DURATION_SHIFT       16
0064 #define TEGRA_CEC_RX_TIM1_DATA_BIT_MIN_DURATION_SHIFT       24
0065 
0066 #define TEGRA_CEC_RX_TIM2_END_OF_BLOCK_TIME_SHIFT       0
0067 
0068 #define TEGRA_CEC_TX_TIM0_START_BIT_LO_TIME_SHIFT       0
0069 #define TEGRA_CEC_TX_TIM0_START_BIT_DURATION_SHIFT      8
0070 #define TEGRA_CEC_TX_TIM0_BUS_XITION_TIME_SHIFT         16
0071 #define TEGRA_CEC_TX_TIM0_BUS_ERROR_LO_TIME_SHIFT       24
0072 
0073 #define TEGRA_CEC_TX_TIM1_LO_DATA_BIT_LO_TIME_SHIFT     0
0074 #define TEGRA_CEC_TX_TIM1_HI_DATA_BIT_LO_TIME_SHIFT     8
0075 #define TEGRA_CEC_TX_TIM1_DATA_BIT_DURATION_SHIFT       16
0076 #define TEGRA_CEC_TX_TIM1_ACK_NAK_BIT_SAMPLE_TIME_SHIFT     24
0077 
0078 #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_ADDITIONAL_FRAME_SHIFT  0
0079 #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_NEW_FRAME_SHIFT     4
0080 #define TEGRA_CEC_TX_TIM2_BUS_IDLE_TIME_RETRY_FRAME_SHIFT   8
0081 
0082 #define TEGRA_CEC_INT_STAT_TX_REGISTER_EMPTY            BIT(0)
0083 #define TEGRA_CEC_INT_STAT_TX_REGISTER_UNDERRUN         BIT(1)
0084 #define TEGRA_CEC_INT_STAT_TX_FRAME_OR_BLOCK_NAKD       BIT(2)
0085 #define TEGRA_CEC_INT_STAT_TX_ARBITRATION_FAILED        BIT(3)
0086 #define TEGRA_CEC_INT_STAT_TX_BUS_ANOMALY_DETECTED      BIT(4)
0087 #define TEGRA_CEC_INT_STAT_TX_FRAME_TRANSMITTED         BIT(5)
0088 #define TEGRA_CEC_INT_STAT_RX_REGISTER_FULL         BIT(8)
0089 #define TEGRA_CEC_INT_STAT_RX_REGISTER_OVERRUN          BIT(9)
0090 #define TEGRA_CEC_INT_STAT_RX_START_BIT_DETECTED        BIT(10)
0091 #define TEGRA_CEC_INT_STAT_RX_BUS_ANOMALY_DETECTED      BIT(11)
0092 #define TEGRA_CEC_INT_STAT_RX_BUS_ERROR_DETECTED        BIT(12)
0093 #define TEGRA_CEC_INT_STAT_FILTERED_RX_DATA_PIN_TRANSITION_H2L  BIT(13)
0094 #define TEGRA_CEC_INT_STAT_FILTERED_RX_DATA_PIN_TRANSITION_L2H  BIT(14)
0095 
0096 #define TEGRA_CEC_INT_MASK_TX_REGISTER_EMPTY            BIT(0)
0097 #define TEGRA_CEC_INT_MASK_TX_REGISTER_UNDERRUN         BIT(1)
0098 #define TEGRA_CEC_INT_MASK_TX_FRAME_OR_BLOCK_NAKD       BIT(2)
0099 #define TEGRA_CEC_INT_MASK_TX_ARBITRATION_FAILED        BIT(3)
0100 #define TEGRA_CEC_INT_MASK_TX_BUS_ANOMALY_DETECTED      BIT(4)
0101 #define TEGRA_CEC_INT_MASK_TX_FRAME_TRANSMITTED         BIT(5)
0102 #define TEGRA_CEC_INT_MASK_RX_REGISTER_FULL         BIT(8)
0103 #define TEGRA_CEC_INT_MASK_RX_REGISTER_OVERRUN          BIT(9)
0104 #define TEGRA_CEC_INT_MASK_RX_START_BIT_DETECTED        BIT(10)
0105 #define TEGRA_CEC_INT_MASK_RX_BUS_ANOMALY_DETECTED      BIT(11)
0106 #define TEGRA_CEC_INT_MASK_RX_BUS_ERROR_DETECTED        BIT(12)
0107 #define TEGRA_CEC_INT_MASK_FILTERED_RX_DATA_PIN_TRANSITION_H2L  BIT(13)
0108 #define TEGRA_CEC_INT_MASK_FILTERED_RX_DATA_PIN_TRANSITION_L2H  BIT(14)
0109 
0110 #define TEGRA_CEC_HW_DEBUG_TX_DURATION_COUNT_SHIFT      0
0111 #define TEGRA_CEC_HW_DEBUG_TX_TXBIT_COUNT_SHIFT         17
0112 #define TEGRA_CEC_HW_DEBUG_TX_STATE_SHIFT           21
0113 #define TEGRA_CEC_HW_DEBUG_TX_FORCELOOUT            BIT(25)
0114 #define TEGRA_CEC_HW_DEBUG_TX_TXDATABIT_SAMPLE_TIMER        BIT(26)
0115 
0116 #endif /* TEGRA_CEC_H */