Staging
v0.6.0
https://github.com/torvalds/linux
Revision 9448732f6c9ef4932b226056338d1084f3669752 authored by Sergei Shtylyov on 13 December 2006, 08:35:49 UTC, committed by Linus Torvalds on 13 December 2006, 17:05:55 UTC
Fix/remove bad/unused timing tables: HPT370/A 66 MHz tables weren't really
needed (the chips are not UltraATA/133 capable and shouldn't support 66 MHz
PCI) and had many modes over- and underclocked, HPT372 33 MHz table was in
fact for 66 MHz and 50 MHz table missed UltraDMA mode 6, HPT374 33 MHz table
was really for 50 MHz...  (Actually, HPT370/A 33 MHz tables also have issues.
e.g.  HPT370 has PIO modes 0/1 overlocked.)

There's also no need in the separate HPT374 tables because HPT372 timings
should be the same (and those tables has UltraDMA mode 6 which HPT374 supports
depending on HPT374_ALLOW_ATA133_6 #define)...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent 836c006
Raw File
Tip revision: 9448732f6c9ef4932b226056338d1084f3669752 authored by Sergei Shtylyov on 13 December 2006, 08:35:49 UTC
[PATCH] ide: fix HPT37x timing tables
Tip revision: 9448732
time_interpolators.txt
Time Interpolators
------------------

Time interpolators are a base of time calculation between timer ticks and
allow an accurate determination of time down to the accuracy of the time
source in nanoseconds.

The architecture specific code typically provides gettimeofday and
settimeofday under Linux. The time interpolator provides both if an arch
defines CONFIG_TIME_INTERPOLATION. The arch still must set up timer tick
operations and call the necessary functions to advance the clock.

With the time interpolator a standardized interface exists for time
interpolation between ticks. The provided logic is highly scalable
and has been tested in SMP situations of up to 512 CPUs.

If CONFIG_TIME_INTERPOLATION is defined then the architecture specific code
(or the device drivers - like HPET) may register time interpolators.
These are typically defined in the following way:

static struct time_interpolator my_interpolator {
	.frequency = MY_FREQUENCY,
	.source = TIME_SOURCE_MMIO32,
	.shift = 8,		/* scaling for higher accuracy */
	.drift = -1,		/* Unknown drift */
	.jitter = 0		/* time source is stable */
};

void time_init(void)
{
	....
	/* Initialization of the timer *.
	my_interpolator.address = &my_timer;
	register_time_interpolator(&my_interpolator);
	....
}

For more details see include/linux/timex.h and kernel/timer.c.

Christoph Lameter <christoph@lameter.com>, October 31, 2004

back to top