Skip to contentSkip to conversation

add-imacfb-docu-and-detection.patch

PATCH In review Edgar Hucek 6 participants 7 messages Jul 31, 2006 – Aug 1, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 add-imacfb-docu-and-detection.patch

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

Documentation/fb/imacfb.txt +31 -0
diff -uNr linux-2.6.18-rc2/Documentation/fb/imacfb.txt linux-2.6.18-rc2.mactel/Documentation/fb/imacfb.txt
@@ -0,0 +1,31 @@
+
+What is imacfb?
+===============
+
+This is a generic EFI platform driver for Intel based Apple computers.
+Imacfb is only for EFI booted Intel Macs.
+
+Supported Hardware
+==================
+
+iMac 17"/20"
+Macbook
+Macbook Pro 15"/17"
+MacMini
+
+How to use it?
+==============
+
+Imacfb does not have any kind of autodetection of your machine.
+You have to add the fillowing kernel parameters in your elilo.conf:
+	Macbook :
+		video=imacfb:macbook
+	MacMini :
+		video=imacfb:mini
+	Macbook Pro 15", iMac 17" :
+		video=imacfb:i17
+	Macbook Pro 17", iMac 20" :
+		video=imacfb:i20
+
+--
+Edgar Hucek <[email protected]>
drivers/video/imacfb.c +44 -5

88 lines not on this page · raw message

drivers/video/Kconfig +1 -1
diff -uNr linux-2.6.18-rc2/drivers/video/Kconfig linux-2.6.18-rc2.mactel/drivers/video/Kconfig
@@ -552,7 +552,7 @@
 
 config FB_IMAC
 	bool "Intel-based Macintosh Framebuffer Support"
-	depends on (FB = y) && X86
+	depends on (FB = y) && X86 && EFI
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
#1 lore raw

Documentation/fb/imacfb.txt line 14

Quoted 10 lines · Edgar Hucek

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

Documentation/fb/imacfb.txt +7 -0
+Supported Hardware
+==================
+
+iMac 17"/20"
+Macbook
+Macbook Pro 15"/17"
+MacMini

Why is it called imacfb when it is supposed to drive castrated PowerBooks? I suggest a better name for driver.

#2 lore raw
Quoted 5 lines · On Mon, 31 Jul 2006 17:51:45 +0200 Olaf Hering wrote:
Quoted 2 lines · Edgar Hucek

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

Quoted 9 lines

Documentation/fb/imacfb.txt line 14

Quoted 7 lines
Documentation/fb/imacfb.txt +7 -0
+Supported Hardware
+==================
+
+iMac 17"/20"
+Macbook
+Macbook Pro 15"/17"
+MacMini

Why is it called imacfb when it is supposed to drive castrated PowerBooks?

is that a technical comment? sounds personal.

Quoted 1 line

I suggest a better name for driver.

---
~Randy

#3 lore raw
In reply to Edgar Hucek
Quoted 12 lines · Edgar Hucek

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

Documentation/fb/imacfb.txt +9 -0
+Imacfb does not have any kind of autodetection of your machine.
+You have to add the fillowing kernel parameters in your elilo.conf:
+	Macbook :
+		video=imacfb:macbook
+	MacMini :
+		video=imacfb:mini
+	Macbook Pro 15", iMac 17" :
+		video=imacfb:i17
+	Macbook Pro 17", iMac 20" :

Documentation/fb/imacfb.txt

Quoted 10 lines
Documentation/fb/imacfb.txt +7 -2
+		video=imacfb:i20
 
-	/* ignore error return of fb_get_options */
-	fb_get_options("imacfb", &option);
+	if (!efi_enabled)
+		return -ENODEV;
+	if (!dmi_check_system(dmi_system_table))
+		return -ENODEV;
+	if (model == M_UNKNOWN)
+		return -ENODEV;

So imacfb now defaults to off? That would be good, especially
since it cannot be a module, and doesn't work with the Apple "BIOS" stuff.

