diff mbox

drm/i2c: tda998x: potentially faster polling for edid

Message ID E1WKXBG-0003gB-GK@rmk-PC.arm.linux.org.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Russell King March 3, 2014, 6:01 p.m. UTC
One of Jean-Francois patches changed the EDID polling to once every
10ms for 10 interations, whereas the original code did 1ms for 100
interations.  This appears to cause boot-time detection to take
slightly - but noticably - longer.  Revert this change.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
Jean,

I'm not sure why you made the change along with adding IRQ support in
"drm/i2c: tda998x: use irq for connection status and EDID read" - you
didn't include any commentry as to why you made this change.  However,
we shouldn't write code assuming HZ=100 - where this kind of thing
matters, we should come up with better solutions (eg, using jiffy-based
timeouts if we want to timeout after a set period of time.)

I'm not sure whether one or other really is faster, it's just a
perception I have.  Anyway, let's just revert back to the original
code for the non-IRQ case, and maybe improve it later.

 drivers/gpu/drm/i2c/tda998x_drv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jean-Francois Moine March 6, 2014, 7:32 p.m. UTC | #1
On Mon, 03 Mar 2014 18:01:34 +0000
Russell King <rmk+kernel@arm.linux.org.uk> wrote:

> One of Jean-Francois patches changed the EDID polling to once every
> 10ms for 10 interations, whereas the original code did 1ms for 100
> interations.  This appears to cause boot-time detection to take
> slightly - but noticably - longer.  Revert this change.
> 
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> ---
> Jean,
> 
> I'm not sure why you made the change along with adding IRQ support in
> "drm/i2c: tda998x: use irq for connection status and EDID read" - you
> didn't include any commentry as to why you made this change.  However,
> we shouldn't write code assuming HZ=100 - where this kind of thing
> matters, we should come up with better solutions (eg, using jiffy-based
> timeouts if we want to timeout after a set period of time.)
> 
> I'm not sure whether one or other really is faster, it's just a
> perception I have.  Anyway, let's just revert back to the original
> code for the non-IRQ case, and maybe improve it later.

Russell,

Sorry for the problem. I was thinking that, if you want to read quickly
the EDID , you may use the IRQ, but, if you don't use the IRQ, maybe you
have real-time constraints, and, so, reducing the wait loop could help
you.

Acked-by: Jean-Francois Moine <moinejf@free.fr>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 40c4f658abfb..956d857ee2c9 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1041,8 +1041,8 @@  static int read_edid_block(struct tda998x_priv *priv, uint8_t *buf, int blk)
 			return i;
 		}
 	} else {
-		for (i = 10; i > 0; i--) {
-			msleep(10);
+		for (i = 100; i > 0; i--) {
+			msleep(1);
 			ret = reg_read(priv, REG_INT_FLAGS_2);
 			if (ret < 0)
 				return ret;