dp14rxss
Xilinx SDK Drivers API Documentation
xdprxss_zcu102_rx.h File Reference

Overview

 MODIFICATION HISTORY:
 Ver   Who  Date     Changes


1.00 Kei 08/09/17 First Release

Functions

void hpd_con (XDpTxSs *InstancePtr, u8 Edid_org[128], u8 Edid1_org[128], u16 res_update)
 This function is called when a Hot-Plug-Detect (HPD) event is received by the DisplayPort TX Subsystem core. More...
 
void hpd_pulse_con (XDpTxSs *InstancePtr)
 This function is the main hpd pulse process. More...
 
char xil_getc (u32 timeout_ms)
 This function to get uart input from user. More...
 
void sendAudioInfoFrame (XilAudioInfoFrame *xilInfoFrame)
 This function to send Audio Information Frame. More...
 
void Vpg_Audio_start (void)
 This function starts audio pattern generator. More...
 
void Vpg_Audio_stop (void)
 This function stops audio pattern generator. More...
 
u32 start_tx (u8 line_rate, u8 lane_count, user_config_struct user_config, XDpTxSs_MainStreamAttributes Msa[4])
 This function starts tx process. More...
 
u32 PHY_Configuration_Tx (XVphy *InstancePtr, XVphy_User_Config PHY_User_Config_Table)
 This function sets up PHY. More...
 
u32 set_vphy (int LineRate_init_tx)
 This function sets VPHY based on the linerate. More...
 
void Vpg_VidgenSetUserPattern (XDp *InstancePtr, u8 Pattern)
 This function sets user pattern. More...
 
void sink_power_down (void)
 This function powers down sink. More...
 
void sink_power_up (void)
 This function powers down sink. More...
 
u8 get_LineRate (void)
 This function returns current line rate. More...
 
u8 get_Lanecounts (void)
 This function returns current lane counts. More...
 
void sink_power_cycle (void)
 This function power cycle the sink. More...
 
int VideoFMC_Init (void)
 This function initializes VFMC. More...
 
int IDT_8T49N24x_SetClock (u32 I2CBaseAddress, u8 I2CSlaveAddress, int FIn, int FOut, u8 FreeRun)
 This function calculates and sets the IDT 8TN49N24x device with the given clock configuration. More...
 
int IDT_8T49N24x_Init (u32 I2CBaseAddress, u8 I2CSlaveAddress)
 This function initializes the IDT 8TN49N24x with default values for use with the Video FMC. More...
 
int TI_LMK03318_PowerDown (u32 I2CBaseAddress, u8 I2CSlaveAddress)
 This function puts the TI LMK03318 into sleep. More...
 
void DpPt_HpdEventHandler (void *InstancePtr)
 This function takes care HPD event. More...
 
void DpPt_HpdPulseHandler (void *InstancePtr)
 This function takes care HPD pulse interrupt. More...
 
void DpPt_LinkrateChgHandler (void *InstancePtr)
 This function sets link line rate. More...
 
void DpRxSs_PowerChangeHandler (void *InstancePtr)
 This function is the callback function for when the power state interrupt occurs. More...
 
void DpRxSs_NoVideoHandler (void *InstancePtr)
 This function is the callback function for when a no video interrupt occurs. More...
 
void DpRxSs_VerticalBlankHandler (void *InstancePtr)
 This function is the callback function for when a vertical blank interrupt occurs. More...
 
void DpRxSs_TrainingLostHandler (void *InstancePtr)
 This function is the callback function for when a training lost interrupt occurs. More...
 
void DpRxSs_VideoHandler (void *InstancePtr)
 This function is the callback function for when a valid video interrupt occurs. More...
 
void DpRxSs_InfoPacketHandler (void *InstancePtr)
 This function is the callback function for Info Packet Handling. More...
 
void DpRxSs_ExtPacketHandler (void *InstancePtr)
 This function is the callback function for Generic Packet Handling of 32-Bytes payload. More...
 
void DpRxSs_TrainingDoneHandler (void *InstancePtr)
 This function is the callback function for when the training done interrupt occurs. More...
 
void DpRxSs_UnplugHandler (void *InstancePtr)
 This function is the callback function for when the unplug event occurs. More...
 
void DpRxSs_LinkBandwidthHandler (void *InstancePtr)
 This function is the callback function for when the link bandwidth change occurs. More...
 
void DpRxSs_PllResetHandler (void *InstancePtr)
 This function is the callback function for PLL reset request. More...
 
