From: Jerome Glisse <j.glisse@gmail.com>
To: alexdeucher@gmail.com
Cc: Alex Deucher <alexander.deucher@amd.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [drm-next 02/14] drm/radeon/kms: add a radeon asic callback for mc idle
Date: Fri, 24 Feb 2012 11:58:12 -0500 [thread overview]
Message-ID: <1330102692.2133.0.camel@localhost.localdomain> (raw)
In-Reply-To: <1330037630-1895-3-git-send-email-alexdeucher@gmail.com>
On Thu, 2012-02-23 at 17:53 -0500, alexdeucher@gmail.com wrote:
> From: Alex Deucher <alexander.deucher@amd.com>
>
> Required for future functionality.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
> ---
> drivers/gpu/drm/radeon/r520.c | 2 +-
> drivers/gpu/drm/radeon/radeon.h | 3 +++
> drivers/gpu/drm/radeon/radeon_asic.c | 17 +++++++++++++++++
> drivers/gpu/drm/radeon/radeon_asic.h | 10 +++++++++-
> drivers/gpu/drm/radeon/rs690.c | 2 +-
> 5 files changed, 31 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c
> index 25084e8..8a9dab0 100644
> --- a/drivers/gpu/drm/radeon/r520.c
> +++ b/drivers/gpu/drm/radeon/r520.c
> @@ -33,7 +33,7 @@
>
> /* This files gather functions specifics to: r520,rv530,rv560,rv570,r580 */
>
> -static int r520_mc_wait_for_idle(struct radeon_device *rdev)
> +int r520_mc_wait_for_idle(struct radeon_device *rdev)
> {
> unsigned i;
> uint32_t tmp;
> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index 76d08d8..3906927 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -1203,6 +1203,8 @@ struct radeon_asic {
> void (*post_page_flip)(struct radeon_device *rdev, int crtc);
> /* wait for vblank */
> void (*wait_for_vblank)(struct radeon_device *rdev, int crtc);
> + /* wait for mc_idle */
> + int (*mc_wait_for_idle)(struct radeon_device *rdev);
> };
>
> /*
> @@ -1692,6 +1694,7 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
> #define radeon_page_flip(rdev, crtc, base) rdev->asic->page_flip((rdev), (crtc), (base))
> #define radeon_post_page_flip(rdev, crtc) rdev->asic->post_page_flip((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))
>
> /* Common functions */
> /* AGP */
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
> index 67f809e..9f20546 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.c
> +++ b/drivers/gpu/drm/radeon/radeon_asic.c
> @@ -179,6 +179,7 @@ static struct radeon_asic r100_asic = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &r100_mc_wait_for_idle,
> };
>
> static struct radeon_asic r200_asic = {
> @@ -231,6 +232,7 @@ static struct radeon_asic r200_asic = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &r100_mc_wait_for_idle,
> };
>
> static struct radeon_asic r300_asic = {
> @@ -284,6 +286,7 @@ static struct radeon_asic r300_asic = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &r300_mc_wait_for_idle,
> };
>
> static struct radeon_asic r300_asic_pcie = {
> @@ -336,6 +339,7 @@ static struct radeon_asic r300_asic_pcie = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &r300_mc_wait_for_idle,
> };
>
> static struct radeon_asic r420_asic = {
> @@ -389,6 +393,7 @@ static struct radeon_asic r420_asic = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &r300_mc_wait_for_idle,
> };
>
> static struct radeon_asic rs400_asic = {
> @@ -442,6 +447,7 @@ static struct radeon_asic rs400_asic = {
> .page_flip = &r100_page_flip,
> .post_page_flip = &r100_post_page_flip,
> .wait_for_vblank = &r100_wait_for_vblank,
> + .mc_wait_for_idle = &rs400_mc_wait_for_idle,
> };
>
> static struct radeon_asic rs600_asic = {
> @@ -495,6 +501,7 @@ static struct radeon_asic rs600_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &rs600_mc_wait_for_idle,
> };
>
> static struct radeon_asic rs690_asic = {
> @@ -548,6 +555,7 @@ static struct radeon_asic rs690_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &rs690_mc_wait_for_idle,
> };
>
> static struct radeon_asic rv515_asic = {
> @@ -601,6 +609,7 @@ static struct radeon_asic rv515_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &rv515_mc_wait_for_idle,
> };
>
> static struct radeon_asic r520_asic = {
> @@ -654,6 +663,7 @@ static struct radeon_asic r520_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &r520_mc_wait_for_idle,
> };
>
> static struct radeon_asic r600_asic = {
> @@ -706,6 +716,7 @@ static struct radeon_asic r600_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &r600_mc_wait_for_idle,
> };
>
> static struct radeon_asic rs780_asic = {
> @@ -758,6 +769,7 @@ static struct radeon_asic rs780_asic = {
> .page_flip = &rs600_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &r600_mc_wait_for_idle,
> };
>
> static struct radeon_asic rv770_asic = {
> @@ -810,6 +822,7 @@ static struct radeon_asic rv770_asic = {
> .page_flip = &rv770_page_flip,
> .post_page_flip = &rs600_post_page_flip,
> .wait_for_vblank = &avivo_wait_for_vblank,
> + .mc_wait_for_idle = &r600_mc_wait_for_idle,
> };
>
> static struct radeon_asic evergreen_asic = {
> @@ -862,6 +875,7 @@ static struct radeon_asic evergreen_asic = {
> .page_flip = &evergreen_page_flip,
> .post_page_flip = &evergreen_post_page_flip,
> .wait_for_vblank = &dce4_wait_for_vblank,
> + .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
> };
>
> static struct radeon_asic sumo_asic = {
> @@ -914,6 +928,7 @@ static struct radeon_asic sumo_asic = {
> .page_flip = &evergreen_page_flip,
> .post_page_flip = &evergreen_post_page_flip,
> .wait_for_vblank = &dce4_wait_for_vblank,
> + .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
> };
>
> static struct radeon_asic btc_asic = {
> @@ -966,6 +981,7 @@ static struct radeon_asic btc_asic = {
> .page_flip = &evergreen_page_flip,
> .post_page_flip = &evergreen_post_page_flip,
> .wait_for_vblank = &dce4_wait_for_vblank,
> + .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
> };
>
> static const struct radeon_vm_funcs cayman_vm_funcs = {
> @@ -1043,6 +1059,7 @@ static struct radeon_asic cayman_asic = {
> .page_flip = &evergreen_page_flip,
> .post_page_flip = &evergreen_post_page_flip,
> .wait_for_vblank = &dce4_wait_for_vblank,
> + .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
> };
>
> int radeon_asic_init(struct radeon_device *rdev)
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
> index d9df84f..fd8d5da 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.h
> +++ b/drivers/gpu/drm/radeon/radeon_asic.h
> @@ -140,6 +140,7 @@ extern void r100_pre_page_flip(struct radeon_device *rdev, int crtc);
> extern u32 r100_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base);
> extern void r100_post_page_flip(struct radeon_device *rdev, int crtc);
> extern void r100_wait_for_vblank(struct radeon_device *rdev, int crtc);
> +extern int r100_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * r200,rv250,rs300,rv280
> @@ -177,6 +178,7 @@ extern int rv370_pcie_gart_init(struct radeon_device *rdev);
> extern void rv370_pcie_gart_fini(struct radeon_device *rdev);
> extern int rv370_pcie_gart_enable(struct radeon_device *rdev);
> extern void rv370_pcie_gart_disable(struct radeon_device *rdev);
> +extern int r300_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * r420,r423,rv410
> @@ -207,6 +209,7 @@ int rs400_gart_enable(struct radeon_device *rdev);
> void rs400_gart_adjust_size(struct radeon_device *rdev);
> void rs400_gart_disable(struct radeon_device *rdev);
> void rs400_gart_fini(struct radeon_device *rdev);
> +extern int rs400_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * rs600.
> @@ -238,6 +241,7 @@ extern u32 rs600_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base);
> extern void rs600_post_page_flip(struct radeon_device *rdev, int crtc);
> void rs600_set_safe_registers(struct radeon_device *rdev);
> extern void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc);
> +extern int rs600_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * rs690,rs740
> @@ -252,6 +256,7 @@ void rs690_bandwidth_update(struct radeon_device *rdev);
> void rs690_line_buffer_adjust(struct radeon_device *rdev,
> struct drm_display_mode *mode1,
> struct drm_display_mode *mode2);
> +extern int rs690_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * rv515
> @@ -279,13 +284,14 @@ void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save);
> void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save);
> void rv515_clock_startup(struct radeon_device *rdev);
> void rv515_debugfs(struct radeon_device *rdev);
> -
> +int rv515_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * r520,rv530,rv560,rv570,r580
> */
> int r520_init(struct radeon_device *rdev);
> int r520_resume(struct radeon_device *rdev);
> +int r520_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * r600,rv610,rv630,rv620,rv635,rv670,rs780,rs880
> @@ -376,6 +382,7 @@ void r600_blit_done_copy(struct radeon_device *rdev, struct radeon_fence *fence)
> void r600_kms_blit_copy(struct radeon_device *rdev,
> u64 src_gpu_addr, u64 dst_gpu_addr,
> unsigned num_gpu_pages);
> +int r600_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * rv770,rv730,rv710,rv740
> @@ -427,6 +434,7 @@ extern void evergreen_post_page_flip(struct radeon_device *rdev, int crtc);
> extern void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc);
> void evergreen_disable_interrupt_state(struct radeon_device *rdev);
> int evergreen_blit_init(struct radeon_device *rdev);
> +int evergreen_mc_wait_for_idle(struct radeon_device *rdev);
>
> /*
> * cayman
> diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
> index f68dff2..6ce93b2 100644
> --- a/drivers/gpu/drm/radeon/rs690.c
> +++ b/drivers/gpu/drm/radeon/rs690.c
> @@ -31,7 +31,7 @@
> #include "atom.h"
> #include "rs690d.h"
>
> -static int rs690_mc_wait_for_idle(struct radeon_device *rdev)
> +int rs690_mc_wait_for_idle(struct radeon_device *rdev)
> {
> unsigned i;
> uint32_t tmp;
next prev parent reply other threads:[~2012-02-24 16:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-23 22:53 [drm-next 00/14] radeon_asic cleanups for drm-next alexdeucher
2012-02-23 22:53 ` [drm-next 01/14] drm/radeon/kms: add wait_for_vblank asic callback alexdeucher
2012-02-24 9:17 ` Michel Dänzer
2012-02-24 15:14 ` Alex Deucher
2012-02-23 22:53 ` [drm-next 02/14] drm/radeon/kms: add a radeon asic callback for mc idle alexdeucher
2012-02-24 16:58 ` Jerome Glisse [this message]
2012-02-23 22:53 ` [drm-next 03/14] drm/radeon/kms: reorganize hpd callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 04/14] drm/radeon/kms: reorganize page flip callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 05/14] drm/radeon/kms: reorganize pm callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 06/14] drm/radeon/kms: reorganize copy callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 07/14] drm/radeon/kms: reorganize irq callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 08/14] drm/radeon/kms: remove unused cp callbacks from radeon_asic alexdeucher
2012-02-23 22:53 ` [drm-next 09/14] drm/radeon/kms: make ring_start, ring_test, and ib_test per ring alexdeucher
2012-02-23 22:53 ` [drm-next 10/14] drm/radeon/kms: reorganize gart callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 11/14] drm/radeon/kms: reorganize display callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 12/14] drm/radeon/kms: move clock/pcie setting callbacks into pm struct alexdeucher
2012-02-23 22:53 ` [drm-next 13/14] drm/radeon/kms: reorganize surface callbacks alexdeucher
2012-02-23 22:53 ` [drm-next 14/14] drm/radeon/kms: clean up radeon_asic struct alexdeucher
2012-02-23 23:10 ` [drm-next 14/14] drm/radeon/kms: clean up radeon_asic struct (v2) alexdeucher
2012-02-24 9:45 ` [drm-next 00/14] radeon_asic cleanups for drm-next Michel Dänzer
2012-02-24 10:15 ` Christian König
2012-02-24 17:03 ` Jerome Glisse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1330102692.2133.0.camel@localhost.localdomain \
--to=j.glisse@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=alexdeucher@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.