Video support in firmware

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-03-10 22:09:06 +01:00
parent c28e2d120b
commit 32f86589a6
2 changed files with 607 additions and 9 deletions

View file

@ -27,6 +27,10 @@
#include <grub/video_fb.h>
#include <grub/pci.h>
#include "sm712_init.c"
#define GRUB_SM712_TOTAL_MEMORY_SPACE 0x700400
static struct
{
struct grub_video_mode_info mode_info;
@ -55,7 +59,7 @@ grub_video_sm712_video_fini (void)
{
if (framebuffer.mapped)
grub_pci_device_unmap_range (framebuffer.dev, framebuffer.ptr,
1024 * 600 * 2);
GRUB_SM712_TOTAL_MEMORY_SPACE);
return grub_video_fb_fini ();
}
@ -67,6 +71,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
int depth;
grub_err_t err;
int found = 0;
unsigned i;
auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)))
@ -102,11 +107,6 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
if (!found)
return grub_error (GRUB_ERR_IO, "Couldn't find graphics card");
if (found && framebuffer.base == 0)
{
/* FIXME: change framebuffer base */
}
/* Fill mode info details. */
framebuffer.mode_info.width = 1024;
framebuffer.mode_info.height = 600;
@ -124,12 +124,64 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
framebuffer.mode_info.reserved_mask_size = 0;
framebuffer.mode_info.reserved_field_pos = 0;
framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info);
if (found && framebuffer.base == 0)
{
grub_pci_address_t addr;
/* FIXME: choose address dynamically if needed. */
framebuffer.base = 0x04000000;
addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_ADDRESS_REG0);
grub_pci_write (addr, framebuffer.base);
/* Set latency. */
addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_CACHELINE);
grub_pci_write (addr, 0x8);
/* Enable address spaces. */
addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_COMMAND);
grub_pci_write (addr, 0x7);
}
/* We can safely discard volatile attribute. */
framebuffer.ptr = (void *) grub_pci_device_map_range (framebuffer.dev,
framebuffer.base,
1024 * 600 * 2);
framebuffer.ptr
= (void *) grub_pci_device_map_range (framebuffer.dev,
framebuffer.base,
GRUB_SM712_TOTAL_MEMORY_SPACE);
framebuffer.mapped = 1;
/* Initialise SM712. */
grub_outb (0x18, GRUB_MACHINE_PCI_IO_BASE + 0x3c4);
grub_outb (0x11, GRUB_MACHINE_PCI_IO_BASE + 0x3c5);
/* Prevent garbage from appearing on the screen. */
grub_memset (framebuffer.ptr, 0,
framebuffer.mode_info.height * framebuffer.mode_info.pitch);
for (i = 0; i < ARRAY_SIZE (sm712_init); i++)
switch (sm712_init[i].directive)
{
case 1:
*(volatile grub_uint8_t *) ((char *) framebuffer.ptr
+ sm712_init[i].addr) = sm712_init[i].val;
break;
case -1:
{
grub_uint8_t val = *(volatile grub_uint8_t *)
((char *) framebuffer.ptr + sm712_init[i].addr);
(void) val;
}
break;
case 2:
*(volatile grub_uint16_t *) ((char *) framebuffer.ptr
+ sm712_init[i].addr) = sm712_init[i].val;
break;
case 4:
*(volatile grub_uint32_t *) ((char *) framebuffer.ptr
+ sm712_init[i].addr) = sm712_init[i].val;
break;
}
err = grub_video_fb_create_render_target_from_pointer (&framebuffer.render_target, &framebuffer.mode_info, framebuffer.ptr);
if (err)

546
video/sm712_init.c Normal file
View file

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