Commit 0f9e006c authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie

drm/radeon/kms: reorganize page flip callbacks

tidy up the radeon_asic struct.
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
Reviewed-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 901ea57d
...@@ -1205,9 +1205,11 @@ struct radeon_asic { ...@@ -1205,9 +1205,11 @@ struct radeon_asic {
void (*pm_init_profile)(struct radeon_device *rdev); void (*pm_init_profile)(struct radeon_device *rdev);
void (*pm_get_dynpm_state)(struct radeon_device *rdev); void (*pm_get_dynpm_state)(struct radeon_device *rdev);
/* pageflipping */ /* pageflipping */
struct {
void (*pre_page_flip)(struct radeon_device *rdev, int crtc); void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base); u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
void (*post_page_flip)(struct radeon_device *rdev, int crtc); void (*post_page_flip)(struct radeon_device *rdev, int crtc);
} pflip;
/* wait for vblank */ /* wait for vblank */
void (*wait_for_vblank)(struct radeon_device *rdev, int crtc); void (*wait_for_vblank)(struct radeon_device *rdev, int crtc);
/* wait for mc_idle */ /* wait for mc_idle */
...@@ -1697,9 +1699,9 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v); ...@@ -1697,9 +1699,9 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
#define radeon_pm_finish(rdev) (rdev)->asic->pm_finish((rdev)) #define radeon_pm_finish(rdev) (rdev)->asic->pm_finish((rdev))
#define radeon_pm_init_profile(rdev) (rdev)->asic->pm_init_profile((rdev)) #define radeon_pm_init_profile(rdev) (rdev)->asic->pm_init_profile((rdev))
#define radeon_pm_get_dynpm_state(rdev) (rdev)->asic->pm_get_dynpm_state((rdev)) #define radeon_pm_get_dynpm_state(rdev) (rdev)->asic->pm_get_dynpm_state((rdev))
#define radeon_pre_page_flip(rdev, crtc) rdev->asic->pre_page_flip((rdev), (crtc)) #define radeon_pre_page_flip(rdev, crtc) rdev->asic->pflip.pre_page_flip((rdev), (crtc))
#define radeon_page_flip(rdev, crtc, base) rdev->asic->page_flip((rdev), (crtc), (base)) #define radeon_page_flip(rdev, crtc, base) rdev->asic->pflip.page_flip((rdev), (crtc), (base))
#define radeon_post_page_flip(rdev, crtc) rdev->asic->post_page_flip((rdev), (crtc)) #define radeon_post_page_flip(rdev, crtc) rdev->asic->pflip.post_page_flip((rdev), (crtc))
#define radeon_wait_for_vblank(rdev, crtc) rdev->asic->wait_for_vblank((rdev), (crtc)) #define radeon_wait_for_vblank(rdev, crtc) rdev->asic->wait_for_vblank((rdev), (crtc))
#define radeon_mc_wait_for_idle(rdev) rdev->asic->mc_wait_for_idle((rdev)) #define radeon_mc_wait_for_idle(rdev) rdev->asic->mc_wait_for_idle((rdev))
......
...@@ -177,9 +177,11 @@ static struct radeon_asic r100_asic = { ...@@ -177,9 +177,11 @@ static struct radeon_asic r100_asic = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r100_pm_init_profile, .pm_init_profile = &r100_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &r100_mc_wait_for_idle, .mc_wait_for_idle = &r100_mc_wait_for_idle,
}; };
...@@ -232,9 +234,11 @@ static struct radeon_asic r200_asic = { ...@@ -232,9 +234,11 @@ static struct radeon_asic r200_asic = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r100_pm_init_profile, .pm_init_profile = &r100_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &r100_mc_wait_for_idle, .mc_wait_for_idle = &r100_mc_wait_for_idle,
}; };
...@@ -288,9 +292,11 @@ static struct radeon_asic r300_asic = { ...@@ -288,9 +292,11 @@ static struct radeon_asic r300_asic = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r100_pm_init_profile, .pm_init_profile = &r100_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &r300_mc_wait_for_idle, .mc_wait_for_idle = &r300_mc_wait_for_idle,
}; };
...@@ -343,9 +349,11 @@ static struct radeon_asic r300_asic_pcie = { ...@@ -343,9 +349,11 @@ static struct radeon_asic r300_asic_pcie = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r100_pm_init_profile, .pm_init_profile = &r100_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &r300_mc_wait_for_idle, .mc_wait_for_idle = &r300_mc_wait_for_idle,
}; };
...@@ -399,9 +407,11 @@ static struct radeon_asic r420_asic = { ...@@ -399,9 +407,11 @@ static struct radeon_asic r420_asic = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r420_pm_init_profile, .pm_init_profile = &r420_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &r300_mc_wait_for_idle, .mc_wait_for_idle = &r300_mc_wait_for_idle,
}; };
...@@ -455,9 +465,11 @@ static struct radeon_asic rs400_asic = { ...@@ -455,9 +465,11 @@ static struct radeon_asic rs400_asic = {
.pm_finish = &r100_pm_finish, .pm_finish = &r100_pm_finish,
.pm_init_profile = &r100_pm_init_profile, .pm_init_profile = &r100_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &r100_pre_page_flip, .pre_page_flip = &r100_pre_page_flip,
.page_flip = &r100_page_flip, .page_flip = &r100_page_flip,
.post_page_flip = &r100_post_page_flip, .post_page_flip = &r100_post_page_flip,
},
.wait_for_vblank = &r100_wait_for_vblank, .wait_for_vblank = &r100_wait_for_vblank,
.mc_wait_for_idle = &rs400_mc_wait_for_idle, .mc_wait_for_idle = &rs400_mc_wait_for_idle,
}; };
...@@ -511,9 +523,11 @@ static struct radeon_asic rs600_asic = { ...@@ -511,9 +523,11 @@ static struct radeon_asic rs600_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r420_pm_init_profile, .pm_init_profile = &r420_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &rs600_mc_wait_for_idle, .mc_wait_for_idle = &rs600_mc_wait_for_idle,
}; };
...@@ -567,9 +581,11 @@ static struct radeon_asic rs690_asic = { ...@@ -567,9 +581,11 @@ static struct radeon_asic rs690_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r420_pm_init_profile, .pm_init_profile = &r420_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &rs690_mc_wait_for_idle, .mc_wait_for_idle = &rs690_mc_wait_for_idle,
}; };
...@@ -623,9 +639,11 @@ static struct radeon_asic rv515_asic = { ...@@ -623,9 +639,11 @@ static struct radeon_asic rv515_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r420_pm_init_profile, .pm_init_profile = &r420_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &rv515_mc_wait_for_idle, .mc_wait_for_idle = &rv515_mc_wait_for_idle,
}; };
...@@ -679,9 +697,11 @@ static struct radeon_asic r520_asic = { ...@@ -679,9 +697,11 @@ static struct radeon_asic r520_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r420_pm_init_profile, .pm_init_profile = &r420_pm_init_profile,
.pm_get_dynpm_state = &r100_pm_get_dynpm_state, .pm_get_dynpm_state = &r100_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &r520_mc_wait_for_idle, .mc_wait_for_idle = &r520_mc_wait_for_idle,
}; };
...@@ -734,9 +754,11 @@ static struct radeon_asic r600_asic = { ...@@ -734,9 +754,11 @@ static struct radeon_asic r600_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r600_pm_init_profile, .pm_init_profile = &r600_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &r600_mc_wait_for_idle, .mc_wait_for_idle = &r600_mc_wait_for_idle,
}; };
...@@ -789,9 +811,11 @@ static struct radeon_asic rs780_asic = { ...@@ -789,9 +811,11 @@ static struct radeon_asic rs780_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &rs780_pm_init_profile, .pm_init_profile = &rs780_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rs600_page_flip, .page_flip = &rs600_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &r600_mc_wait_for_idle, .mc_wait_for_idle = &r600_mc_wait_for_idle,
}; };
...@@ -844,9 +868,11 @@ static struct radeon_asic rv770_asic = { ...@@ -844,9 +868,11 @@ static struct radeon_asic rv770_asic = {
.pm_finish = &rs600_pm_finish, .pm_finish = &rs600_pm_finish,
.pm_init_profile = &r600_pm_init_profile, .pm_init_profile = &r600_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &rs600_pre_page_flip, .pre_page_flip = &rs600_pre_page_flip,
.page_flip = &rv770_page_flip, .page_flip = &rv770_page_flip,
.post_page_flip = &rs600_post_page_flip, .post_page_flip = &rs600_post_page_flip,
},
.wait_for_vblank = &avivo_wait_for_vblank, .wait_for_vblank = &avivo_wait_for_vblank,
.mc_wait_for_idle = &r600_mc_wait_for_idle, .mc_wait_for_idle = &r600_mc_wait_for_idle,
}; };
...@@ -899,9 +925,11 @@ static struct radeon_asic evergreen_asic = { ...@@ -899,9 +925,11 @@ static struct radeon_asic evergreen_asic = {
.pm_finish = &evergreen_pm_finish, .pm_finish = &evergreen_pm_finish,
.pm_init_profile = &r600_pm_init_profile, .pm_init_profile = &r600_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &evergreen_pre_page_flip, .pre_page_flip = &evergreen_pre_page_flip,
.page_flip = &evergreen_page_flip, .page_flip = &evergreen_page_flip,
.post_page_flip = &evergreen_post_page_flip, .post_page_flip = &evergreen_post_page_flip,
},
.wait_for_vblank = &dce4_wait_for_vblank, .wait_for_vblank = &dce4_wait_for_vblank,
.mc_wait_for_idle = &evergreen_mc_wait_for_idle, .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
}; };
...@@ -954,9 +982,11 @@ static struct radeon_asic sumo_asic = { ...@@ -954,9 +982,11 @@ static struct radeon_asic sumo_asic = {
.pm_finish = &evergreen_pm_finish, .pm_finish = &evergreen_pm_finish,
.pm_init_profile = &sumo_pm_init_profile, .pm_init_profile = &sumo_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &evergreen_pre_page_flip, .pre_page_flip = &evergreen_pre_page_flip,
.page_flip = &evergreen_page_flip, .page_flip = &evergreen_page_flip,
.post_page_flip = &evergreen_post_page_flip, .post_page_flip = &evergreen_post_page_flip,
},
.wait_for_vblank = &dce4_wait_for_vblank, .wait_for_vblank = &dce4_wait_for_vblank,
.mc_wait_for_idle = &evergreen_mc_wait_for_idle, .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
}; };
...@@ -1009,9 +1039,11 @@ static struct radeon_asic btc_asic = { ...@@ -1009,9 +1039,11 @@ static struct radeon_asic btc_asic = {
.pm_finish = &evergreen_pm_finish, .pm_finish = &evergreen_pm_finish,
.pm_init_profile = &r600_pm_init_profile, .pm_init_profile = &r600_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &evergreen_pre_page_flip, .pre_page_flip = &evergreen_pre_page_flip,
.page_flip = &evergreen_page_flip, .page_flip = &evergreen_page_flip,
.post_page_flip = &evergreen_post_page_flip, .post_page_flip = &evergreen_post_page_flip,
},
.wait_for_vblank = &dce4_wait_for_vblank, .wait_for_vblank = &dce4_wait_for_vblank,
.mc_wait_for_idle = &evergreen_mc_wait_for_idle, .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
}; };
...@@ -1087,9 +1119,11 @@ static struct radeon_asic cayman_asic = { ...@@ -1087,9 +1119,11 @@ static struct radeon_asic cayman_asic = {
.pm_finish = &evergreen_pm_finish, .pm_finish = &evergreen_pm_finish,
.pm_init_profile = &r600_pm_init_profile, .pm_init_profile = &r600_pm_init_profile,
.pm_get_dynpm_state = &r600_pm_get_dynpm_state, .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
.pflip = {
.pre_page_flip = &evergreen_pre_page_flip, .pre_page_flip = &evergreen_pre_page_flip,
.page_flip = &evergreen_page_flip, .page_flip = &evergreen_page_flip,
.post_page_flip = &evergreen_post_page_flip, .post_page_flip = &evergreen_post_page_flip,
},
.wait_for_vblank = &dce4_wait_for_vblank, .wait_for_vblank = &dce4_wait_for_vblank,
.mc_wait_for_idle = &evergreen_mc_wait_for_idle, .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
}; };
......
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