aboutsummaryrefslogtreecommitdiffstats
path: root/udelay.c
diff options
context:
space:
mode:
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2005-05-08 04:32:45 +0000
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2005-05-08 04:32:45 +0000
commitdbf5d92605a9db10e3e3cb154d03a515c5d5c5af (patch)
tree501d5dda3ce90fe924b893e487d9ef9f0683382b /udelay.c
parenta1c471e9fb7cadb68bb182ab2e9715a0aa092386 (diff)
downloadlcd4linux-dbf5d92605a9db10e3e3cb154d03a515c5d5c5af.tar.gz
[lcd4linux @ 2005-05-08 04:32:43 by reinelt]
CodingStyle added and applied git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@547 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to 'udelay.c')
-rw-r--r--udelay.c235
1 files changed, 117 insertions, 118 deletions
diff --git a/udelay.c b/udelay.c
index 75ae1cf..e26bc08 100644
--- a/udelay.c
+++ b/udelay.c
@@ -1,4 +1,4 @@
-/* $Id: udelay.c,v 1.19 2005/01/18 06:30:24 reinelt Exp $
+/* $Id: udelay.c,v 1.20 2005/05/08 04:32:45 reinelt Exp $
*
* short delays
*
@@ -23,6 +23,9 @@
*
*
* $Log: udelay.c,v $
+ * Revision 1.20 2005/05/08 04:32:45 reinelt
+ * CodingStyle added and applied
+ *
* Revision 1.19 2005/01/18 06:30:24 reinelt
* added (C) to all copyright statements
*
@@ -158,162 +161,158 @@
unsigned long loops_per_usec;
-void ndelay (const unsigned long nsec)
+void ndelay(const unsigned long nsec)
{
- unsigned long loop=(nsec*loops_per_usec+999)/1000;
-
- __asm__ (".align 16\n"
- "1:\tdecl %0\n"
- "\tjne 1b"
- : /* no result */
- :"a" (loop));
+ unsigned long loop = (nsec * loops_per_usec + 999) / 1000;
+
+ __asm__(".align 16\n" "1:\tdecl %0\n" "\tjne 1b": /* no result */
+ :"a"(loop));
}
/* adopted from /usr/src/linux/init/main.c */
-void udelay_calibrate (void)
+void udelay_calibrate(void)
{
- clock_t tick;
- unsigned long bit;
-
- loops_per_usec=1;
- while (loops_per_usec<<=1) {
- tick=clock();
- while (clock()==tick);
- tick=clock();
- ndelay(1000000000/CLOCKS_PER_SEC);
- if (clock()>tick)
- break;
- }
-
- loops_per_usec>>=1;
- bit=loops_per_usec;
- while (bit>>=1) {
- loops_per_usec|=bit;
- tick=clock();
- while (clock()==tick);
- tick=clock();
- ndelay(1000000000/CLOCKS_PER_SEC);
- if (clock()>tick)
- loops_per_usec&=~bit;
- }
+ clock_t tick;
+ unsigned long bit;
+
+ loops_per_usec = 1;
+ while (loops_per_usec <<= 1) {
+ tick = clock();
+ while (clock() == tick);
+ tick = clock();
+ ndelay(1000000000 / CLOCKS_PER_SEC);
+ if (clock() > tick)
+ break;
+ }
+
+ loops_per_usec >>= 1;
+ bit = loops_per_usec;
+ while (bit >>= 1) {
+ loops_per_usec |= bit;
+ tick = clock();
+ while (clock() == tick);
+ tick = clock();
+ ndelay(1000000000 / CLOCKS_PER_SEC);
+ if (clock() > tick)
+ loops_per_usec &= ~bit;
+ }
}
#else
-static unsigned int ticks_per_usec=0;
+static unsigned int ticks_per_usec = 0;
-static void getCPUinfo (int *hasTSC, double *MHz)
+static void getCPUinfo(int *hasTSC, double *MHz)
{
- int fd;
- char buffer[4096], *p;
-
- *hasTSC=0;
- *MHz=-1;
-
- fd=open("/proc/cpuinfo", O_RDONLY);
- if (fd==-1) {
- error ("udelay: open(/proc/cpuinfo) failed: %s", strerror(errno));
- return;
- }
- if (read (fd, &buffer, sizeof(buffer)-1)==-1) {
- error ("udelay: read(/proc/cpuinfo) failed: %s", strerror(errno));
- close (fd);
- return;
- }
- close (fd);
-
- p=strstr(buffer, "flags");
- if (p==NULL) {
- info ("udelay: /proc/cpuinfo has no 'flags' line");
- } else {
- p=strstr(p, "tsc");
- if (p==NULL) {
- info ("udelay: CPU does not support Time Stamp Counter");
+ int fd;
+ char buffer[4096], *p;
+
+ *hasTSC = 0;
+ *MHz = -1;
+
+ fd = open("/proc/cpuinfo", O_RDONLY);
+ if (fd == -1) {
+ error("udelay: open(/proc/cpuinfo) failed: %s", strerror(errno));
+ return;
+ }
+ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) {
+ error("udelay: read(/proc/cpuinfo) failed: %s", strerror(errno));
+ close(fd);
+ return;
+ }
+ close(fd);
+
+ p = strstr(buffer, "flags");
+ if (p == NULL) {
+ info("udelay: /proc/cpuinfo has no 'flags' line");
} else {
- info ("udelay: CPU supports Time Stamp Counter");
- *hasTSC=1;
+ p = strstr(p, "tsc");
+ if (p == NULL) {
+ info("udelay: CPU does not support Time Stamp Counter");
+ } else {
+ info("udelay: CPU supports Time Stamp Counter");
+ *hasTSC = 1;
+ }
}
- }
-
- p=strstr(buffer, "cpu MHz");
- if (p==NULL) {
- info ("udelay: /proc/cpuinfo has no 'cpu MHz' line");
- } else {
- if (sscanf(p+7, " : %lf", MHz)!=1) {
- error ("udelay: parse(/proc/cpuinfo) failed: unknown 'cpu MHz' format");
- *MHz=-1;
+
+ p = strstr(buffer, "cpu MHz");
+ if (p == NULL) {
+ info("udelay: /proc/cpuinfo has no 'cpu MHz' line");
} else {
- info ("udelay: CPU runs at %f MHz", *MHz);
+ if (sscanf(p + 7, " : %lf", MHz) != 1) {
+ error("udelay: parse(/proc/cpuinfo) failed: unknown 'cpu MHz' format");
+ *MHz = -1;
+ } else {
+ info("udelay: CPU runs at %f MHz", *MHz);
+ }
}
- }
}
-void udelay_init (void)
+void udelay_init(void)
{
#ifdef HAVE_ASM_MSR_H
-
- int tsc;
- double mhz;
-
- getCPUinfo (&tsc, &mhz);
-
- if (tsc && mhz>0.0) {
- ticks_per_usec=ceil(mhz);
- info ("udelay: using TSC delay loop, %u ticks per microsecond", ticks_per_usec);
- } else
+
+ int tsc;
+ double mhz;
+
+ getCPUinfo(&tsc, &mhz);
+
+ if (tsc && mhz > 0.0) {
+ ticks_per_usec = ceil(mhz);
+ info("udelay: using TSC delay loop, %u ticks per microsecond", ticks_per_usec);
+ } else
#else
- error ("udelay: The file 'include/asm/msr.h' was missing at compile time.");
- error ("udelay: Even if your CPU supports TSC, it will not be used!");
- error ("udelay: You *really* should install msr.h and recompile LCD4linux!");
+ error("udelay: The file 'include/asm/msr.h' was missing at compile time.");
+ error("udelay: Even if your CPU supports TSC, it will not be used!");
+ error("udelay: You *really* should install msr.h and recompile LCD4linux!");
#endif
- {
- ticks_per_usec=0;
- info ("udelay: using gettimeofday() delay loop");
- }
+ {
+ ticks_per_usec = 0;
+ info("udelay: using gettimeofday() delay loop");
+ }
}
-void ndelay (const unsigned long nsec)
+void ndelay(const unsigned long nsec)
{
#ifdef HAVE_ASM_MSR_H
- if (ticks_per_usec) {
+ if (ticks_per_usec) {
- unsigned int t1, t2;
- unsigned long tsc;
+ unsigned int t1, t2;
+ unsigned long tsc;
- tsc=(nsec*ticks_per_usec+999)/1000;
+ tsc = (nsec * ticks_per_usec + 999) / 1000;
- rdtscl(t1);
- do {
- rep_nop();
- rdtscl(t2);
- } while ((t2-t1)<tsc);
-
- } else
+ rdtscl(t1);
+ do {
+ rep_nop();
+ rdtscl(t2);
+ } while ((t2 - t1) < tsc);
+ } else
#endif
- {
- struct timeval now, end;
-
- gettimeofday (&end, NULL);
- end.tv_usec+=(nsec+999)/1000;
- while (end.tv_usec>1000000) {
- end.tv_usec-=1000000;
- end.tv_sec++;
+ {
+ struct timeval now, end;
+
+ 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 < end.tv_usec : now.tv_sec < end.tv_sec);
}
-
- do {
- rep_nop();
- gettimeofday(&now, NULL);
- } while (now.tv_sec==end.tv_sec?now.tv_usec<end.tv_usec:now.tv_sec<end.tv_sec);
- }
}
#endif