Mailinglist Archive: radeonhd (436 mails)

< Previous Next >
Re: [radeonhd] Diverging lists of supported devices
  • From: Egbert Eich <eich@xxxxxxx>
  • Date: Thu, 17 Jul 2008 16:08:03 +0200
  • Message-id: <18559.21059.417351.592117@xxxxxxxxxxxxxx>
Hans Ulrich Niedermann writes:
I have recently taken a look at the lists of supported devices in
radeonhd. As far as I can tell, we have four of those:

1. The wiki page: http://wiki.x.org/wiki/radeonhd
2. In the radeonhd source tree:
2a. src/rhd.h (enum RHD_CHIPSETS)
2b. src/rhd_id.c (void RHDIdentify())
2c. man/radeonhd.man (section SUPPORTED HARDWARE)

I have a patch lying around from last october which automatically
updates man/radeonhd.man from src/rhd_id.c whenever src/rhd_id.c is
changed. It was not accepted then, but I have just forward-ported it to
current git in order to check whether the man page is up to date.

I'm sorry that this patch got dropped on the floor. We probably all
overlooked it.


While testing it, I noticed that radeonhd.man contains stuff not in
rhd_id.c, rhd_id.c contains stuff not in radeonhd.man, and rhd.h
contains stuff not in either of the others.

Specifically, rhd_id.c has one more name for RV670 than radeonhd.man, and:

rhd.h rhd_id.c radeonhd.man
M86 yes no yes
RS780 yes yes no
RV770 yes yes no
RS740 yes no no

I can easily submit a patch for radeonhd.man bringing it in sync with
rhd_id.c, but what about M86 and RS740?

I've also got a patch (see below) which attempts to bring all of them
in sync.
RS740 should be identical to RS690 (although we have not seen any, yet).
We have not had a chance to test an M86 but it should be a mobile RV635.
We haven't seen one but the patch will enable it (People seemed to have
added these ids to their code already and had reported problems, however
to track them better it's good to have support for them added to the
master in our git repo.
Ndim, please feel free to commit your fixes.
We should definitely have your fix to autogenerate the man page
information and keep it in sync (we may have to fix the information
strings in rhd_id.c, though).

Cheers,
Egbert.

diff --git a/src/rhd_i2c.c b/src/rhd_i2c.c
index 2e9ae9e..f34c659 100644
--- a/src/rhd_i2c.c
+++ b/src/rhd_i2c.c
@@ -173,6 +173,10 @@ enum _rhdRS69I2CBits {
RS69_DC_I2C_SW_DONE_ACK = (0x1 << 1),
/* RS69_DC_I2C_SW_STATUS */
RS69_DC_I2C_SW_DONE = (0x1 << 2),
+ RS69_DC_I2C_SW_ABORTED = (0x1 << 4),
+ RS69_DC_I2C_SW_TIMEOUT = (0x1 << 5),
+ RS69_DC_I2C_SW_INTERRUPTED= (0x1 << 6),
+ RS69_DC_I2C_SW_BUFFER_OVERFLOW= (0x1 << 7),
RS69_DC_I2C_SW_STOPPED_ON_NACK = (0x1 << 8),
RS69_DC_I2C_SW_NACK0 = (0x1 << 12),
RS69_DC_I2C_SW_NACK1 = (0x1 << 13)
@@ -446,7 +450,11 @@ rhdRS69I2CStatus(I2CBusPtr I2CPtr)
}
RHDRegMask(I2CPtr, RS69_DC_I2C_INTERRUPT_CONTROL, RS69_DC_I2C_SW_DONE_ACK,
RS69_DC_I2C_SW_DONE_ACK);
- if (!count || (val & (RS69_DC_I2C_SW_STOPPED_ON_NACK |
RS69_DC_I2C_SW_NACK0 | RS69_DC_I2C_SW_NACK1 | 0x3)))
+ if (!count || (val & (RS69_DC_I2C_SW_STOPPED_ON_NACK
+ | RS69_DC_I2C_SW_ABORTED | RS69_DC_I2C_SW_TIMEOUT
+ | RS69_DC_I2C_SW_INTERRUPTED
+ | RS69_DC_I2C_SW_BUFFER_OVERFLOW
+ | RS69_DC_I2C_SW_NACK0 | RS69_DC_I2C_SW_NACK1 | 0x3)))
return FALSE; /* 2 */
return TRUE; /* 1 */
}
@@ -616,7 +624,10 @@ rhdR6xxI2CStatus(I2CBusPtr I2CPtr)
}
RHDRegMask(I2CPtr, R6_DC_I2C_INTERRUPT_CONTROL, R6_DC_I2C_SW_DONE_ACK,
R6_DC_I2C_SW_DONE_ACK);
- if (!count || (val & (R6_DC_I2C_SW_STOPPED_ON_NACK | R6_DC_I2C_SW_NACK0 |
R6_DC_I2C_SW_NACK1 | 0x3)))
+ if (!count || (val & ( R6_DC_I2C_SW_ABORTED | R6_DC_I2C_SW_TIMEOUT
+ | R6_DC_I2C_SW_INTERRUPTED |
R6_DC_I2C_SW_BUFFER_OVERFLOW
+ | R6_DC_I2C_SW_STOPPED_ON_NACK
+ | R6_DC_I2C_SW_NACK0 | R6_DC_I2C_SW_NACK1 | 0x3)))
return FALSE; /* 2 */
return TRUE; /* 1 */
}
< Previous Next >