MLK-17489-1: hdp api: merge CDN api V1.0.36 code
Merge Cadence HDMI API V1.0.36 code. Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>pull/10/head
parent
164a61a9f4
commit
2cd9bbef15
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -50,12 +50,25 @@
|
|||
#include "util.h"
|
||||
|
||||
typedef enum {
|
||||
AFE_LINK_RATE_1_6 = 0x6,
|
||||
AFE_LINK_RATE_2_7 = 0xA,
|
||||
AFE_LINK_RATE_5_4 = 0x14,
|
||||
AFE_LINK_RATE_8_1 = 0x1A,
|
||||
AFE_LINK_RATE_1_6 = 0x6, /* 1.62 Gb/s */
|
||||
AFE_LINK_RATE_2_1 = 0x8, /* 2.16 Gb/s */
|
||||
AFE_LINK_RATE_2_4 = 0x9, /* 2.43 Gb/s */
|
||||
AFE_LINK_RATE_2_7 = 0xA, /* 2.70 Gb/s */
|
||||
AFE_LINK_RATE_3_2 = 0xC, /* 3.24 Gb/s */
|
||||
AFE_LINK_RATE_4_3 = 0x10, /* 4.32 Gb/s */
|
||||
AFE_LINK_RATE_5_4 = 0x14, /* 5.40 Gb/s */
|
||||
AFE_LINK_RATE_8_1 = 0x1E, /* 8.10 Gb/s */
|
||||
} ENUM_AFE_LINK_RATE;
|
||||
|
||||
/* Some of the PHY programming sequences
|
||||
* depend on the reference clock frequency.
|
||||
* Variable of this type is used to control
|
||||
* the programming flow. */
|
||||
typedef enum {
|
||||
REFCLK_24MHZ,
|
||||
REFCLK_27MHZ
|
||||
} REFCLK_FREQ;
|
||||
|
||||
typedef enum {
|
||||
CLK_RATIO_1_1,
|
||||
CLK_RATIO_5_4,
|
||||
|
@ -72,6 +85,7 @@ typedef struct {
|
|||
u8 msb;
|
||||
} reg_field_t;
|
||||
|
||||
u8 AFE_check_rate_supported(ENUM_AFE_LINK_RATE rate);
|
||||
void Afe_write(state_struct *state, u32 offset, u16 val);
|
||||
u16 Afe_read(state_struct *state, u32 offset);
|
||||
void AFE_init(state_struct *state, int num_lanes,
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* API_DPTX.c
|
||||
|
@ -126,6 +128,8 @@ CDN_API_STATUS CDN_API_DPTX_SetHostCap(state_struct *state, u8 maxLinkRate,
|
|||
u8 fastLinkTraining,
|
||||
u8 laneMapping, u8 enchanced)
|
||||
{
|
||||
/* fifth bit of lanesCount_SSC is used to declare eDP. */
|
||||
state->edp = ((lanesCount_SSC >> 5) & 1);
|
||||
if (!state->running) {
|
||||
if (!internal_apb_available(state))
|
||||
return CDN_BSY;
|
||||
|
@ -199,10 +203,39 @@ CDN_API_STATUS CDN_API_DPTX_Control_blocking(state_struct *state, u32 mode)
|
|||
internal_block_function(&state->mutex, CDN_API_DPTX_Control(state, mode));
|
||||
}
|
||||
|
||||
CDN_API_STATUS CDN_API_DPTX_EDP_Training(state_struct *state,
|
||||
u8 mode, ENUM_AFE_LINK_RATE linkRate,
|
||||
u8 rateId)
|
||||
{
|
||||
if (AFE_check_rate_supported(linkRate) == 0)
|
||||
return CDN_ERROR_NOT_SUPPORTED;
|
||||
|
||||
if (!state->running) {
|
||||
if (!internal_apb_available(state))
|
||||
return CDN_BSY;
|
||||
internal_tx_mkfullmsg(state, MB_MODULE_ID_DP_TX, DPTX_EDP_RATE_TRAINING, 3,
|
||||
1, mode,
|
||||
1, (u8)linkRate,
|
||||
1, rateId);
|
||||
state->bus_type = CDN_BUS_TYPE_APB;
|
||||
return CDN_STARTED;
|
||||
}
|
||||
internal_process_messages(state);
|
||||
return CDN_OK;
|
||||
}
|
||||
|
||||
CDN_API_STATUS CDN_API_DPTX_EDP_Training_blocking(state_struct *state,
|
||||
u8 mode,
|
||||
ENUM_AFE_LINK_RATE linkRate,
|
||||
u8 rateId)
|
||||
{
|
||||
internal_block_function(&state->mutex, CDN_API_DPTX_EDP_Training(state, mode, linkRate, rateId));
|
||||
}
|
||||
|
||||
CDN_API_STATUS CDN_API_DPTX_Write_DPCD(state_struct *state, u32 numOfBytes,
|
||||
u32 addr, u8 *buff,
|
||||
DPTX_Write_DPCD_response *resp,
|
||||
CDN_BUS_TYPE bus_type)
|
||||
u32 addr, u8 *buff,
|
||||
DPTX_Write_DPCD_response *resp,
|
||||
CDN_BUS_TYPE bus_type)
|
||||
{
|
||||
CDN_API_STATUS ret;
|
||||
if (!state->running) {
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -47,8 +47,9 @@
|
|||
#ifndef _API_DPTX_H_
|
||||
#define _API_DPTX_H_
|
||||
|
||||
# include "API_General.h"
|
||||
# include "vic_table.h"
|
||||
#include "API_General.h"
|
||||
#include "vic_table.h"
|
||||
#include "API_AFE.h"
|
||||
|
||||
#define MAX_NUM_OF_EVENTS 4
|
||||
|
||||
|
@ -274,6 +275,25 @@ CDN_API_STATUS CDN_API_DPTX_Control(state_struct *state, u32 mode);
|
|||
*/
|
||||
CDN_API_STATUS CDN_API_DPTX_Control_blocking(state_struct *state, u32 mode);
|
||||
|
||||
/**
|
||||
* \brief Performs Fast Link Training, using LINK_RATE_SET DPCD register.
|
||||
* \param [in] mode - 0 to stop training, 1 to start it, 2 to restart it.
|
||||
* \param [in] linkRate - Link Rate to be used for training.
|
||||
* \param [in] rateId - index of selected Link Rate in DPCd registers.
|
||||
*
|
||||
* Performs Fast Link Training, selecting Link Rate using LINK_RATE_SET DPCD
|
||||
* register, characteristic to Embedded DisplayPort (eDP) v1.4 standard.
|
||||
* If requested link rate is not supported by DPTX, function will return error
|
||||
* code CDN_ERROR_NOT_SUPPORTED, and will take no further action.
|
||||
* rateId is used to select, which Link Rate supported by sink (enumerated in
|
||||
* SUPPORTED_LINK_RATES DPCD registers) is equal to rate requested. This value
|
||||
* will be written to first 3 bits of LINK_RATE_SET DPCD registers. Allowed
|
||||
* range is 0-7. If it is not known beforehand, SUPPORTED_LINK_RATES DPCD
|
||||
* registers may be read by an upper layer, and then used to determine the
|
||||
* correct value to use.
|
||||
*/
|
||||
CDN_API_STATUS CDN_API_DPTX_EDP_Training(state_struct *state, u8 mode, ENUM_AFE_LINK_RATE linkRate, u8 rateId);
|
||||
CDN_API_STATUS CDN_API_DPTX_EDP_Training_blocking(state_struct *state, u8 mode, ENUM_AFE_LINK_RATE linkRate, u8 rateId);
|
||||
/**
|
||||
* \brief send DPX_ENABLE_EVENT command
|
||||
*/
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -49,6 +49,7 @@
|
|||
#include "apb_cfg.h"
|
||||
#include "opcodes.h"
|
||||
#include "general_handler.h"
|
||||
#include "util.h"
|
||||
|
||||
static u32 alive;
|
||||
|
||||
|
@ -473,3 +474,32 @@ CDN_API_STATUS CDN_API_General_Phy_Test_Access_blocking(state_struct *state,
|
|||
{
|
||||
internal_block_function(&state->mutex, CDN_API_General_Phy_Test_Access(state, resp));
|
||||
}
|
||||
|
||||
CDN_API_STATUS CDN_API_General_GetHpdState(state_struct *state, u8 *hpd_state)
|
||||
{
|
||||
CDN_API_STATUS ret;
|
||||
*hpd_state = 0;
|
||||
|
||||
if (!state->running) {
|
||||
if (!internal_apb_available(state))
|
||||
return CDN_BSY;
|
||||
internal_tx_mkfullmsg(state, MB_MODULE_ID_GENERAL, GENERAL_GET_HPD_STATE, 0);
|
||||
state->bus_type = CDN_BUS_TYPE_APB;
|
||||
state->rxEnable = 1;
|
||||
return CDN_STARTED;
|
||||
}
|
||||
|
||||
internal_process_messages(state);
|
||||
ret = internal_test_rx_head(state, MB_MODULE_ID_GENERAL, GENERAL_GET_HPD_STATE);
|
||||
if (ret != CDN_OK)
|
||||
return ret;
|
||||
|
||||
internal_readmsg(state, 1, 1, hpd_state);
|
||||
|
||||
return CDN_OK;
|
||||
}
|
||||
|
||||
CDN_API_STATUS CDN_API_General_GetHpdState_blocking(state_struct *state, u8 *hpd_state)
|
||||
{
|
||||
internal_block_function(&state->mutex, CDN_API_General_GetHpdState(state, hpd_state));
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -240,5 +240,7 @@ CDN_API_STATUS CDN_API_General_Write_Field_blocking(state_struct *state,
|
|||
CDN_API_STATUS CDN_API_General_Phy_Test_Access(state_struct *state, u8 *resp);
|
||||
CDN_API_STATUS CDN_API_General_Phy_Test_Access_blocking(state_struct *state,
|
||||
u8 *resp);
|
||||
CDN_API_STATUS CDN_API_General_GetHpdState(state_struct *state, u8 *hpd_state);
|
||||
|
||||
CDN_API_STATUS CDN_API_General_GetHpdState_blocking(state_struct *state, u8 *hpd_state);
|
||||
#endif
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -52,6 +52,7 @@
|
|||
#include "address.h"
|
||||
#include "source_car.h"
|
||||
#include "source_vif.h"
|
||||
#include "general_handler.h"
|
||||
#include <soc/imx8/soc.h>
|
||||
|
||||
CDN_API_STATUS CDN_API_HDMITX_DDC_READ(state_struct *state,
|
||||
|
@ -489,16 +490,14 @@ CDN_API_STATUS CDN_API_HDMITX_GetHpdStatus(state_struct *state, u8 *hpd_sts)
|
|||
if (!state->running) {
|
||||
if (!internal_apb_available(state))
|
||||
return CDN_BSY;
|
||||
internal_tx_mkfullmsg(state, MB_MODULE_ID_HDMI_TX,
|
||||
HDMI_TX_HPD_STATUS, 0);
|
||||
internal_tx_mkfullmsg(state, MB_MODULE_ID_GENERAL, GENERAL_GET_HPD_STATE, 0);
|
||||
state->rxEnable = 1;
|
||||
state->bus_type = CDN_BUS_TYPE_APB;
|
||||
return CDN_STARTED;
|
||||
}
|
||||
internal_process_messages(state);
|
||||
ret =
|
||||
internal_test_rx_head(state, MB_MODULE_ID_HDMI_TX,
|
||||
HDMI_TX_HPD_STATUS);
|
||||
internal_test_rx_head(state, MB_MODULE_ID_GENERAL, GENERAL_GET_HPD_STATE);
|
||||
if (ret != CDN_OK)
|
||||
return ret;
|
||||
internal_readmsg(state, 1, 1, hpd_sts);
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -68,6 +68,7 @@
|
|||
#define GENERAL_WRITE_REGISTER 0x05
|
||||
#define GENERAL_WRITE_FIELD 0x06
|
||||
#define GENERAL_READ_REGISTER 0x07
|
||||
#define GENERAL_GET_HPD_STATE 0x11
|
||||
|
||||
#define GENERAL_TEST_TRNG_SIMPLE 0xF0
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -71,6 +71,7 @@
|
|||
#define DPTX_SET_LINK_BREAK_POINT 0x0F
|
||||
#define DPTX_FORCE_LANES 0x10
|
||||
#define DPTX_HPD_STATE 0x11
|
||||
#define DPTX_EDP_RATE_TRAINING 0x12
|
||||
#define DPTX_DBG_SET 0xF0
|
||||
#define DP_TX_OPCODE_READ_I2C_REQUEST 0xA5
|
||||
#define DP_TX_OPCODE_WRITE_I2C_REQUEST 0xA6
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
|
|
@ -91,6 +91,8 @@ typedef enum {
|
|||
CDN_CEC_ERR_RX_FAILED,
|
||||
/** Operation aborted. */
|
||||
CDN_CEC_ERR_ABORT,
|
||||
/** All Logical Addresses are in use. */
|
||||
CDN_CEC_ERR_ALL_LA_IN_USE,
|
||||
} CDN_API_STATUS;
|
||||
|
||||
typedef enum {
|
||||
|
@ -153,6 +155,7 @@ typedef struct {
|
|||
u8 running;
|
||||
CDN_BUS_TYPE bus_type;
|
||||
u32 tmp;
|
||||
u32 edp; /* use eDP */
|
||||
|
||||
struct mutex mutex; //mutex may replace running
|
||||
struct hdp_mem *mem;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Copyright 2017 NXP
|
||||
* Copyright 2017-2018 NXP
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
|
@ -95,7 +95,11 @@ typedef enum {
|
|||
|
||||
typedef enum {
|
||||
RATE_1_6 = 162,
|
||||
RATE_2_1 = 216,
|
||||
RATE_2_4 = 243,
|
||||
RATE_2_7 = 270,
|
||||
RATE_3_2 = 324,
|
||||
RATE_4_3 = 432,
|
||||
RATE_5_4 = 540,
|
||||
RATE_8_1 = 810,
|
||||
} VIC_SYMBOL_RATE;
|
||||
|
|
Loading…
Reference in New Issue