/*
* 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 <linux/delay.h>
#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},
{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;
}