Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f13c1526 authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by Linus Torvalds
Browse files

[PATCH] HPT37x: read f_CNT saved by BIOS from port



The undocumented register BIOS uses for saving f_CNT seems to only be
mapped to I/O space while all the other HPT3xx regs are dual-mapped.  Looks
like another HighPoint's dirty trick.  With this patch, the deadly kernel
oops on the cards having the modern HighPoint BIOSes is now at last gone!

Signed-off-by: default avatarSergei 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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 26c068da
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1035,14 +1035,14 @@ static void __devinit hpt37x_clocking(ide_hwif_t *hwif)
	 * First try reading the register in which the HighPoint BIOS
	 * saves f_CNT value before  reprogramming the DPLL from its
	 * default setting (which differs for the various chips).
	 * NOTE: This register is only accessible via I/O space.
	 *
	 * In case the signature check fails, we'll have to resort to
	 * reading the f_CNT register itself in hopes that nobody has
	 * touched the DPLL yet...
	 */
	pci_read_config_dword(dev, 0x70, &temp);
	temp = inl(pci_resource_start(dev, 4) + 0x90);
	if ((temp & 0xFFFFF000) != 0xABCDE000) {
		int i;

		printk(KERN_WARNING "HPT37X: no clock data saved by BIOS\n");

		/* Calculate the average value of f_CNT */