MLK-16946-4: hdp: Add mutex for mailbox access
authorSandor Yu <Sandor.yu@nxp.com>
Fri, 24 Nov 2017 09:59:00 +0000 (17:59 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
Add mutex for mailbox access.

Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>
drivers/mxc/hdp/API_Audio.c
drivers/mxc/hdp/API_DPTX.c
drivers/mxc/hdp/API_General.c
drivers/mxc/hdp/API_HDCP.c
drivers/mxc/hdp/API_HDMITX.c
drivers/mxc/hdp/util.h

index a2acde7..a09facb 100644 (file)
@@ -67,7 +67,7 @@ CDN_API_STATUS CDN_API_AudioMute(state_struct *state, AUDIO_MUTE_MODE mode)
 CDN_API_STATUS CDN_API_AudioMute_blocking(state_struct *state,
                                          AUDIO_MUTE_MODE mode)
 {
-       internal_block_function(CDN_API_AudioMute(state, mode));
+       internal_block_function(&state->mutex, CDN_API_AudioMute(state, mode));
 }
 
 CDN_API_STATUS CDN_API_AudioMode(state_struct *state, AUDIO_MODE mode)
@@ -79,7 +79,7 @@ CDN_API_STATUS CDN_API_AudioMode(state_struct *state, AUDIO_MODE mode)
 
 CDN_API_STATUS CDN_API_AudioMode_blocking(state_struct *state, AUDIO_MODE mode)
 {
-       internal_block_function(CDN_API_AudioMode(state, mode));
+       internal_block_function(&state->mutex, CDN_API_AudioMode(state, mode));
 }
 
 CDN_API_STATUS CDN_API_AudioConfigCore(state_struct *state,
@@ -214,7 +214,7 @@ CDN_API_STATUS CDN_API_AudioConfigCore_blocking(state_struct *state,
                                                AUDIO_FREQ freq, int lanes,
                                                AUDIO_WIDTH width)
 {
-       internal_block_function(CDN_API_AudioConfigCore
+       internal_block_function(&state->mutex, CDN_API_AudioConfigCore
                                (state, audioType, numOfChannels, freq, lanes,
                                 width));
 }
@@ -360,7 +360,7 @@ CDN_API_STATUS CDN_API_AudioAutoConfig_blocking(state_struct *state,
                                                CDN_PROTOCOL_TYPE protocol,
                                                int ncts, AUDIO_MUTE_MODE mode)
 {
-       internal_block_function(CDN_API_AudioAutoConfig
+       internal_block_function(&state->mutex, CDN_API_AudioAutoConfig
                                (state, audioType, numOfChannels, freq, lanes,
                                 width, protocol, ncts, mode));
 }
@@ -439,5 +439,5 @@ CDN_API_STATUS CDN_API_AudioOff(state_struct *state, AUDIO_TYPE audioType)
 CDN_API_STATUS CDN_API_AudioOff_blocking(state_struct *state,
                                         AUDIO_TYPE audioType)
 {
-       internal_block_function(CDN_API_AudioOff(state, audioType));
+       internal_block_function(&state->mutex, CDN_API_AudioOff(state, audioType));
 }
index 816f6c2..d78d5c8 100644 (file)
@@ -82,7 +82,7 @@ CDN_API_STATUS CDN_API_DPTX_Read_DPCD_blocking(state_struct *state,
                                               DPTX_Read_DPCD_response *resp,
                                               CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_DPTX_Read_DPCD
+       internal_block_function(&state->mutex, CDN_API_DPTX_Read_DPCD
                                (state, numOfBytes, addr, resp, bus_type));
 }
 
@@ -114,7 +114,7 @@ CDN_API_STATUS CDN_API_DPTX_Read_EDID_blocking(state_struct *state, u8 segment,
                                               u8 extension,
                                               DPTX_Read_EDID_response *resp)
 {
-       internal_block_function(CDN_API_DPTX_Read_EDID
+       internal_block_function(&state->mutex, CDN_API_DPTX_Read_EDID
                                (state, segment, extension, resp));
 }
 
@@ -152,7 +152,7 @@ CDN_API_STATUS CDN_API_DPTX_SetHostCap_blocking(state_struct *state,
                                                u8 fastLinkTraining,
                                                u8 laneMapping, u8 enchanced)
 {
-       internal_block_function(CDN_API_DPTX_SetHostCap
+       internal_block_function(&state->mutex, CDN_API_DPTX_SetHostCap
                                (state, maxLinkRate, lanesCount_SSC,
                                 maxVoltageSwing, maxPreemphasis,
                                 testPatternsSupported, fastLinkTraining,
@@ -177,7 +177,7 @@ CDN_API_STATUS CDN_API_DPTX_SetPowerMode(state_struct *state,
 CDN_API_STATUS CDN_API_DPTX_SetPowerMode_blocking(state_struct *state,
                                                  CDN_API_PWR_MODE mode)
 {
-       internal_block_function(CDN_API_DPTX_SetPowerMode(state, mode));
+       internal_block_function(&state->mutex, CDN_API_DPTX_SetPowerMode(state, mode));
 }
 
 CDN_API_STATUS CDN_API_DPTX_Control(state_struct *state, u32 mode)
@@ -196,7 +196,7 @@ 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)
 {
-       internal_block_function(CDN_API_DPTX_Control(state, mode));
+       internal_block_function(&state->mutex, CDN_API_DPTX_Control(state, mode));
 }
 
 CDN_API_STATUS CDN_API_DPTX_Write_DPCD(state_struct *state, u32 numOfBytes,
@@ -230,7 +230,7 @@ CDN_API_STATUS CDN_API_DPTX_Write_DPCD_blocking(state_struct *state,
                                                DPTX_Write_DPCD_response *resp,
                                                CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_DPTX_Write_DPCD
+       internal_block_function(&state->mutex, CDN_API_DPTX_Write_DPCD
                                (state, numOfBytes, addr, buff, resp,
                                 bus_type));
 }
@@ -265,7 +265,7 @@ CDN_API_STATUS CDN_API_DPTX_Read_Register_blocking(state_struct *state,
                                                   u8 base, u8 regNo,
                                                   DPTX_Read_Register_response *resp)
 {
-       internal_block_function(CDN_API_DPTX_Read_Register
+       internal_block_function(&state->mutex, CDN_API_DPTX_Read_Register
                                (state, base, regNo, resp));
 }
 
@@ -288,7 +288,7 @@ CDN_API_STATUS CDN_API_DPTX_Write_Register(state_struct *state, u8 base,
 CDN_API_STATUS CDN_API_DPTX_Write_Register_blocking(state_struct *state,
                                                    u8 base, u8 regNo, u32 val)
 {
-       internal_block_function(CDN_API_DPTX_Write_Register
+       internal_block_function(&state->mutex, CDN_API_DPTX_Write_Register
                                (state, base, regNo, val));
 }
 
@@ -314,7 +314,7 @@ CDN_API_STATUS CDN_API_DPTX_Write_Field_blocking(state_struct *state, u8 base,
                                                 u8 startBit,
                                                 u8 bitsNo, u32 val)
 {
-       internal_block_function(CDN_API_DPTX_Write_Field
+       internal_block_function(&state->mutex, CDN_API_DPTX_Write_Field
                                (state, base, regNo, startBit, bitsNo, val));
 }
 
@@ -346,7 +346,7 @@ CDN_API_STATUS CDN_API_DPTX_EnableEvent(state_struct *state, bool hpd,
 CDN_API_STATUS CDN_API_DPTX_EnableEvent_blocking(state_struct *state, bool hpd,
                                                 bool training)
 {
-       internal_block_function(CDN_API_DPTX_EnableEvent(state, hpd, training));
+       internal_block_function(&state->mutex, CDN_API_DPTX_EnableEvent(state, hpd, training));
 }
 
 CDN_API_STATUS CDN_API_DPTX_ReadEvent(state_struct *state, u8 *LinkeventId,
@@ -374,7 +374,7 @@ CDN_API_STATUS CDN_API_DPTX_ReadEvent(state_struct *state, u8 *LinkeventId,
 CDN_API_STATUS CDN_API_DPTX_ReadEvent_blocking(state_struct *state,
                                               u8 *LinkeventId, u8 *HPDevents)
 {
-       internal_block_function(CDN_API_DPTX_ReadEvent
+       internal_block_function(&state->mutex, CDN_API_DPTX_ReadEvent
                                (state, LinkeventId, HPDevents));
 }
 
@@ -811,7 +811,7 @@ CDN_API_STATUS CDN_API_DPTX_Set_VIC_blocking(state_struct *state,
                                             STEREO_VIDEO_ATTR steroVidAttr,
                                             BT_TYPE bt_type, int TU)
 {
-       internal_block_function(CDN_API_DPTX_Set_VIC
+       internal_block_function(&state->mutex, CDN_API_DPTX_Set_VIC
                                (state, vicMode, bitsPerPixel, NumOfLanes, rate,
                                 pxlencformat, steroVidAttr, bt_type, TU));
 }
@@ -825,7 +825,7 @@ CDN_API_STATUS CDN_API_DPTX_SetVideo(state_struct *state, u8 mode)
 
 CDN_API_STATUS CDN_API_DPTX_SetVideo_blocking(state_struct *state, u8 mode)
 {
-       internal_block_function(CDN_API_DPTX_SetVideo(state, mode));
+       internal_block_function(&state->mutex, CDN_API_DPTX_SetVideo(state, mode));
 }
 
 CDN_API_STATUS CDN_API_DPTX_ReadLinkStat(state_struct *state,
@@ -844,7 +844,7 @@ CDN_API_STATUS CDN_API_DPTX_ReadLinkStat(state_struct *state,
 CDN_API_STATUS CDN_API_DPTX_ReadLinkStat_blocking(state_struct *state,
                                                  S_LINK_STAT *stat)
 {
-       internal_block_function(CDN_API_DPTX_ReadLinkStat(state, stat));
+       internal_block_function(&state->mutex, CDN_API_DPTX_ReadLinkStat(state, stat));
 }
 
 CDN_API_STATUS CDN_API_DPTX_TrainingControl(state_struct *state, u8 val)
@@ -858,7 +858,7 @@ CDN_API_STATUS CDN_API_DPTX_TrainingControl(state_struct *state, u8 val)
 CDN_API_STATUS CDN_API_DPTX_TrainingControl_blocking(state_struct *state,
                                                     u8 val)
 {
-       internal_block_function(CDN_API_DPTX_TrainingControl(state, val));
+       internal_block_function(&state->mutex, CDN_API_DPTX_TrainingControl(state, val));
 }
 
 CDN_API_STATUS CDN_API_DPTX_GetLastAuxStatus(state_struct *state, u8 *resp)
@@ -873,7 +873,7 @@ CDN_API_STATUS CDN_API_DPTX_GetLastAuxStatus(state_struct *state, u8 *resp)
 CDN_API_STATUS CDN_API_DPTX_GetLastAuxStatus_blocking(state_struct *state,
                                                      u8 *resp)
 {
-       internal_block_function(CDN_API_DPTX_GetLastAuxStatus(state, resp));
+       internal_block_function(&state->mutex, CDN_API_DPTX_GetLastAuxStatus(state, resp));
 }
 
 CDN_API_STATUS CDN_API_DPTX_GetHpdStatus(state_struct *state, u8 *resp)
@@ -888,7 +888,7 @@ CDN_API_STATUS CDN_API_DPTX_GetHpdStatus_blocking(state_struct *state,
                                                  u8 *resp)
 {
 
-       internal_block_function(CDN_API_DPTX_GetHpdStatus(state, resp));
+       internal_block_function(&state->mutex, CDN_API_DPTX_GetHpdStatus(state, resp));
 }
 
 CDN_API_STATUS CDN_API_DPTX_ForceLanes(state_struct *state, u8 linkRate,
@@ -931,7 +931,7 @@ CDN_API_STATUS CDN_API_DPTX_ForceLanes_blocking(state_struct *state,
                                                u8 preemphasis_l3, u8 pattern,
                                                u8 ssc)
 {
-       internal_block_function(CDN_API_DPTX_ForceLanes_blocking
+       internal_block_function(&state->mutex, CDN_API_DPTX_ForceLanes_blocking
                                (state, linkRate, numOfLanes, voltageSwing_l0,
                                 preemphasis_l0, voltageSwing_l1,
                                 preemphasis_l1, voltageSwing_l2,
@@ -968,5 +968,5 @@ CDN_API_STATUS CDN_API_DPTX_SetDbg(state_struct *state, uint32_t dbg_cfg)
 CDN_API_STATUS CDN_API_DPTX_SetDbg_blocking(state_struct *state,
                                            uint32_t dbg_cfg)
 {
-       internal_block_function(CDN_API_DPTX_SetDbg(state, dbg_cfg));
+       internal_block_function(&state->mutex, CDN_API_DPTX_SetDbg(state, dbg_cfg));
 }
index c9143fa..4f4d307 100644 (file)
@@ -106,7 +106,7 @@ CDN_API_STATUS CDN_API_General_Test_Echo(state_struct *state, u32 val,
 CDN_API_STATUS CDN_API_General_Test_Echo_blocking(state_struct *state, u32 val,
                                                  CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_General_Test_Echo
+       internal_block_function(&state->mutex, CDN_API_General_Test_Echo
                                (state, val, bus_type));
 }
 
@@ -173,7 +173,7 @@ CDN_API_STATUS CDN_API_General_Test_Echo_Ext_blocking(state_struct *state,
                                                      u16 num_bytes,
                                                      CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_General_Test_Echo_Ext
+       internal_block_function(&state->mutex, CDN_API_General_Test_Echo_Ext
                                       (state, msg, resp, num_bytes, bus_type));
 }
 
@@ -253,7 +253,7 @@ CDN_API_STATUS CDN_API_CheckAlive(state_struct *state)
 
 CDN_API_STATUS CDN_API_CheckAlive_blocking(state_struct *state)
 {
-       internal_block_function(CDN_API_CheckAlive(state));
+       internal_block_function(&state->mutex, CDN_API_CheckAlive(state));
 }
 
 CDN_API_STATUS CDN_API_MainControl(state_struct *state, u8 mode, u8 *resp)
@@ -277,7 +277,7 @@ CDN_API_STATUS CDN_API_MainControl(state_struct *state, u8 mode, u8 *resp)
 CDN_API_STATUS CDN_API_MainControl_blocking(state_struct *state, u8 mode,
                                            u8 *resp)
 {
-       internal_block_function(CDN_API_MainControl(state, mode, resp));
+       internal_block_function(&state->mutex, CDN_API_MainControl(state, mode, resp));
 }
 
 CDN_API_STATUS CDN_API_ApbConf(state_struct *state, u8 dpcd_bus_sel,
@@ -348,7 +348,7 @@ CDN_API_STATUS CDN_API_ApbConf_blocking(state_struct *state, u8 dpcd_bus_sel,
                                        u8 *dpcd_resp,
                                        u8 *hdcp_resp, u8 *capb_resp)
 {
-       internal_block_function(CDN_API_ApbConf
+       internal_block_function(&state->mutex, CDN_API_ApbConf
                                (state, dpcd_bus_sel, dpcd_bus_lock,
                                 hdcp_bus_sel, hdcp_bus_lock, capb_bus_sel,
                                 capb_bus_lock, dpcd_resp, hdcp_resp,
@@ -385,7 +385,7 @@ CDN_API_STATUS CDN_API_General_Read_Register(state_struct *state, u32 addr,
 CDN_API_STATUS CDN_API_General_Read_Register_blocking(state_struct *state,
                                                      u32 addr, GENERAL_Read_Register_response *resp)
 {
-       internal_block_function(CDN_API_General_Read_Register
+       internal_block_function(&state->mutex, CDN_API_General_Read_Register
                                (state, addr, resp));
 }
 
@@ -408,7 +408,7 @@ CDN_API_STATUS CDN_API_General_Write_Register(state_struct *state, u32 addr,
 CDN_API_STATUS CDN_API_General_Write_Register_blocking(state_struct *state,
                                                       u32 addr, u32 val)
 {
-       internal_block_function(CDN_API_General_Write_Register
+       internal_block_function(&state->mutex, CDN_API_General_Write_Register
                                (state, addr, val));
 }
 
@@ -432,7 +432,7 @@ CDN_API_STATUS CDN_API_General_Write_Field_blocking(state_struct *state,
                                                    u32 addr, u8 startBit,
                                                    u8 bitsNo, u32 val)
 {
-       internal_block_function(CDN_API_General_Write_Field
+       internal_block_function(&state->mutex, CDN_API_General_Write_Field
                                (state, addr, startBit, bitsNo, val));
 }
 
@@ -471,5 +471,5 @@ 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)
 {
-       internal_block_function(CDN_API_General_Phy_Test_Access(state, resp));
+       internal_block_function(&state->mutex, CDN_API_General_Phy_Test_Access(state, resp));
 }
index 942e904..27b281c 100644 (file)
@@ -71,7 +71,7 @@ CDN_API_STATUS CDN_API_HDCP_TX_CONFIGURATION_blocking(state_struct *state,
                                                      u8 val,
                                                      CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP_TX_CONFIGURATION
+       internal_block_function(&state->mutex, CDN_API_HDCP_TX_CONFIGURATION
                                (state, val, bus_type));
 }
 
@@ -101,7 +101,7 @@ CDN_API_HDCP2_TX_SET_PUBLIC_KEY_PARAMS_blocking(state_struct *state,
                                                        S_HDCP_TRANS_PUBLIC_KEY_PARAMS *val,
                                                        CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_SET_PUBLIC_KEY_PARAMS
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_SET_PUBLIC_KEY_PARAMS
                                (state, val, bus_type));
 }
 
@@ -134,7 +134,7 @@ CDN_API_HDCP2_TX_SET_KM_KEY_PARAMS_blocking(state_struct *state,
                                            S_HDCP_TRANS_KM_KEY_PARAMS *val,
                                            CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_SET_KM_KEY_PARAMS
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_SET_KM_KEY_PARAMS
                                (state, val, bus_type));
 }
 
@@ -167,7 +167,7 @@ CDN_API_STATUS CDN_API_HDCP2_TX_SET_DEBUG_RANDOM_NUMBERS_blocking(
                                S_HDCP_TRANS_DEBUG_RANDOM_NUMBERS *val,
                                CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_SET_DEBUG_RANDOM_NUMBERS
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_SET_DEBUG_RANDOM_NUMBERS
                                (state, val, bus_type));
 }
 
@@ -204,7 +204,7 @@ CDN_API_STATUS CDN_API_HDCP2_TX_RESPOND_KM_blocking(state_struct *state,
                                                    S_HDCP_TRANS_PAIRING_DATA *val,
                                                        CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_RESPOND_KM
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_RESPOND_KM
                                (state, val, bus_type));
 }
 
@@ -233,7 +233,7 @@ CDN_API_HDCP1_TX_SEND_KEYS_blocking(state_struct *state,
                                    S_HDCP_TX_MAIL_BOX_CMD_HDCP1_TX_SEND_KEYS *val,
                                        CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP1_TX_SEND_KEYS
+       internal_block_function(&state->mutex, CDN_API_HDCP1_TX_SEND_KEYS
                                (state, val, bus_type));
 }
 
@@ -257,7 +257,7 @@ CDN_API_STATUS CDN_API_HDCP1_TX_SEND_RANDOM_AN(state_struct *state, u8 An[8],
 CDN_API_STATUS CDN_API_HDCP1_TX_SEND_RANDOM_AN_blocking(state_struct *state,
                                                        u8 An[8], CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP1_TX_SEND_RANDOM_AN
+       internal_block_function(&state->mutex, CDN_API_HDCP1_TX_SEND_RANDOM_AN
                                (state, An, bus_type));
 }
 
@@ -283,7 +283,7 @@ CDN_API_STATUS CDN_API_HDCP_TX_STATUS_REQ_blocking(state_struct *state,
                                                   u8 resp[5],
                                                   CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP_TX_STATUS_REQ
+       internal_block_function(&state->mutex, CDN_API_HDCP_TX_STATUS_REQ
                                (state, resp, bus_type));
 }
 
@@ -317,7 +317,7 @@ CDN_API_STATUS CDN_API_HDCP2_TX_IS_KM_STORED_REQ_blocking(state_struct *state,
                                                          u8 resp[5],
                                                          CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_IS_KM_STORED_REQ
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_IS_KM_STORED_REQ
                                (state, resp, bus_type));
 }
 
@@ -349,7 +349,7 @@ CDN_API_STATUS CDN_API_HDCP2_TX_STORE_KM_REQ_blocking(state_struct *state,
                                                      *resp,
                                                      CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP2_TX_STORE_KM_REQ
+       internal_block_function(&state->mutex, CDN_API_HDCP2_TX_STORE_KM_REQ
                                (state, resp, bus_type));
 }
 
@@ -380,7 +380,7 @@ CDN_API_STATUS CDN_API_HDCP_TX_IS_RECEIVER_ID_VALID_REQ_blocking(
                                                                 CDN_BUS_TYPE
                                                                 bus_type)
 {
-       internal_block_function(CDN_API_HDCP_TX_IS_RECEIVER_ID_VALID_REQ
+       internal_block_function(&state->mutex, CDN_API_HDCP_TX_IS_RECEIVER_ID_VALID_REQ
                                (state, num, id, bus_type));
 }
 
@@ -408,7 +408,7 @@ CDN_API_STATUS CDN_API_HDCP_TX_RESPOND_RECEIVER_ID_VALID_blocking(
                                                                CDN_BUS_TYPE
                                                                bus_type)
 {
-       internal_block_function(CDN_API_HDCP_TX_RESPOND_RECEIVER_ID_VALID
+       internal_block_function(&state->mutex, CDN_API_HDCP_TX_RESPOND_RECEIVER_ID_VALID
                                (state, valid, bus_type));
 }
 
@@ -424,7 +424,7 @@ CDN_API_STATUS CDN_API_HDCP_GENERAL_2_SET_LC_blocking(state_struct *state,
                                                      u8 *lc,
                                                      CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_HDCP_GENERAL_2_SET_LC
+       internal_block_function(&state->mutex, CDN_API_HDCP_GENERAL_2_SET_LC
                                (state, lc, bus_type));
 }
 
@@ -449,6 +449,6 @@ CDN_API_STATUS CDN_API_TEST_KEYS(state_struct *state, u8 test_type, u8 resp[1],
 CDN_API_STATUS CDN_API_TEST_KEYS_blocking(state_struct *state, u8 test_type,
                                          u8 resp[1], CDN_BUS_TYPE bus_type)
 {
-       internal_block_function(CDN_API_TEST_KEYS
+       internal_block_function(&state->mutex, CDN_API_TEST_KEYS
                                (state, test_type, resp, bus_type));
 }
index cd1e4d8..b1f3a78 100644 (file)
@@ -70,7 +70,7 @@ CDN_API_STATUS CDN_API_HDMITX_DDC_READ_blocking(state_struct *state,
                                                HDMITX_TRANS_DATA *data_in,
                                                HDMITX_TRANS_DATA *data_out)
 {
-       internal_block_function(CDN_API_HDMITX_DDC_READ
+       internal_block_function(&state->mutex, CDN_API_HDMITX_DDC_READ
                                (state, data_in, data_out));
 }
 
@@ -91,7 +91,7 @@ CDN_API_STATUS CDN_API_HDMITX_DDC_WRITE_blocking(state_struct *state,
                                                 HDMITX_TRANS_DATA *data_in,
                                                 HDMITX_TRANS_DATA *data_out)
 {
-       internal_block_function(CDN_API_HDMITX_DDC_WRITE
+       internal_block_function(&state->mutex, CDN_API_HDMITX_DDC_WRITE
                                (state, data_in, data_out));
 }
 
@@ -108,7 +108,7 @@ CDN_API_STATUS CDN_API_HDMITX_DDC_UPDATE_READ_blocking(state_struct *state,
                                                       HDMITX_TRANS_DATA *
                                                       data_out)
 {
-       internal_block_function(CDN_API_HDMITX_DDC_UPDATE_READ
+       internal_block_function(&state->mutex, CDN_API_HDMITX_DDC_UPDATE_READ
                                (state, data_out));
 }
 
@@ -128,7 +128,7 @@ CDN_API_STATUS CDN_API_HDMITX_READ_EDID_blocking(state_struct *state, u8 block,
                                                 u8 segment,
                                                 HDMITX_TRANS_DATA *data_out)
 {
-       internal_block_function(CDN_API_HDMITX_READ_EDID
+       internal_block_function(&state->mutex, CDN_API_HDMITX_READ_EDID
                                (state, block, segment, data_out));
 }
 
@@ -423,7 +423,7 @@ CDN_API_STATUS CDN_API_HDMITX_ReadEvents(state_struct *state,
 CDN_API_STATUS CDN_API_HDMITX_ReadEvents_blocking(state_struct *state,
                                                  uint32_t *events)
 {
-       internal_block_function(CDN_API_HDMITX_ReadEvents(state, events));
+       internal_block_function(&state->mutex, CDN_API_HDMITX_ReadEvents(state, events));
 }
 
 CDN_API_STATUS CDN_API_HDMITX_GetHpdStatus(state_struct *state, u8 *hpd_sts)
@@ -451,5 +451,5 @@ CDN_API_STATUS CDN_API_HDMITX_GetHpdStatus(state_struct *state, u8 *hpd_sts)
 CDN_API_STATUS CDN_API_HDMITX_GetHpdStatus_blocking(state_struct *state,
                                                    u8 *hpd_sts)
 {
-       internal_block_function(CDN_API_HDMITX_GetHpdStatus(state, hpd_sts));
+       internal_block_function(&state->mutex, CDN_API_HDMITX_GetHpdStatus(state, hpd_sts));
 }
index 8ea7cc3..6907fe6 100644 (file)
@@ -169,16 +169,18 @@ typedef struct {
  * \param x - function call
  */
 #define MAILBOX_FILL_TIMEOUT   1500
-#define internal_block_function(x)               \
+#define internal_block_function(y, x)               \
 do {                                                              \
        unsigned long end_jiffies = jiffies +                           \
                        msecs_to_jiffies(MAILBOX_FILL_TIMEOUT);           \
     CDN_API_STATUS ret;                                        \
+       mutex_lock(y);                                             \
        do {                                                       \
                ret = x;                                               \
                cpu_relax();                                           \
        } while (time_after(end_jiffies, jiffies) &&               \
                        (ret == CDN_BSY || ret == CDN_STARTED));           \
+       mutex_unlock(y);                                             \
        return ret;                                                \
 } while (0)