If not, a video=imacfb:off option would be much appreciated.

--
Joseph Fannin
[email protected]

#4 lore raw
Quoted 28 lines · Joseph Fannin
Quoted 12 lines · Edgar Hucek

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

Documentation/fb/imacfb.txt +9 -0
+Imacfb does not have any kind of autodetection of your machine.
+You have to add the fillowing kernel parameters in your elilo.conf:
+	Macbook :
+		video=imacfb:macbook
+	MacMini :
+		video=imacfb:mini
+	Macbook Pro 15", iMac 17" :
+		video=imacfb:i17
+	Macbook Pro 17", iMac 20" :

Documentation/fb/imacfb.txt

Quoted 10 lines
Documentation/fb/imacfb.txt +7 -2
+		video=imacfb:i20
 
-	/* ignore error return of fb_get_options */
-	fb_get_options("imacfb", &option);
+	if (!efi_enabled)
+		return -ENODEV;
+	if (!dmi_check_system(dmi_system_table))
+		return -ENODEV;
+	if (model == M_UNKNOWN)
+		return -ENODEV;

So imacfb now defaults to off? That would be good, especially
since it cannot be a module, and doesn't work with the Apple "BIOS" stuff.

Quoted 1 line

If not, a video=imacfb:off option would be much appreciated.

Yes. Imacfb only works when efi an efi boot is detected and a supported Apple device is found.

cu

Edgar Hucek

Quoted 5 lines

--
Joseph Fannin
[email protected]

#5 lore raw
In reply to Joseph Fannin
Quoted 7 lines · Joseph Fannin

On Mon, Jul 31, 2006 at 10:25:01AM +0200, Edgar Hucek wrote:

So imacfb now defaults to off? That would be good, especially
since it cannot be a module, and doesn't work with the Apple "BIOS" stuff.

If not, a video=imacfb:off option would be much appreciated.

Yes, this patch will support the above option too.

Tony

#6 lore raw
In reply to Edgar Hucek
Quoted 63 lines · Edgar Hucek

This Patch add basic Machine detection to imacfb and some Ducumentation bits for imacfb.

diff -uNr linux-2.6.18-rc2/Documentation/fb/imacfb.txt linux-2.6.18-rc2.mactel/Documentation/fb/imacfb.txt

Documentation/fb/imacfb.txt +31 -0
@@ -0,0 +1,31 @@
+
+What is imacfb?
+===============
+
+This is a generic EFI platform driver for Intel based Apple computers.
+Imacfb is only for EFI booted Intel Macs.
+
+Supported Hardware
+==================
+
+iMac 17"/20"
+Macbook
+Macbook Pro 15"/17"
+MacMini
+
+How to use it?
+==============
+
+Imacfb does not have any kind of autodetection of your machine.
+You have to add the fillowing kernel parameters in your elilo.conf:
+	Macbook :
+		video=imacfb:macbook
+	MacMini :
+		video=imacfb:mini
+	Macbook Pro 15", iMac 17" :
+		video=imacfb:i17
+	Macbook Pro 17", iMac 20" :
+		video=imacfb:i20
+
+--
+Edgar Hucek <[email protected]>

diff -uNr linux-2.6.18-rc2/drivers/video/imacfb.c linux-2.6.18-rc2.mactel/drivers/video/imacfb.c

drivers/video/imacfb.c +3 -1
@@ -18,6 +18,8 @@
 #include <linux/screen_info.h>
 #include <linux/slab.h>
 #include <linux/string.h>
+#include <linux/dmi.h>
+#include <linux/efi.h>
 
 #include <asm/io.h>
 
@@ -28,7 +30,7 @@
 	M_I20,
 	M_MINI,
 	M_MACBOOK,
-	M_NEW
+	M_UNKNOWN
 } MAC_TYPE;
 
 /* --------------------------------------------------------------------- */

