I'm requesting review for the following patch:

Index: sys/i386/isa/clock.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/isa/clock.c,v
retrieving revision 1.240
diff -u -p -r1.240 clock.c
--- sys/i386/isa/clock.c        26 Oct 2007 03:23:54 -0000      1.240
+++ sys/i386/isa/clock.c        7 Nov 2007 15:27:21 -0000
@@ -130,6 +130,9 @@ static      u_char  rtc_statusb = RTCSB_24HR;
 #define        ACQUIRED        2
 #define        ACQUIRE_PENDING 3

+/* Intel ICH register */
+#define ICH_PMBASE     0x400
+
 static u_char  timer2_state;

 static unsigned i8254_get_timecount(struct timecounter *tc);
@@ -616,11 +619,26 @@ i8254_init(void)
 void
 startrtclock()
 {
+       char *ichenv;
        u_int delta, freq;

        writertc(RTC_STATUSA, rtc_statusa);
        writertc(RTC_STATUSB, RTCSB_24HR);

+       /*
+        * On some systems, namely MacBooks, we need to disallow the
+        * legacy USB circuit to generate an SMI# because this can
+        * cause several problems, namely: incorrect CPU frequency
+        * detection and failure to start the APs.
+        */
+       ichenv = getenv("hw.ich.disable_legacy_usb");
+       if (ichenv !=  NULL) {
+               if (bootverbose)
+                       printf("Disabling LEGACY_USB_EN bit on Intel ICH.\n");
+               outl(ICH_PMBASE + 0x30, inl(ICH_PMBASE + 0x30) & ~0x8);
+               freeenv(ichsmi);
+       }
+       
        freq = calibrate_clocks();
 #ifdef CLK_CALIBRATION_LOOP
        if (bootverbose) {


If you have a MacBook, you now need to set hw.ich.disable_legacy_usb on the boot loader prompt or in loader.conf. I decided to go this route because it seems safer. Imagine the case where there's a port at the same IO address that has nothing to do with the ICH7. If we tried to issue the outl() on every system, something bad could happen.

Comments?

Regards.
--
Rui Paulo

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to