/* * Copyright (c) 2016-2017, 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 #include #include #include "gk20a/gk20a.h" #ifdef CONFIG_DEBUG_FS #include "gk20a/platform_gk20a.h" #endif #include #include #define VREG_COUNT 24 struct memory_link_training_pattern { u32 regaddr; u32 writeval; }; 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}, }; /* MID SPEED TO LOW SPEED */ static u8 seq_script_step33_ls_gp106[] = { 0x34, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x49, 0x90, 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, 0x83, 0x40, 0x38, 0x1F, 0x9A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, 0x1F, 0x9A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, 0x0D, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x8B, 0xC0, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x83, 0x40, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x20, 0x13, 0x00, 0x02, 0x00, 0x01, 0x18, 0x20, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x20, 0x20, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x13, 0x00, 0x01, 0x3B, 0x04, 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, 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, 0x21, 0x00, 0x1F, 0x00, 0x2C, 0x20, 0x13, 0x00, 0x00, 0x03, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x04, 0x10, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x01, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x01, 0x01, 0x00, 0xEC, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x01, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x01, 0x00, 0x00, 0x5C, 0x06, 0x9A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0xB4, 0x98, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x06, 0x9A, 0x00, 0x0E, 0x06, 0x0E, 0x06, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x80, 0x40, 0x13, 0x00, 0x02, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0x10, 0x27, 0x00, 0x00, 0x21, 0x00, 0x1D, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0x34, 0x48, 0x02, 0x9A, 0x00, 0xA3, 0x44, 0x14, 0x86, 0x90, 0x02, 0x9A, 0x00, 0x12, 0x2C, 0x18, 0x06, 0x94, 0x02, 0x9A, 0x00, 0x8A, 0x82, 0x41, 0x24, 0x98, 0x02, 0x9A, 0x00, 0x11, 0x05, 0x06, 0x88, 0x9C, 0x02, 0x9A, 0x00, 0x8C, 0x10, 0x00, 0x22, 0xA8, 0x02, 0x9A, 0x00, 0x0B, 0x86, 0x00, 0x01, 0x4C, 0x02, 0x9A, 0x00, 0x85, 0x0C, 0x05, 0x06, 0x30, 0x1F, 0x9A, 0x00, 0x03, 0x16, 0x2C, 0x00, 0xE0, 0x08, 0x9A, 0x00, 0x00, 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, 0x0D, 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, 0x38, 0x03, 0x9A, 0x00, 0x23, 0x01, 0x30, 0x00, 0x00, 0x03, 0x9A, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x82, 0x18, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x78, 0x09, 0x9A, 0x00, 0x0B, 0x1E, 0x7A, 0x88, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 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, 0x21, 0x00, 0x0D, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x98, 0x8F, 0x02, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* LOW SPEED TO MID SPEED */ static u8 seq_script_step33_gp106[] = { 0x34, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x49, 0x90, 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, 0x83, 0x40, 0x38, 0x1F, 0x9A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, 0x1F, 0x9A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, 0x0D, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x8B, 0xC0, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x83, 0x40, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x20, 0x13, 0x00, 0x02, 0x00, 0x01, 0x18, 0x20, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x20, 0x20, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x13, 0x00, 0x01, 0x3B, 0x02, 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, 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, 0x21, 0x00, 0x1F, 0x00, 0x2C, 0x20, 0x13, 0x00, 0x00, 0x03, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x04, 0x10, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x01, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x01, 0x01, 0x00, 0xEC, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x01, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x01, 0x00, 0x00, 0x5C, 0x06, 0x9A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0xB4, 0x98, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x06, 0x9A, 0x00, 0x0E, 0x06, 0x0E, 0x06, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x80, 0x40, 0x13, 0x00, 0x02, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0x10, 0x27, 0x00, 0x00, 0x21, 0x00, 0x1D, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0x34, 0x48, 0x02, 0x9A, 0x00, 0xA3, 0x44, 0x14, 0x86, 0x90, 0x02, 0x9A, 0x00, 0x12, 0x2C, 0x18, 0x06, 0x94, 0x02, 0x9A, 0x00, 0x8A, 0x82, 0x41, 0x24, 0x98, 0x02, 0x9A, 0x00, 0x11, 0x05, 0x06, 0x88, 0x9C, 0x02, 0x9A, 0x00, 0x8C, 0x10, 0x00, 0x22, 0xA8, 0x02, 0x9A, 0x00, 0x0B, 0x86, 0x00, 0x01, 0x4C, 0x02, 0x9A, 0x00, 0x85, 0x0C, 0x05, 0x06, 0x30, 0x1F, 0x9A, 0x00, 0x03, 0x16, 0x2C, 0x00, 0xE0, 0x08, 0x9A, 0x00, 0x00, 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, 0x0D, 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, 0x38, 0x03, 0x9A, 0x00, 0x23, 0x01, 0x30, 0x00, 0x00, 0x03, 0x9A, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x82, 0x18, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x78, 0x09, 0x9A, 0x00, 0x0B, 0x1E, 0x7A, 0x88, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 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, 0x21, 0x00, 0x0D, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x98, 0x8F, 0x02, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* LOW/MID SPEED TO HIGH SPEED */ static u8 seq_script_step28_gp106[] = { 0x34, 0x00, 0x02, 0x00, 0x0A, 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, 0x0D, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x49, 0x90, 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, 0x0B, 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, 0x0C, 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, 0x0D, 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, 0x0E, 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, 0x25, 0x00, 0x2C, 0x08, 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x90, 0xA0, 0x67, 0x00, 0x48, 0x02, 0x9A, 0x00, 0xA3, 0x44, 0x20, 0x95, 0x90, 0x02, 0x9A, 0x00, 0x46, 0xAE, 0x60, 0x16, 0x94, 0x02, 0x9A, 0x00, 0x96, 0x02, 0xF6, 0x28, 0x98, 0x02, 0x9A, 0x00, 0x00, 0x09, 0x16, 0x88, 0x9C, 0x02, 0x9A, 0x00, 0x4C, 0x39, 0x00, 0x24, 0xA0, 0x02, 0x9A, 0x00, 0x32, 0x80, 0x83, 0xD5, 0xA8, 0x02, 0x9A, 0x00, 0x0F, 0x86, 0x00, 0x02, 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, 0x15, 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, 0x13, 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, 0x96, 0x02, 0xF6, 0x24, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x01, 0xA4, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x01, 0xA4, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x01, 0xA4, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x01, 0xA4, 0x34, 0x00, 0x02, 0x00, 0x0F, 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, 0x10, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x94, 0x02, 0x9A, 0x00, 0x96, 0x02, 0xF6, 0x28, 0x38, 0x03, 0x9A, 0x00, 0x03, 0x01, 0x30, 0x00, 0x3C, 0x03, 0x9A, 0x00, 0xFF, 0x01, 0x40, 0x00, 0x00, 0x03, 0x9A, 0x00, 0x0D, 0x02, 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, 0x0B, 0x00, 0x78, 0x09, 0x9A, 0x00, 0x0F, 0x1E, 0x7E, 0x88, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0E, 0xA4, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0E, 0xA4, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0E, 0xA4, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0E, 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, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x10, 0x8F, 0x3A, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x25, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x25, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x25, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x25, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }; /* HIGH SPEED TO LOW SPEED */ static u8 seq_script_step32_ls_gp106[] = { 0x34, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 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, 0x00, 0x00, 0x70, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x10, 0x8F, 0x82, 0x14, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x10, 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, 0x35, 0x00, 0x98, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0x85, 0x8F, 0x8B, 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, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x8B, 0xF7, 0x40, 0x0D, 0x9A, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x83, 0x40, 0x08, 0x08, 0x9A, 0x00, 0x70, 0x00, 0xA0, 0x4A, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x30, 0x08, 0x9A, 0x00, 0x90, 0x20, 0x67, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x90, 0x20, 0x67, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x12, 0x11, 0x00, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x11, 0x00, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x98, 0x00, 0x20, 0x13, 0x00, 0x02, 0x00, 0x03, 0x98, 0x20, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x20, 0x20, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x13, 0x00, 0x06, 0x00, 0x00, 0x10, 0x34, 0x20, 0x13, 0x00, 0x00, 0x10, 0x67, 0x06, 0x24, 0x20, 0x13, 0x00, 0x01, 0x3B, 0x04, 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, 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, 0x21, 0x00, 0x23, 0x00, 0x2C, 0x20, 0x13, 0x00, 0x00, 0x03, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x04, 0x10, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x11, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x11, 0x01, 0x00, 0xF0, 0x73, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0xEC, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x11, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x20, 0x27, 0x00, 0x5C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x06, 0x9A, 0x00, 0x06, 0x06, 0x06, 0x06, 0x9C, 0x06, 0x9A, 0x00, 0x06, 0x06, 0x06, 0x06, 0x94, 0x06, 0x9A, 0x00, 0x0E, 0x06, 0x0E, 0x06, 0x0C, 0x06, 0x9A, 0x00, 0x50, 0x20, 0x00, 0xFD, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x80, 0x40, 0x13, 0x00, 0x02, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x21, 0x00, 0x23, 0x00, 0x2C, 0x08, 0x9A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x48, 0x02, 0x9A, 0x00, 0xA3, 0x44, 0x14, 0x84, 0x90, 0x02, 0x9A, 0x00, 0x0A, 0x17, 0x0E, 0x03, 0x94, 0x02, 0x9A, 0x00, 0x89, 0x02, 0x21, 0x24, 0x98, 0x02, 0x9A, 0x00, 0x11, 0x04, 0x05, 0x88, 0x9C, 0x02, 0x9A, 0x00, 0x6C, 0x10, 0x00, 0x22, 0xA0, 0x02, 0x9A, 0x00, 0x32, 0x00, 0x61, 0xD3, 0xA8, 0x02, 0x9A, 0x00, 0x0B, 0x86, 0x00, 0x02, 0x14, 0x06, 0x9A, 0x00, 0x77, 0x3E, 0x03, 0x30, 0x10, 0x06, 0x9A, 0x00, 0x77, 0x3E, 0x03, 0x30, 0x08, 0x08, 0x9A, 0x00, 0x70, 0x00, 0x00, 0x48, 0x78, 0x07, 0x10, 0x00, 0x33, 0x03, 0x00, 0x82, 0x4C, 0x02, 0x9A, 0x00, 0x85, 0x0C, 0x05, 0x04, 0x30, 0x1F, 0x9A, 0x00, 0x03, 0x16, 0x2C, 0x00, 0xE0, 0x08, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x9A, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x2E, 0x00, 0x02, 0x00, 0xD0, 0x07, 0x00, 0x00, 0x21, 0x00, 0x0D, 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, 0x38, 0x03, 0x9A, 0x00, 0x23, 0x00, 0x30, 0x00, 0x00, 0x03, 0x9A, 0x00, 0x25, 0x01, 0x00, 0x00, 0x54, 0x03, 0x9A, 0x00, 0x00, 0x00, 0x80, 0x00, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x09, 0x00, 0x30, 0x03, 0x9A, 0x00, 0x30, 0x00, 0x10, 0x00, 0x48, 0x03, 0x9A, 0x00, 0x88, 0x00, 0x70, 0x00, 0x38, 0xD6, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x04, 0xD6, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0x20, 0x4E, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x82, 0x18, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x78, 0x09, 0x9A, 0x00, 0x0F, 0x3E, 0x7A, 0x88, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x88, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x88, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x88, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x88, 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, 0x21, 0x00, 0x05, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x98, 0x8F, 0x02, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* HIGH SPEED TO LOW/MID SPEED */ static u8 seq_script_step32_gp106[] = { 0x34, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x24, 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, 0x00, 0x00, 0x70, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x10, 0x8F, 0x82, 0x14, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x10, 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, 0x35, 0x00, 0x98, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0x85, 0x8F, 0x8B, 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, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x8B, 0xF7, 0x40, 0x0D, 0x9A, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x83, 0x40, 0x08, 0x08, 0x9A, 0x00, 0x70, 0x00, 0xA0, 0x4A, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x30, 0x08, 0x9A, 0x00, 0x90, 0x20, 0x67, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x90, 0x20, 0x67, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x12, 0x11, 0x00, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x11, 0x00, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x98, 0x00, 0x20, 0x13, 0x00, 0x02, 0x00, 0x03, 0x98, 0x20, 0x20, 0x13, 0x00, 0x00, 0x00, 0x03, 0x20, 0x20, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x13, 0x00, 0x06, 0x00, 0x00, 0x10, 0x34, 0x20, 0x13, 0x00, 0x00, 0x10, 0x67, 0x06, 0x24, 0x20, 0x13, 0x00, 0x01, 0x3B, 0x02, 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, 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, 0x21, 0x00, 0x25, 0x00, 0x2C, 0x20, 0x13, 0x00, 0x00, 0x03, 0x00, 0x00, 0x28, 0x20, 0x13, 0x00, 0x10, 0x00, 0x04, 0x10, 0xF4, 0x73, 0x13, 0x00, 0x00, 0x11, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x10, 0x11, 0x01, 0x00, 0xF0, 0x73, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0xEC, 0x73, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x11, 0x01, 0x00, 0xF4, 0x73, 0x13, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x20, 0x27, 0x00, 0x5C, 0x06, 0x9A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0xB4, 0x98, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x06, 0x9A, 0x00, 0x0E, 0x06, 0x0E, 0x06, 0x0C, 0x06, 0x9A, 0x00, 0x50, 0x20, 0x00, 0xFD, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD4, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x9A, 0x00, 0xE7, 0x8F, 0x80, 0x40, 0x13, 0x00, 0x02, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0x10, 0x27, 0x00, 0x00, 0x21, 0x00, 0x25, 0x00, 0x70, 0x06, 0x9A, 0x00, 0x06, 0x13, 0x08, 0x34, 0x2C, 0x08, 0x9A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x48, 0x02, 0x9A, 0x00, 0xA3, 0x44, 0x14, 0x86, 0x90, 0x02, 0x9A, 0x00, 0x12, 0x2C, 0x18, 0x06, 0x94, 0x02, 0x9A, 0x00, 0x8A, 0x82, 0x41, 0x24, 0x98, 0x02, 0x9A, 0x00, 0x11, 0x05, 0x06, 0x88, 0x9C, 0x02, 0x9A, 0x00, 0x8C, 0x10, 0x00, 0x22, 0xA0, 0x02, 0x9A, 0x00, 0x32, 0x00, 0x61, 0xD3, 0xA8, 0x02, 0x9A, 0x00, 0x0B, 0x86, 0x00, 0x01, 0x14, 0x06, 0x9A, 0x00, 0x77, 0x3E, 0x03, 0x30, 0x10, 0x06, 0x9A, 0x00, 0x77, 0x3E, 0x03, 0x30, 0x08, 0x08, 0x9A, 0x00, 0x70, 0x00, 0x00, 0x48, 0x78, 0x07, 0x10, 0x00, 0x33, 0x03, 0x00, 0x82, 0x4C, 0x02, 0x9A, 0x00, 0x85, 0x0C, 0x05, 0x06, 0x30, 0x1F, 0x9A, 0x00, 0x03, 0x16, 0x2C, 0x00, 0xE0, 0x08, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x9A, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x2E, 0x00, 0x02, 0x00, 0xD0, 0x07, 0x00, 0x00, 0x21, 0x00, 0x0D, 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, 0x38, 0x03, 0x9A, 0x00, 0x23, 0x01, 0x30, 0x00, 0x00, 0x03, 0x9A, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x54, 0x03, 0x9A, 0x00, 0x00, 0x00, 0x80, 0x00, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x09, 0x00, 0x30, 0x03, 0x9A, 0x00, 0x30, 0x00, 0x10, 0x00, 0x48, 0x03, 0x9A, 0x00, 0x88, 0x00, 0x70, 0x00, 0x38, 0xD6, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x04, 0xD6, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x02, 0x00, 0x20, 0x4E, 0x00, 0x00, 0x21, 0x00, 0x07, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x82, 0x18, 0x03, 0x9A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x90, 0x8F, 0x02, 0x2E, 0x00, 0x02, 0x00, 0xE8, 0x03, 0x00, 0x00, 0x21, 0x00, 0x0D, 0x00, 0x78, 0x09, 0x9A, 0x00, 0x0B, 0x1E, 0x7A, 0x88, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x0A, 0x98, 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, 0x21, 0x00, 0x0D, 0x00, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x01, 0x30, 0x08, 0x9A, 0x00, 0x91, 0x10, 0x27, 0x00, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x09, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x10, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x14, 0x49, 0x90, 0x00, 0x00, 0x00, 0x08, 0x19, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x98, 0x8F, 0x02, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }; #ifdef CONFIG_DEBUG_FS static int mclk_debugfs_init(struct gk20a *g); #endif 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_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) { nvgpu_err(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; } static int mclk_get_memclk_table(struct gk20a *g) { int status = 0; u8 *mem_table_ptr = NULL; u32 idx_to_ptr_tbl[8]; u32 idx_to_cmd_ptr_tbl[8]; u32 old_fbio_delay; u32 old_fbio_cmd_delay; u32 cmd_idx; u32 shadow_idx; struct vbios_memory_clock_header_1x memclock_table_header = { 0 }; struct vbios_memory_clock_base_entry_11 memclock_base_entry = { 0 }; u8 *mem_entry_ptr = NULL; int index; gk20a_dbg_info(""); mem_table_ptr = (u8 *)nvgpu_bios_get_perf_table_ptrs(g, g->bios.perf_token, MEMORY_CLOCK_TABLE); if (mem_table_ptr == NULL) { status = -EPERM; goto done; } memcpy(&memclock_table_header, mem_table_ptr, sizeof(memclock_table_header)); if ((memclock_table_header.version < VBIOS_MEMORY_CLOCK_HEADER_11_VERSION) || (memclock_table_header.base_entry_size < VBIOS_MEMORY_CLOCK_BASE_ENTRY_11_2_SIZE)) { status = -EINVAL; goto done; } /* reset and save shadow table map and registers */ old_fbio_delay = gk20a_readl(g, fb_fbpa_fbio_delay_r()); old_fbio_cmd_delay = gk20a_readl(g, fb_fbpa_fbio_cmd_delay_r()); memset(idx_to_ptr_tbl, 0, sizeof(idx_to_ptr_tbl)); memset(idx_to_cmd_ptr_tbl, 0, sizeof(idx_to_cmd_ptr_tbl)); /* Read table entries */ mem_entry_ptr = mem_table_ptr + memclock_table_header.header_size; for (index = 0; index < memclock_table_header.entry_count; index++) { u8 script_index, cmd_script_index; u32 script_ptr = 0, cmd_script_ptr = 0; memcpy(&memclock_base_entry, mem_entry_ptr, memclock_table_header.base_entry_size); if (memclock_base_entry.maximum == 0) continue; script_index = BIOS_GET_FIELD(memclock_base_entry.flags1, VBIOS_MEMORY_CLOCK_BASE_ENTRY_11_FLAGS1_SCRIPT_INDEX); script_ptr = nvgpu_bios_read_u32(g, memclock_table_header.script_list_ptr + script_index * sizeof(u32)); if (!script_ptr) continue; /* Link and execute shadow scripts */ for (shadow_idx = 0; shadow_idx <= fb_fbpa_fbio_delay_priv_max_v(); ++shadow_idx) { if (script_ptr == idx_to_ptr_tbl[shadow_idx]) { break; } } /* script has not been executed before */ if (shadow_idx > fb_fbpa_fbio_delay_priv_max_v()) { /* find unused index */ for (shadow_idx = 0; shadow_idx < fb_fbpa_fbio_delay_priv_max_v(); ++shadow_idx) { if (idx_to_ptr_tbl[shadow_idx] == 0) break; } if (shadow_idx > fb_fbpa_fbio_delay_priv_max_v()) { nvgpu_err(g, "invalid shadow reg script index"); status = -EINVAL; goto done; } idx_to_ptr_tbl[shadow_idx] = script_ptr; gk20a_writel(g, fb_fbpa_fbio_delay_r(), set_field(old_fbio_delay, fb_fbpa_fbio_delay_priv_m(), fb_fbpa_fbio_delay_priv_f(shadow_idx))); status = nvgpu_bios_execute_script(g, script_ptr); if (status < 0) { gk20a_writel(g, fb_fbpa_fbio_delay_r(), old_fbio_delay); goto done; } gk20a_writel(g, fb_fbpa_fbio_delay_r(), old_fbio_delay); } cmd_script_index = BIOS_GET_FIELD(memclock_base_entry.flags2, VBIOS_MEMORY_CLOCK_BASE_ENTRY_12_FLAGS2_CMD_SCRIPT_INDEX); cmd_script_ptr = nvgpu_bios_read_u32(g, memclock_table_header.cmd_script_list_ptr + cmd_script_index * sizeof(u32)); if (!cmd_script_ptr) continue; /* Link and execute cmd shadow scripts */ for (cmd_idx = 0; cmd_idx <= fb_fbpa_fbio_cmd_delay_cmd_priv_max_v(); ++cmd_idx) { if (cmd_script_ptr == idx_to_cmd_ptr_tbl[cmd_idx]) break; } /* script has not been executed before */ if (cmd_idx > fb_fbpa_fbio_cmd_delay_cmd_priv_max_v()) { /* find unused index */ for (cmd_idx = 0; cmd_idx < fb_fbpa_fbio_cmd_delay_cmd_priv_max_v(); ++cmd_idx) { if (idx_to_cmd_ptr_tbl[cmd_idx] == 0) break; } if (cmd_idx > fb_fbpa_fbio_cmd_delay_cmd_priv_max_v()) { nvgpu_err(g, "invalid shadow reg cmd script index"); status = -EINVAL; goto done; } idx_to_cmd_ptr_tbl[cmd_idx] = cmd_script_ptr; gk20a_writel(g, fb_fbpa_fbio_cmd_delay_r(), set_field(old_fbio_cmd_delay, fb_fbpa_fbio_cmd_delay_cmd_priv_m(), fb_fbpa_fbio_cmd_delay_cmd_priv_f( cmd_idx))); status = nvgpu_bios_execute_script(g, cmd_script_ptr); if (status < 0) { gk20a_writel(g, fb_fbpa_fbio_cmd_delay_r(), old_fbio_cmd_delay); goto done; } gk20a_writel(g, fb_fbpa_fbio_cmd_delay_r(), old_fbio_cmd_delay); } mem_entry_ptr += memclock_table_header.base_entry_size + memclock_table_header.strap_entry_count * memclock_table_header.strap_entry_size; } done: return status; } void clk_mclkseq_deinit_mclk_gddr5(struct gk20a *g) { struct clk_mclk_state *mclk = &g->clk_pmu.clk_mclk; nvgpu_mutex_destroy(&mclk->data_lock); nvgpu_mutex_destroy(&mclk->mclk_lock); } int clk_mclkseq_init_mclk_gddr5(struct gk20a *g) { struct clk_mclk_state *mclk; int status; struct clk_set_info *p5_info; struct clk_set_info *p0_info; int err; gk20a_dbg_fn(""); mclk = &g->clk_pmu.clk_mclk; err = nvgpu_mutex_init(&mclk->mclk_lock); if (err) return err; err = nvgpu_mutex_init(&mclk->data_lock); if (err) goto fail_mclk_mutex; /* FBPA gain WAR */ gk20a_writel(g, fb_fbpa_fbio_iref_byte_rx_ctrl_r(), 0x22222222); mclk->speed = gk20a_mclk_low_speed; /* Value from Devinit */ /* Parse VBIOS */ status = mclk_get_memclk_table(g); if (status < 0) { err = status; goto fail_data_mutex; } /* Load RAM pattern */ mclk_memory_load_training_pattern(g); p5_info = pstate_get_clk_set_info(g, CTRL_PERF_PSTATE_P5, clkwhich_mclk); if (!p5_info) { err = -EINVAL; goto fail_data_mutex; } p0_info = pstate_get_clk_set_info(g, CTRL_PERF_PSTATE_P0, clkwhich_mclk); if (!p0_info) { err = -EINVAL; goto fail_data_mutex; } mclk->p5_min = p5_info->min_mhz; mclk->p0_min = p0_info->min_mhz; mclk->vreg_buf = nvgpu_kcalloc(g, VREG_COUNT, sizeof(u32)); if (!mclk->vreg_buf) { nvgpu_err(g, "unable to allocate memory for VREG"); err = -ENOMEM; goto fail_data_mutex; } #ifdef CONFIG_DEBUG_FS if (!mclk->debugfs_set) { if (mclk_debugfs_init(g)) mclk->debugfs_set = true; } #endif mclk->change = clk_mclkseq_change_mclk_gddr5; mclk->init = true; return 0; fail_data_mutex: nvgpu_mutex_destroy(&mclk->data_lock); fail_mclk_mutex: nvgpu_mutex_destroy(&mclk->mclk_lock); return err; } int clk_mclkseq_change_mclk_gddr5(struct gk20a *g, u16 val) { struct clk_mclk_state *mclk; struct pmu_payload payload; struct nv_pmu_seq_cmd cmd; struct nv_pmu_seq_cmd_run_script *pseq_cmd; u32 seqdesc; int status = 0; u32 seq_completion_status = ~0x0; u8 *seq_script_ptr = NULL; size_t seq_script_size = 0; #ifdef CONFIG_DEBUG_FS u64 t0, t1; #endif enum gk20a_mclk_speed speed; gk20a_dbg_info(""); memset(&payload, 0, sizeof(struct pmu_payload)); mclk = &g->clk_pmu.clk_mclk; nvgpu_mutex_acquire(&mclk->mclk_lock); if (!mclk->init) goto exit_status; speed = (val < mclk->p5_min) ? gk20a_mclk_low_speed : (val < mclk->p0_min) ? gk20a_mclk_mid_speed : gk20a_mclk_high_speed; if (speed == mclk->speed) goto exit_status; switch (speed) { case gk20a_mclk_mid_speed: if (mclk->speed == gk20a_mclk_low_speed) { seq_script_ptr = seq_script_step33_gp106; seq_script_size = sizeof(seq_script_step33_gp106); } else { seq_script_ptr = seq_script_step32_gp106; seq_script_size = sizeof(seq_script_step32_gp106); } break; case gk20a_mclk_high_speed: seq_script_ptr = seq_script_step28_gp106; seq_script_size = sizeof(seq_script_step28_gp106); break; case gk20a_mclk_low_speed: if (mclk->speed == gk20a_mclk_mid_speed) { seq_script_ptr = seq_script_step33_ls_gp106; seq_script_size = sizeof(seq_script_step33_ls_gp106); } else { seq_script_ptr = seq_script_step32_ls_gp106; seq_script_size = sizeof(seq_script_step32_ls_gp106); } break; default: nvgpu_err(g, "Illegal MCLK clock change"); status = -EINVAL; goto exit_status; } /* 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; #ifdef CONFIG_DEBUG_FS g->ops.bus.read_ptimer(g, &t0); #endif if (speed == gk20a_mclk_high_speed) { gk20a_writel(g, 0x132000, 0x98010000); /* Introduce delay */ gk20a_readl(g, 0x132000); gk20a_readl(g, 0x132000); } gk20a_writel(g, 0x137300, 0x20000103); /* Read sequencer binary*/ payload.in.buf = seq_script_ptr; payload.in.size = seq_script_size; 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); memset(mclk->vreg_buf, 0, (sizeof(u32) * VREG_COUNT)); payload.out.buf = mclk->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) { nvgpu_err(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) { nvgpu_err(g, "seq_script update failed"); status = -EBUSY; goto exit_status; } mclk->speed = speed; #ifdef CONFIG_DEBUG_FS g->ops.bus.read_ptimer(g, &t1); nvgpu_mutex_acquire(&mclk->data_lock); mclk->switch_num++; if (mclk->switch_num == 1) { mclk->switch_max = mclk->switch_min = mclk->switch_avg = (t1-t0)/1000; mclk->switch_std = 0; } else { s64 prev_avg; s64 curr = (t1-t0)/1000; mclk->switch_max = curr > mclk->switch_max ? curr : mclk->switch_max; mclk->switch_min = mclk->switch_min ? (curr < mclk->switch_min ? curr : mclk->switch_min) : curr; prev_avg = mclk->switch_avg; mclk->switch_avg = (curr + (mclk->switch_avg * (mclk->switch_num-1))) / mclk->switch_num; mclk->switch_std += (curr - mclk->switch_avg) * (curr - prev_avg); } nvgpu_mutex_release(&mclk->data_lock); #endif exit_status: nvgpu_mutex_release(&mclk->mclk_lock); return status; } #ifdef CONFIG_DEBUG_FS static int mclk_debug_speed_set(void *data, u64 val) { struct gk20a *g = (struct gk20a *) data; struct clk_mclk_state *mclk; mclk = &g->clk_pmu.clk_mclk; /* This is problematic because it can interrupt the arbiter * and send it to sleep. we need to consider removing this */ if (mclk->change) return mclk->change(g, (u16) val); return 0; } DEFINE_SIMPLE_ATTRIBUTE( mclk_debug_speed_set_fops, NULL, mclk_debug_speed_set, "%llu\n" ); static int mclk_switch_stats_show(struct seq_file *s, void *unused) { struct gk20a *g = s->private; struct clk_mclk_state *mclk; u64 num; s64 tmp, avg, std, max, min; mclk = &g->clk_pmu.clk_mclk; /* Make copy of structure to reduce time with lock held */ nvgpu_mutex_acquire(&mclk->data_lock); std = mclk->switch_std; avg = mclk->switch_avg; max = mclk->switch_max; min = mclk->switch_min; num = mclk->switch_num; nvgpu_mutex_release(&mclk->data_lock); tmp = std; do_div(tmp, num); seq_printf(s, "MCLK:\n number of transitions: %lld\n", num); seq_printf(s, "max / min : %lld / %lld usec\n", max, min); seq_printf(s, "avg / std : %lld / %ld usec\n", avg, int_sqrt(tmp)); return 0; } static int mclk_switch_stats_open(struct inode *inode, struct file *file) { return single_open(file, mclk_switch_stats_show, inode->i_private); } static const struct file_operations mclk_switch_stats_fops = { .open = mclk_switch_stats_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static int mclk_debugfs_init(struct gk20a *g) { struct gk20a_platform *platform = dev_get_drvdata(g->dev); struct dentry *gpu_root = platform->debugfs; struct dentry *d; gk20a_dbg(gpu_dbg_info, "g=%p", g); d = debugfs_create_file( "mclk_speed_set", S_IWUGO, gpu_root, g, &mclk_debug_speed_set_fops); if (!d) return -ENOMEM; d = debugfs_create_file( "mclk_switch_stats", S_IRUGO, gpu_root, g, &mclk_switch_stats_fops); if (!d) return -ENOMEM; return 0; } #endif