| .. | .. |
|---|
| 23 | 23 | * |
|---|
| 24 | 24 | */ |
|---|
| 25 | 25 | |
|---|
| 26 | +#include <linux/slab.h> |
|---|
| 27 | + |
|---|
| 26 | 28 | #include "dm_services.h" |
|---|
| 27 | 29 | |
|---|
| 28 | 30 | #include "include/logger_interface.h" |
|---|
| .. | .. |
|---|
| 36 | 38 | |
|---|
| 37 | 39 | #include "irq_service_dcn10.h" |
|---|
| 38 | 40 | |
|---|
| 39 | | -#include "ivsrcid/irqsrcs_dcn_1_0.h" |
|---|
| 41 | +#include "ivsrcid/dcn/irqsrcs_dcn_1_0.h" |
|---|
| 40 | 42 | |
|---|
| 41 | 43 | enum dc_irq_source to_dal_irq_source_dcn10( |
|---|
| 42 | 44 | struct irq_service *irq_service, |
|---|
| .. | .. |
|---|
| 56 | 58 | return DC_IRQ_SOURCE_VBLANK5; |
|---|
| 57 | 59 | case DCN_1_0__SRCID__DC_D6_OTG_VSTARTUP: |
|---|
| 58 | 60 | return DC_IRQ_SOURCE_VBLANK6; |
|---|
| 61 | + case DCN_1_0__SRCID__OTG0_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 62 | + return DC_IRQ_SOURCE_VUPDATE1; |
|---|
| 63 | + case DCN_1_0__SRCID__OTG1_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 64 | + return DC_IRQ_SOURCE_VUPDATE2; |
|---|
| 65 | + case DCN_1_0__SRCID__OTG2_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 66 | + return DC_IRQ_SOURCE_VUPDATE3; |
|---|
| 67 | + case DCN_1_0__SRCID__OTG3_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 68 | + return DC_IRQ_SOURCE_VUPDATE4; |
|---|
| 69 | + case DCN_1_0__SRCID__OTG4_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 70 | + return DC_IRQ_SOURCE_VUPDATE5; |
|---|
| 71 | + case DCN_1_0__SRCID__OTG5_IHC_V_UPDATE_NO_LOCK_INTERRUPT: |
|---|
| 72 | + return DC_IRQ_SOURCE_VUPDATE6; |
|---|
| 59 | 73 | case DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT: |
|---|
| 60 | 74 | return DC_IRQ_SOURCE_PFLIP1; |
|---|
| 61 | 75 | case DCN_1_0__SRCID__HUBP1_FLIP_INTERRUPT: |
|---|
| .. | .. |
|---|
| 153 | 167 | .ack = NULL |
|---|
| 154 | 168 | }; |
|---|
| 155 | 169 | |
|---|
| 170 | +static const struct irq_source_info_funcs vupdate_no_lock_irq_info_funcs = { |
|---|
| 171 | + .set = NULL, |
|---|
| 172 | + .ack = NULL |
|---|
| 173 | +}; |
|---|
| 174 | + |
|---|
| 156 | 175 | #define BASE_INNER(seg) \ |
|---|
| 157 | 176 | DCE_BASE__INST0_SEG ## seg |
|---|
| 158 | 177 | |
|---|
| .. | .. |
|---|
| 203 | 222 | .funcs = &pflip_irq_info_funcs\ |
|---|
| 204 | 223 | } |
|---|
| 205 | 224 | |
|---|
| 206 | | -#define vupdate_int_entry(reg_num)\ |
|---|
| 225 | +/* vupdate_no_lock_int_entry maps to DC_IRQ_SOURCE_VUPDATEx, to match semantic |
|---|
| 226 | + * of DCE's DC_IRQ_SOURCE_VUPDATEx. |
|---|
| 227 | + */ |
|---|
| 228 | +#define vupdate_no_lock_int_entry(reg_num)\ |
|---|
| 207 | 229 | [DC_IRQ_SOURCE_VUPDATE1 + reg_num] = {\ |
|---|
| 208 | 230 | IRQ_REG_ENTRY(OTG, reg_num,\ |
|---|
| 209 | | - OTG_GLOBAL_SYNC_STATUS, VUPDATE_INT_EN,\ |
|---|
| 210 | | - OTG_GLOBAL_SYNC_STATUS, VUPDATE_EVENT_CLEAR),\ |
|---|
| 211 | | - .funcs = &vblank_irq_info_funcs\ |
|---|
| 231 | + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_INT_EN,\ |
|---|
| 232 | + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_EVENT_CLEAR),\ |
|---|
| 233 | + .funcs = &vupdate_no_lock_irq_info_funcs\ |
|---|
| 212 | 234 | } |
|---|
| 213 | 235 | |
|---|
| 214 | 236 | #define vblank_int_entry(reg_num)\ |
|---|
| .. | .. |
|---|
| 315 | 337 | dc_underflow_int_entry(6), |
|---|
| 316 | 338 | [DC_IRQ_SOURCE_DMCU_SCP] = dummy_irq_entry(), |
|---|
| 317 | 339 | [DC_IRQ_SOURCE_VBIOS_SW] = dummy_irq_entry(), |
|---|
| 318 | | - vupdate_int_entry(0), |
|---|
| 319 | | - vupdate_int_entry(1), |
|---|
| 320 | | - vupdate_int_entry(2), |
|---|
| 321 | | - vupdate_int_entry(3), |
|---|
| 322 | | - vupdate_int_entry(4), |
|---|
| 323 | | - vupdate_int_entry(5), |
|---|
| 340 | + vupdate_no_lock_int_entry(0), |
|---|
| 341 | + vupdate_no_lock_int_entry(1), |
|---|
| 342 | + vupdate_no_lock_int_entry(2), |
|---|
| 343 | + vupdate_no_lock_int_entry(3), |
|---|
| 344 | + vupdate_no_lock_int_entry(4), |
|---|
| 345 | + vupdate_no_lock_int_entry(5), |
|---|
| 324 | 346 | vblank_int_entry(0), |
|---|
| 325 | 347 | vblank_int_entry(1), |
|---|
| 326 | 348 | vblank_int_entry(2), |
|---|
| .. | .. |
|---|
| 333 | 355 | .to_dal_irq_source = to_dal_irq_source_dcn10 |
|---|
| 334 | 356 | }; |
|---|
| 335 | 357 | |
|---|
| 336 | | -static void construct( |
|---|
| 358 | +static void dcn10_irq_construct( |
|---|
| 337 | 359 | struct irq_service *irq_service, |
|---|
| 338 | 360 | struct irq_service_init_data *init_data) |
|---|
| 339 | 361 | { |
|---|
| .. | .. |
|---|
| 352 | 374 | if (!irq_service) |
|---|
| 353 | 375 | return NULL; |
|---|
| 354 | 376 | |
|---|
| 355 | | - construct(irq_service, init_data); |
|---|
| 377 | + dcn10_irq_construct(irq_service, init_data); |
|---|
| 356 | 378 | return irq_service; |
|---|
| 357 | 379 | } |
|---|