void DpRxSs_BWChangeHandler (void *InstancePtr)
 This function is the callback function for PLL reset request. More...
 
void DpRxSs_AccessLaneSetHandler (void *InstancePtr)
 This function is the callback function for Access lane set request. More...
 
void DpRxSs_AccessLinkQualHandler (void *InstancePtr)
 This function is the callback function for Access link qual request. More...
 
void DpRxSs_AccessErrorCounterHandler (void *InstancePtr)
 This function is the callback function for Access prbs error count. More...
 
void DpRxSs_CRCTestEventHandler (void *InstancePtr)
 This function is the callback function for Test CRC Event request. More...
 
void Print_InfoPkt ()
 This function is the callback function for Info Packet Handling. More...
 
void Print_ExtPkt ()
 This function is the callback function for Ext Packet Handling. More...
 
u32 DpRxSs_Setup (void)
 This function configures DisplayPort RX Subsystem. More...
 
void resetIp ()
 This function toggles HW reset line for all IP's. More...
 
u32 Dp_SetupIntrSystem (void)
 This function sets up the interrupt system so interrupts can occur for the DisplayPort TX Subsystem core. More...
 
u32 DpTxSs_VideoPhyInit (u16 DeviceId)
 This function configures Video Phy. More...
 
void DpPt_CustomWaitUs (void *InstancePtr, u32 MicroSeconds)
 This function use h/w timer to count specific Microseconds. More...
 
void DpTxSs_Setup (u8 *LineRate_init, u8 *LaneCount_init, u8 Edid_org[128], u8 Edid1_org[128])
 This function sets up DPTxSubsystem. More...
 
void PLLRefClkSel (XVphy *InstancePtr, u8 link_rate)
 This function sets proper ref clk frequency and line rate. More...
 
void PHY_Two_byte_set (XVphy *InstancePtr, u8 Tx_to_two_byte, u8 Rx_to_two_byte)
 This function sets GT in 16-bits (2-Byte) or 32-bits (4-Byte) mode. More...
 
void clk_wiz_locked (void)
 This function to check MMCM lock status. More...
 
int Vpg_StreamSrcConfigure (XDp *InstancePtr, u8 VSplitMode, u8 first_time)
 This function updates required timing values in Video Pattern Generator core. More...
 
XVidC_VideoMode GetPreferredVm (u8 *EdidPtr, u8 cap, u8 lane)
 This function to find out preferred Video Mode ID. More...
 
void ReportVideoCRC (void)
 This function reports CRC values of Video components. More...
 

Function Documentation

void clk_wiz_locked ( void  )

This function to check MMCM lock status.

Parameters
None.
Returns
None.
Note
None.

This function to check MMCM lock status.

Returns
None
u32 Dp_SetupIntrSystem ( void  )

This function sets up the interrupt system so interrupts can occur for the DisplayPort TX Subsystem core.

The function is application-specific since the actual system may or may not have an interrupt controller. The DPTX Subsystem core could be directly connected to a processor without an interrupt controller. The user should modify this function to fit the application.

Parameters
None
Returns
  • XST_SUCCESS if interrupt setup was successful.
  • A specific error code defined in "xstatus.h" if an error occurs.
Note
None.

References DpPt_CustomWaitUs(), DpPt_HpdEventHandler(), DpPt_HpdPulseHandler(), DpPt_LinkrateChgHandler(), DpRxSs_AccessErrorCounterHandler(), DpRxSs_AccessLinkQualHandler(), DpRxSs_BWChangeHandler(), DpRxSs_CRCTestEventHandler(), DpRxSs_ExtPacketHandler(), DpRxSs_InfoPacketHandler(), DpRxSs_LinkBandwidthHandler(), DpRxSs_NoVideoHandler(), DpRxSs_PllResetHandler(), DpRxSs_PowerChangeHandler(), DpRxSs_TrainingDoneHandler(), DpRxSs_TrainingLostHandler(), DpRxSs_UnplugHandler(), DpRxSs_VerticalBlankHandler(), DpRxSs_VideoHandler(), XDpRxSs_DpIntrHandler(), XDPRXSS_HANDLER_ACCESS_ERROR_COUNTER_EVENT, XDPRXSS_HANDLER_ACCESS_LINK_QUAL_EVENT, XDPRXSS_HANDLER_DP_ACT_RX_EVENT, XDPRXSS_HANDLER_DP_BW_CHG_EVENT, XDPRXSS_HANDLER_DP_CRC_TEST_EVENT, XDPRXSS_HANDLER_DP_DWN_REP_EVENT, XDPRXSS_HANDLER_DP_DWN_REQ_EVENT, XDPRXSS_HANDLER_DP_EXT_PKT_EVENT, XDPRXSS_HANDLER_DP_INFO_PKT_EVENT, XDPRXSS_HANDLER_DP_NO_VID_EVENT, XDPRXSS_HANDLER_DP_PAYLOAD_ALLOC_EVENT, XDPRXSS_HANDLER_DP_PWR_CHG_EVENT, XDPRXSS_HANDLER_DP_TDONE_EVENT, XDPRXSS_HANDLER_DP_TLOST_EVENT, XDPRXSS_HANDLER_DP_VBLANK_EVENT, XDPRXSS_HANDLER_DP_VID_EVENT, XDPRXSS_HANDLER_LINKBW_EVENT, XDPRXSS_HANDLER_PLL_RESET_EVENT, XDPRXSS_HANDLER_UNPLUG_EVENT, and XDpRxSs_SetCallBack().

void DpPt_CustomWaitUs ( void *  InstancePtr,
u32  MicroSeconds 
)

This function use h/w timer to count specific Microseconds.

Parameters
pointerto timer
MicroSecondsto wait
Returns
None.
Note
None.

This function use h/w timer to count specific Microseconds.

It provides timer with predefined amount of loop iterations.

Parameters
InstancePtris a pointer to the XDp instance.
Returns
None.
Note
Use the XDpTxSs_SetUserTimerHandler driver function to set this function as the handler custom delay/sleep.
void DpPt_HpdEventHandler ( void *  InstancePtr)

This function takes care HPD event.

Returns
None.
Note
None.

References XDpRxSs::DpPtr, sink_power_cycle(), sink_power_down(), and sink_power_up().

void DpPt_HpdPulseHandler ( void *  InstancePtr)

This function takes care HPD pulse interrupt.

Returns
None.
Note
None.
void DpPt_LinkrateChgHandler ( void *  InstancePtr)

This function sets link line rate.

Parameters
@returnNone.
Note
None.

References get_LineRate(), and set_vphy().

void DpRxSs_AccessErrorCounterHandler ( void *  InstancePtr)

This function is the callback function for Access prbs error count.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr.

void DpRxSs_AccessLaneSetHandler ( void *  InstancePtr)

This function is the callback function for Access lane set request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void DpRxSs_AccessLinkQualHandler ( void *  InstancePtr)

This function is the callback function for Access link qual request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr, I2C_MCDP6000_ADDR, XDpRxSs_MCDP6000_ClearCounter(), XDpRxSs_MCDP6000_DisablePrbs7_Rx(), and XDpRxSs_MCDP6000_EnablePrbs7_Rx().

void DpRxSs_BWChangeHandler ( void *  InstancePtr)

This function is the callback function for PLL reset request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_CRCTestEventHandler ( void *  InstancePtr)

This function is the callback function for Test CRC Event request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs_Config::BaseAddress, XDpRxSs::Config, and XDpRxSs::DpPtr.

void DpRxSs_ExtPacketHandler ( void *  InstancePtr)

This function is the callback function for Generic Packet Handling of 32-Bytes payload.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

This function is the callback function for Generic Packet Handling of 32-Bytes payload.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr.

void DpRxSs_InfoPacketHandler ( void *  InstancePtr)

This function is the callback function for Info Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

This function is the callback function for when an info packet interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

This function is the callback function for Info Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr.

void DpRxSs_LinkBandwidthHandler ( void *  InstancePtr)

This function is the callback function for when the link bandwidth change occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs_UsrOpt::LinkRate, PLLRefClkSel(), and XDpRxSs::UsrOpt.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_NoVideoHandler ( void *  InstancePtr)

This function is the callback function for when a no video interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr, and XDpRxSs::VBlankCount.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_PllResetHandler ( void *  InstancePtr)

This function is the callback function for PLL reset request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_PowerChangeHandler ( void *  InstancePtr)

This function is the callback function for when the power state interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

u32 DpRxSs_Setup ( void  )

This function configures DisplayPort RX Subsystem.

Parameters
None.
Returns
  • XST_SUCCESS if DP RX Subsystem configured successfully.
  • XST_FAILURE, otherwise.
