Re: [PATCH] drm/radeon/kms: fix suspend on rv530 asics

2011-04-13 Thread Jerome Glisse
On Tue, Apr 12, 2011 at 1:33 PM, Alex Deucher alexdeuc...@gmail.com wrote:
 Apparently only rv515 asics need the workaround
 added in f24d86f1a49505cdea56728b853a5d0a3f8e3d11
 (drm/radeon/kms: fix resume regression for some r5xx laptops).

 Fixes:
 https://bugs.freedesktop.org/show_bug.cgi?id=34709

 Signed-off-by: Alex Deucher alexdeuc...@gmail.com
 Cc: sta...@kernel.org
 ---
  drivers/gpu/drm/radeon/atom.c |    6 +-
  1 files changed, 5 insertions(+), 1 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
 index 258fa5e..d71d375 100644
 --- a/drivers/gpu/drm/radeon/atom.c
 +++ b/drivers/gpu/drm/radeon/atom.c
 @@ -32,6 +32,7 @@
  #include atom.h
  #include atom-names.h
  #include atom-bits.h
 +#include radeon.h

  #define ATOM_COND_ABOVE                0
  #define ATOM_COND_ABOVEOREQUAL 1
 @@ -101,7 +102,9 @@ static void debug_print_spaces(int n)
  static uint32_t atom_iio_execute(struct atom_context *ctx, int base,
                                 uint32_t index, uint32_t data)
  {
 +       struct radeon_device *rdev = ctx-card-dev-dev_private;
        uint32_t temp = 0xCDCDCDCD;
 +
        while (1)
                switch (CU8(base)) {
                case ATOM_IIO_NOP:
 @@ -112,7 +115,8 @@ static uint32_t atom_iio_execute(struct atom_context 
 *ctx, int base,
                        base += 3;
                        break;
                case ATOM_IIO_WRITE:
 -                       (void)ctx-card-ioreg_read(ctx-card, CU16(base + 
 1));
 +                       if (rdev-family == CHIP_RV515)
 +                               (void)ctx-card-ioreg_read(ctx-card, 
 CU16(base + 1));
                        ctx-card-ioreg_write(ctx-card, CU16(base + 1), 
 temp);
                        base += 3;
                        break;
 --
 1.7.1.1



So this patch enable io write only for one family ? This looks utterly strange.

Cheers,
Jerome
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/radeon/kms: fix suspend on rv530 asics

2011-04-13 Thread Alex Deucher
On Wed, Apr 13, 2011 at 10:46 AM, Jerome Glisse j.gli...@gmail.com wrote:
 On Tue, Apr 12, 2011 at 1:33 PM, Alex Deucher alexdeuc...@gmail.com wrote:
 Apparently only rv515 asics need the workaround
 added in f24d86f1a49505cdea56728b853a5d0a3f8e3d11
 (drm/radeon/kms: fix resume regression for some r5xx laptops).

 Fixes:
 https://bugs.freedesktop.org/show_bug.cgi?id=34709

 Signed-off-by: Alex Deucher alexdeuc...@gmail.com
 Cc: sta...@kernel.org
 ---
  drivers/gpu/drm/radeon/atom.c |    6 +-
  1 files changed, 5 insertions(+), 1 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
 index 258fa5e..d71d375 100644
 --- a/drivers/gpu/drm/radeon/atom.c
 +++ b/drivers/gpu/drm/radeon/atom.c
 @@ -32,6 +32,7 @@
  #include atom.h
  #include atom-names.h
  #include atom-bits.h
 +#include radeon.h

  #define ATOM_COND_ABOVE                0
  #define ATOM_COND_ABOVEOREQUAL 1
 @@ -101,7 +102,9 @@ static void debug_print_spaces(int n)
  static uint32_t atom_iio_execute(struct atom_context *ctx, int base,
                                 uint32_t index, uint32_t data)
  {
 +       struct radeon_device *rdev = ctx-card-dev-dev_private;
        uint32_t temp = 0xCDCDCDCD;
 +
        while (1)
                switch (CU8(base)) {
                case ATOM_IIO_NOP:
 @@ -112,7 +115,8 @@ static uint32_t atom_iio_execute(struct atom_context 
 *ctx, int base,
                        base += 3;
                        break;
                case ATOM_IIO_WRITE:
 -                       (void)ctx-card-ioreg_read(ctx-card, CU16(base + 
 1));
 +                       if (rdev-family == CHIP_RV515)
 +                               (void)ctx-card-ioreg_read(ctx-card, 
 CU16(base + 1));
                        ctx-card-ioreg_write(ctx-card, CU16(base + 1), 
 temp);
                        base += 3;
                        break;
 --
 1.7.1.1



 So this patch enable io write only for one family ? This looks utterly 
 strange.

No, it just does a read before write for rv515.  I don't know why it
needs it, but it seems to.

Alex


 Cheers,
 Jerome

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/radeon/kms: fix suspend on rv530 asics

2011-04-13 Thread Dave Airlie
On Thu, Apr 14, 2011 at 12:52 AM, Alex Deucher alexdeuc...@gmail.com wrote:
 On Wed, Apr 13, 2011 at 10:46 AM, Jerome Glisse j.gli...@gmail.com wrote:
 On Tue, Apr 12, 2011 at 1:33 PM, Alex Deucher alexdeuc...@gmail.com wrote:
 Apparently only rv515 asics need the workaround
 added in f24d86f1a49505cdea56728b853a5d0a3f8e3d11
 (drm/radeon/kms: fix resume regression for some r5xx laptops).

 Fixes:
 https://bugs.freedesktop.org/show_bug.cgi?id=34709

 Signed-off-by: Alex Deucher alexdeuc...@gmail.com
 Cc: sta...@kernel.org
 ---
  drivers/gpu/drm/radeon/atom.c |    6 +-
  1 files changed, 5 insertions(+), 1 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
 index 258fa5e..d71d375 100644
 --- a/drivers/gpu/drm/radeon/atom.c
 +++ b/drivers/gpu/drm/radeon/atom.c
 @@ -32,6 +32,7 @@
  #include atom.h
  #include atom-names.h
  #include atom-bits.h
 +#include radeon.h

  #define ATOM_COND_ABOVE                0
  #define ATOM_COND_ABOVEOREQUAL 1
 @@ -101,7 +102,9 @@ static void debug_print_spaces(int n)
  static uint32_t atom_iio_execute(struct atom_context *ctx, int base,
                                 uint32_t index, uint32_t data)
  {
 +       struct radeon_device *rdev = ctx-card-dev-dev_private;
        uint32_t temp = 0xCDCDCDCD;
 +
        while (1)
                switch (CU8(base)) {
                case ATOM_IIO_NOP:
 @@ -112,7 +115,8 @@ static uint32_t atom_iio_execute(struct atom_context 
 *ctx, int base,
                        base += 3;
                        break;
                case ATOM_IIO_WRITE:
 -                       (void)ctx-card-ioreg_read(ctx-card, CU16(base + 
 1));
 +                       if (rdev-family == CHIP_RV515)
 +                               (void)ctx-card-ioreg_read(ctx-card, 
 CU16(base + 1));
                        ctx-card-ioreg_write(ctx-card, CU16(base + 1), 
 temp);
                        base += 3;
                        break;
 --
 1.7.1.1



 So this patch enable io write only for one family ? This looks utterly 
 strange.

 No, it just does a read before write for rv515.  I don't know why it
 needs it, but it seems to.


Yeah I really wish I knew why either,

Thinkpad T60 with X1300, no resume without this, it failed in the
memory initialisation table. this was the only thing I could find to
fix it.

My x1300 desktop card works fine without this.

Dave.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel