diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-03-24 13:55:51 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-04-08 20:16:09 -0400 |
commit | 45f9a39bedc3afab3fc85567792efc0103f34a55 (patch) | |
tree | 57a16fa09b3c31ee56d9c4803de00a477d7396ff /drivers/gpu/drm/radeon/evergreend.h | |
parent | fe251e2fffa1ebc17c8e6e895b0374ae4e732fa5 (diff) |
drm/radeon/kms/evergreen: implement irq support
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreend.h')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreend.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h index 10e9768534da..93e9e17ad54a 100644 --- a/drivers/gpu/drm/radeon/evergreend.h +++ b/drivers/gpu/drm/radeon/evergreend.h | |||
@@ -405,4 +405,152 @@ | |||
405 | #define SOFT_RESET_REGBB (1 << 22) | 405 | #define SOFT_RESET_REGBB (1 << 22) |
406 | #define SOFT_RESET_ORB (1 << 23) | 406 | #define SOFT_RESET_ORB (1 << 23) |
407 | 407 | ||
408 | #define IH_RB_CNTL 0x3e00 | ||
409 | # define IH_RB_ENABLE (1 << 0) | ||
410 | # define IH_IB_SIZE(x) ((x) << 1) /* log2 */ | ||
411 | # define IH_RB_FULL_DRAIN_ENABLE (1 << 6) | ||
412 | # define IH_WPTR_WRITEBACK_ENABLE (1 << 8) | ||
413 | # define IH_WPTR_WRITEBACK_TIMER(x) ((x) << 9) /* log2 */ | ||
414 | # define IH_WPTR_OVERFLOW_ENABLE (1 << 16) | ||
415 | # define IH_WPTR_OVERFLOW_CLEAR (1 << 31) | ||
416 | #define IH_RB_BASE 0x3e04 | ||
417 | #define IH_RB_RPTR 0x3e08 | ||
418 | #define IH_RB_WPTR 0x3e0c | ||
419 | # define RB_OVERFLOW (1 << 0) | ||
420 | # define WPTR_OFFSET_MASK 0x3fffc | ||
421 | #define IH_RB_WPTR_ADDR_HI 0x3e10 | ||
422 | #define IH_RB_WPTR_ADDR_LO 0x3e14 | ||
423 | #define IH_CNTL 0x3e18 | ||
424 | # define ENABLE_INTR (1 << 0) | ||
425 | # define IH_MC_SWAP(x) ((x) << 2) | ||
426 | # define IH_MC_SWAP_NONE 0 | ||
427 | # define IH_MC_SWAP_16BIT 1 | ||
428 | # define IH_MC_SWAP_32BIT 2 | ||
429 | # define IH_MC_SWAP_64BIT 3 | ||
430 | # define RPTR_REARM (1 << 4) | ||
431 | # define MC_WRREQ_CREDIT(x) ((x) << 15) | ||
432 | # define MC_WR_CLEAN_CNT(x) ((x) << 20) | ||
433 | |||
434 | #define CP_INT_CNTL 0xc124 | ||
435 | # define CNTX_BUSY_INT_ENABLE (1 << 19) | ||
436 | # define CNTX_EMPTY_INT_ENABLE (1 << 20) | ||
437 | # define SCRATCH_INT_ENABLE (1 << 25) | ||
438 | # define TIME_STAMP_INT_ENABLE (1 << 26) | ||
439 | # define IB2_INT_ENABLE (1 << 29) | ||
440 | # define IB1_INT_ENABLE (1 << 30) | ||
441 | # define RB_INT_ENABLE (1 << 31) | ||
442 | #define CP_INT_STATUS 0xc128 | ||
443 | # define SCRATCH_INT_STAT (1 << 25) | ||
444 | # define TIME_STAMP_INT_STAT (1 << 26) | ||
445 | # define IB2_INT_STAT (1 << 29) | ||
446 | # define IB1_INT_STAT (1 << 30) | ||
447 | # define RB_INT_STAT (1 << 31) | ||
448 | |||
449 | #define GRBM_INT_CNTL 0x8060 | ||
450 | # define RDERR_INT_ENABLE (1 << 0) | ||
451 | # define GUI_IDLE_INT_ENABLE (1 << 19) | ||
452 | |||
453 | /* 0x6e98, 0x7a98, 0x10698, 0x11298, 0x11e98, 0x12a98 */ | ||
454 | #define CRTC_STATUS_FRAME_COUNT 0x6e98 | ||
455 | |||
456 | /* 0x6bb8, 0x77b8, 0x103b8, 0x10fb8, 0x11bb8, 0x127b8 */ | ||
457 | #define VLINE_STATUS 0x6bb8 | ||
458 | # define VLINE_OCCURRED (1 << 0) | ||
459 | # define VLINE_ACK (1 << 4) | ||
460 | # define VLINE_STAT (1 << 12) | ||
461 | # define VLINE_INTERRUPT (1 << 16) | ||
462 | # define VLINE_INTERRUPT_TYPE (1 << 17) | ||
463 | /* 0x6bbc, 0x77bc, 0x103bc, 0x10fbc, 0x11bbc, 0x127bc */ | ||
464 | #define VBLANK_STATUS 0x6bbc | ||
465 | # define VBLANK_OCCURRED (1 << 0) | ||
466 | # define VBLANK_ACK (1 << 4) | ||
467 | # define VBLANK_STAT (1 << 12) | ||
468 | # define VBLANK_INTERRUPT (1 << 16) | ||
469 | # define VBLANK_INTERRUPT_TYPE (1 << 17) | ||
470 | |||
471 | /* 0x6b40, 0x7740, 0x10340, 0x10f40, 0x11b40, 0x12740 */ | ||
472 | #define INT_MASK 0x6b40 | ||
473 | # define VBLANK_INT_MASK (1 << 0) | ||
474 | # define VLINE_INT_MASK (1 << 4) | ||
475 | |||
476 | #define DISP_INTERRUPT_STATUS 0x60f4 | ||
477 | # define LB_D1_VLINE_INTERRUPT (1 << 2) | ||
478 | # define LB_D1_VBLANK_INTERRUPT (1 << 3) | ||
479 | # define DC_HPD1_INTERRUPT (1 << 17) | ||
480 | # define DC_HPD1_RX_INTERRUPT (1 << 18) | ||
481 | # define DACA_AUTODETECT_INTERRUPT (1 << 22) | ||
482 | # define DACB_AUTODETECT_INTERRUPT (1 << 23) | ||
483 | # define DC_I2C_SW_DONE_INTERRUPT (1 << 24) | ||
484 | # define DC_I2C_HW_DONE_INTERRUPT (1 << 25) | ||
485 | #define DISP_INTERRUPT_STATUS_CONTINUE 0x60f8 | ||
486 | # define LB_D2_VLINE_INTERRUPT (1 << 2) | ||
487 | # define LB_D2_VBLANK_INTERRUPT (1 << 3) | ||
488 | # define DC_HPD2_INTERRUPT (1 << 17) | ||
489 | # define DC_HPD2_RX_INTERRUPT (1 << 18) | ||
490 | # define DISP_TIMER_INTERRUPT (1 << 24) | ||
491 | #define DISP_INTERRUPT_STATUS_CONTINUE2 0x60fc | ||
492 | # define LB_D3_VLINE_INTERRUPT (1 << 2) | ||
493 | # define LB_D3_VBLANK_INTERRUPT (1 << 3) | ||
494 | # define DC_HPD3_INTERRUPT (1 << 17) | ||
495 | # define DC_HPD3_RX_INTERRUPT (1 << 18) | ||
496 | #define DISP_INTERRUPT_STATUS_CONTINUE3 0x6100 | ||
497 | # define LB_D4_VLINE_INTERRUPT (1 << 2) | ||
498 | # define LB_D4_VBLANK_INTERRUPT (1 << 3) | ||
499 | # define DC_HPD4_INTERRUPT (1 << 17) | ||
500 | # define DC_HPD4_RX_INTERRUPT (1 << 18) | ||
501 | #define DISP_INTERRUPT_STATUS_CONTINUE4 0x614c | ||
502 | # define LB_D5_VLINE_INTERRUPT (1 << 2) | ||
503 | # define LB_D5_VBLANK_INTERRUPT (1 << 3) | ||
504 | # define DC_HPD5_INTERRUPT (1 << 17) | ||
505 | # define DC_HPD5_RX_INTERRUPT (1 << 18) | ||
506 | #define DISP_INTERRUPT_STATUS_CONTINUE5 0x6050 | ||
507 | # define LB_D6_VLINE_INTERRUPT (1 << 2) | ||
508 | # define LB_D6_VBLANK_INTERRUPT (1 << 3) | ||
509 | # define DC_HPD6_INTERRUPT (1 << 17) | ||
510 | # define DC_HPD6_RX_INTERRUPT (1 << 18) | ||
511 | |||
512 | /* 0x6858, 0x7458, 0x10058, 0x10c58, 0x11858, 0x12458 */ | ||
513 | #define GRPH_INT_STATUS 0x6858 | ||
514 | # define GRPH_PFLIP_INT_OCCURRED (1 << 0) | ||
515 | # define GRPH_PFLIP_INT_CLEAR (1 << 8) | ||
516 | /* 0x685c, 0x745c, 0x1005c, 0x10c5c, 0x1185c, 0x1245c */ | ||
517 | #define GRPH_INT_CONTROL 0x685c | ||
518 | # define GRPH_PFLIP_INT_MASK (1 << 0) | ||
519 | # define GRPH_PFLIP_INT_TYPE (1 << 8) | ||
520 | |||
521 | #define DACA_AUTODETECT_INT_CONTROL 0x66c8 | ||
522 | #define DACB_AUTODETECT_INT_CONTROL 0x67c8 | ||
523 | |||
524 | #define DC_HPD1_INT_STATUS 0x601c | ||
525 | #define DC_HPD2_INT_STATUS 0x6028 | ||
526 | #define DC_HPD3_INT_STATUS 0x6034 | ||
527 | #define DC_HPD4_INT_STATUS 0x6040 | ||
528 | #define DC_HPD5_INT_STATUS 0x604c | ||
529 | #define DC_HPD6_INT_STATUS 0x6058 | ||
530 | # define DC_HPDx_INT_STATUS (1 << 0) | ||
531 | # define DC_HPDx_SENSE (1 << 1) | ||
532 | # define DC_HPDx_RX_INT_STATUS (1 << 8) | ||
533 | |||
534 | #define DC_HPD1_INT_CONTROL 0x6020 | ||
535 | #define DC_HPD2_INT_CONTROL 0x602c | ||
536 | #define DC_HPD3_INT_CONTROL 0x6038 | ||
537 | #define DC_HPD4_INT_CONTROL 0x6044 | ||
538 | #define DC_HPD5_INT_CONTROL 0x6050 | ||
539 | #define DC_HPD6_INT_CONTROL 0x605c | ||
540 | # define DC_HPDx_INT_ACK (1 << 0) | ||
541 | # define DC_HPDx_INT_POLARITY (1 << 8) | ||
542 | # define DC_HPDx_INT_EN (1 << 16) | ||
543 | # define DC_HPDx_RX_INT_ACK (1 << 20) | ||
544 | # define DC_HPDx_RX_INT_EN (1 << 24) | ||
545 | |||
546 | #define DC_HPD1_CONTROL 0x6024 | ||
547 | #define DC_HPD2_CONTROL 0x6030 | ||
548 | #define DC_HPD3_CONTROL 0x603c | ||
549 | #define DC_HPD4_CONTROL 0x6048 | ||
550 | #define DC_HPD5_CONTROL 0x6054 | ||
551 | #define DC_HPD6_CONTROL 0x6060 | ||
552 | # define DC_HPDx_CONNECTION_TIMER(x) ((x) << 0) | ||
553 | # define DC_HPDx_RX_INT_TIMER(x) ((x) << 16) | ||
554 | # define DC_HPDx_EN (1 << 28) | ||
555 | |||
408 | #endif | 556 | #endif |