drivers/video/imacfb.c line 61

Quoted 9 lines
drivers/video/imacfb.c +2 -1
@@ -52,10 +54,36 @@
 };
 
 static int inverse;
-static int model		= M_NEW;
+static int model		= M_UNKNOWN;
 static int manual_height;
 static int manual_width;
 
+static int set_system(struct dmi_system_id *id)

Missing __init ?

Quoted 86 lines
drivers/video/imacfb.c +39 -3
+{
+	printk(KERN_INFO "imacfb: %s detected - set system to %ld\n",
+		id->ident, (long)id->driver_data);
+	
+	model = (long)id->driver_data;
+	
+	return 0;
+}
+
+static struct dmi_system_id __initdata dmi_system_table[] = {
+	{ set_system, "iMac4,1", {
+	  DMI_MATCH(DMI_BIOS_VENDOR,"Apple Computer, Inc."),
+	  DMI_MATCH(DMI_BIOS_VERSION,"iMac4,1") }, (void*)M_I17},
+	{ set_system, "MacBookPro1,1", {
+	  DMI_MATCH(DMI_BIOS_VENDOR,"Apple Computer, Inc."),
+	  DMI_MATCH(DMI_BIOS_VERSION,"MacBookPro1,1") }, (void*)M_I17},
+	{ set_system, "MacBook1,1", {
+	  DMI_MATCH(DMI_BIOS_VENDOR,"Apple Computer, Inc."),
+	  DMI_MATCH(DMI_PRODUCT_NAME,"MacBook1,1")}, (void *)M_MACBOOK},
+	{ set_system, "Macmini1,1", {
+	  DMI_MATCH(DMI_BIOS_VENDOR,"Apple Computer, Inc."),
+	  DMI_MATCH(DMI_PRODUCT_NAME,"Macmini1,1")}, (void *)M_MINI},
+	{},
+};
+
 #define	DEFAULT_FB_MEM	1024*1024*16
 
 /* --------------------------------------------------------------------- */
@@ -149,7 +177,6 @@
 		screen_info.lfb_linelength = 1472 * 4;
 		screen_info.lfb_base = 0x80010000;
 		break;
-	case M_NEW:
 	case M_I20:
 		screen_info.lfb_width = 1680;
 		screen_info.lfb_height = 1050;
@@ -207,6 +234,10 @@
 		size_remap = size_total;
 	imacfb_fix.smem_len = size_remap;
 
+#ifndef __i386__
+	screen_info.imacpm_seg = 0;
+#endif
+
 	if (!request_mem_region(imacfb_fix.smem_start, size_total, "imacfb")) {
 		printk(KERN_WARNING
 		       "imacfb: cannot reserve video memory at 0x%lx\n",
@@ -324,8 +355,16 @@
 	int ret;
 	char *option = NULL;
 
-	/* ignore error return of fb_get_options */
-	fb_get_options("imacfb", &option);
+	if (!efi_enabled)
+		return -ENODEV;
+	if (!dmi_check_system(dmi_system_table))
+		return -ENODEV;
+	if (model == M_UNKNOWN)
+		return -ENODEV;
+
+	if (fb_get_options("imacfb", &option))
+		return -ENODEV;
+
 	imacfb_setup(option);
 	ret = platform_driver_register(&imacfb_driver);
 

diff -uNr linux-2.6.18-rc2/drivers/video/Kconfig linux-2.6.18-rc2.mactel/drivers/video/Kconfig

drivers/video/Kconfig +1 -2
@@ -552,7 +552,7 @@
 
 config FB_IMAC
 	bool "Intel-based Macintosh Framebuffer Support"
-	depends on (FB = y) && X86
+	depends on (FB = y) && X86 && EFI
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
 
 
-

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Signature · 2 lines
Andrey Panin		| Linux and UNIX system administrator
[email protected]		| PGP key: wwwkeys.pgp.net