From 35755c86f661f8af41911331567e7fd4520cdfe7 Mon Sep 17 00:00:00 2001 From: reinelt Date: Sat, 17 Aug 2002 14:14:21 +0000 Subject: [lcd4linux @ 2002-08-17 14:14:21 by reinelt] USBLCD fixes git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@156 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- udelay.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) (limited to 'udelay.c') diff --git a/udelay.c b/udelay.c index d1ce790..2180f66 100644 --- a/udelay.c +++ b/udelay.c @@ -1,4 +1,4 @@ -/* $Id: udelay.c,v 1.7 2002/04/29 11:00:28 reinelt Exp $ +/* $Id: udelay.c,v 1.8 2002/08/17 14:14:21 reinelt Exp $ * * short delays * @@ -20,6 +20,10 @@ * * * $Log: udelay.c,v $ + * Revision 1.8 2002/08/17 14:14:21 reinelt + * + * USBLCD fixes + * * Revision 1.7 2002/04/29 11:00:28 reinelt * * added Toshiba T6963 driver @@ -229,6 +233,9 @@ void udelay_init (void) void ndelay (unsigned long nsec) { + +#ifdef HAVE_ASM_MSR_H + if (ticks_per_usec) { unsigned int t1, t2; @@ -241,22 +248,26 @@ void ndelay (unsigned long nsec) rdtscl(t2); } while ((t2-t1)1000000) { - end.tv_usec-=1000000; - end.tv_sec++; - } + gettimeofday (&end, NULL); + end.tv_usec+=(nsec+999)/1000; + while (end.tv_usec>1000000) { + end.tv_usec-=1000000; + end.tv_sec++; + } - do { - rep_nop(); - gettimeofday(&now, NULL); - } while (now.tv_sec==end.tv_sec?now.tv_usec