mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
drm/amd/display: Add hardware reset interface for DMUB service
[Why] We'll need this to perform a clean shutdown before unloading the driver. [How] It will call reset internally and set hw_init to false. It won't do anything if the hardware isn't initialized. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
7527791e1f
commit
0167da498d
@ -418,6 +418,21 @@ enum dmub_status dmub_srv_is_hw_init(struct dmub_srv *dmub, bool *is_hw_init);
|
|||||||
enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
|
enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
|
||||||
const struct dmub_srv_hw_params *params);
|
const struct dmub_srv_hw_params *params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dmub_srv_hw_reset() - puts the DMUB hardware in reset state if initialized
|
||||||
|
* @dmub: the dmub service
|
||||||
|
*
|
||||||
|
* Before destroying the DMUB service or releasing the backing framebuffer
|
||||||
|
* memory we'll need to put the DMCUB into reset first.
|
||||||
|
*
|
||||||
|
* A subsequent call to dmub_srv_hw_init() will re-enable the DMCUB.
|
||||||
|
*
|
||||||
|
* Return:
|
||||||
|
* DMUB_STATUS_OK - success
|
||||||
|
* DMUB_STATUS_INVALID - unspecified error
|
||||||
|
*/
|
||||||
|
enum dmub_status dmub_srv_hw_reset(struct dmub_srv *dmub);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dmub_srv_cmd_queue() - queues a command to the DMUB
|
* dmub_srv_cmd_queue() - queues a command to the DMUB
|
||||||
* @dmub: the dmub service
|
* @dmub: the dmub service
|
||||||
|
@ -415,6 +415,22 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
|
|||||||
return DMUB_STATUS_OK;
|
return DMUB_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum dmub_status dmub_srv_hw_reset(struct dmub_srv *dmub)
|
||||||
|
{
|
||||||
|
if (!dmub->sw_init)
|
||||||
|
return DMUB_STATUS_INVALID;
|
||||||
|
|
||||||
|
if (dmub->hw_init == false)
|
||||||
|
return DMUB_STATUS_OK;
|
||||||
|
|
||||||
|
if (dmub->hw_funcs.reset)
|
||||||
|
dmub->hw_funcs.reset(dmub);
|
||||||
|
|
||||||
|
dmub->hw_init = false;
|
||||||
|
|
||||||
|
return DMUB_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
enum dmub_status dmub_srv_cmd_queue(struct dmub_srv *dmub,
|
enum dmub_status dmub_srv_cmd_queue(struct dmub_srv *dmub,
|
||||||
const struct dmub_cmd_header *cmd)
|
const struct dmub_cmd_header *cmd)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user