From 38ad90b4840434df4650c617a236e1b01f8a43c6 Mon Sep 17 00:00:00 2001 From: Mahantesh Kumbar Date: Mon, 15 Aug 2016 20:19:20 +0530 Subject: gpu: nvgpu: Adding support for mclk module JIRA DNVGPU-88 Change-Id: Idecfff5a80fadde77887385491dd6b73b1956bac Signed-off-by: Mahantesh Kumbar Reviewed-on: http://git-master/r/1202551 (cherry picked from commit 3bcf9bad93fb6fdd4b87430b346ea41533149108) Reviewed-on: http://git-master/r/1223854 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/Makefile.nvgpu-t18x | 3 +- drivers/gpu/nvgpu/clk/clk_mclk.c | 1808 +++++++++++++++++++++++++++++++++ drivers/gpu/nvgpu/clk/clk_mclk.h | 19 + drivers/gpu/nvgpu/gp106/pmu_gp106.c | 2 + drivers/gpu/nvgpu/pmuif/gpmuifseq.h | 73 ++ 5 files changed, 1904 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/nvgpu/clk/clk_mclk.c create mode 100644 drivers/gpu/nvgpu/clk/clk_mclk.h create mode 100644 drivers/gpu/nvgpu/pmuif/gpmuifseq.h (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/Makefile.nvgpu-t18x b/drivers/gpu/nvgpu/Makefile.nvgpu-t18x index e7d18492..3e54a989 100644 --- a/drivers/gpu/nvgpu/Makefile.nvgpu-t18x +++ b/drivers/gpu/nvgpu/Makefile.nvgpu-t18x @@ -27,7 +27,8 @@ nvgpu-y += \ $(nvgpu-t18x)/gp106/acr_gp106.o \ $(nvgpu-t18x)/gp106/sec2_gp106.o \ $(nvgpu-t18x)/gp106/fifo_gp106.o \ - $(nvgpu-t18x)/gp106/ltc_gp106.o + $(nvgpu-t18x)/gp106/ltc_gp106.o \ + $(nvgpu-t18x)/clk/clk_mclk.o nvgpu-$(CONFIG_TEGRA_GK20A) += $(nvgpu-t18x)/gp10b/platform_gp10b_tegra.o diff --git a/drivers/gpu/nvgpu/clk/clk_mclk.c b/drivers/gpu/nvgpu/clk/clk_mclk.c new file mode 100644 index 00000000..02e16fcc --- /dev/null +++ b/drivers/gpu/nvgpu/clk/clk_mclk.c @@ -0,0 +1,1808 @@ +/* + * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include "gk20a/gk20a.h" +#include +#include "pmuif/gpmuifseq.h" +#include "gm206/bios_gm206.h" +#include "gk20a/pmu_gk20a.h" +#include "gk20a/hw_pwr_gk20a.h" + +#define VREG_COUNT 24 + +struct memory_link_training_pattern { + u32 regaddr; + u32 writeval; +}; + +static struct memory_link_training_pattern memory_shadow_reglist[] = { + {0x9a065c, 0x20}, + {0x98467c, 0xffff0000}, + {0x984708, 0x30550}, + {0x98470c, 0x4C4C}, + {0x9006a0, 0x03030303}, + {0x9006a4, 0x03030303}, + {0x9046a0, 0x03030303}, + {0x9046a4, 0x03030303}, + {0x9086a0, 0x03030303}, + {0x9086a4, 0x03030303}, + {0x90c6a0, 0x03030303}, + {0x90c6a4, 0x03030303}, + {0x9106a0, 0x07070707}, + {0x9106a4, 0x07070707}, + {0x9146a0, 0x07070707}, + {0x9146a4, 0x07070707}, + {0x9846a8, 0x03030303}, + {0x9846ac, 0x03030303}, + {0x9a065c, 0x00}, +}; + +static struct memory_link_training_pattern memory_pattern_reglist[] = { + {0x9a0968, 0x0}, + {0x9a0920, 0x0}, + {0x9a0918, 0x0}, + {0x9a0920, 0x100}, + {0x9a0918, 0x0}, + {0x9a096c, 0x0}, + {0x9a0924, 0x0}, + {0x9a091c, 0x0}, + {0x9a0924, 0x100}, + {0x9a091c, 0x0}, + {0x9a0968, 0x100}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffffffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffffffff}, + {0x9a096c, 0x100}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffffffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffffffff}, + {0x9a0968, 0x200}, + {0x9a0920, 0xff}, + {0x9a0918, 0x55555555}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x55555555}, + {0x9a096c, 0x200}, + {0x9a0924, 0xff}, + {0x9a091c, 0x55555555}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x55555555}, + {0x9a0968, 0x300}, + {0x9a0920, 0x0}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a0920, 0x100}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a096c, 0x300}, + {0x9a0924, 0x0}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0924, 0x100}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0968, 0x400}, + {0x9a0920, 0xff}, + {0x9a0918, 0x33333333}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x33333333}, + {0x9a096c, 0x400}, + {0x9a0924, 0xff}, + {0x9a091c, 0x33333333}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x33333333}, + {0x9a0968, 0x500}, + {0x9a0920, 0x0}, + {0x9a0918, 0xcccccccc}, + {0x9a0920, 0x100}, + {0x9a0918, 0xcccccccc}, + {0x9a096c, 0x500}, + {0x9a0924, 0x0}, + {0x9a091c, 0xcccccccc}, + {0x9a0924, 0x100}, + {0x9a091c, 0xcccccccc}, + {0x9a0968, 0x600}, + {0x9a0920, 0x0}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a0920, 0x100}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a096c, 0x600}, + {0x9a0924, 0x0}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0924, 0x100}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0968, 0x700}, + {0x9a0920, 0xff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a096c, 0x700}, + {0x9a0924, 0xff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0968, 0x800}, + {0x9a0920, 0xff}, + {0x9a0918, 0xff00ff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xff00ff}, + {0x9a096c, 0x800}, + {0x9a0924, 0xff}, + {0x9a091c, 0xff00ff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xff00ff}, + {0x9a0968, 0x900}, + {0x9a0920, 0x0}, + {0x9a0918, 0xff00ff00}, + {0x9a0920, 0x100}, + {0x9a0918, 0xff00ff00}, + {0x9a096c, 0x900}, + {0x9a0924, 0x0}, + {0x9a091c, 0xff00ff00}, + {0x9a0924, 0x100}, + {0x9a091c, 0xff00ff00}, + {0x9a0968, 0xa00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffff}, + {0x9a096c, 0xa00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffff}, + {0x9a0968, 0xb00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xffff0000}, + {0x9a0920, 0x100}, + {0x9a0918, 0xffff0000}, + {0x9a096c, 0xb00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xffff0000}, + {0x9a0924, 0x100}, + {0x9a091c, 0xffff0000}, + {0x9a0968, 0xc00}, + {0x9a0920, 0x0}, + {0x9a0918, 0x0}, + {0x9a0920, 0x100}, + {0x9a0918, 0x0}, + {0x9a096c, 0xc00}, + {0x9a0924, 0x0}, + {0x9a091c, 0x0}, + {0x9a0924, 0x100}, + {0x9a091c, 0x0}, + {0x9a0968, 0xd00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffffffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffffffff}, + {0x9a096c, 0xd00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffffffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffffffff}, + {0x9a0968, 0xe00}, + {0x9a0920, 0xff}, + {0x9a0918, 0x55555555}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x55555555}, + {0x9a096c, 0xe00}, + {0x9a0924, 0xff}, + {0x9a091c, 0x55555555}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x55555555}, + {0x9a0968, 0xf00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a0920, 0x100}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a096c, 0xf00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0924, 0x100}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0968, 0x1000}, + {0x9a0920, 0xff}, + {0x9a0918, 0x33333333}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x33333333}, + {0x9a096c, 0x1000}, + {0x9a0924, 0xff}, + {0x9a091c, 0x33333333}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x33333333}, + {0x9a0968, 0x1100}, + {0x9a0920, 0x0}, + {0x9a0918, 0xcccccccc}, + {0x9a0920, 0x100}, + {0x9a0918, 0xcccccccc}, + {0x9a096c, 0x1100}, + {0x9a0924, 0x0}, + {0x9a091c, 0xcccccccc}, + {0x9a0924, 0x100}, + {0x9a091c, 0xcccccccc}, + {0x9a0968, 0x1200}, + {0x9a0920, 0x0}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a0920, 0x100}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a096c, 0x1200}, + {0x9a0924, 0x0}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0924, 0x100}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0968, 0x1300}, + {0x9a0920, 0xff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a096c, 0x1300}, + {0x9a0924, 0xff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0968, 0x1400}, + {0x9a0920, 0xff}, + {0x9a0918, 0xff00ff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xff00ff}, + {0x9a096c, 0x1400}, + {0x9a0924, 0xff}, + {0x9a091c, 0xff00ff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xff00ff}, + {0x9a0968, 0x1500}, + {0x9a0920, 0x0}, + {0x9a0918, 0xff00ff00}, + {0x9a0920, 0x100}, + {0x9a0918, 0xff00ff00}, + {0x9a096c, 0x1500}, + {0x9a0924, 0x0}, + {0x9a091c, 0xff00ff00}, + {0x9a0924, 0x100}, + {0x9a091c, 0xff00ff00}, + {0x9a0968, 0x1600}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffff}, + {0x9a096c, 0x1600}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffff}, + {0x9a0968, 0x1700}, + {0x9a0920, 0x0}, + {0x9a0918, 0xffff0000}, + {0x9a0920, 0x100}, + {0x9a0918, 0xffff0000}, + {0x9a096c, 0x1700}, + {0x9a0924, 0x0}, + {0x9a091c, 0xffff0000}, + {0x9a0924, 0x100}, + {0x9a091c, 0xffff0000}, + {0x9a0968, 0x1800}, + {0x9a0920, 0x0}, + {0x9a0918, 0x0}, + {0x9a0920, 0x100}, + {0x9a0918, 0x0}, + {0x9a096c, 0x1800}, + {0x9a0924, 0x0}, + {0x9a091c, 0x0}, + {0x9a0924, 0x100}, + {0x9a091c, 0x0}, + {0x9a0968, 0x1900}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffffffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffffffff}, + {0x9a096c, 0x1900}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffffffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffffffff}, + {0x9a0968, 0x1a00}, + {0x9a0920, 0xff}, + {0x9a0918, 0x55555555}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x55555555}, + {0x9a096c, 0x1a00}, + {0x9a0924, 0xff}, + {0x9a091c, 0x55555555}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x55555555}, + {0x9a0968, 0x1b00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a0920, 0x100}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a096c, 0x1b00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0924, 0x100}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0968, 0x1c00}, + {0x9a0920, 0xff}, + {0x9a0918, 0x33333333}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x33333333}, + {0x9a096c, 0x1c00}, + {0x9a0924, 0xff}, + {0x9a091c, 0x33333333}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x33333333}, + {0x9a0968, 0x1d00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xcccccccc}, + {0x9a0920, 0x100}, + {0x9a0918, 0xcccccccc}, + {0x9a096c, 0x1d00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xcccccccc}, + {0x9a0924, 0x100}, + {0x9a091c, 0xcccccccc}, + {0x9a0968, 0x1e00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a0920, 0x100}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a096c, 0x1e00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0924, 0x100}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0968, 0x1f00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a096c, 0x1f00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0968, 0x2000}, + {0x9a0920, 0xff}, + {0x9a0918, 0xff00ff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xff00ff}, + {0x9a096c, 0x2000}, + {0x9a0924, 0xff}, + {0x9a091c, 0xff00ff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xff00ff}, + {0x9a0968, 0x2100}, + {0x9a0920, 0x0}, + {0x9a0918, 0xff00ff00}, + {0x9a0920, 0x100}, + {0x9a0918, 0xff00ff00}, + {0x9a096c, 0x2100}, + {0x9a0924, 0x0}, + {0x9a091c, 0xff00ff00}, + {0x9a0924, 0x100}, + {0x9a091c, 0xff00ff00}, + {0x9a0968, 0x2200}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffff}, + {0x9a096c, 0x2200}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffff}, + {0x9a0968, 0x2300}, + {0x9a0920, 0x0}, + {0x9a0918, 0xffff0000}, + {0x9a0920, 0x100}, + {0x9a0918, 0xffff0000}, + {0x9a096c, 0x2300}, + {0x9a0924, 0x0}, + {0x9a091c, 0xffff0000}, + {0x9a0924, 0x100}, + {0x9a091c, 0xffff0000}, + {0x9a0968, 0x2400}, + {0x9a0920, 0x0}, + {0x9a0918, 0x0}, + {0x9a0920, 0x100}, + {0x9a0918, 0x0}, + {0x9a096c, 0x2400}, + {0x9a0924, 0x0}, + {0x9a091c, 0x0}, + {0x9a0924, 0x100}, + {0x9a091c, 0x0}, + {0x9a0968, 0x2500}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffffffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffffffff}, + {0x9a096c, 0x2500}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffffffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffffffff}, + {0x9a0968, 0x2600}, + {0x9a0920, 0xff}, + {0x9a0918, 0x55555555}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x55555555}, + {0x9a096c, 0x2600}, + {0x9a0924, 0xff}, + {0x9a091c, 0x55555555}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x55555555}, + {0x9a0968, 0x2700}, + {0x9a0920, 0x0}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a0920, 0x100}, + {0x9a0918, 0xaaaaaaaa}, + {0x9a096c, 0x2700}, + {0x9a0924, 0x0}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0924, 0x100}, + {0x9a091c, 0xaaaaaaaa}, + {0x9a0968, 0x2800}, + {0x9a0920, 0xff}, + {0x9a0918, 0x33333333}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0x33333333}, + {0x9a096c, 0x2800}, + {0x9a0924, 0xff}, + {0x9a091c, 0x33333333}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0x33333333}, + {0x9a0968, 0x2900}, + {0x9a0920, 0x0}, + {0x9a0918, 0xcccccccc}, + {0x9a0920, 0x100}, + {0x9a0918, 0xcccccccc}, + {0x9a096c, 0x2900}, + {0x9a0924, 0x0}, + {0x9a091c, 0xcccccccc}, + {0x9a0924, 0x100}, + {0x9a091c, 0xcccccccc}, + {0x9a0968, 0x2a00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a0920, 0x100}, + {0x9a0918, 0xf0f0f0f0}, + {0x9a096c, 0x2a00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0924, 0x100}, + {0x9a091c, 0xf0f0f0f0}, + {0x9a0968, 0x2b00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xf0f0f0f}, + {0x9a096c, 0x2b00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xf0f0f0f}, + {0x9a0968, 0x2c00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xff00ff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xff00ff}, + {0x9a096c, 0x2c00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xff00ff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xff00ff}, + {0x9a0968, 0x2d00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xff00ff00}, + {0x9a0920, 0x100}, + {0x9a0918, 0xff00ff00}, + {0x9a096c, 0x2d00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xff00ff00}, + {0x9a0924, 0x100}, + {0x9a091c, 0xff00ff00}, + {0x9a0968, 0x2e00}, + {0x9a0920, 0xff}, + {0x9a0918, 0xffff}, + {0x9a0920, 0x1ff}, + {0x9a0918, 0xffff}, + {0x9a096c, 0x2e00}, + {0x9a0924, 0xff}, + {0x9a091c, 0xffff}, + {0x9a0924, 0x1ff}, + {0x9a091c, 0xffff}, + {0x9a0968, 0x2f00}, + {0x9a0920, 0x0}, + {0x9a0918, 0xffff0000}, + {0x9a0920, 0x100}, + {0x9a0918, 0xffff0000}, + {0x9a096c, 0x2f00}, + {0x9a0924, 0x0}, + {0x9a091c, 0xffff0000}, + {0x9a0924, 0x100}, + {0x9a091c, 0xffff0000}, + {0x9a0968, 0x0}, + {0x9a0900, 0x0}, + {0x9a0968, 0x1}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x2}, + {0x9a0900, 0x0}, + {0x9a0968, 0x3}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x4}, + {0x9a0900, 0x0}, + {0x9a0968, 0x5}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x6}, + {0x9a0900, 0x0}, + {0x9a0968, 0x7}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x8}, + {0x9a0900, 0x0}, + {0x9a0968, 0x9}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa}, + {0x9a0900, 0x0}, + {0x9a0968, 0xb}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc}, + {0x9a0900, 0x0}, + {0x9a0968, 0xd}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xe}, + {0x9a0900, 0x0}, + {0x9a0968, 0xf}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x10}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x11}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x12}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x13}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x14}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x15}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x16}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x17}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x18}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x19}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x1a}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x1b}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x1c}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x1d}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x1e}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x1f}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x20}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x21}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x22}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x23}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x24}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x25}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x26}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x27}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x28}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x29}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x2a}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x2b}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x2c}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x2d}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x2e}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x2f}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x30}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x31}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x32}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x33}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x34}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x35}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x36}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x37}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x38}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x39}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x3a}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x3b}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x3c}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x3d}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x3e}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x3f}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x40}, + {0x9a0900, 0x0}, + {0x9a0968, 0x41}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x42}, + {0x9a0900, 0x0}, + {0x9a0968, 0x43}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x44}, + {0x9a0900, 0x0}, + {0x9a0968, 0x45}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x46}, + {0x9a0900, 0x0}, + {0x9a0968, 0x47}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x48}, + {0x9a0900, 0x0}, + {0x9a0968, 0x49}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x4a}, + {0x9a0900, 0x0}, + {0x9a0968, 0x4b}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x4c}, + {0x9a0900, 0x0}, + {0x9a0968, 0x4d}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x4e}, + {0x9a0900, 0x0}, + {0x9a0968, 0x4f}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x50}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x51}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x52}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x53}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x54}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x55}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x56}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x57}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x58}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x59}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x5a}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x5b}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x5c}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x5d}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x5e}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x5f}, + {0x9a0900, 0x0}, + {0x9a0968, 0x60}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x61}, + {0x9a0900, 0x0}, + {0x9a0968, 0x62}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x63}, + {0x9a0900, 0x0}, + {0x9a0968, 0x64}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x65}, + {0x9a0900, 0x0}, + {0x9a0968, 0x66}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x67}, + {0x9a0900, 0x0}, + {0x9a0968, 0x68}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x69}, + {0x9a0900, 0x0}, + {0x9a0968, 0x6a}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x6b}, + {0x9a0900, 0x0}, + {0x9a0968, 0x6c}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x6d}, + {0x9a0900, 0x0}, + {0x9a0968, 0x6e}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0x6f}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x70}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x71}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x72}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x73}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x74}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x75}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x76}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x77}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x78}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x79}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x7a}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x7b}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x7c}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x7d}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0x7e}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0x7f}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x80}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x81}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x82}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x83}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x84}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x85}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x86}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x87}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x88}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x89}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x8a}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x8b}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x8c}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x8d}, + {0x9a0900, 0xffff}, + {0x9a0968, 0x8e}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0x8f}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x90}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x91}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x92}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x93}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x94}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x95}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x96}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x97}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x98}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x99}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x9a}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x9b}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x9c}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x9d}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0x9e}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0x9f}, + {0x9a0900, 0x0}, + {0x9a0968, 0xa0}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa1}, + {0x9a0900, 0x0}, + {0x9a0968, 0xa2}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa3}, + {0x9a0900, 0x0}, + {0x9a0968, 0xa4}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa5}, + {0x9a0900, 0x0}, + {0x9a0968, 0xa6}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa7}, + {0x9a0900, 0x0}, + {0x9a0968, 0xa8}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xa9}, + {0x9a0900, 0x0}, + {0x9a0968, 0xaa}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xab}, + {0x9a0900, 0x0}, + {0x9a0968, 0xac}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xad}, + {0x9a0900, 0x0}, + {0x9a0968, 0xae}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xaf}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xb0}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xb1}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xb2}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xb3}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xb4}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xb5}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xb6}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xb7}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xb8}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xb9}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xba}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xbb}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xbc}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xbd}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xbe}, + {0x9a0900, 0x0}, + {0x9a0968, 0xbf}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc0}, + {0x9a0900, 0x0}, + {0x9a0968, 0xc1}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc2}, + {0x9a0900, 0x0}, + {0x9a0968, 0xc3}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc4}, + {0x9a0900, 0x0}, + {0x9a0968, 0xc5}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc6}, + {0x9a0900, 0x0}, + {0x9a0968, 0xc7}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xc8}, + {0x9a0900, 0x0}, + {0x9a0968, 0xc9}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xca}, + {0x9a0900, 0x0}, + {0x9a0968, 0xcb}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xcc}, + {0x9a0900, 0x0}, + {0x9a0968, 0xcd}, + {0x9a0900, 0xffffffff}, + {0x9a0968, 0xce}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xcf}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xd0}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xd1}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xd2}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xd3}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xd4}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xd5}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xd6}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xd7}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xd8}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xd9}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xda}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xdb}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xdc}, + {0x9a0900, 0x55555555}, + {0x9a0968, 0xdd}, + {0x9a0900, 0xaaaaaaaa}, + {0x9a0968, 0xde}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xdf}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xe0}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xe1}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xe2}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xe3}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xe4}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xe5}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xe6}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xe7}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xe8}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xe9}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xea}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xeb}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xec}, + {0x9a0900, 0xffff}, + {0x9a0968, 0xed}, + {0x9a0900, 0xffff0000}, + {0x9a0968, 0xee}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xef}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xf0}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xf1}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xf2}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xf3}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xf4}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xf5}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xf6}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xf7}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xf8}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xf9}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xfa}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xfb}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xfc}, + {0x9a0900, 0xff00ff}, + {0x9a0968, 0xfd}, + {0x9a0900, 0xff00ff00}, + {0x9a0968, 0xfe}, + {0x9a0900, 0x0}, + {0x9a0968, 0xff}, + {0x9a0900, 0xffffffff}, + {0x9a096c, 0x0}, + {0x9a0904, 0x0}, + {0x9a096c, 0x1}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x2}, + {0x9a0904, 0x0}, + {0x9a096c, 0x3}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x4}, + {0x9a0904, 0x0}, + {0x9a096c, 0x5}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x6}, + {0x9a0904, 0x0}, + {0x9a096c, 0x7}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x8}, + {0x9a0904, 0x0}, + {0x9a096c, 0x9}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa}, + {0x9a0904, 0x0}, + {0x9a096c, 0xb}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc}, + {0x9a0904, 0x0}, + {0x9a096c, 0xd}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xe}, + {0x9a0904, 0x0}, + {0x9a096c, 0xf}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x10}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x11}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x12}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x13}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x14}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x15}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x16}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x17}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x18}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x19}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x1a}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x1b}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x1c}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x1d}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x1e}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x1f}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x20}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x21}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x22}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x23}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x24}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x25}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x26}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x27}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x28}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x29}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x2a}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x2b}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x2c}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x2d}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x2e}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x2f}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x30}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x31}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x32}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x33}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x34}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x35}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x36}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x37}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x38}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x39}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x3a}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x3b}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x3c}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x3d}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x3e}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x3f}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x40}, + {0x9a0904, 0x0}, + {0x9a096c, 0x41}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x42}, + {0x9a0904, 0x0}, + {0x9a096c, 0x43}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x44}, + {0x9a0904, 0x0}, + {0x9a096c, 0x45}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x46}, + {0x9a0904, 0x0}, + {0x9a096c, 0x47}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x48}, + {0x9a0904, 0x0}, + {0x9a096c, 0x49}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x4a}, + {0x9a0904, 0x0}, + {0x9a096c, 0x4b}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x4c}, + {0x9a0904, 0x0}, + {0x9a096c, 0x4d}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x4e}, + {0x9a0904, 0x0}, + {0x9a096c, 0x4f}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x50}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x51}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x52}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x53}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x54}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x55}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x56}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x57}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x58}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x59}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x5a}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x5b}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x5c}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x5d}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x5e}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x5f}, + {0x9a0904, 0x0}, + {0x9a096c, 0x60}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x61}, + {0x9a0904, 0x0}, + {0x9a096c, 0x62}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x63}, + {0x9a0904, 0x0}, + {0x9a096c, 0x64}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x65}, + {0x9a0904, 0x0}, + {0x9a096c, 0x66}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x67}, + {0x9a0904, 0x0}, + {0x9a096c, 0x68}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x69}, + {0x9a0904, 0x0}, + {0x9a096c, 0x6a}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x6b}, + {0x9a0904, 0x0}, + {0x9a096c, 0x6c}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x6d}, + {0x9a0904, 0x0}, + {0x9a096c, 0x6e}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0x6f}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x70}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x71}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x72}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x73}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x74}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x75}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x76}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x77}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x78}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x79}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x7a}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x7b}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x7c}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x7d}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0x7e}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0x7f}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x80}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x81}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x82}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x83}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x84}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x85}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x86}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x87}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x88}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x89}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x8a}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x8b}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x8c}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x8d}, + {0x9a0904, 0xffff}, + {0x9a096c, 0x8e}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0x8f}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x90}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x91}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x92}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x93}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x94}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x95}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x96}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x97}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x98}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x99}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x9a}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x9b}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x9c}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x9d}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0x9e}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0x9f}, + {0x9a0904, 0x0}, + {0x9a096c, 0xa0}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa1}, + {0x9a0904, 0x0}, + {0x9a096c, 0xa2}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa3}, + {0x9a0904, 0x0}, + {0x9a096c, 0xa4}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa5}, + {0x9a0904, 0x0}, + {0x9a096c, 0xa6}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa7}, + {0x9a0904, 0x0}, + {0x9a096c, 0xa8}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xa9}, + {0x9a0904, 0x0}, + {0x9a096c, 0xaa}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xab}, + {0x9a0904, 0x0}, + {0x9a096c, 0xac}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xad}, + {0x9a0904, 0x0}, + {0x9a096c, 0xae}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xaf}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xb0}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xb1}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xb2}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xb3}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xb4}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xb5}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xb6}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xb7}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xb8}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xb9}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xba}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xbb}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xbc}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xbd}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xbe}, + {0x9a0904, 0x0}, + {0x9a096c, 0xbf}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc0}, + {0x9a0904, 0x0}, + {0x9a096c, 0xc1}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc2}, + {0x9a0904, 0x0}, + {0x9a096c, 0xc3}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc4}, + {0x9a0904, 0x0}, + {0x9a096c, 0xc5}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc6}, + {0x9a0904, 0x0}, + {0x9a096c, 0xc7}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xc8}, + {0x9a0904, 0x0}, + {0x9a096c, 0xc9}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xca}, + {0x9a0904, 0x0}, + {0x9a096c, 0xcb}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xcc}, + {0x9a0904, 0x0}, + {0x9a096c, 0xcd}, + {0x9a0904, 0xffffffff}, + {0x9a096c, 0xce}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xcf}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xd0}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xd1}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xd2}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xd3}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xd4}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xd5}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xd6}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xd7}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xd8}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xd9}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xda}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xdb}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xdc}, + {0x9a0904, 0x55555555}, + {0x9a096c, 0xdd}, + {0x9a0904, 0xaaaaaaaa}, + {0x9a096c, 0xde}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xdf}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xe0}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xe1}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xe2}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xe3}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xe4}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xe5}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xe6}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xe7}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xe8}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xe9}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xea}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xeb}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xec}, + {0x9a0904, 0xffff}, + {0x9a096c, 0xed}, + {0x9a0904, 0xffff0000}, + {0x9a096c, 0xee}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xef}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xf0}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xf1}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xf2}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xf3}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xf4}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xf5}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xf6}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xf7}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xf8}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xf9}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xfa}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xfb}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xfc}, + {0x9a0904, 0xff00ff}, + {0x9a096c, 0xfd}, + {0x9a0904, 0xff00ff00}, + {0x9a096c, 0xfe}, + {0x9a0904, 0x0}, + {0x9a096c, 0xff}, + {0x9a0904, 0xffffffff}, +}; + +static u8 seq_script_gp106[] = { + 0x0b, 0x00, 0x02, 0x00, 0x40, 0xc0, 0x62, 0x00, 0x22, 0x00, 0x02, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x40, 0x63, 0x61, 0x00, + 0x22, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x30, 0x03, 0x9a, 0x00, + 0x14, 0x00, 0x10, 0x00, 0x38, 0xd6, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x04, 0xd6, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, + 0x20, 0x4e, 0x00, 0x00, 0x21, 0x00, 0x09, 0x00, 0x00, 0x02, 0x9a, 0x00, + 0x00, 0x90, 0x8f, 0x02, 0x10, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x14, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x10, 0x02, 0x9a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, 0xe8, 0x03, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x10, 0x03, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x02, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0d, 0x00, + 0x48, 0x03, 0x9a, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x02, 0x9a, 0x00, + 0x00, 0x90, 0x8f, 0x82, 0x14, 0x03, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x9a, 0x00, 0x00, 0x90, 0x8f, 0x02, 0x90, 0x00, 0x9a, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x90, 0x00, 0x9a, 0x00, 0x7f, 0x00, 0x00, 0xc0, + 0x2e, 0x00, 0x02, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x27, 0x00, + 0x98, 0x06, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x06, 0x9a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9a, 0x00, 0xe7, 0x8f, 0x88, 0xf7, + 0x40, 0x0d, 0x9a, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x00, 0x02, 0x9a, 0x00, + 0x00, 0x90, 0x8f, 0x1a, 0x00, 0x08, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x73, 0x13, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x08, 0x9a, 0x00, + 0x90, 0x90, 0x67, 0x00, 0xf4, 0x73, 0x13, 0x00, 0x11, 0x00, 0x01, 0x00, + 0xf4, 0x73, 0x13, 0x00, 0x10, 0x00, 0x01, 0x00, 0xf4, 0x73, 0x13, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x20, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x20, + 0x20, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x13, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x34, 0x20, 0x13, 0x00, 0x00, 0x00, 0x8a, 0xf9, + 0x24, 0x20, 0x13, 0x00, 0x01, 0x32, 0x05, 0x00, 0x2c, 0x20, 0x13, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x08, 0x10, + 0x20, 0x20, 0x13, 0x00, 0x01, 0x00, 0x03, 0x20, 0x34, 0x00, 0x02, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x90, 0x73, 0x13, 0x00, 0x15, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0d, 0x00, 0x2c, 0x20, 0x13, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x04, 0x10, + 0xf4, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x13, 0x00, + 0x00, 0x00, 0x01, 0x98, 0x04, 0x20, 0x13, 0x00, 0x01, 0x0b, 0x01, 0x00, + 0x00, 0x20, 0x13, 0x00, 0x01, 0x00, 0x01, 0x98, 0x34, 0x00, 0x02, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x90, 0x73, 0x13, 0x00, 0x15, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x1d, 0x00, 0xf4, 0x73, 0x13, 0x00, + 0x00, 0x11, 0x00, 0x00, 0xf4, 0x73, 0x13, 0x00, 0x10, 0x11, 0x00, 0x00, + 0xec, 0x73, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x73, 0x13, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf4, 0x73, 0x13, 0x00, 0x12, 0x11, 0x00, 0x00, + 0xf4, 0x73, 0x13, 0x00, 0x12, 0x00, 0x00, 0x00, 0x08, 0x08, 0x9a, 0x00, + 0x70, 0x00, 0x08, 0x48, 0x00, 0x02, 0x9a, 0x00, 0x00, 0x10, 0x8f, 0x1a, + 0x24, 0x08, 0x9a, 0x00, 0xe5, 0x8f, 0x88, 0xf7, 0x08, 0x08, 0x9a, 0x00, + 0x70, 0x00, 0xa8, 0x4a, 0x24, 0x08, 0x9a, 0x00, 0x85, 0x8f, 0x88, 0xf7, + 0x38, 0x1f, 0x9a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, 0x1f, 0x9a, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x34, 0x0d, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x21, 0x00, 0x09, 0x00, + 0x5c, 0x06, 0x9a, 0x00, 0x22, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x9a, 0x00, + 0xd0, 0x20, 0x00, 0xfd, 0xd4, 0x0e, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xd4, 0x0e, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x2c, 0x01, 0x00, 0x00, 0x21, 0x00, 0x27, 0x00, 0x2c, 0x08, 0x9a, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x08, 0x9a, 0x00, 0x90, 0xa0, 0x67, 0x00, + 0x48, 0x02, 0x9a, 0x00, 0xa2, 0x44, 0x1e, 0x93, 0x90, 0x02, 0x9a, 0x00, + 0x42, 0xa5, 0x5a, 0x15, 0x94, 0x02, 0x9a, 0x00, 0x95, 0xc2, 0xe5, 0x28, + 0x98, 0x02, 0x9a, 0x00, 0x00, 0x08, 0x15, 0x88, 0x9c, 0x02, 0x9a, 0x00, + 0xec, 0x30, 0x00, 0x22, 0xa0, 0x02, 0x9a, 0x00, 0x32, 0x00, 0x83, 0xd5, + 0xa8, 0x02, 0x9a, 0x00, 0x0f, 0x86, 0x00, 0x02, 0xcc, 0x02, 0x9a, 0x00, + 0x00, 0x39, 0x0f, 0x12, 0x14, 0x06, 0x9a, 0x00, 0x77, 0x4e, 0x04, 0x40, + 0x10, 0x06, 0x9a, 0x00, 0x77, 0x4e, 0x04, 0x40, 0x78, 0x07, 0x10, 0x00, + 0x44, 0x04, 0x00, 0x82, 0x4c, 0x02, 0x9a, 0x00, 0x85, 0x0c, 0x05, 0x13, + 0xe0, 0x08, 0x9a, 0x00, 0x11, 0x00, 0x00, 0x00, 0x90, 0x03, 0x9a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x03, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x9a, 0x00, 0x06, 0x22, 0x22, 0x22, 0x90, 0x00, 0x9a, 0x00, + 0x7e, 0x00, 0x00, 0x40, 0x2e, 0x00, 0x02, 0x00, 0xd0, 0x07, 0x00, 0x00, + 0x21, 0x00, 0x0f, 0x00, 0x14, 0x03, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x10, 0x03, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x9a, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x90, 0x03, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0x02, 0x9a, 0x00, 0x95, 0xc2, 0xe5, 0x24, 0x10, 0x09, 0x9a, 0x00, + 0x00, 0x00, 0x01, 0xa4, 0x14, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x01, 0xa4, + 0x34, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x74, 0x09, 0x90, 0x00, + 0x15, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x20, 0xa1, 0x07, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x74, 0x49, 0x90, 0x00, 0x15, 0x00, 0x03, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x34, 0x00, 0x02, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, 0xe8, 0x03, 0x00, 0x00, + 0x21, 0x00, 0x0b, 0x00, 0x94, 0x02, 0x9a, 0x00, 0x95, 0xc2, 0xe5, 0x28, + 0x38, 0x03, 0x9a, 0x00, 0x03, 0x01, 0x30, 0x00, 0x3c, 0x03, 0x9a, 0x00, + 0xff, 0x01, 0x40, 0x00, 0x00, 0x03, 0x9a, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x54, 0x03, 0x9a, 0x00, 0x03, 0x00, 0x80, 0x00, 0x2e, 0x00, 0x02, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x09, 0x00, 0x48, 0x03, 0x9a, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x02, 0x9a, 0x00, 0x00, 0x10, 0x8f, 0x9a, + 0x18, 0x03, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9a, 0x00, + 0x00, 0x10, 0x8f, 0x1a, 0x2e, 0x00, 0x02, 0x00, 0xe8, 0x03, 0x00, 0x00, + 0x21, 0x00, 0x07, 0x00, 0x78, 0x09, 0x9a, 0x00, 0x0f, 0x1e, 0x7e, 0x88, + 0x10, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x0e, 0xa4, 0x14, 0x09, 0x9a, 0x00, + 0x00, 0x00, 0x0e, 0xa4, 0x34, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x74, 0x09, 0x90, 0x00, 0x15, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x20, 0xa1, 0x07, 0x00, 0x01, 0x00, 0x02, 0x00, 0x74, 0x49, 0x90, 0x00, + 0x15, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x20, 0xa1, 0x07, 0x00, + 0x34, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x00, 0x02, 0x9a, 0x00, + 0x00, 0x10, 0x8f, 0x3a, 0x10, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x0c, 0x25, + 0x14, 0x09, 0x9a, 0x00, 0x00, 0x00, 0x0c, 0x25, 0x20, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x00, 0xc0, 0x62, 0x00, + 0x00, 0x0f, 0x0f, 0x0f, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static void mclk_memory_load_training_pattern(struct gk20a *g) +{ + u32 reg_writes; + u32 index; + + gk20a_dbg_info(""); + + reg_writes = ((sizeof(memory_pattern_reglist) / + sizeof((memory_pattern_reglist)[0]))); + + for (index = 0; index < reg_writes; index++) { + gk20a_writel(g, memory_pattern_reglist[index].regaddr, + memory_pattern_reglist[index].writeval); + } + + gk20a_dbg_fn("done"); +} + +static void mclk_memory_load_shadow_regs(struct gk20a *g) +{ + u32 reg_writes; + u32 index; + + gk20a_dbg_info(""); + + reg_writes = ((sizeof(memory_shadow_reglist) / + sizeof((memory_shadow_reglist)[0]))); + for (index = 0; index < reg_writes; index++) { + gk20a_writel(g, memory_shadow_reglist[index].regaddr, + memory_shadow_reglist[index].writeval); + } + + gk20a_dbg_fn("done"); + +} + +static void mclk_seq_pmucmdhandler(struct gk20a *g, struct pmu_msg *_msg, + void *param, u32 handle, u32 status) +{ + struct nv_pmu_seq_msg *msg = (struct nv_pmu_seq_msg *)_msg; + struct nv_pmu_seq_msg_run_script *seq_msg; + u32 msg_status = 0; + + gk20a_dbg_info(""); + + if (status != 0) { + gk20a_err(dev_from_gk20a(g), "mclk seq_script cmd aborted"); + msg_status = -ENOENT; + goto status_update; + } + + seq_msg = &msg->run_script; + + if (seq_msg->msg_type != NV_PMU_SEQ_MSG_ID_RUN_SCRIPT) { + msg_status = -ENOENT; + goto status_update; + } + + if (seq_msg->error_code) { + msg_status = -ENOENT; + goto status_update; + } + +status_update: + *((u32 *)param) = msg_status; +} + +int clk_mclkseq_build_prgm_gddr5(struct gk20a *g) +{ + struct pmu_payload payload = { {0} }; + void *vreg_buf = NULL; + struct nv_pmu_seq_cmd cmd; + struct nv_pmu_seq_cmd_run_script *pseq_cmd; + u32 seqdesc; + u32 status = 0; + u32 seq_completion_status = ~0x0; + + gk20a_dbg_info(""); + + /* Load Shadow registers */ + mclk_memory_load_shadow_regs(g); + + /* Load RAM pattern */ + mclk_memory_load_training_pattern(g); + + /* Fill command header with SEQ ID & size */ + memset(&cmd, 0, sizeof(cmd)); + cmd.hdr.unit_id = PMU_UNIT_SEQ; + cmd.hdr.size = sizeof(struct nv_pmu_seq_cmd_run_script) + + sizeof(struct pmu_hdr); + + /* Fill RM_PMU_SEQ_CMD_RUN_SCRIPT struct */ + pseq_cmd = &cmd.run_script; + pseq_cmd->cmd_type = NV_PMU_SEQ_CMD_ID_RUN_SCRIPT; + + gk20a_writel(g, 0x132000, 0x98010000); + udelay(0x5); + gk20a_writel(g, 0x137300, 0x20000103); + + /* Read sequencer binary*/ + payload.in.buf = seq_script_gp106; + payload.in.size = sizeof(seq_script_gp106); + payload.in.fb_size = PMU_CMD_SUBMIT_PAYLOAD_PARAMS_FB_SIZE_UNUSED; + payload.in.offset = offsetof(struct nv_pmu_seq_cmd_run_script, + script_alloc); + + vreg_buf = kzalloc((sizeof(u32) * VREG_COUNT), GFP_KERNEL); + if (!vreg_buf) { + status = -ENOMEM; + gk20a_err(dev_from_gk20a(g), + "unable to allocate memory for VREG"); + goto exit_status; + } + + payload.out.buf = vreg_buf; + payload.out.size = (VREG_COUNT * sizeof(u32)); + payload.out.fb_size = PMU_CMD_SUBMIT_PAYLOAD_PARAMS_FB_SIZE_UNUSED; + payload.out.offset = offsetof(struct nv_pmu_seq_cmd_run_script, + reg_alloc); + + /* Send command to PMU to execute sequencer script */ + status = gk20a_pmu_cmd_post(g, (struct pmu_cmd *)&cmd, NULL, &payload, + PMU_COMMAND_QUEUE_LPQ, + mclk_seq_pmucmdhandler, + &seq_completion_status, &seqdesc, ~0); + if (status) { + gk20a_err(dev_from_gk20a(g), + "unable to post seq script exec cmd for unit %x ", + cmd.hdr.unit_id); + goto exit_status; + } + + /* wait till sequencer script complete */ + pmu_wait_message_cond(&g->pmu, (gk20a_get_gr_idle_timeout(g)), + &seq_completion_status, 0); + if (seq_completion_status != 0) { + gk20a_err(dev_from_gk20a(g), + "seq_scrip update failed"); + status = -EBUSY; + goto exit_status; + } + +exit_status: + kfree(vreg_buf); + return status; +} diff --git a/drivers/gpu/nvgpu/clk/clk_mclk.h b/drivers/gpu/nvgpu/clk/clk_mclk.h new file mode 100644 index 00000000..f86893f7 --- /dev/null +++ b/drivers/gpu/nvgpu/clk/clk_mclk.h @@ -0,0 +1,19 @@ +/* +* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +*/ + +#ifndef _CLKMCLK_H_ +#define _CLKMCLK_H_ + +int clk_mclkseq_build_prgm_gddr5(struct gk20a *g); + +#endif diff --git a/drivers/gpu/nvgpu/gp106/pmu_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_gp106.c index f6fcd234..48653142 100644 --- a/drivers/gpu/nvgpu/gp106/pmu_gp106.c +++ b/drivers/gpu/nvgpu/gp106/pmu_gp106.c @@ -21,6 +21,7 @@ #include "gp106/pmu_gp106.h" #include "gp106/acr_gp106.h" #include "gp106/hw_psec_gp106.h" +#include "clk/clk_mclk.h" #include "hw_mc_gp106.h" #include "hw_pwr_gp106.h" @@ -194,6 +195,7 @@ void gp106_init_pmu_ops(struct gpu_ops *gops) gops->pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd = NULL; gops->pmu.dump_secure_fuses = NULL; gops->pmu.reset = gp106_falcon_reset; + gops->pmu.mclk_init = clk_mclkseq_build_prgm_gddr5; gk20a_dbg_fn("done"); } diff --git a/drivers/gpu/nvgpu/pmuif/gpmuifseq.h b/drivers/gpu/nvgpu/pmuif/gpmuifseq.h new file mode 100644 index 00000000..69d55490 --- /dev/null +++ b/drivers/gpu/nvgpu/pmuif/gpmuifseq.h @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +*/ +#ifndef _GPMUIFSEQ_H_ +#define _GPMUIFSEQ_H_ + +#include "gk20a/pmu_common.h" + +#define PMU_UNIT_SEQ (0x02) + +/*! +* @file gpmuifseq.h +* @brief PMU Command/Message Interfaces - Sequencer +*/ + +/*! +* Defines the identifiers various high-level types of sequencer commands. +* +* _RUN_SCRIPT @ref NV_PMU_SEQ_CMD_RUN_SCRIPT +*/ +enum { + NV_PMU_SEQ_CMD_ID_RUN_SCRIPT = 0, +}; + +struct nv_pmu_seq_cmd_run_script { + u8 cmd_type; + u8 pad[3]; + struct pmu_allocation_v3 script_alloc; + struct pmu_allocation_v3 reg_alloc; +}; + +#define NV_PMU_SEQ_CMD_ALLOC_OFFSET 4 + +#define NV_PMU_SEQ_MSG_ALLOC_OFFSET \ + (NV_PMU_SEQ_CMD_ALLOC_OFFSET + NV_PMU_CMD_ALLOC_SIZE) + +struct nv_pmu_seq_cmd { + struct pmu_hdr hdr; + union { + u8 cmd_type; + struct nv_pmu_seq_cmd_run_script run_script; + }; +}; + +enum { + NV_PMU_SEQ_MSG_ID_RUN_SCRIPT = 0, +}; + +struct nv_pmu_seq_msg_run_script { + u8 msg_type; + u8 error_code; + u16 error_pc; + u32 timeout_stat; +}; + +struct nv_pmu_seq_msg { + struct pmu_hdr hdr; + union { + u8 msg_type; + struct nv_pmu_seq_msg_run_script run_script; + }; +}; + +#endif -- cgit v1.2.2