Note
None.
Parameters
None.
Returns
  • XST_SUCCESS if DPRX Subsystem configured successfully.
  • XST_FAILURE, otherwise.
Note
None.
Parameters
None.
Returns
  • XST_SUCCESS if DP RX Subsystem configured successfully.
  • XST_FAILURE, otherwise.
Note
None.
Parameters
None.
Returns
  • XST_SUCCESS if DPRX Subsystem configured successfully.
  • XST_FAILURE, otherwise.
Note
None.

References XDpRxSs::DpPtr.

Referenced by DpRxSs_DebugExample(), DpRxSs_HdcpExample(), DpRxSs_IntrExample(), and DpRxSs_MstExample().

void DpRxSs_TrainingDoneHandler ( void *  InstancePtr)

This function is the callback function for when the training done interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_TrainingLostHandler ( void *  InstancePtr)

This function is the callback function for when a training lost interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr, XDpRxSs::VBlankCount, and XDpRxSs_AudioDisable.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_UnplugHandler ( void *  InstancePtr)

This function is the callback function for when the unplug event occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::DpPtr, XDpRxSs::VBlankCount, and XDpRxSs_AudioDisable.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_VerticalBlankHandler ( void *  InstancePtr)

This function is the callback function for when a vertical blank interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References XDpRxSs::VBlankCount.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpRxSs_VideoHandler ( void *  InstancePtr)

This function is the callback function for when a valid video interrupt occurs.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

Referenced by Dp_SetupIntrSystem(), and DpRxSs_SetupIntrSystem().

void DpTxSs_Setup ( u8 *  LineRate_init,
u8 *  LaneCount_init,
u8  Edid_org[128],
u8  Edid1_org[128] 
)

This function sets up DPTxSubsystem.

Parameters
LineRate
LaneCount
edid1st block
edid2nd block
Returns
None.
Note
None.

References sink_power_cycle().

u32 DpTxSs_VideoPhyInit ( u16  DeviceId)

This function configures Video Phy.

Parameters
None.
Returns
  • XST_SUCCESS if Video Phy configured successfully.
  • XST_FAILURE, otherwise.
Note
None.

References PHY_Two_byte_set(), and PLLRefClkSel().

u8 get_Lanecounts ( void  )

This function returns current lane counts.

Parameters
None.
Returns
None.
Note
None.
u8 get_LineRate ( void  )

This function returns current line rate.

Parameters
None.
Returns
None.
Note
None.

Referenced by DpPt_LinkrateChgHandler().

XVidC_VideoMode GetPreferredVm ( u8 *  EdidPtr,
u8  cap,
u8  lane 
)

This function to find out preferred Video Mode ID.

Parameters
pointerto edid data
maximumcapability of line speed
numberof lane
Returns
Video Mode ID
Note
None.

Referenced by hpd_con().

void hpd_con ( XDpTxSs *  InstancePtr,
u8  Edid_org[128],
u8  Edid1_org[128],
u16  res_update 
)

This function is called when a Hot-Plug-Detect (HPD) event is received by the DisplayPort TX Subsystem core.

Parameters
InstancePtris a pointer to the XDpTxSs instance.
Returns
None.
Note
Use the XDpTxSs_SetCallback driver function to set this function as the handler for HPD event.

References GetPreferredVm(), set_vphy(), Vpg_StreamSrcConfigure(), and Vpg_VidgenSetUserPattern().

void hpd_pulse_con ( XDpTxSs *  InstancePtr)

This function is the main hpd pulse process.

Returns
None.
Note
None.

References sink_power_cycle().

u32 PHY_Configuration_Tx ( XVphy *  InstancePtr,
XVphy_User_Config  PHY_User_Config_Table 
)

This function sets up PHY.

Parameters
pointerto VideoPHY
UserConfig table
Returns
  • XST_SUCCESS if interrupt setup was successful.
  • A specific error code defined in "xstatus.h" if an error occurs.
Note
None.

Referenced by set_vphy(), and switch_to_Tx_only().

void PHY_Two_byte_set ( XVphy *  InstancePtr,
u8  Tx_to_two_byte,
u8  Rx_to_two_byte 
)

This function sets GT in 16-bits (2-Byte) or 32-bits (4-Byte) mode.

Parameters
InstancePtris a pointer to the Video PHY instance.
Returns
None.
Note
None.

Referenced by DpSs_VideoPhyInit(), and DpTxSs_VideoPhyInit().

