grub/video/sm712_init.c
Vladimir 'phcoder' Serbinenko cf0c775ed4 * include/grub/vga.h (grub_vga_gr_write): Add GRUB_MACHINE_PCI_IO_BASE.
(grub_vga_gr_read): Likewise.
	(grub_vga_cr_write): Likewise.
	(grub_vga_cr_read): Likewise.
	(grub_vga_sr_write): Likewise.
	(grub_vga_sr_read): Likewise.
	(grub_vga_palette_read): Likewise.
	(grub_vga_palette_write): Likewise.
	* video/sm712.c (GRUB_SM712_REG_BASE): New definition.
	(grub_sm712_sr_read): New function.
	(grub_video_sm712_setup): Use grub_vga_sr_write and grub_sm712_sr_read.
	* video/sm712_init.c (sm712_init): Substract GRUB_MACHINE_PCI_IO_BASE.
2010-08-10 13:43:43 +02:00

540 lines
10 KiB
C

/* Following sequence is a capture of sm712 initialisation sequence. */
static struct
{
int directive;
grub_uint32_t addr;
grub_uint32_t val;
} sm712_init[] =
{
{1, 0x3c4, 0x21},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x62},
{1, 0x3c5, 0x7a},
{1, 0x3c4, 0x6a},
{1, 0x3c5, 0x16},
{1, 0x3c4, 0x6b},
{1, 0x3c5, 0x2},
{1, 0x3c6, 0x0},
{1, 0x3c4, 0x0},
{1, 0x3c5, 0x1},
{1, 0x3c2, 0xeb},
{1, 0x3c4, 0x0},
{1, 0x3c5, 0x3},
{1, 0x3c4, 0x1},
{1, 0x3c5, 0x1},
{1, 0x3c4, 0x2},
{1, 0x3c5, 0xf},
{1, 0x3c4, 0x3},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x4},
{1, 0x3c5, 0xe},
{1, 0x3c4, 0x10},
{1, 0x3c5, 0xc8},
{1, 0x3c4, 0x11},
{1, 0x3c5, 0x40},
{1, 0x3c4, 0x12},
{1, 0x3c5, 0x14},
{1, 0x3c4, 0x13},
{1, 0x3c5, 0x60},
{1, 0x3c4, 0x14},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x15},
{1, 0x3c5, 0xa},
{1, 0x3c4, 0x16},
{1, 0x3c5, 0x92},
{1, 0x3c4, 0x17},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x18},
{1, 0x3c5, 0x51},
{1, 0x3c4, 0x19},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x1a},
{1, 0x3c5, 0x1},
{1, 0x3c4, 0x1b},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x1c},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x1d},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x1e},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x1f},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x20},
{1, 0x3c5, 0xc4},
{1, 0x3c4, 0x21},
{1, 0x3c5, 0x30},
{1, 0x3c4, 0x22},
{1, 0x3c5, 0x2},
{1, 0x3c4, 0x23},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x24},
{1, 0x3c5, 0x1},
{1, 0x3c4, 0x30},
{1, 0x3c5, 0x28},
{1, 0x3c4, 0x31},
{1, 0x3c5, 0x3},
{1, 0x3c4, 0x32},
{1, 0x3c5, 0x24},
{1, 0x3c4, 0x33},
{1, 0x3c5, 0x9},
{1, 0x3c4, 0x34},
{1, 0x3c5, 0xc0},
{1, 0x3c4, 0x35},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x36},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x37},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x38},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x39},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x3a},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x3b},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x3c},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x3d},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x3e},
{1, 0x3c5, 0x3},
{1, 0x3c4, 0x3f},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0x40},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x41},
{1, 0x3c5, 0xfc},
{1, 0x3c4, 0x42},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x43},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x44},
{1, 0x3c5, 0x20},
{1, 0x3c4, 0x45},
{1, 0x3c5, 0x18},
{1, 0x3c4, 0x46},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x47},
{1, 0x3c5, 0xfc},
{1, 0x3c4, 0x48},
{1, 0x3c5, 0x20},
{1, 0x3c4, 0x49},
{1, 0x3c5, 0xc},
{1, 0x3c4, 0x4a},
{1, 0x3c5, 0x44},
{1, 0x3c4, 0x4b},
{1, 0x3c5, 0x20},
{1, 0x3c4, 0x4c},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x4d},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x4e},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x4f},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x50},
{1, 0x3c5, 0x6},
{1, 0x3c4, 0x51},
{1, 0x3c5, 0x68},
{1, 0x3c4, 0x52},
{1, 0x3c5, 0xa7},
{1, 0x3c4, 0x53},
{1, 0x3c5, 0x7f},
{1, 0x3c4, 0x54},
{1, 0x3c5, 0x83},
{1, 0x3c4, 0x55},
{1, 0x3c5, 0x24},
{1, 0x3c4, 0x56},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0x57},
{1, 0x3c5, 0x3},
{1, 0x3c4, 0x58},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x59},
{1, 0x3c5, 0x60},
{1, 0x3c4, 0x5a},
{1, 0x3c5, 0x59},
{1, 0x3c4, 0x5b},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x5c},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x5d},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x5e},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x5f},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x60},
{1, 0x3c5, 0x1},
{1, 0x3c4, 0x61},
{1, 0x3c5, 0x80},
{1, 0x3c4, 0x63},
{1, 0x3c5, 0x1a},
{1, 0x3c4, 0x64},
{1, 0x3c5, 0x1a},
{1, 0x3c4, 0x65},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x66},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x67},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x68},
{1, 0x3c5, 0x50},
{1, 0x3c4, 0x69},
{1, 0x3c5, 0x3},
{1, 0x3c4, 0x6c},
{1, 0x3c5, 0x52},
{1, 0x3c4, 0x6d},
{1, 0x3c5, 0x89},
{1, 0x3c4, 0x6e},
{1, 0x3c5, 0x9},
{1, 0x3c4, 0x6f},
{1, 0x3c5, 0x2},
{1, 0x3c4, 0x70},
{1, 0x3c5, 0x4},
{1, 0x3c4, 0x71},
{1, 0x3c5, 0x45},
{1, 0x3c4, 0x72},
{1, 0x3c5, 0x30},
{1, 0x3c4, 0x73},
{1, 0x3c5, 0x30},
{1, 0x3c4, 0x74},
{1, 0x3c5, 0x40},
{1, 0x3c4, 0x75},
{1, 0x3c5, 0x20},
{1, 0x3c4, 0x80},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0x81},
{1, 0x3c5, 0x7},
{1, 0x3c4, 0x82},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x83},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x84},
{1, 0x3c5, 0x8},
{1, 0x3c4, 0x85},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x86},
{1, 0x3c5, 0x42},
{1, 0x3c4, 0x87},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x88},
{1, 0x3c5, 0x59},
{1, 0x3c4, 0x89},
{1, 0x3c5, 0x2},
{1, 0x3c4, 0x8a},
{1, 0x3c5, 0x44},
{1, 0x3c4, 0x8b},
{1, 0x3c5, 0x2},
{1, 0x3c4, 0x8c},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x8d},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0x8e},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x8f},
{1, 0x3c5, 0x3a},
{1, 0x3c4, 0x90},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x91},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x92},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0x93},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0xa0},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0xa1},
{1, 0x3c5, 0x10},
{1, 0x3c4, 0xa2},
{1, 0x3c5, 0x8},
{1, 0x3c4, 0xa3},
{1, 0x3c5, 0x0},
{1, 0x3c4, 0xa4},
{1, 0x3c5, 0x2},
{1, 0x3c4, 0xa5},
{1, 0x3c5, 0xed},
{1, 0x3c4, 0xa6},
{1, 0x3c5, 0xed},
{1, 0x3c4, 0xa7},
{1, 0x3c5, 0xed},
{1, 0x3c4, 0xa8},
{1, 0x3c5, 0x7b},
{1, 0x3c4, 0xa9},
{1, 0x3c5, 0xfb},
{1, 0x3c4, 0xaa},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0xab},
{1, 0x3c5, 0xff},
{1, 0x3c4, 0xac},
{1, 0x3c5, 0x97},
{1, 0x3c4, 0xad},
{1, 0x3c5, 0xef},
{1, 0x3c4, 0xae},
{1, 0x3c5, 0xbf},
{1, 0x3c4, 0xaf},
{1, 0x3c5, 0xdf},
{1, 0x3ce, 0x0},
{1, 0x3cf, 0x0},
{1, 0x3ce, 0x1},
{1, 0x3cf, 0x0},
{1, 0x3ce, 0x2},
{1, 0x3cf, 0x0},
{1, 0x3ce, 0x3},
{1, 0x3cf, 0x0},
{1, 0x3ce, 0x4},
{1, 0x3cf, 0x0},
{1, 0x3ce, 0x5},
{1, 0x3cf, 0x40},
{1, 0x3ce, 0x6},
{1, 0x3cf, 0x5},
{1, 0x3ce, 0x7},
{1, 0x3cf, 0xf},
{1, 0x3ce, 0x8},
{1, 0x3cf, 0xff},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x0},
{-1, 0x3c1, 0x3e},
{1, 0x3c0, 0x0},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x1},
{-1, 0x3c1, 0x3b},
{1, 0x3c0, 0x1},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x2},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0x2},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x3},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0x3},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x4},
{-1, 0x3c1, 0x3b},
{1, 0x3c0, 0x4},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x5},
{-1, 0x3c1, 0x2f},
{1, 0x3c0, 0x5},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x6},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0x6},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x7},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0x7},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x8},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0x8},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x9},
{-1, 0x3c1, 0x3d},
{1, 0x3c0, 0x9},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xa},
{-1, 0x3c1, 0x1f},
{1, 0x3c0, 0xa},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xb},
{-1, 0x3c1, 0x1f},
{1, 0x3c0, 0xb},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xc},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0xc},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xd},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0xd},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xe},
{-1, 0x3c1, 0x3f},
{1, 0x3c0, 0xe},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0xf},
{-1, 0x3c1, 0x2e},
{1, 0x3c0, 0xf},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x10},
{-1, 0x3c1, 0x0},
{1, 0x3c0, 0x41},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x11},
{-1, 0x3c1, 0x0},
{1, 0x3c0, 0x0},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x12},
{-1, 0x3c1, 0x0},
{1, 0x3c0, 0xf},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x13},
{-1, 0x3c1, 0x0},
{1, 0x3c0, 0x0},
{-1, 0x3da, 0x5},
{1, 0x3c0, 0x14},
{-1, 0x3c1, 0x0},
{1, 0x3c0, 0x0},
{1, 0x3d4, 0x0},
{1, 0x3d5, 0xa3},
{1, 0x3d4, 0x1},
{1, 0x3d5, 0x7f},
{1, 0x3d4, 0x2},
{1, 0x3d5, 0x7f},
{1, 0x3d4, 0x3},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x4},
{1, 0x3d5, 0x85},
{1, 0x3d4, 0x5},
{1, 0x3d5, 0x16},
{1, 0x3d4, 0x6},
{1, 0x3d5, 0x24},
{1, 0x3d4, 0x7},
{1, 0x3d5, 0xf5},
{1, 0x3d4, 0x8},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x9},
{1, 0x3d5, 0x60},
{1, 0x3d4, 0xa},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xb},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xc},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xd},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xe},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xf},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x10},
{1, 0x3d5, 0x3},
{1, 0x3d4, 0x11},
{1, 0x3d5, 0x9},
{1, 0x3d4, 0x12},
{1, 0x3d5, 0xff},
{1, 0x3d4, 0x13},
{1, 0x3d5, 0x80},
{1, 0x3d4, 0x14},
{1, 0x3d5, 0x40},
{1, 0x3d4, 0x15},
{1, 0x3d5, 0xff},
{1, 0x3d4, 0x16},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x17},
{1, 0x3d5, 0xe3},
{1, 0x3d4, 0x18},
{1, 0x3d5, 0xff},
{1, 0x3d4, 0x30},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x31},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x32},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x33},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x34},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x35},
{1, 0x3d5, 0x80},
{1, 0x3d4, 0x36},
{1, 0x3d5, 0x2},
{1, 0x3d4, 0x37},
{1, 0x3d5, 0x20},
{1, 0x3d4, 0x38},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x39},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x3a},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x3b},
{1, 0x3d5, 0x40},
{1, 0x3d4, 0x3c},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x3d},
{1, 0x3d5, 0xff},
{1, 0x3d4, 0x3e},
{1, 0x3d5, 0x46},
{1, 0x3d4, 0x3f},
{1, 0x3d5, 0x91},
{1, 0x3d4, 0x40},
{1, 0x3d5, 0xa3},
{1, 0x3d4, 0x41},
{1, 0x3d5, 0x7f},
{1, 0x3d4, 0x42},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x43},
{1, 0x3d5, 0x86},
{1, 0x3d4, 0x44},
{1, 0x3d5, 0x15},
{1, 0x3d4, 0x45},
{1, 0x3d5, 0x24},
{1, 0x3d4, 0x46},
{1, 0x3d5, 0xff},
{1, 0x3d4, 0x47},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x48},
{1, 0x3d5, 0x1},
{1, 0x3d4, 0x49},
{1, 0x3d5, 0x7},
{1, 0x3d4, 0x4a},
{1, 0x3d5, 0xe5},
{1, 0x3d4, 0x4b},
{1, 0x3d5, 0x20},
{1, 0x3d4, 0x4c},
{1, 0x3d5, 0x7f},
{1, 0x3d4, 0x4d},
{1, 0x3d5, 0x57},
{1, 0x3d4, 0x90},
{1, 0x3d5, 0x55},
{1, 0x3d4, 0x91},
{1, 0x3d5, 0xd5},
{1, 0x3d4, 0x92},
{1, 0x3d5, 0x5d},
{1, 0x3d4, 0x93},
{1, 0x3d5, 0xdd},
{1, 0x3d4, 0x94},
{1, 0x3d5, 0x86},
{1, 0x3d4, 0x95},
{1, 0x3d5, 0x17},
{1, 0x3d4, 0x96},
{1, 0x3d5, 0x8e},
{1, 0x3d4, 0x97},
{1, 0x3d5, 0xaa},
{1, 0x3d4, 0x98},
{1, 0x3d5, 0x8a},
{1, 0x3d4, 0x99},
{1, 0x3d5, 0xa3},
{1, 0x3d4, 0x9a},
{1, 0x3d5, 0xde},
{1, 0x3d4, 0x9b},
{1, 0x3d5, 0xab},
{1, 0x3d4, 0x9c},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x9d},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x9e},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0x9f},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xa0},
{1, 0x3d5, 0x2},
{1, 0x3d4, 0xa1},
{1, 0x3d5, 0x2},
{1, 0x3d4, 0xa2},
{1, 0x3d5, 0x2},
{1, 0x3d4, 0xa3},
{1, 0x3d5, 0x15},
{1, 0x3d4, 0xa4},
{1, 0x3d5, 0x2},
{1, 0x3d4, 0xa5},
{1, 0x3d5, 0x6},
{1, 0x3d4, 0xa6},
{1, 0x3d5, 0x0},
{1, 0x3d4, 0xa7},
{1, 0x3d5, 0x0},
{1, 0x3c2, 0x67},
};