| /* | |
| * valkyriefb.h: Constants of all sorts for valkyriefb | |
| * | |
| * Created 8 August 1998 by | |
| * Martin Costabel <costabel@wanadoo.fr> and Kevin Schoedel | |
| * | |
| * Vmode-switching changes and vmode 15/17 modifications created 29 August | |
| * 1998 by Barry K. Nathan <barryn@pobox.com>. | |
| * | |
| * vmode 10 changed by Steven Borley <sjb@salix.demon.co.uk>, 14 mai 2000 | |
| * | |
| * Ported to 68k Macintosh by David Huggins-Daines <dhd@debian.org> | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License | |
| * as published by the Free Software Foundation; either version | |
| * 2 of the License, or (at your option) any later version. | |
| * | |
| * Based directly on: | |
| * | |
| * controlfb.h: Constants of all sorts for controlfb | |
| * Copyright (C) 1998 Daniel Jacobowitz <dan@debian.org> | |
| * | |
| * pmc-valkyrie.h: Console support for PowerMac "control" display adaptor. | |
| * Copyright (C) 1997 Paul Mackerras. | |
| * | |
| * pmc-valkyrie.c: Console support for PowerMac "control" display adaptor. | |
| * Copyright (C) 1997 Paul Mackerras. | |
| * | |
| * and indirectly from: | |
| * | |
| * pmc-control.h: Console support for PowerMac "control" display adaptor. | |
| * Copyright (C) 1997 Paul Mackerras. | |
| * | |
| * pmc-control.c: Console support for PowerMac "control" display adaptor. | |
| * Copyright (C) 1996 Paul Mackerras. | |
| * | |
| * platinumfb.c: Console support for PowerMac "platinum" display adaptor. | |
| * Copyright (C) 1998 Jon Howell | |
| */ | |
| #ifdef CONFIG_MAC | |
| /* Valkyrie registers are word-aligned on m68k */ | |
| #define VALKYRIE_REG_PADSIZE 3 | |
| #else | |
| #define VALKYRIE_REG_PADSIZE 7 | |
| #endif | |
| /* | |
| * Structure of the registers for the Valkyrie colormap registers. | |
| */ | |
| struct cmap_regs { | |
| unsigned char addr; | |
| char pad1[VALKYRIE_REG_PADSIZE]; | |
| unsigned char lut; | |
| }; | |
| /* | |
| * Structure of the registers for the "valkyrie" display adaptor. | |
| */ | |
| struct vpreg { /* padded register */ | |
| unsigned char r; | |
| char pad[VALKYRIE_REG_PADSIZE]; | |
| }; | |
| struct valkyrie_regs { | |
| struct vpreg mode; | |
| struct vpreg depth; | |
| struct vpreg status; | |
| struct vpreg reg3; | |
| struct vpreg intr; | |
| struct vpreg reg5; | |
| struct vpreg intr_enb; | |
| struct vpreg msense; | |
| }; | |
| /* | |
| * Register initialization tables for the valkyrie display. | |
| * | |
| * Dot clock rate is | |
| * 3.9064MHz * 2**clock_params[2] * clock_params[1] / clock_params[0]. | |
| */ | |
| struct valkyrie_regvals { | |
| unsigned char mode; | |
| unsigned char clock_params[3]; | |
| int pitch[2]; /* bytes/line, indexed by color_mode */ | |
| int hres; | |
| int vres; | |
| }; | |
| #ifndef CONFIG_MAC | |
| /* Register values for 1024x768, 75Hz mode (17) */ | |
| /* I'm not sure which mode this is (16 or 17), so I'm defining it as 17, | |
| * since the equivalent mode in controlfb (which I adapted this from) is | |
| * also 17. Just because MacOS can't do this on Valkyrie doesn't mean we | |
| * can't! :) | |
| * | |
| * I was going to use 12, 31, 3, which I found by myself, but instead I'm | |
| * using 11, 28, 3 like controlfb, for consistency's sake. | |
| */ | |
| static struct valkyrie_regvals valkyrie_reg_init_17 = { | |
| 15, | |
| { 11, 28, 3 }, /* pixel clock = 79.55MHz for V=74.50Hz */ | |
| { 1024, 0 }, | |
| 1024, 768 | |
| }; | |
| /* Register values for 1024x768, 72Hz mode (15) */ | |
| /* This used to be 12, 30, 3 for pixel clock = 78.12MHz for V=72.12Hz, but | |
| * that didn't match MacOS in the same video mode on this chip, and it also | |
| * caused the 15" Apple Studio Display to not work in this mode. While this | |
| * mode still doesn't match MacOS exactly (as far as I can tell), it's a lot | |
| * closer now, and it works with the Apple Studio Display. | |
| * | |
| * Yes, even though MacOS calls it "72Hz", in reality it's about 70Hz. | |
| */ | |
| static struct valkyrie_regvals valkyrie_reg_init_15 = { | |
| 15, | |
| { 12, 29, 3 }, /* pixel clock = 75.52MHz for V=69.71Hz? */ | |
| /* I interpolated the V=69.71 from the vmode 14 and old 15 | |
| * numbers. Is this result correct? | |
| */ | |
| { 1024, 0 }, | |
| 1024, 768 | |
| }; | |
| /* Register values for 1024x768, 60Hz mode (14) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_14 = { | |
| 14, | |
| { 15, 31, 3 }, /* pixel clock = 64.58MHz for V=59.62Hz */ | |
| { 1024, 0 }, | |
| 1024, 768 | |
| }; | |
| #endif /* !defined CONFIG_MAC */ | |
| /* Register values for 832x624, 75Hz mode (13) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_13 = { | |
| 9, | |
| { 23, 42, 3 }, /* pixel clock = 57.07MHz for V=74.27Hz */ | |
| { 832, 0 }, | |
| 832, 624 | |
| }; | |
| /* Register values for 800x600, 72Hz mode (11) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_11 = { | |
| 13, | |
| { 17, 27, 3 }, /* pixel clock = 49.63MHz for V=71.66Hz */ | |
| { 800, 0 }, | |
| 800, 600 | |
| }; | |
| /* Register values for 800x600, 60Hz mode (10) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_10 = { | |
| 12, | |
| { 25, 32, 3 }, /* pixel clock = 40.0015MHz, | |
| used to be 20,53,2, pixel clock 41.41MHz for V=59.78Hz */ | |
| { 800, 1600 }, | |
| 800, 600 | |
| }; | |
| /* Register values for 640x480, 67Hz mode (6) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_6 = { | |
| 6, | |
| { 14, 27, 2 }, /* pixel clock = 30.13MHz for V=66.43Hz */ | |
| { 640, 1280 }, | |
| 640, 480 | |
| }; | |
| /* Register values for 640x480, 60Hz mode (5) */ | |
| static struct valkyrie_regvals valkyrie_reg_init_5 = { | |
| 11, | |
| { 23, 37, 2 }, /* pixel clock = 25.14MHz for V=59.85Hz */ | |
| { 640, 1280 }, | |
| 640, 480 | |
| }; | |
| static struct valkyrie_regvals *valkyrie_reg_init[VMODE_MAX] = { | |
| NULL, | |
| NULL, | |
| NULL, | |
| NULL, | |
| &valkyrie_reg_init_5, | |
| &valkyrie_reg_init_6, | |
| NULL, | |
| NULL, | |
| NULL, | |
| &valkyrie_reg_init_10, | |
| &valkyrie_reg_init_11, | |
| NULL, | |
| &valkyrie_reg_init_13, | |
| #ifndef CONFIG_MAC | |
| &valkyrie_reg_init_14, | |
| &valkyrie_reg_init_15, | |
| NULL, | |
| &valkyrie_reg_init_17, | |
| #endif | |
| }; |