Commit b10d51f8 authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher

drm/amd/display: Add interrupt entries for VBLANK isr.

Signed-off-by: default avatarAndrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b565ff86
...@@ -33,6 +33,13 @@ ...@@ -33,6 +33,13 @@
#include "dce/dce_11_0_sh_mask.h" #include "dce/dce_11_0_sh_mask.h"
#include "ivsrcid/ivsrcid_vislands30.h" #include "ivsrcid/ivsrcid_vislands30.h"
#define VISLANDS30_IV_SRCID_D1_VBLANK 1
#define VISLANDS30_IV_SRCID_D2_VBLANK 2
#define VISLANDS30_IV_SRCID_D3_VBLANK 3
#define VISLANDS30_IV_SRCID_D4_VBLANK 4
#define VISLANDS30_IV_SRCID_D5_VBLANK 5
#define VISLANDS30_IV_SRCID_D6_VBLANK 6
static bool hpd_ack( static bool hpd_ack(
struct irq_service *irq_service, struct irq_service *irq_service,
const struct irq_source_info *info) const struct irq_source_info *info)
...@@ -139,6 +146,22 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = { ...@@ -139,6 +146,22 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = {
.funcs = &vblank_irq_info_funcs\ .funcs = &vblank_irq_info_funcs\
} }
#define vblank_int_entry(reg_num)\
[DC_IRQ_SOURCE_VBLANK1 + reg_num] = {\
.enable_reg = mmLB ## reg_num ## _LB_INTERRUPT_MASK,\
.enable_mask =\
LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK,\
.enable_value = {\
LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK,\
~LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK},\
.ack_reg = mmLB ## reg_num ## _LB_VBLANK_STATUS,\
.ack_mask =\
LB_VBLANK_STATUS__VBLANK_ACK_MASK,\
.ack_value =\
LB_VBLANK_STATUS__VBLANK_ACK_MASK,\
.funcs = &vblank_irq_info_funcs\
}
#define dummy_irq_entry() \ #define dummy_irq_entry() \
{\ {\
.funcs = &dummy_irq_info_funcs\ .funcs = &dummy_irq_info_funcs\
...@@ -264,6 +287,13 @@ irq_source_info_dce110[DAL_IRQ_SOURCES_NUMBER] = { ...@@ -264,6 +287,13 @@ irq_source_info_dce110[DAL_IRQ_SOURCES_NUMBER] = {
vupdate_int_entry(3), vupdate_int_entry(3),
vupdate_int_entry(4), vupdate_int_entry(4),
vupdate_int_entry(5), vupdate_int_entry(5),
vblank_int_entry(0),
vblank_int_entry(1),
vblank_int_entry(2),
vblank_int_entry(3),
vblank_int_entry(4),
vblank_int_entry(5),
}; };
enum dc_irq_source to_dal_irq_source_dce110( enum dc_irq_source to_dal_irq_source_dce110(
...@@ -272,6 +302,18 @@ enum dc_irq_source to_dal_irq_source_dce110( ...@@ -272,6 +302,18 @@ enum dc_irq_source to_dal_irq_source_dce110(
uint32_t ext_id) uint32_t ext_id)
{ {
switch (src_id) { switch (src_id) {
case VISLANDS30_IV_SRCID_D1_VBLANK:
return DC_IRQ_SOURCE_VBLANK1;
case VISLANDS30_IV_SRCID_D2_VBLANK:
return DC_IRQ_SOURCE_VBLANK2;
case VISLANDS30_IV_SRCID_D3_VBLANK:
return DC_IRQ_SOURCE_VBLANK3;
case VISLANDS30_IV_SRCID_D4_VBLANK:
return DC_IRQ_SOURCE_VBLANK4;
case VISLANDS30_IV_SRCID_D5_VBLANK:
return DC_IRQ_SOURCE_VBLANK5;
case VISLANDS30_IV_SRCID_D6_VBLANK:
return DC_IRQ_SOURCE_VBLANK6;
case VISLANDS30_IV_SRCID_D1_V_UPDATE_INT: case VISLANDS30_IV_SRCID_D1_V_UPDATE_INT:
return DC_IRQ_SOURCE_VUPDATE1; return DC_IRQ_SOURCE_VUPDATE1;
case VISLANDS30_IV_SRCID_D2_V_UPDATE_INT: case VISLANDS30_IV_SRCID_D2_V_UPDATE_INT:
......
...@@ -143,6 +143,22 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = { ...@@ -143,6 +143,22 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = {
.funcs = &vblank_irq_info_funcs\ .funcs = &vblank_irq_info_funcs\
} }
#define vblank_int_entry(reg_num)\
[DC_IRQ_SOURCE_VBLANK1 + reg_num] = {\
.enable_reg = mmLB ## reg_num ## _LB_INTERRUPT_MASK,\
.enable_mask =\
LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK,\
.enable_value = {\
LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK,\
~LB_INTERRUPT_MASK__VBLANK_INTERRUPT_MASK_MASK},\
.ack_reg = mmLB ## reg_num ## _LB_VBLANK_STATUS,\
.ack_mask =\
LB_VBLANK_STATUS__VBLANK_ACK_MASK,\
.ack_value =\
LB_VBLANK_STATUS__VBLANK_ACK_MASK,\
.funcs = &vblank_irq_info_funcs\
}
#define dummy_irq_entry() \ #define dummy_irq_entry() \
{\ {\
.funcs = &dummy_irq_info_funcs\ .funcs = &dummy_irq_info_funcs\
...@@ -246,6 +262,12 @@ irq_source_info_dce80[DAL_IRQ_SOURCES_NUMBER] = { ...@@ -246,6 +262,12 @@ irq_source_info_dce80[DAL_IRQ_SOURCES_NUMBER] = {
vupdate_int_entry(3), vupdate_int_entry(3),
vupdate_int_entry(4), vupdate_int_entry(4),
vupdate_int_entry(5), vupdate_int_entry(5),
vblank_int_entry(0),
vblank_int_entry(1),
vblank_int_entry(2),
vblank_int_entry(3),
vblank_int_entry(4),
vblank_int_entry(5),
}; };
static const struct irq_service_funcs irq_service_funcs_dce80 = { static const struct irq_service_funcs irq_service_funcs_dce80 = {
......
...@@ -128,6 +128,13 @@ enum dc_irq_source { ...@@ -128,6 +128,13 @@ enum dc_irq_source {
DC_IRQ_SOURCE_VUPDATE5, DC_IRQ_SOURCE_VUPDATE5,
DC_IRQ_SOURCE_VUPDATE6, DC_IRQ_SOURCE_VUPDATE6,
DC_IRQ_SOURCE_VBLANK1,
DC_IRQ_SOURCE_VBLANK2,
DC_IRQ_SOURCE_VBLANK3,
DC_IRQ_SOURCE_VBLANK4,
DC_IRQ_SOURCE_VBLANK5,
DC_IRQ_SOURCE_VBLANK6,
DAL_IRQ_SOURCES_NUMBER DAL_IRQ_SOURCES_NUMBER
}; };
...@@ -135,6 +142,7 @@ enum irq_type ...@@ -135,6 +142,7 @@ enum irq_type
{ {
IRQ_TYPE_PFLIP = DC_IRQ_SOURCE_PFLIP1, IRQ_TYPE_PFLIP = DC_IRQ_SOURCE_PFLIP1,
IRQ_TYPE_VUPDATE = DC_IRQ_SOURCE_VUPDATE1, IRQ_TYPE_VUPDATE = DC_IRQ_SOURCE_VUPDATE1,
IRQ_TYPE_VBLANK = DC_IRQ_SOURCE_VBLANK1,
}; };
#define DAL_VALID_IRQ_SRC_NUM(src) \ #define DAL_VALID_IRQ_SRC_NUM(src) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment