linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Karsten Wiese <annabellesgarden@yahoo.de>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@elte.hu>
Subject: [PATCH/RFC] Enable HPET on VIA8237 southbridge
Date: Mon, 26 Sep 2005 12:31:32 +0200	[thread overview]
Message-ID: <200509261231.32697.annabellesgarden@yahoo.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 116 bytes --]

Hi,

if you have that chip on your mainboard and want to play with it's
hpet, this might get you going.

   Karsten

[-- Attachment #2: patch-via8237-hpet-i386 --]
[-- Type: text/x-diff, Size: 2179 bytes --]

Enable HPET on VIA8237 southbridge

Some BIOSs don't enable the hpet on that chip.
The patch enables it before all the other pci devices.

The hpet's hardware address is set to 0xFED00000,
if the VIA8237 has been identified.

This IS DANGEROUS.
I.e. because the hardware address might be assigned
later in the boot process to somthing else.

Tested succesfully on an K8T800/AMD64 Mobo.
One exception: Timer1 says it can do PERIODIC mode,
but this doesn't work here. One shot is ok.

Signed-off-by: Karsten Wiese <annabellesgraden@yahoo.de>


diff -ur linux-2.6.13-RT/arch/i386/kernel/time_hpet.c linux-2.6.13-RT-kw/arch/i386/kernel/time_hpet.c
--- linux-2.6.13-RT/arch/i386/kernel/time_hpet.c	2005-09-19 15:49:17.000000000 +0200
+++ linux-2.6.13-RT-kw/arch/i386/kernel/time_hpet.c	2005-09-24 00:58:37.000000000 +0200
@@ -223,11 +223,74 @@
 	return use_hpet;
 }
 
+#define HPET_HACK_ENABLE_DANGEROUS 1
+
+#ifdef HPET_HACK_ENABLE_DANGEROUS
+union conf_address {
+	struct {
+		u8	reg;
+		u8	func:	3;
+		u8	dev:	5;
+		u8	bus;
+		u8	reserved:7;
+		u8	enable:	1;
+	} bits;
+	u32	dword;
+};
+
+#include <linux/pci_ids.h>
+
+static void is_hpet_via8237(void)
+{
+	union conf_address ca = {
+		.bits.reg = 0,
+		.bits.dev = 17,
+		.bits.enable = 1
+	};
+	union {
+		struct {
+			u8 control;
+			u8 address[3];
+		} hpet;
+		unsigned raw;
+	} hpet;
+	u32 vendor_id, control;
+
+	control = inl(0xcf8);
+	printk("%X\n", control);
+	outl(ca.dword, 0xcf8);
+	vendor_id = inl(0xcfc);
+	if (vendor_id == (PCI_VENDOR_ID_VIA + (PCI_DEVICE_ID_VIA_8237 << 16))) {
+		hpet.raw = 0xFED00000;
+		hpet.hpet.control = 0x80;
+		ca.bits.reg = 0x68;
+		outl(ca.dword, 0xcf8);
+		outl(hpet.raw, 0xcfc);
+		outl(ca.dword, 0xcf8);
+		hpet_address = (inl(0xcfc) & 0xFFFFFF00);
+		printk(KERN_WARNING "time.c: WARNING: Enabled VIA8237 HPET "
+		       "at %#lx.\n", hpet_address);
+	}
+}
+
+#else
+
+static void is_hpet_via8237(void)
+{
+}
+
+#endif
+
+
 int is_hpet_capable(void)
 {
-	if (!boot_hpet_disable && hpet_address)
-		return 1;
-	return 0;
+	if (boot_hpet_disable)
+		return 0;
+
+        if (!hpet_address)
+		is_hpet_via8237();
+
+	return hpet_address;
 }
 
 static int __init hpet_setup(char* str)

             reply	other threads:[~2005-09-26 10:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-26 10:31 Karsten Wiese [this message]
2005-09-26 15:49 [PATCH/RFC] Enable HPET on VIA8237 southbridge Clemens Ladisch
2005-09-26 17:34 ` Karsten Wiese
2005-09-28  7:03   ` Clemens Ladisch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200509261231.32697.annabellesgarden@yahoo.de \
    --to=annabellesgarden@yahoo.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).