void PLLRefClkSel ( XVphy *  InstancePtr,
u8  link_rate 
)

This function sets proper ref clk frequency and line rate.

Parameters
InstancePtris a pointer to the Video PHY instance.
Returns
None.
Note
None.

Referenced by DpRxSs_LinkBandwidthHandler(), DpSs_VideoPhyInit(), and DpTxSs_VideoPhyInit().

void Print_ExtPkt ( )

This function is the callback function for Ext Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void Print_InfoPkt ( )

This function is the callback function for Info Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void ReportVideoCRC ( )

This function reports CRC values of Video components.

Parameters
None.
Returns
None.
Note
None.
void resetIp ( )

This function toggles HW reset line for all IP's.

Returns
None
void sendAudioInfoFrame ( XilAudioInfoFrame *  xilInfoFrame)

This function to send Audio Information Frame.

Parameters
XilAudioInfoFrame
Returns
None.
Note
None.
u32 set_vphy ( int  LineRate_init_tx)

This function sets VPHY based on the linerate.

Parameters
user_config_struct.
Returns
Status.
Note
None.

References PHY_Configuration_Tx().

Referenced by DpPt_LinkrateChgHandler(), and hpd_con().

void sink_power_cycle ( void  )

This function power cycle the sink.

Parameters
user_config_struct.
Returns
Status.
Note
None.

References sink_power_down(), and sink_power_up().

void sink_power_down ( void  )

This function powers down sink.

Parameters
None.
Returns
None.
Note
None.

Referenced by DpPt_HpdEventHandler(), and sink_power_cycle().

void sink_power_up ( void  )

This function powers down sink.

Parameters
None.
Returns
None.
Note
None.

Referenced by DpPt_HpdEventHandler(), and sink_power_cycle().

u32 start_tx ( u8  line_rate,
u8  lane_count,
user_config_struct  user_config,
XDpTxSs_MainStreamAttributes  Msa[4] 
)

This function starts tx process.

Parameters
linerate
lanecounts
pointerto resolution table
bitper components
videopattern to output
Returns
  • XST_SUCCESS if interrupt setup was successful.
  • A specific error code defined in "xstatus.h" if an error occurs.
Note
None.

References clk_wiz_locked(), DpPt_CustomWaitUs(), sink_power_cycle(), Vpg_StreamSrcConfigure(), and Vpg_VidgenSetUserPattern().

int VideoFMC_Init ( void  )

This function initializes VFMC.

Parameters
None.
Returns
None.
Note
None.

This function initializes VFMC.

Application needs to know if it changed and need to detect new parameter. Based on the parameter, re-set and re-start VDAM and Tx

Returns
None
Parameters
None.
Returns
None.
Note
None.

This function initializes VFMC.

Application needs to know if it changed and need to detect new parameter. Based on the parameter, re-set and re-start VDAM and Tx

Returns
None

References I2C_IDT8N49_ADDR, I2C_LMK03318_ADDR, I2C_MUX_ADDR, I2C_Scan(), I2C_VFMCEXP_0_ADDR, I2C_VFMCEXP_1_ADDR, IDT_8T49N24x_Init(), and TI_LMK03318_PowerDown().

void Vpg_Audio_start ( void  )

This function starts audio pattern generator.

Returns
None.
Note
None.
void Vpg_Audio_stop ( void  )

This function stops audio pattern generator.

Returns
None.
Note
None.
int Vpg_StreamSrcConfigure ( XDp *  InstancePtr,
u8  VSplitMode,
u8  first_time 
)

This function updates required timing values in Video Pattern Generator core.

Parameters
InstancePtris a pointer to the XDp instance.
VSplitModespecifies vertical split mode to be used for splitting resolution vertically.
Returns
  • XST_SUCCESS if Video pattern configured successfully.
Note
None.

References Vpg_VidgenSetTestPattern().

void Vpg_VidgenSetUserPattern ( XDp *  InstancePtr,
u8  Pattern 
)

This function sets user pattern.

Parameters
InstancePtris a pointer to the XDp instance.
Patternnumber to set with
Returns
None.
Note
None.
char xil_getc ( u32  timeout_ms)

This function to get uart input from user.

Parameters
timeout_ms
Returns
  • received charactor
Note
None.

This function to get uart input from user.

Parameters
None.
Returns
None.
Note
None.

This function to get uart input from user

Parameters
timeout_ms
Returns
  • received charactor
Note
None.

References XUartPs_RecvByte_NonBlocking().