[Pommed-commits] r520 - in trunk: . pommed/mactel

jblache at alioth.debian.org jblache at alioth.debian.org
Thu Dec 11 13:44:15 UTC 2008


Author: jblache
Date: 2008-12-11 13:44:15 +0000 (Thu, 11 Dec 2008)
New Revision: 520

Modified:
   trunk/ChangeLog
   trunk/pommed.conf.mactel
   trunk/pommed/mactel/nv8600mgt_backlight.c
Log:
Add support for the LCD backlight on late 2008 machines (MacBook5,1, MacBookPro5,1, MacBookAir2,1).


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-11-10 10:17:09 UTC (rev 519)
+++ trunk/ChangeLog	2008-12-11 13:44:15 UTC (rev 520)
@@ -2,6 +2,7 @@
 --------------------
 
 version 1.23:
+	- pommed: add backlight support for late 2008 laptops.
 
 version 1.22:
 	- pommed: do not probe for LMU controller on pmac machines that do

Modified: trunk/pommed/mactel/nv8600mgt_backlight.c
===================================================================
--- trunk/pommed/mactel/nv8600mgt_backlight.c	2008-11-10 10:17:09 UTC (rev 519)
+++ trunk/pommed/mactel/nv8600mgt_backlight.c	2008-12-11 13:44:15 UTC (rev 520)
@@ -7,7 +7,7 @@
  *
  * Copyright (C) 2006 Nicolas Boichat <nicolas @boichat.ch>
  * Copyright (C) 2006 Felipe Alfaro Solana <felipe_alfaro @linuxmail.org>
- * Copyright (C) 2007 Julien BLACHE <jb at jblache.org>
+ * Copyright (C) 2007-2008 Julien BLACHE <jb at jblache.org>
  *  + Adapted for pommed
  *
  * This program is free software; you can redistribute it and/or modify
@@ -56,6 +56,7 @@
 
 
 static int nv8600mgt_inited = 0;
+static unsigned int bl_port;
 
 
 static unsigned char
@@ -66,10 +67,10 @@
   if (nv8600mgt_inited == 0)
     return 0;
 
-  outb(0x03, 0xB3);
-  outb(0xBF, 0xB2);
+  outb(0x03, bl_port + 1);
+  outb(0xbf, bl_port);
 
-  value = inb(0xB3) >> 4;
+  value = inb(bl_port + 1) >> 4;
 
   return value;
 }
@@ -80,8 +81,8 @@
   if (nv8600mgt_inited == 0)
     return;
 
-  outb(0x04 | (value << 4), 0xB3);
-  outb(0xBF, 0xB2);
+  outb(0x04 | (value << 4), bl_port + 1);
+  outb(0xbf, bl_port);
 }
 
 
@@ -164,14 +165,17 @@
 
 #define PCI_ID_VENDOR_NVIDIA     0x10de
 #define PCI_ID_PRODUCT_8600MGT   0x0407
+#define PCI_ID_PRODUCT_9400M     0x0863
+#define PCI_ID_PRODUCT_9600MGT   0x0647
 
-/* Look for an nVidia GeForce 8600M GT */
+/* Look for an nVidia GeForce 8600M GT, 9400M or 9600M GT */
 int
 nv8600mgt_backlight_probe(void)
 {
   struct pci_access *pacc;
   struct pci_dev *dev;
   int nv_found = 0;
+  int ret;
 
   pacc = pci_alloc();
   if (pacc == NULL)
@@ -184,12 +188,14 @@
   pci_scan_bus(pacc);
 
   /* Iterate over all devices */
-  for(dev = pacc->devices; dev; dev = dev->next)
+  for (dev = pacc->devices; dev; dev = dev->next)
     {
       pci_fill_info(dev, PCI_FILL_IDENT);
       /* nVidia GeForce 8600M GT */
       if ((dev->vendor_id == PCI_ID_VENDOR_NVIDIA)
-	  && (dev->device_id == PCI_ID_PRODUCT_8600MGT))
+	  && ((dev->device_id == PCI_ID_PRODUCT_8600MGT)
+	      || (dev->device_id == PCI_ID_PRODUCT_9400M)
+	      || (dev->device_id == PCI_ID_PRODUCT_9600MGT)))
 	{
 	  nv_found = 1;
 
@@ -201,15 +207,35 @@
 
   if (!nv_found)
     {
-      logdebug("Failed to detect nVidia GeForce 8600M GT, aborting...\n");
+      logdebug("Failed to detect nVidia GeForce 8600M GT/9400M/9600M GT, aborting...\n");
       return -1;
     }
 
+  /* Determine backlight I/O port */
+  switch (mops->type)
+    {
+      case MACHINE_MACBOOKPRO_3:
+      case MACHINE_MACBOOKPRO_4:
+	bl_port = 0xb2; /* 0xb2 - 0xb3 */
+	break;
+
+      case MACHINE_MACBOOKPRO_5:
+      case MACHINE_MACBOOK_5:
+      case MACHINE_MACBOOKAIR_2:
+	bl_port = 0x52e; /* 0x52e - 0x52f */
+	break;
+
+      default:
+	logmsg(LOG_ERR, "nv8600mgt LCD backlight support not supported on this hardware\n");
+	return -1;
+    }
+
   lcd_bck_info.max = NV8600MGT_BACKLIGHT_MAX;
 
-  if (ioperm(0xB2, 0xB3, 1) < 0)
+  ret = iopl(3);
+  if (ret < 0)
     {
-      logmsg(LOG_ERR, "ioperm() failed: %s", strerror(errno));
+      logmsg(LOG_ERR, "iopl() failed: %s", strerror(errno));
 
       lcd_bck_info.level = 0;
 

Modified: trunk/pommed.conf.mactel
===================================================================
--- trunk/pommed.conf.mactel	2008-11-10 10:17:09 UTC (rev 519)
+++ trunk/pommed.conf.mactel	2008-12-11 13:44:15 UTC (rev 520)
@@ -19,7 +19,7 @@
 	on_batt = 80
 }
 
-# Intel 945GM, 965GM backlight control (MacBook, MacBook Air)
+# Intel 945GM, 965GM backlight control (MacBook v1-v4, MacBook Air v1)
 lcd_gma950 {
 	# initial backlight level [0x6f] (0x1f - 0x94 usually, -1 to disable)
 	init = -1
@@ -29,7 +29,7 @@
 	on_batt = 0x40
 }
 
-# nVidia GeForce 8600M GT backlight control (MacBook Pro v3 & v4)
+# nVidia GeForce 8600M GT/9400M/9600M GT backlight control (MacBook Pro v3-v5, MacBook v5, MacBook v2)
 lcd_nv8600mgt {
 	# initial backlight level [12] (0 - 15, -1 to disable)
 	init = -1




More information about the Pommed-commits mailing list