On Tue, Mar 13, Jeffrey W. Baker wrote: > The attached patch adds the a new mode to the modedb, used by the ATI, > 3Dfx, and Amiga frame buffer devices. The new mode is the native, > slightly wide resolution of the new Apple laptops. It isn't obvious how > popular a mode has to be before it goes into modedb.c. It proably depends also on your own popularity as a kernel hacker ;) Do it right and put the stuff into aty128fb.c. The various models can be autodetected via the OpenFirmware "compatible" property. The attached patch forces the known models into a sane video mode. It adds also a vmode:22 for the 22" Apple Cinema display, there is currently no way in the kernel to use that one. It adds PCI_DEVICE_ID_ATI_RAGE128_TR for the new iMacs. It adds vmode:21 for that Titanium PowerBook. (Btw, someone should have at the new aic7xxx, make distclean is broken.) Gruss Olaf -- $ man clone BUGS Main feature not yet implemented...
diff -urN linux-2.4.2-ac20/drivers/video/aty128fb.c linux-2.4.2-ac20.macmodes/drivers/video/aty128fb.c --- linux-2.4.2-ac20/drivers/video/aty128fb.c Tue Mar 13 23:10:48 2001 +++ linux-2.4.2-ac20.macmodes/drivers/video/aty128fb.c Tue Mar 13 23:13:31 2001 @@ -176,6 +176,7 @@ {"Rage128 RL", PCI_DEVICE_ID_ATI_RAGE128_RL, rage_128, "AGP" }, {"Rage128 Pro PF", PCI_DEVICE_ID_ATI_RAGE128_PF, rage_128_pro, "AGP" }, {"Rage128 Pro PR", PCI_DEVICE_ID_ATI_RAGE128_PR, rage_128_pro, "PCI" }, + {"Rage128 Pro TR", PCI_DEVICE_ID_ATI_RAGE128_TR, rage_128_pro, "AGP" }, {"Rage Mobility M3", PCI_DEVICE_ID_ATI_RAGE128_LE, rage_M3, "PCI" }, {"Rage Mobility M3", PCI_DEVICE_ID_ATI_RAGE128_LF, rage_M3, "AGP" }, {NULL, 0, rage_128, NULL } @@ -1701,6 +1702,28 @@ } else { if (default_vmode <= 0 || default_vmode > VMODE_MAX) default_vmode = VMODE_1024_768_60; + + /* iMacs need that resolution + * PowerMac2,1 first r128 iMacs + * PowerMac2,2 summer 2000 iMacs + * PowerMac4,1 januar 2001 iMacs "flower power" + */ + if (machine_is_compatible("PowerMac2,1") || + machine_is_compatible("PowerMac2,2") || + machine_is_compatible("PowerMac4,1")) + default_vmode = VMODE_1024_768_75; + + /* PowerBook Firewire (Pismo) */ + if (machine_is_compatible("PowerBook3,1")) + default_vmode = VMODE_1024_768_60; + + /* PowerBook Titanium */ + if (machine_is_compatible("PowerBook3,2")) + default_vmode = VMODE_1152_768_60; + + /* iBook Firewire */ + if (machine_is_compatible("PowerBook2,2")) + default_vmode = VMODE_800_600_60; if (default_cmode < CMODE_8 || default_cmode > CMODE_32) default_cmode = CMODE_8; diff -urN linux-2.4.2-ac20/drivers/video/macmodes.c linux-2.4.2-ac20.macmodes/drivers/video/macmodes.c --- linux-2.4.2-ac20/drivers/video/macmodes.c Tue Mar 13 23:10:48 2001 +++ linux-2.4.2-ac20.macmodes/drivers/video/macmodes.c Tue Mar 13 23:12:32 2001 @@ -94,7 +94,15 @@ /* 1280x1024, 75 Hz, Non-Interlaced (135.00 MHz dotclock) */ "mac20", 75, 1280, 1024, 7408, 232, 64, 38, 1, 112, 3, FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED - }, + }, { + /* 1152x768, 60 Hz, Titanium PowerBook */ + "mac21", 75, 1152, 768, 15386, 158, 26, 29, 3, 136, 6, + FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, { + /* 1600x1024, 60 Hz, Non-Interlaced (112.27 MHz dotclock) */ + "mac22", 75, 1600, 1024, 8908, 88, 104, 1, 10, 16, 1, + FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + } #if 0 /* Anyone who has timings for these? */ @@ -154,12 +162,15 @@ { VMODE_1024_768_75V, &mac_modedb[9] }, { VMODE_1024_768_70, &mac_modedb[8] }, { VMODE_1024_768_60, &mac_modedb[7] }, + { VMODE_1152_768_60, &mac_modedb[14] }, /* 1152x870 */ { VMODE_1152_870_75, &mac_modedb[11] }, /* 1280x960 */ { VMODE_1280_960_75, &mac_modedb[12] }, /* 1280x1024 */ { VMODE_1280_1024_75, &mac_modedb[13] }, + /* 1600x1024 */ + { VMODE_1600_1024_60, &mac_modedb[15] }, { -1, NULL } }; @@ -191,6 +202,7 @@ { 0x730, VMODE_768_576_50I }, /* PAL (Alternate) */ { 0x73a, VMODE_1152_870_75 }, /* 3rd party 19" */ { 0x73f, VMODE_640_480_67 }, /* no sense lines connected at all */ + { 0xBEEF, VMODE_1600_1024_60 }, /* 22" Apple Cinema Display */ { -1, VMODE_640_480_60 }, /* catch-all, must be last */ }; diff -urN linux-2.4.2-ac20/include/linux/pci_ids.h linux-2.4.2-ac20.macmodes/include/linux/pci_ids.h --- linux-2.4.2-ac20/include/linux/pci_ids.h Tue Mar 13 23:10:53 2001 +++ linux-2.4.2-ac20.macmodes/include/linux/pci_ids.h Tue Mar 13 23:14:04 2001 @@ -194,6 +194,7 @@ #define PCI_DEVICE_ID_ATI_RAGE128_PP 0x5050 #define PCI_DEVICE_ID_ATI_RAGE128_PQ 0x5051 #define PCI_DEVICE_ID_ATI_RAGE128_PR 0x5052 +#define PCI_DEVICE_ID_ATI_RAGE128_TR 0x5452 #define PCI_DEVICE_ID_ATI_RAGE128_PS 0x5053 #define PCI_DEVICE_ID_ATI_RAGE128_PT 0x5054 #define PCI_DEVICE_ID_ATI_RAGE128_PU 0x5055 diff -urN linux-2.4.2-ac20/include/video/macmodes.h linux-2.4.2-ac20.macmodes/include/video/macmodes.h --- linux-2.4.2-ac20/include/video/macmodes.h Thu Feb 10 04:43:57 2000 +++ linux-2.4.2-ac20.macmodes/include/video/macmodes.h Tue Mar 13 23:12:32 2001 @@ -38,7 +38,9 @@ #define VMODE_1152_870_75 18 /* 1152x870, 75Hz */ #define VMODE_1280_960_75 19 /* 1280x960, 75Hz */ #define VMODE_1280_1024_75 20 /* 1280x1024, 75Hz */ -#define VMODE_MAX 20 +#define VMODE_1152_768_60 21 /* 1152x768, 60Hz Titanium PowerBook */ +#define VMODE_1600_1024_60 22 /* 1600x1024, 60Hz 22" Cinema Display */ +#define VMODE_MAX 22 #define VMODE_CHOOSE 99 #define CMODE_NVRAM -1