linux_dsm_epyc7002/drivers/video/fbdev/valkyriefb.h
Thomas Gleixner 2874c5fd28 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
Based on 1 normalized pattern(s):

  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

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-or-later

has been chosen to replace the boilerplate/reference in 3029 file(s).

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Allison Randal <allison@lohutok.net>
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-05-30 11:26:32 -07:00

197 lines
5.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* 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>
*
* 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
};