From cff2635a227c85f7b4131e2dcfff1b4ce4e8c121 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jul 2020 09:45:37 -0600 Subject: [PATCH] Move smart-amp init to mainboard Change-Id: I8f60e98d7d8f70c7a7374baf978461c963694cb8 --- src/drivers/i2c/tas5825m/tas5825m.c | 1091 +-------------------- src/drivers/i2c/tas5825m/tas5825m.h | 12 + src/mainboard/system76/oryp6/Makefile.inc | 1 + src/mainboard/system76/oryp6/tas5825m.c | 1080 ++++++++++++++++++++ 4 files changed, 1101 insertions(+), 1083 deletions(-) create mode 100644 src/drivers/i2c/tas5825m/tas5825m.h create mode 100644 src/mainboard/system76/oryp6/tas5825m.c diff --git a/src/drivers/i2c/tas5825m/tas5825m.c b/src/drivers/i2c/tas5825m/tas5825m.c index cb3a1c2602..e50eafa645 100644 --- a/src/drivers/i2c/tas5825m/tas5825m.c +++ b/src/drivers/i2c/tas5825m/tas5825m.c @@ -1,18 +1,16 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include -#include -#include #include #include -#include "chip.h" +#include "tas5825m.h" -static int tas5825m_write_at(struct device *dev, uint8_t addr, uint8_t value) { +int tas5825m_write_at(struct device *dev, uint8_t addr, uint8_t value) { return smbus_write_byte(dev, addr, value); } //TODO: use I2C block write for better performance -static int tas5825m_write_block_at(struct device *dev, uint8_t addr, const uint8_t * values, uint8_t length) { +int tas5825m_write_block_at(struct device *dev, uint8_t addr, const uint8_t * values, uint8_t length) { int res = 0; for (uint8_t i = 0; i < length; i++) { res = smbus_write_byte(dev, addr + i, values[i]); @@ -21,33 +19,17 @@ static int tas5825m_write_block_at(struct device *dev, uint8_t addr, const uint8 return (int)length; } -static int tas5825m_set_page(struct device *dev, uint8_t page) { +int tas5825m_set_page(struct device *dev, uint8_t page) { return tas5825m_write_at(dev, 0x00, page); } -static int tas5825m_set_book(struct device *dev, uint8_t book) { +int tas5825m_set_book(struct device *dev, uint8_t book) { int res = tas5825m_set_page(dev, 0x00); if (res < 0) return res; return tas5825m_write_at(dev, 0x7F, book); } -#define R(F) { \ - res = F; \ - if (res < 0) return res; \ -} - -#define amp_write_at(A, V) R(tas5825m_write_at(dev, A, V)) - -#define amp_write_block_at(A, ...) { \ - const uint8_t _values[] = __VA_ARGS__; \ - R(tas5825m_write_block_at(dev, A, _values, ARRAY_SIZE(_values))); \ -} - -#define amp_set_page(P) R(tas5825m_set_page(dev, P)) - -#define amp_set_book(B) R(tas5825m_set_book(dev, B)) - -static int tas5825m_setup(struct device *dev) { +__weak int tas5825m_setup(struct device *dev) { struct drivers_i2c_tas5825m_config *config = dev->chip_info; if (!config) { @@ -55,1065 +37,8 @@ static int tas5825m_setup(struct device *dev) { return -1; } - int res = 0; - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x60, 0x00); - amp_write_at(0x63, 0x03); - amp_write_at(0x64, 0x03); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x03, 0x02); - amp_write_at(0x01, 0x11); - } - - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x46, 0x11); - } - - { - amp_set_page(0x00); - - amp_write_at(0x02, 0x00); - amp_write_at(0x53, 0x00); - amp_write_at(0x54, 0x00); - amp_write_at(0x29, 0x7C); - amp_write_at(0x03, 0x02); - } - - mdelay(5); - - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - - { - amp_set_page(0x00); - - amp_write_at(0x29, 0x00); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x03, 0x12); - } - - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - amp_set_page(0x00); - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x48, 0x0C); - } - - amp_set_book(0x64); - - { - amp_set_page(0x01); - - amp_write_block_at(0x08, { - 0x00, 0xFE, 0x00, 0x40, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00 - }); - - amp_write_block_at(0x27, { - 0x00, 0x00, 0xFC, 0x50, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC - }); - - amp_write_block_at(0x46, { - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0xFC, 0x00, 0x00, 0x00, 0x82, 0x00, 0x93, 0x00, - 0xFC, 0x00, 0x00, 0x8F, 0x00, 0xFF, 0xEF, 0x84, - 0x49, 0x03, 0x27, 0x84, 0x02, 0x04, 0x06, 0x02, - 0x60, 0x00, 0x01 - }); - } - - { - amp_set_page(0x02); - - amp_write_block_at(0x08, { - 0x02, 0x70, 0x00, 0x06, 0x02, 0x78, 0x00, 0x05, - 0x02, 0x68, 0x00, 0x02, 0x02, 0x28, 0x03, 0x4D, - 0x84, 0x2A, 0x04, 0x00, 0xE2, 0x57, 0x91, 0x9F, - 0x84, 0x82, 0x20, 0xE0, 0x84, 0x82, 0x04 - }); - - amp_write_block_at(0x27, { - 0x01, 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, 0x31, - 0xA1, 0xF0, 0x1C, 0x31, 0xA2, 0xF0, 0x1F, 0x31, - 0xA3, 0xE4, 0x00, 0x11, 0xA6, 0x80, 0x27, 0x80, - 0xE1, 0xF4, 0x00, 0x11, 0xA4, 0xF4, 0x1D - }); - - amp_write_block_at(0x46, { - 0x31, 0xA5, 0xF4, 0x1C, 0x31, 0xA7, 0xF4, 0x1F, - 0x31, 0xA8, 0x02, 0x78, 0x00, 0x03, 0xE2, 0x68, - 0xF1, 0xC3, 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, - 0x03, 0x27, 0x02, 0x70, 0x00, 0x04, 0x84 - }); - - amp_write_block_at(0x65, { - 0x41, 0x03, 0x37, 0x80, 0x07, 0x00, 0x80, 0xE0, - 0x00, 0x11, 0xA9, 0x84, 0x82, 0x00, 0xE0, 0x8E, - 0xFC, 0x04, 0x10, 0xF0, 0x1C, 0x11, 0xAA, 0xF0, - 0x1C, 0x11, 0xAB - }); - } - - { - amp_set_page(0x03); - - amp_write_block_at(0x08, { - 0xF0, 0x1C, 0x11, 0xAC, 0xF0, 0x1F, 0x11, 0xAD, - 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27, 0x80, 0xE8, - 0x60, 0x00, 0x00, 0x00, 0x84, 0x43, 0x03, 0x37, - 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, 0x10 - }); - - amp_write_block_at(0x27, { - 0x20, 0x84, 0x51, 0x03, 0x3E, 0x08, 0x44, 0x26, - 0x30, 0x84, 0xC3, 0x03, 0x47, 0x84, 0xC2, 0x40, - 0xE0, 0x8C, 0xFF, 0x03, 0x23, 0xE0, 0x10, 0x11, - 0xB3, 0xF0, 0x1C, 0x51, 0xB4, 0xF0, 0x1C - }); - - amp_write_block_at(0x46, { - 0x51, 0xB5, 0xF0, 0x1C, 0x51, 0xB6, 0xF0, 0x1F, - 0x51, 0xB7, 0x86, 0xA1, 0x01, 0xC6, 0x80, 0x27, - 0x80, 0xEA, 0x84, 0x53, 0x03, 0x3E, 0x84, 0x82, - 0x04, 0x05, 0x84, 0x51, 0x03, 0x75, 0xE2 - }); - - amp_write_block_at(0x65, { - 0x6B, 0xC0, 0x00, 0x80, 0x07, 0x00, 0x80, 0xE0, - 0x80, 0x31, 0xB8, 0x84, 0x82, 0x40, 0xE0, 0xF0, - 0x1C, 0x51, 0xB9, 0xF0, 0x1C, 0x51, 0xBA, 0xF0, - 0x1C, 0x51, 0xBB - }); - } - - { - amp_set_page(0x04); - - amp_write_block_at(0x08, { - 0xF0, 0x1F, 0x51, 0xBC, 0x86, 0xA1, 0x01, 0xC5, - 0x80, 0x27, 0x80, 0xEA, 0x60, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x81, 0x84, 0xA1, 0x03, 0x4F, - 0xE0, 0x80, 0xA0, 0x00, 0x01, 0x07, 0x11 - }); - - amp_write_block_at(0x27, { - 0x20, 0x08, 0x44, 0x26, 0x30, 0x08, 0x00, 0x98, - 0x4A, 0x84, 0x53, 0x03, 0x75, 0x08, 0x00, 0x30, - 0x48, 0x02, 0xCA, 0x00, 0x01, 0x08, 0x60, 0x26, - 0x32, 0x84, 0x51, 0x03, 0x45, 0xE4, 0x10 - }); - - amp_write_block_at(0x46, { - 0x40, 0x00, 0x80, 0x40, 0xC0, 0x82, 0x84, 0xC2, - 0x40, 0xE0, 0x84, 0xC3, 0x03, 0x5E, 0x08, 0x00, - 0x50, 0x48, 0xE0, 0x10, 0x11, 0xBD, 0x02, 0xC2, - 0x00, 0x02, 0x08, 0x60, 0x06, 0x12, 0x84 - }); - - amp_write_block_at(0x65, { - 0xD3, 0x03, 0x4F, 0xF0, 0x1C, 0x51, 0xBE, 0xF0, - 0x1C, 0x51, 0xBF, 0xF0, 0x1C, 0x51, 0xC0, 0xF0, - 0x1F, 0x51, 0xC1, 0x84, 0xA1, 0x03, 0x65, 0x80, - 0x27, 0x80, 0xEA - }); - } - - { - amp_set_page(0x05); - - amp_write_block_at(0x08, { - 0xE0, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x83, - 0x08, 0x00, 0x98, 0x6B, 0x08, 0x00, 0x30, 0x68, - 0x84, 0x53, 0x03, 0x45, 0x08, 0x60, 0x26, 0x33, - 0x84, 0x51, 0x03, 0x25, 0xE4, 0x10, 0x60 - }); - - amp_write_block_at(0x27, { - 0x00, 0x80, 0x40, 0xC0, 0x81, 0x02, 0x70, 0x00, - 0x7F, 0x08, 0x00, 0x50, 0x28, 0x08, 0x60, 0x06, - 0x11, 0x84, 0xCB, 0x03, 0x65, 0xE0, 0x10, 0x51, - 0xC4, 0x84, 0x80, 0x41, 0x00, 0x02, 0xA3 - }); - - amp_write_block_at(0x46, { - 0x00, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x84, 0xD0, - 0x04, 0x01, 0x84, 0xA2, 0x04, 0x03, 0x84, 0xD2, - 0x50, 0x01, 0x84, 0x53, 0x03, 0x25, 0x80, 0x00, - 0xC4, 0x04, 0x8F, 0x30, 0x00, 0x00, 0x88 - }); - - amp_write_block_at(0x65, { - 0x67, 0x03, 0x00, 0xE4, 0x00, 0x11, 0x9B, 0xEE, - 0x64, 0x60, 0x00, 0x02, 0xD3, 0x00, 0x10, 0x88, - 0x47, 0x00, 0x80, 0x10, 0x00, 0x18, 0x02, 0x86, - 0xC1, 0x01, 0x9D - }); - } - - { - amp_set_page(0x06); - - amp_write_block_at(0x08, { - 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, 0x9E, - 0x80, 0x00, 0xC4, 0x02, 0x02, 0x50, 0x01, 0x9C, - 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, 0x00, 0x00, - 0x02, 0x60, 0x00, 0x01, 0x02, 0x70, 0x00 - }); - - amp_write_block_at(0x27, { - 0x04, 0x84, 0xC8, 0x04, 0x10, 0x84, 0x41, 0x03, - 0x67, 0x84, 0x51, 0x03, 0x6D, 0x84, 0xC0, 0x04, - 0x02, 0x04, 0x80, 0x91, 0x20, 0x08, 0x60, 0x26, - 0x30, 0x02, 0x78, 0x00, 0x03, 0x02, 0x68 - }); - - amp_write_block_at(0x46, { - 0x00, 0x02, 0x0D, 0x00, 0x10, 0x10, 0x08, 0x60, - 0x06, 0x12, 0x84, 0x49, 0x03, 0x2F, 0xE0, 0x80, - 0x71, 0xA9, 0x02, 0x28, 0x03, 0x55, 0x84, 0x82, - 0x00, 0xE0, 0x84, 0x2A, 0x04, 0x00, 0xF0 - }); - - amp_write_block_at(0x65, { - 0x1C, 0x11, 0xAA, 0xF0, 0x1C, 0x11, 0xAB, 0xF0, - 0x1C, 0x11, 0xAC, 0xF0, 0x1F, 0x11, 0xAD, 0x86, - 0xA1, 0x01, 0xAE, 0x80, 0x27, 0x80, 0xE8, 0x84, - 0x82, 0x04, 0x07 - }); - } - - { - amp_set_page(0x07); - - amp_write_block_at(0x08, { - 0xE0, 0x80, 0x60, 0x00, 0x84, 0x82, 0x40, 0xE0, - 0x84, 0x43, 0x03, 0x67, 0xF0, 0x1C, 0x51, 0xAF, - 0xF0, 0x1C, 0x51, 0xB0, 0xF0, 0x1C, 0x51, 0xB1, - 0xF0, 0x1F, 0x51, 0xB2, 0x02, 0x78, 0x00 - }); - - amp_write_block_at(0x27, { - 0x05, 0x80, 0x27, 0x80, 0xEA, 0x84, 0x82, 0x04, - 0x08, 0x02, 0x70, 0x00, 0x06, 0x84, 0x53, 0x03, - 0x6D, 0x84, 0x80, 0x04, 0x07, 0xE0, 0x00, 0x00, - 0x82, 0xF0, 0x81, 0x00, 0x80, 0x80, 0x07 - }); - - amp_write_block_at(0x46, { - 0x12, 0xBC, 0x86, 0xA1, 0x01, 0x9F, 0xE2, 0x57, - 0xA0, 0x00, 0x84, 0x82, 0x04, 0x09, 0x84, 0x82, - 0x20, 0xE0, 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, - 0x31, 0xA1, 0xF0, 0x1C, 0x31, 0xA2, 0xF0 - }); - - amp_write_block_at(0x65, { - 0x1F, 0x31, 0xA3, 0xE4, 0x00, 0x11, 0xA6, 0x80, - 0x27, 0x80, 0xE1, 0xF4, 0x00, 0x11, 0xA4, 0xF4, - 0x1D, 0x31, 0xA5, 0xF4, 0x1C, 0x31, 0xA7, 0xF4, - 0x1F, 0x31, 0xA8 - }); - } - - { - amp_set_page(0x08); - - amp_write_block_at(0x08, { - 0x02, 0x78, 0x00, 0x03, 0xE2, 0x6A, 0xF1, 0xC3, - 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, 0x03, 0x2F, - 0x02, 0x70, 0x00, 0x04, 0x84, 0x59, 0x03, 0x3D, - 0x80, 0x07, 0x00, 0x80, 0xE0, 0x00, 0x11 - }); - - amp_write_block_at(0x27, { - 0xA9, 0x84, 0x82, 0x60, 0xE0, 0x8E, 0xFC, 0x04, - 0x10, 0xF0, 0x1C, 0x71, 0xAA, 0xF0, 0x1C, 0x71, - 0xAB, 0xF0, 0x1C, 0x71, 0xAC, 0xF0, 0x1F, 0x71, - 0xAD, 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27 - }); - - amp_write_block_at(0x46, { - 0x80, 0xEB, 0x60, 0x00, 0x00, 0x00, 0x84, 0x5B, - 0x03, 0x3D, 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, - 0x10, 0x20, 0x84, 0x59, 0x03, 0x3F, 0x08, 0x44, - 0x26, 0x30, 0x84, 0xC3, 0x03, 0x57, 0x84 - }); - - amp_write_block_at(0x65, { - 0xC2, 0x60, 0xE0, 0xE0, 0x10, 0x11, 0xB3, 0xF0, - 0x1C, 0x71, 0xB4, 0xF0, 0x1C, 0x71, 0xB5, 0xF0, - 0x1C, 0x71, 0xB6, 0xF0, 0x1F, 0x71, 0xB7, 0x86, - 0xA1, 0x01, 0xC6 - }); - } - - { - amp_set_page(0x09); - - amp_write_block_at(0x08, { - 0x80, 0x27, 0x80, 0xEB, 0x84, 0x5B, 0x03, 0x3F, - 0x84, 0x82, 0x04, 0x0D, 0x84, 0x41, 0x03, 0x76, - 0xE2, 0x6B, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x80, - 0xE0, 0x81, 0x31, 0xB8, 0x84, 0x82, 0x00 - }); - - amp_write_block_at(0x27, { - 0xE0, 0xF0, 0x1C, 0x11, 0xB9, 0xF0, 0x1C, 0x11, - 0xBA, 0xF0, 0x1C, 0x11, 0xBB, 0xF0, 0x1F, 0x11, - 0xBC, 0x86, 0xA1, 0x01, 0xC5, 0x80, 0x27, 0x80, - 0xE8, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00 - }); - - amp_write_block_at(0x46, { - 0x00, 0x81, 0x84, 0xA1, 0x03, 0x5D, 0xE0, 0x81, - 0xA0, 0x00, 0x01, 0x07, 0x11, 0x20, 0x08, 0x44, - 0x26, 0x30, 0x08, 0x00, 0x98, 0x4A, 0x84, 0x43, - 0x03, 0x76, 0x08, 0x00, 0x30, 0x48, 0x02 - }); - - amp_write_block_at(0x65, { - 0xCA, 0x00, 0x01, 0x08, 0x60, 0x26, 0x32, 0x84, - 0x41, 0x03, 0x46, 0xE4, 0x10, 0x40, 0x00, 0x80, - 0x40, 0xC0, 0x82, 0x84, 0xC2, 0x00, 0xE0, 0x84, - 0xC3, 0x03, 0x5F - }); - } - - { - amp_set_page(0x0A); - - amp_write_block_at(0x08, { - 0x08, 0x00, 0x50, 0x48, 0xE0, 0x10, 0x11, 0xBD, - 0x02, 0xC2, 0x00, 0x02, 0x08, 0x60, 0x06, 0x12, - 0x84, 0xD3, 0x03, 0x5D, 0xF0, 0x1C, 0x11, 0xBE, - 0xF0, 0x1C, 0x11, 0xBF, 0xF0, 0x1C, 0x11 - }); - - amp_write_block_at(0x27, { - 0xC0, 0xF0, 0x1F, 0x11, 0xC1, 0x84, 0xA1, 0x03, - 0x66, 0x80, 0x27, 0x80, 0xE8, 0xE0, 0x00, 0x00, - 0x00, 0x80, 0x07, 0x00, 0x83, 0x08, 0x00, 0x98, - 0x6B, 0x08, 0x00, 0x30, 0x68, 0x84, 0x43 - }); - - amp_write_block_at(0x46, { - 0x03, 0x46, 0x08, 0x60, 0x26, 0x33, 0x84, 0x51, - 0x03, 0x26, 0xE4, 0x10, 0x60, 0x00, 0x80, 0x40, - 0xC0, 0x81, 0x02, 0x70, 0x00, 0x7F, 0x08, 0x00, - 0x50, 0x28, 0x08, 0x60, 0x06, 0x11, 0x8C - }); - - amp_write_block_at(0x65, { - 0xFF, 0x03, 0x24, 0x84, 0xCB, 0x03, 0x66, 0xE0, - 0x10, 0x51, 0xC4, 0x84, 0x80, 0x41, 0x00, 0x02, - 0xA3, 0x00, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x84, - 0xD0, 0x04, 0x09 - }); - } - - { - amp_set_page(0x0B); - - amp_write_block_at(0x08, { - 0x84, 0xA2, 0x04, 0x0B, 0x84, 0xD2, 0x50, 0x01, - 0x84, 0x53, 0x03, 0x26, 0x80, 0x00, 0xC4, 0x0C, - 0x8F, 0x30, 0x00, 0x00, 0x88, 0x67, 0x03, 0x00, - 0xE4, 0x00, 0x11, 0x9B, 0xEE, 0x64, 0x80 - }); - - amp_write_block_at(0x27, { - 0x00, 0x02, 0xD3, 0x00, 0x10, 0x88, 0x47, 0x00, - 0x80, 0x10, 0x00, 0x18, 0x02, 0x86, 0xC1, 0x01, - 0x9D, 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, - 0x9E, 0x80, 0x00, 0xC4, 0x0A, 0x02, 0x50 - }); - - amp_write_block_at(0x46, { - 0x01, 0x9C, 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, - 0x00, 0x00, 0x02, 0x70, 0x00, 0x04, 0x02, 0x68, - 0x00, 0x01, 0x02, 0x60, 0x00, 0x03, 0x02, 0x78, - 0x00, 0x02, 0x84, 0x49, 0x03, 0x6E, 0x84 - }); - - amp_write_block_at(0x65, { - 0x41, 0x03, 0x6F, 0x84, 0xC8, 0x04, 0x10, 0x84, - 0xC0, 0x04, 0x0A, 0x04, 0x81, 0x91, 0x20, 0x08, - 0x60, 0x26, 0x30, 0x0D, 0x00, 0x10, 0x10, 0x08, - 0x60, 0x06, 0x12 - }); - } - - { - amp_set_page(0x0C); - - amp_write_block_at(0x08, { - 0x84, 0x00, 0x04, 0x06, 0xE0, 0x81, 0x71, 0xA9, - 0x84, 0x82, 0x20, 0xE8, 0xF0, 0x1D, 0x31, 0xAA, - 0xF0, 0x1D, 0x31, 0xAB, 0xF0, 0x1D, 0x31, 0xAC, - 0xF0, 0x1C, 0x31, 0xAD, 0x86, 0xA1, 0x01 - }); - - amp_write_block_at(0x27, { - 0xAE, 0x80, 0x27, 0x80, 0xF9, 0x84, 0x82, 0x04, - 0x0E, 0xE0, 0x81, 0x60, 0x00, 0x84, 0x82, 0x00, - 0xE8, 0x84, 0x4B, 0x03, 0x6E, 0xF0, 0x1D, 0x11, - 0xAF, 0xF0, 0x1D, 0x11, 0xB0, 0xF0, 0x1D - }); - - amp_write_block_at(0x46, { - 0x11, 0xB1, 0xF0, 0x1C, 0x11, 0xB2, 0x02, 0xA3, - 0x00, 0x1A, 0x80, 0x27, 0x80, 0xF8, 0x84, 0x82, - 0x04, 0x0F, 0xE0, 0x81, 0xC0, 0x00, 0xF0, 0x81, - 0xE0, 0x80, 0x84, 0x43, 0x03, 0x6F, 0x80 - }); - - amp_write_block_at(0x65, { - 0x07, 0x12, 0xBD, 0x02, 0xC0, 0x00, 0x00, 0x00, - 0xFC, 0x50, 0x00, 0x8F, 0x00, 0x00, 0x11, 0x8F, - 0x00, 0xFF, 0xFF, 0x84, 0x58, 0x04, 0x01, 0x84, - 0xC2, 0x04, 0x00 - }); - } - - { - amp_set_page(0x0D); - - amp_write_block_at(0x08, { - 0x02, 0xC2, 0x60, 0x00, 0x84, 0xA0, 0x61, 0x00, - 0xE0, 0x20, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x40, 0x40, 0xA0, 0x00, 0x80, 0x00, 0xC0, 0x82, - 0x08, 0xFC, 0x48, 0x3A, 0x08, 0xFC, 0x18 - }); - - amp_write_block_at(0x27, { - 0x50, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x10, 0x00, - 0x00, 0x86, 0xA0, 0x41, 0x00, 0x40, 0x47, 0x20, - 0x00, 0x80, 0x00, 0xC0, 0x83, 0x04, 0xE0, 0x3D, - 0x1E, 0x04, 0x80, 0x11, 0xE0, 0x08, 0x44 - }); - - amp_write_block_at(0x46, { - 0x26, 0x33, 0x02, 0xCB, 0x00, 0x10, 0xE0, 0x10, - 0x40, 0x83, 0x08, 0x00, 0x28, 0x21, 0x84, 0xCA, - 0x61, 0x00, 0x80, 0x07, 0x00, 0x81, 0x0C, 0xE0, - 0x2C, 0x09, 0x84, 0xCA, 0x21, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0xFC, 0x50, 0x00, 0x8F, 0x00, 0x00, 0x01 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x18); - - amp_write_block_at(0x30, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1B); - - amp_write_block_at(0x6C, { - 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x03, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x1C); - - amp_write_block_at(0x08, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1C); - - amp_write_block_at(0x1C, { - 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0xFD, { - 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1C); - - amp_write_block_at(0x3C, { - 0x00, 0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1C); - - amp_write_block_at(0x54, { - 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x03, 0x48, - 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - amp_write_block_at(0xFD, { - 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1C); - amp_write_block_at(0x74, { - 0x00, 0x00, 0x03, 0x58, 0x00, 0x00, 0x03, 0x60, - 0x00, 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x1D); - amp_write_block_at(0x08, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1D); - amp_write_block_at(0x1C, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - amp_write_block_at(0xFD, { - 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1D); - amp_write_block_at(0x3C, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - amp_write_block_at(0x5B, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - amp_write_block_at(0x7A, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x1E); - amp_write_block_at(0x08, { - 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1E); - - amp_write_block_at(0x0C, { - 0x00, 0x00, 0x03, 0x68, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1E); - - amp_write_block_at(0x24, { - 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, 0x03, 0x78, - 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0xFD, { - 0x00, 0x00 - }); - } - - amp_set_book(0x78); - - { - amp_set_page(0x1E); - - amp_write_block_at(0x44, { - 0x00, 0x00, 0x04, 0x88, 0x00, 0x00, 0x04, 0x90 - }); - } - - amp_set_book(0x8C); - - { - amp_set_page(0x0E); - - amp_write_block_at(0x5C, { - 0x00, 0xA7, 0x26, 0x4A, 0x7F, 0xFF, 0xFF, 0xFF, - 0x00, 0x20, 0xC4, 0x9C, 0x00, 0x20, 0xC4, 0x9C, - 0x00, 0x00, 0x68, 0xDB, 0x00, 0x00, 0xD1, 0xB7, - 0x00, 0x00, 0x68, 0xDB, 0x0F, 0xA4, 0xA8 - }); - - amp_write_block_at(0x7B, { - 0xC1, 0xF8, 0x59, 0x7F, 0x63 - }); - } - - { - amp_set_page(0x0F); - - amp_write_block_at(0x08, { - 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xB7, 0xE9, - 0x00, 0x5F, 0x6F, 0xD2, 0x00, 0x2F, 0xB7 - }); - - amp_write_block_at(0x27, { - 0xE9, 0x0B, 0x1E, 0x4F, 0x76, 0xFC, 0x23, 0x05, - 0x54, 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x7D, 0xBF, - 0x48, 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x1E, 0x4F, - 0x76, 0xFC, 0x23, 0x05, 0x54, 0x00, 0x04 - }); - - amp_write_block_at(0x46, { - 0x81, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, 0xBB, - 0x98, 0xC8, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x81, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, - 0xBB, 0x98, 0xC8 - }); - } - - { - amp_set_page(0x10); - - amp_write_block_at(0x08, { - 0x00, 0x89, 0xA0, 0x27, 0x7F, 0xEC, 0x56, 0xD5, - 0x7F, 0xFC, 0xB9, 0x23, 0x00, 0x89, 0xA0, 0x27, - 0x7F, 0xEC, 0x56, 0xD5, 0x7F, 0xFC, 0xB9, 0x23 - }); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x40, 0x00); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_block_at(0x7D, { - 0x11, 0xFF - }); - } - - { - amp_set_page(0x01); - amp_write_at(0x51, 0x05); - } - - { - amp_set_page(0x02); - amp_write_at(0x19, 0xDF); - } - - amp_set_book(0x8C); - - { - amp_set_page(0x01); - amp_write_block_at(0x2C, { - 0x00, 0x71, 0x94, 0x9A - }); - } - - { - amp_set_page(0x0A); - - amp_write_block_at(0x64, { - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x0B); - - amp_write_block_at(0x08, { - 0x00, 0x80, 0x00, 0x00, 0x00, 0x37, 0xDF, 0xC0, - 0x00, 0x37, 0xDF, 0xC0, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00 - }); - - amp_write_block_at(0x28, { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x57, 0x62, 0x00, 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x0E); - - amp_write_block_at(0x5C, { - 0x00, 0x03, 0x69, 0xC5, 0x00, 0x60, 0x3F, 0x2A, - 0x00, 0x22, 0x1D, 0x95, 0x00, 0x03, 0x69, 0xC5 - }); - } - - { - amp_set_page(0x0F); - - amp_write_block_at(0x5C, { - 0x7F, 0xF9, 0x2C, 0x60, 0x04, 0x1A, 0xB4, 0xF9 - }); - } - - { - amp_set_page(0x07); - - amp_write_block_at(0x64, { - 0x00, 0x80, 0x00, 0x00 - }); - - amp_write_block_at(0x6C, { - 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 - }); - } - - amp_set_book(0xAA); - - { - amp_set_page(0x01); - - amp_write_block_at(0x30, { - 0x08, 0x10, 0x92, 0xFE, 0xF0, 0x84, 0x2F, 0xC0, - 0x07, 0x6F, 0x67, 0x29, 0x0F, 0x7B, 0xD0, 0x40, - 0xF8, 0x80, 0x05, 0xDA, 0x08, 0x18, 0xBA, 0xDB, - 0xF0, 0xA9, 0xF7, 0x0B, 0x07, 0x44, 0x20 - }); - - amp_write_block_at(0x4F, { - 0x4E, 0x0F, 0x56, 0x08, 0xF5, 0xF8, 0xA3, 0x24, - 0xD7, 0x08, 0x20, 0x24, 0xC9, 0xF1, 0x08, 0x6D, - 0x45, 0x06, 0xE7, 0x92, 0x27, 0x0E, 0xF7, 0x92, - 0xBB, 0xF8, 0xF8, 0x49, 0x10, 0x08, 0x13 - }); - - amp_write_block_at(0x6E, { - 0xEA, 0xAD, 0xF3, 0x14, 0xE9, 0xB1, 0x05, 0x4B, - 0xD4, 0xF4, 0x0C, 0xEB, 0x16, 0x4F, 0xFA, 0xA0, - 0x40, 0x5F - }); - } - - { - amp_set_page(0x02); - - amp_write_block_at(0x08, { - 0x08, 0x13, 0x8A, 0xBF, 0xF0, 0x78, 0x40, 0xD7, - 0x07, 0x77, 0x45, 0xB3, 0x0F, 0x87, 0xBF, 0x29, - 0xF8, 0x75, 0x2F, 0x8E, 0x08, 0x46, 0x76, 0x67, - 0xF6, 0x0C, 0xF9, 0x7A, 0x03, 0x36, 0x96 - }); - - amp_write_block_at(0x27, { - 0xD5, 0x09, 0xF3, 0x06, 0x86, 0xFC, 0x82, 0xF2, - 0xC4, 0x08, 0x0B, 0x02, 0xAF, 0xF0, 0xBC, 0xDB, - 0x13, 0x07, 0x40, 0x84, 0x68, 0x0F, 0x43, 0x24, - 0xED, 0xF8, 0xB4, 0x78, 0xEA, 0x08, 0x00 - }); - - amp_write_block_at(0x46, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x03); - - amp_write_block_at(0x08, { - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xB7, 0x9B, 0x16, - 0xF0, 0x90, 0xC9, 0xD5, 0x07, 0xB7, 0x9B - }); - - amp_write_block_at(0x27, { - 0x16, 0x0F, 0x6D, 0xB0, 0xA9, 0xF8, 0x8F, 0x44, - 0x52, 0x07, 0xBB, 0x6D, 0x71, 0xF0, 0xCF, 0x04, - 0xEA, 0x07, 0x7F, 0x86, 0x4C, 0x0F, 0x30, 0xFB, - 0x16, 0xF8, 0xC5, 0x0C, 0x43, 0x08, 0x49 - }); - - amp_write_block_at(0x46, { - 0x93, 0xE5, 0xF0, 0x43, 0x4D, 0x1F, 0x07, 0x7D, - 0x73, 0x57, 0x0F, 0xC0, 0x4F, 0x67, 0xF8, 0x3C, - 0x95, 0x49, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x04); - - amp_write_block_at(0x08, { - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x27, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 - }); - - amp_write_block_at(0x46, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x65, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 - }); - } - - { - amp_set_page(0x05); - - amp_write_block_at(0x08, { - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x27, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 - }); - - amp_write_block_at(0x46, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xB7, 0x9B, 0x16, 0xF0, 0x90, - 0xC9, 0xD5, 0x07, 0xB7, 0x9B, 0x16, 0x0F - }); - - amp_write_block_at(0x65, { - 0x6D, 0xB0, 0xA9, 0xF8, 0x8F, 0x44, 0x52, 0x07, - 0xBB, 0x6D, 0x71, 0xF0, 0xCF, 0x04, 0xEA, 0x07, - 0x7F, 0x86, 0x4C, 0x0F, 0x30, 0xFB, 0x16, 0xF8, - 0xC5, 0x0C, 0x43 - }); - } - - { - amp_set_page(0x06); - - amp_write_block_at(0x08, { - 0x08, 0x49, 0x93, 0xE5, 0xF0, 0x43, 0x4D, 0x1F, - 0x07, 0x7D, 0x73, 0x57, 0x0F, 0xC0, 0x4F, 0x67, - 0xF8, 0x3C, 0x95, 0x49, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }); - - amp_write_block_at(0x27, { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 - }); - } - - { - amp_set_page(0x0E); - - amp_write_block_at(0x6C, { - 0x00, 0x99, 0xF7, 0x27, 0xFF, 0x09, 0x5A, 0xB9, - 0x00, 0x66, 0xFF, 0x35, 0x0F, 0xB7, 0xB4, 0x87, - 0xF8, 0x3D, 0xFA, 0x65 - }); - } - - { - amp_set_page(0x0F); - - amp_write_block_at(0x08, { - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x95, - 0xFF, 0xFE, 0x7B, 0x29, 0xFF, 0xFF, 0x3D - }); - - amp_write_block_at(0x27, { - 0x95, 0x0F, 0x62, 0x3F, 0x77, 0xF8, 0x9A, 0xB6, - 0xDB, 0x07, 0xB1, 0xE2, 0x27, 0xF0, 0x9C, 0x3B, - 0xB2, 0x07, 0xB1, 0xE2, 0x27, 0x0F, 0x62, 0x3F, - 0x77, 0xF8, 0x9A, 0xB6, 0xDB, 0x00, 0x00 - }); - - amp_write_block_at(0x46, { - 0x38, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0xD5, 0x55, 0x55, 0xF8, 0x2A, - 0x71, 0xC7 - }); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x60, 0x00); - amp_write_at(0x63, 0x03); - amp_write_at(0x30, 0x00); - amp_write_at(0x4C, 0x30); - amp_write_at(0x03, 0x0B); - } - - amp_set_book(0x00); - - { - // Page 0 - - amp_write_at(0x78, 0x80); - } - - mdelay(100); - - { - // Page 0 - - amp_write_at(0x03, 0x03); - } - - return 0; + printk(BIOS_ERR, "tas5825m: setup not implemented\n"); + return -1; } static void tas5825m_init(struct device *dev) { diff --git a/src/drivers/i2c/tas5825m/tas5825m.h b/src/drivers/i2c/tas5825m/tas5825m.h new file mode 100644 index 0000000000..c58f86a6b4 --- /dev/null +++ b/src/drivers/i2c/tas5825m/tas5825m.h @@ -0,0 +1,12 @@ +#ifndef TAS5825M_H +#define TAS5825M_H + +#include + +int tas5825m_write_at(struct device *dev, uint8_t addr, uint8_t value); +int tas5825m_write_block_at(struct device *dev, uint8_t addr, const uint8_t * values, uint8_t length); +int tas5825m_set_page(struct device *dev, uint8_t page); +int tas5825m_set_book(struct device *dev, uint8_t book); +int tas5825m_setup(struct device *dev); + +#endif // TAS5825M_H diff --git a/src/mainboard/system76/oryp6/Makefile.inc b/src/mainboard/system76/oryp6/Makefile.inc index c15a0141f1..25cf5a7859 100644 --- a/src/mainboard/system76/oryp6/Makefile.inc +++ b/src/mainboard/system76/oryp6/Makefile.inc @@ -1,3 +1,4 @@ bootblock-y += bootblock.c ramstage-y += ramstage.c ramstage-y += hda_verb.c +ramstage-y += tas5825m.c diff --git a/src/mainboard/system76/oryp6/tas5825m.c b/src/mainboard/system76/oryp6/tas5825m.c new file mode 100644 index 0000000000..2795650e5b --- /dev/null +++ b/src/mainboard/system76/oryp6/tas5825m.c @@ -0,0 +1,1080 @@ +#include +#include + +#define R(F) { \ + res = F; \ + if (res < 0) return res; \ +} + +#define amp_write_at(A, V) R(tas5825m_write_at(dev, A, V)) + +#define amp_write_block_at(A, ...) { \ + const uint8_t _values[] = __VA_ARGS__; \ + R(tas5825m_write_block_at(dev, A, _values, ARRAY_SIZE(_values))); \ +} + +#define amp_set_page(P) R(tas5825m_set_page(dev, P)) + +#define amp_set_book(B) R(tas5825m_set_book(dev, B)) + +int tas5825m_setup(struct device * dev) { + int res = 0; + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x60, 0x00); + amp_write_at(0x63, 0x03); + amp_write_at(0x64, 0x03); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x03, 0x02); + amp_write_at(0x01, 0x11); + } + + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x46, 0x11); + } + + { + amp_set_page(0x00); + + amp_write_at(0x02, 0x00); + amp_write_at(0x53, 0x00); + amp_write_at(0x54, 0x00); + amp_write_at(0x29, 0x7C); + amp_write_at(0x03, 0x02); + } + + mdelay(5); + + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + + { + amp_set_page(0x00); + + amp_write_at(0x29, 0x00); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x03, 0x12); + } + + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + amp_set_page(0x00); + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x48, 0x0C); + } + + amp_set_book(0x64); + + { + amp_set_page(0x01); + + amp_write_block_at(0x08, { + 0x00, 0xFE, 0x00, 0x40, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00 + }); + + amp_write_block_at(0x27, { + 0x00, 0x00, 0xFC, 0x50, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC + }); + + amp_write_block_at(0x46, { + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0xFC, 0x00, 0x00, 0x00, 0x82, 0x00, 0x93, 0x00, + 0xFC, 0x00, 0x00, 0x8F, 0x00, 0xFF, 0xEF, 0x84, + 0x49, 0x03, 0x27, 0x84, 0x02, 0x04, 0x06, 0x02, + 0x60, 0x00, 0x01 + }); + } + + { + amp_set_page(0x02); + + amp_write_block_at(0x08, { + 0x02, 0x70, 0x00, 0x06, 0x02, 0x78, 0x00, 0x05, + 0x02, 0x68, 0x00, 0x02, 0x02, 0x28, 0x03, 0x4D, + 0x84, 0x2A, 0x04, 0x00, 0xE2, 0x57, 0x91, 0x9F, + 0x84, 0x82, 0x20, 0xE0, 0x84, 0x82, 0x04 + }); + + amp_write_block_at(0x27, { + 0x01, 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, 0x31, + 0xA1, 0xF0, 0x1C, 0x31, 0xA2, 0xF0, 0x1F, 0x31, + 0xA3, 0xE4, 0x00, 0x11, 0xA6, 0x80, 0x27, 0x80, + 0xE1, 0xF4, 0x00, 0x11, 0xA4, 0xF4, 0x1D + }); + + amp_write_block_at(0x46, { + 0x31, 0xA5, 0xF4, 0x1C, 0x31, 0xA7, 0xF4, 0x1F, + 0x31, 0xA8, 0x02, 0x78, 0x00, 0x03, 0xE2, 0x68, + 0xF1, 0xC3, 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, + 0x03, 0x27, 0x02, 0x70, 0x00, 0x04, 0x84 + }); + + amp_write_block_at(0x65, { + 0x41, 0x03, 0x37, 0x80, 0x07, 0x00, 0x80, 0xE0, + 0x00, 0x11, 0xA9, 0x84, 0x82, 0x00, 0xE0, 0x8E, + 0xFC, 0x04, 0x10, 0xF0, 0x1C, 0x11, 0xAA, 0xF0, + 0x1C, 0x11, 0xAB + }); + } + + { + amp_set_page(0x03); + + amp_write_block_at(0x08, { + 0xF0, 0x1C, 0x11, 0xAC, 0xF0, 0x1F, 0x11, 0xAD, + 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27, 0x80, 0xE8, + 0x60, 0x00, 0x00, 0x00, 0x84, 0x43, 0x03, 0x37, + 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, 0x10 + }); + + amp_write_block_at(0x27, { + 0x20, 0x84, 0x51, 0x03, 0x3E, 0x08, 0x44, 0x26, + 0x30, 0x84, 0xC3, 0x03, 0x47, 0x84, 0xC2, 0x40, + 0xE0, 0x8C, 0xFF, 0x03, 0x23, 0xE0, 0x10, 0x11, + 0xB3, 0xF0, 0x1C, 0x51, 0xB4, 0xF0, 0x1C + }); + + amp_write_block_at(0x46, { + 0x51, 0xB5, 0xF0, 0x1C, 0x51, 0xB6, 0xF0, 0x1F, + 0x51, 0xB7, 0x86, 0xA1, 0x01, 0xC6, 0x80, 0x27, + 0x80, 0xEA, 0x84, 0x53, 0x03, 0x3E, 0x84, 0x82, + 0x04, 0x05, 0x84, 0x51, 0x03, 0x75, 0xE2 + }); + + amp_write_block_at(0x65, { + 0x6B, 0xC0, 0x00, 0x80, 0x07, 0x00, 0x80, 0xE0, + 0x80, 0x31, 0xB8, 0x84, 0x82, 0x40, 0xE0, 0xF0, + 0x1C, 0x51, 0xB9, 0xF0, 0x1C, 0x51, 0xBA, 0xF0, + 0x1C, 0x51, 0xBB + }); + } + + { + amp_set_page(0x04); + + amp_write_block_at(0x08, { + 0xF0, 0x1F, 0x51, 0xBC, 0x86, 0xA1, 0x01, 0xC5, + 0x80, 0x27, 0x80, 0xEA, 0x60, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x81, 0x84, 0xA1, 0x03, 0x4F, + 0xE0, 0x80, 0xA0, 0x00, 0x01, 0x07, 0x11 + }); + + amp_write_block_at(0x27, { + 0x20, 0x08, 0x44, 0x26, 0x30, 0x08, 0x00, 0x98, + 0x4A, 0x84, 0x53, 0x03, 0x75, 0x08, 0x00, 0x30, + 0x48, 0x02, 0xCA, 0x00, 0x01, 0x08, 0x60, 0x26, + 0x32, 0x84, 0x51, 0x03, 0x45, 0xE4, 0x10 + }); + + amp_write_block_at(0x46, { + 0x40, 0x00, 0x80, 0x40, 0xC0, 0x82, 0x84, 0xC2, + 0x40, 0xE0, 0x84, 0xC3, 0x03, 0x5E, 0x08, 0x00, + 0x50, 0x48, 0xE0, 0x10, 0x11, 0xBD, 0x02, 0xC2, + 0x00, 0x02, 0x08, 0x60, 0x06, 0x12, 0x84 + }); + + amp_write_block_at(0x65, { + 0xD3, 0x03, 0x4F, 0xF0, 0x1C, 0x51, 0xBE, 0xF0, + 0x1C, 0x51, 0xBF, 0xF0, 0x1C, 0x51, 0xC0, 0xF0, + 0x1F, 0x51, 0xC1, 0x84, 0xA1, 0x03, 0x65, 0x80, + 0x27, 0x80, 0xEA + }); + } + + { + amp_set_page(0x05); + + amp_write_block_at(0x08, { + 0xE0, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x83, + 0x08, 0x00, 0x98, 0x6B, 0x08, 0x00, 0x30, 0x68, + 0x84, 0x53, 0x03, 0x45, 0x08, 0x60, 0x26, 0x33, + 0x84, 0x51, 0x03, 0x25, 0xE4, 0x10, 0x60 + }); + + amp_write_block_at(0x27, { + 0x00, 0x80, 0x40, 0xC0, 0x81, 0x02, 0x70, 0x00, + 0x7F, 0x08, 0x00, 0x50, 0x28, 0x08, 0x60, 0x06, + 0x11, 0x84, 0xCB, 0x03, 0x65, 0xE0, 0x10, 0x51, + 0xC4, 0x84, 0x80, 0x41, 0x00, 0x02, 0xA3 + }); + + amp_write_block_at(0x46, { + 0x00, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x84, 0xD0, + 0x04, 0x01, 0x84, 0xA2, 0x04, 0x03, 0x84, 0xD2, + 0x50, 0x01, 0x84, 0x53, 0x03, 0x25, 0x80, 0x00, + 0xC4, 0x04, 0x8F, 0x30, 0x00, 0x00, 0x88 + }); + + amp_write_block_at(0x65, { + 0x67, 0x03, 0x00, 0xE4, 0x00, 0x11, 0x9B, 0xEE, + 0x64, 0x60, 0x00, 0x02, 0xD3, 0x00, 0x10, 0x88, + 0x47, 0x00, 0x80, 0x10, 0x00, 0x18, 0x02, 0x86, + 0xC1, 0x01, 0x9D + }); + } + + { + amp_set_page(0x06); + + amp_write_block_at(0x08, { + 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, 0x9E, + 0x80, 0x00, 0xC4, 0x02, 0x02, 0x50, 0x01, 0x9C, + 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, 0x00, 0x00, + 0x02, 0x60, 0x00, 0x01, 0x02, 0x70, 0x00 + }); + + amp_write_block_at(0x27, { + 0x04, 0x84, 0xC8, 0x04, 0x10, 0x84, 0x41, 0x03, + 0x67, 0x84, 0x51, 0x03, 0x6D, 0x84, 0xC0, 0x04, + 0x02, 0x04, 0x80, 0x91, 0x20, 0x08, 0x60, 0x26, + 0x30, 0x02, 0x78, 0x00, 0x03, 0x02, 0x68 + }); + + amp_write_block_at(0x46, { + 0x00, 0x02, 0x0D, 0x00, 0x10, 0x10, 0x08, 0x60, + 0x06, 0x12, 0x84, 0x49, 0x03, 0x2F, 0xE0, 0x80, + 0x71, 0xA9, 0x02, 0x28, 0x03, 0x55, 0x84, 0x82, + 0x00, 0xE0, 0x84, 0x2A, 0x04, 0x00, 0xF0 + }); + + amp_write_block_at(0x65, { + 0x1C, 0x11, 0xAA, 0xF0, 0x1C, 0x11, 0xAB, 0xF0, + 0x1C, 0x11, 0xAC, 0xF0, 0x1F, 0x11, 0xAD, 0x86, + 0xA1, 0x01, 0xAE, 0x80, 0x27, 0x80, 0xE8, 0x84, + 0x82, 0x04, 0x07 + }); + } + + { + amp_set_page(0x07); + + amp_write_block_at(0x08, { + 0xE0, 0x80, 0x60, 0x00, 0x84, 0x82, 0x40, 0xE0, + 0x84, 0x43, 0x03, 0x67, 0xF0, 0x1C, 0x51, 0xAF, + 0xF0, 0x1C, 0x51, 0xB0, 0xF0, 0x1C, 0x51, 0xB1, + 0xF0, 0x1F, 0x51, 0xB2, 0x02, 0x78, 0x00 + }); + + amp_write_block_at(0x27, { + 0x05, 0x80, 0x27, 0x80, 0xEA, 0x84, 0x82, 0x04, + 0x08, 0x02, 0x70, 0x00, 0x06, 0x84, 0x53, 0x03, + 0x6D, 0x84, 0x80, 0x04, 0x07, 0xE0, 0x00, 0x00, + 0x82, 0xF0, 0x81, 0x00, 0x80, 0x80, 0x07 + }); + + amp_write_block_at(0x46, { + 0x12, 0xBC, 0x86, 0xA1, 0x01, 0x9F, 0xE2, 0x57, + 0xA0, 0x00, 0x84, 0x82, 0x04, 0x09, 0x84, 0x82, + 0x20, 0xE0, 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, + 0x31, 0xA1, 0xF0, 0x1C, 0x31, 0xA2, 0xF0 + }); + + amp_write_block_at(0x65, { + 0x1F, 0x31, 0xA3, 0xE4, 0x00, 0x11, 0xA6, 0x80, + 0x27, 0x80, 0xE1, 0xF4, 0x00, 0x11, 0xA4, 0xF4, + 0x1D, 0x31, 0xA5, 0xF4, 0x1C, 0x31, 0xA7, 0xF4, + 0x1F, 0x31, 0xA8 + }); + } + + { + amp_set_page(0x08); + + amp_write_block_at(0x08, { + 0x02, 0x78, 0x00, 0x03, 0xE2, 0x6A, 0xF1, 0xC3, + 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, 0x03, 0x2F, + 0x02, 0x70, 0x00, 0x04, 0x84, 0x59, 0x03, 0x3D, + 0x80, 0x07, 0x00, 0x80, 0xE0, 0x00, 0x11 + }); + + amp_write_block_at(0x27, { + 0xA9, 0x84, 0x82, 0x60, 0xE0, 0x8E, 0xFC, 0x04, + 0x10, 0xF0, 0x1C, 0x71, 0xAA, 0xF0, 0x1C, 0x71, + 0xAB, 0xF0, 0x1C, 0x71, 0xAC, 0xF0, 0x1F, 0x71, + 0xAD, 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27 + }); + + amp_write_block_at(0x46, { + 0x80, 0xEB, 0x60, 0x00, 0x00, 0x00, 0x84, 0x5B, + 0x03, 0x3D, 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, + 0x10, 0x20, 0x84, 0x59, 0x03, 0x3F, 0x08, 0x44, + 0x26, 0x30, 0x84, 0xC3, 0x03, 0x57, 0x84 + }); + + amp_write_block_at(0x65, { + 0xC2, 0x60, 0xE0, 0xE0, 0x10, 0x11, 0xB3, 0xF0, + 0x1C, 0x71, 0xB4, 0xF0, 0x1C, 0x71, 0xB5, 0xF0, + 0x1C, 0x71, 0xB6, 0xF0, 0x1F, 0x71, 0xB7, 0x86, + 0xA1, 0x01, 0xC6 + }); + } + + { + amp_set_page(0x09); + + amp_write_block_at(0x08, { + 0x80, 0x27, 0x80, 0xEB, 0x84, 0x5B, 0x03, 0x3F, + 0x84, 0x82, 0x04, 0x0D, 0x84, 0x41, 0x03, 0x76, + 0xE2, 0x6B, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x80, + 0xE0, 0x81, 0x31, 0xB8, 0x84, 0x82, 0x00 + }); + + amp_write_block_at(0x27, { + 0xE0, 0xF0, 0x1C, 0x11, 0xB9, 0xF0, 0x1C, 0x11, + 0xBA, 0xF0, 0x1C, 0x11, 0xBB, 0xF0, 0x1F, 0x11, + 0xBC, 0x86, 0xA1, 0x01, 0xC5, 0x80, 0x27, 0x80, + 0xE8, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00 + }); + + amp_write_block_at(0x46, { + 0x00, 0x81, 0x84, 0xA1, 0x03, 0x5D, 0xE0, 0x81, + 0xA0, 0x00, 0x01, 0x07, 0x11, 0x20, 0x08, 0x44, + 0x26, 0x30, 0x08, 0x00, 0x98, 0x4A, 0x84, 0x43, + 0x03, 0x76, 0x08, 0x00, 0x30, 0x48, 0x02 + }); + + amp_write_block_at(0x65, { + 0xCA, 0x00, 0x01, 0x08, 0x60, 0x26, 0x32, 0x84, + 0x41, 0x03, 0x46, 0xE4, 0x10, 0x40, 0x00, 0x80, + 0x40, 0xC0, 0x82, 0x84, 0xC2, 0x00, 0xE0, 0x84, + 0xC3, 0x03, 0x5F + }); + } + + { + amp_set_page(0x0A); + + amp_write_block_at(0x08, { + 0x08, 0x00, 0x50, 0x48, 0xE0, 0x10, 0x11, 0xBD, + 0x02, 0xC2, 0x00, 0x02, 0x08, 0x60, 0x06, 0x12, + 0x84, 0xD3, 0x03, 0x5D, 0xF0, 0x1C, 0x11, 0xBE, + 0xF0, 0x1C, 0x11, 0xBF, 0xF0, 0x1C, 0x11 + }); + + amp_write_block_at(0x27, { + 0xC0, 0xF0, 0x1F, 0x11, 0xC1, 0x84, 0xA1, 0x03, + 0x66, 0x80, 0x27, 0x80, 0xE8, 0xE0, 0x00, 0x00, + 0x00, 0x80, 0x07, 0x00, 0x83, 0x08, 0x00, 0x98, + 0x6B, 0x08, 0x00, 0x30, 0x68, 0x84, 0x43 + }); + + amp_write_block_at(0x46, { + 0x03, 0x46, 0x08, 0x60, 0x26, 0x33, 0x84, 0x51, + 0x03, 0x26, 0xE4, 0x10, 0x60, 0x00, 0x80, 0x40, + 0xC0, 0x81, 0x02, 0x70, 0x00, 0x7F, 0x08, 0x00, + 0x50, 0x28, 0x08, 0x60, 0x06, 0x11, 0x8C + }); + + amp_write_block_at(0x65, { + 0xFF, 0x03, 0x24, 0x84, 0xCB, 0x03, 0x66, 0xE0, + 0x10, 0x51, 0xC4, 0x84, 0x80, 0x41, 0x00, 0x02, + 0xA3, 0x00, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x84, + 0xD0, 0x04, 0x09 + }); + } + + { + amp_set_page(0x0B); + + amp_write_block_at(0x08, { + 0x84, 0xA2, 0x04, 0x0B, 0x84, 0xD2, 0x50, 0x01, + 0x84, 0x53, 0x03, 0x26, 0x80, 0x00, 0xC4, 0x0C, + 0x8F, 0x30, 0x00, 0x00, 0x88, 0x67, 0x03, 0x00, + 0xE4, 0x00, 0x11, 0x9B, 0xEE, 0x64, 0x80 + }); + + amp_write_block_at(0x27, { + 0x00, 0x02, 0xD3, 0x00, 0x10, 0x88, 0x47, 0x00, + 0x80, 0x10, 0x00, 0x18, 0x02, 0x86, 0xC1, 0x01, + 0x9D, 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, + 0x9E, 0x80, 0x00, 0xC4, 0x0A, 0x02, 0x50 + }); + + amp_write_block_at(0x46, { + 0x01, 0x9C, 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, + 0x00, 0x00, 0x02, 0x70, 0x00, 0x04, 0x02, 0x68, + 0x00, 0x01, 0x02, 0x60, 0x00, 0x03, 0x02, 0x78, + 0x00, 0x02, 0x84, 0x49, 0x03, 0x6E, 0x84 + }); + + amp_write_block_at(0x65, { + 0x41, 0x03, 0x6F, 0x84, 0xC8, 0x04, 0x10, 0x84, + 0xC0, 0x04, 0x0A, 0x04, 0x81, 0x91, 0x20, 0x08, + 0x60, 0x26, 0x30, 0x0D, 0x00, 0x10, 0x10, 0x08, + 0x60, 0x06, 0x12 + }); + } + + { + amp_set_page(0x0C); + + amp_write_block_at(0x08, { + 0x84, 0x00, 0x04, 0x06, 0xE0, 0x81, 0x71, 0xA9, + 0x84, 0x82, 0x20, 0xE8, 0xF0, 0x1D, 0x31, 0xAA, + 0xF0, 0x1D, 0x31, 0xAB, 0xF0, 0x1D, 0x31, 0xAC, + 0xF0, 0x1C, 0x31, 0xAD, 0x86, 0xA1, 0x01 + }); + + amp_write_block_at(0x27, { + 0xAE, 0x80, 0x27, 0x80, 0xF9, 0x84, 0x82, 0x04, + 0x0E, 0xE0, 0x81, 0x60, 0x00, 0x84, 0x82, 0x00, + 0xE8, 0x84, 0x4B, 0x03, 0x6E, 0xF0, 0x1D, 0x11, + 0xAF, 0xF0, 0x1D, 0x11, 0xB0, 0xF0, 0x1D + }); + + amp_write_block_at(0x46, { + 0x11, 0xB1, 0xF0, 0x1C, 0x11, 0xB2, 0x02, 0xA3, + 0x00, 0x1A, 0x80, 0x27, 0x80, 0xF8, 0x84, 0x82, + 0x04, 0x0F, 0xE0, 0x81, 0xC0, 0x00, 0xF0, 0x81, + 0xE0, 0x80, 0x84, 0x43, 0x03, 0x6F, 0x80 + }); + + amp_write_block_at(0x65, { + 0x07, 0x12, 0xBD, 0x02, 0xC0, 0x00, 0x00, 0x00, + 0xFC, 0x50, 0x00, 0x8F, 0x00, 0x00, 0x11, 0x8F, + 0x00, 0xFF, 0xFF, 0x84, 0x58, 0x04, 0x01, 0x84, + 0xC2, 0x04, 0x00 + }); + } + + { + amp_set_page(0x0D); + + amp_write_block_at(0x08, { + 0x02, 0xC2, 0x60, 0x00, 0x84, 0xA0, 0x61, 0x00, + 0xE0, 0x20, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x40, 0x40, 0xA0, 0x00, 0x80, 0x00, 0xC0, 0x82, + 0x08, 0xFC, 0x48, 0x3A, 0x08, 0xFC, 0x18 + }); + + amp_write_block_at(0x27, { + 0x50, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x10, 0x00, + 0x00, 0x86, 0xA0, 0x41, 0x00, 0x40, 0x47, 0x20, + 0x00, 0x80, 0x00, 0xC0, 0x83, 0x04, 0xE0, 0x3D, + 0x1E, 0x04, 0x80, 0x11, 0xE0, 0x08, 0x44 + }); + + amp_write_block_at(0x46, { + 0x26, 0x33, 0x02, 0xCB, 0x00, 0x10, 0xE0, 0x10, + 0x40, 0x83, 0x08, 0x00, 0x28, 0x21, 0x84, 0xCA, + 0x61, 0x00, 0x80, 0x07, 0x00, 0x81, 0x0C, 0xE0, + 0x2C, 0x09, 0x84, 0xCA, 0x21, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0xFC, 0x50, 0x00, 0x8F, 0x00, 0x00, 0x01 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x18); + + amp_write_block_at(0x30, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1B); + + amp_write_block_at(0x6C, { + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x03, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x1C); + + amp_write_block_at(0x08, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1C); + + amp_write_block_at(0x1C, { + 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0xFD, { + 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1C); + + amp_write_block_at(0x3C, { + 0x00, 0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1C); + + amp_write_block_at(0x54, { + 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x03, 0x48, + 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + amp_write_block_at(0xFD, { + 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1C); + amp_write_block_at(0x74, { + 0x00, 0x00, 0x03, 0x58, 0x00, 0x00, 0x03, 0x60, + 0x00, 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x1D); + amp_write_block_at(0x08, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1D); + amp_write_block_at(0x1C, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + amp_write_block_at(0xFD, { + 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1D); + amp_write_block_at(0x3C, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + amp_write_block_at(0x5B, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + amp_write_block_at(0x7A, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x1E); + amp_write_block_at(0x08, { + 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1E); + + amp_write_block_at(0x0C, { + 0x00, 0x00, 0x03, 0x68, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1E); + + amp_write_block_at(0x24, { + 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, 0x03, 0x78, + 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0xFD, { + 0x00, 0x00 + }); + } + + amp_set_book(0x78); + + { + amp_set_page(0x1E); + + amp_write_block_at(0x44, { + 0x00, 0x00, 0x04, 0x88, 0x00, 0x00, 0x04, 0x90 + }); + } + + amp_set_book(0x8C); + + { + amp_set_page(0x0E); + + amp_write_block_at(0x5C, { + 0x00, 0xA7, 0x26, 0x4A, 0x7F, 0xFF, 0xFF, 0xFF, + 0x00, 0x20, 0xC4, 0x9C, 0x00, 0x20, 0xC4, 0x9C, + 0x00, 0x00, 0x68, 0xDB, 0x00, 0x00, 0xD1, 0xB7, + 0x00, 0x00, 0x68, 0xDB, 0x0F, 0xA4, 0xA8 + }); + + amp_write_block_at(0x7B, { + 0xC1, 0xF8, 0x59, 0x7F, 0x63 + }); + } + + { + amp_set_page(0x0F); + + amp_write_block_at(0x08, { + 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xB7, 0xE9, + 0x00, 0x5F, 0x6F, 0xD2, 0x00, 0x2F, 0xB7 + }); + + amp_write_block_at(0x27, { + 0xE9, 0x0B, 0x1E, 0x4F, 0x76, 0xFC, 0x23, 0x05, + 0x54, 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x7D, 0xBF, + 0x48, 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x1E, 0x4F, + 0x76, 0xFC, 0x23, 0x05, 0x54, 0x00, 0x04 + }); + + amp_write_block_at(0x46, { + 0x81, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, 0xBB, + 0x98, 0xC8, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x81, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, + 0xBB, 0x98, 0xC8 + }); + } + + { + amp_set_page(0x10); + + amp_write_block_at(0x08, { + 0x00, 0x89, 0xA0, 0x27, 0x7F, 0xEC, 0x56, 0xD5, + 0x7F, 0xFC, 0xB9, 0x23, 0x00, 0x89, 0xA0, 0x27, + 0x7F, 0xEC, 0x56, 0xD5, 0x7F, 0xFC, 0xB9, 0x23 + }); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x40, 0x00); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_block_at(0x7D, { + 0x11, 0xFF + }); + } + + { + amp_set_page(0x01); + amp_write_at(0x51, 0x05); + } + + { + amp_set_page(0x02); + amp_write_at(0x19, 0xDF); + } + + amp_set_book(0x8C); + + { + amp_set_page(0x01); + amp_write_block_at(0x2C, { + 0x00, 0x71, 0x94, 0x9A + }); + } + + { + amp_set_page(0x0A); + + amp_write_block_at(0x64, { + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x0B); + + amp_write_block_at(0x08, { + 0x00, 0x80, 0x00, 0x00, 0x00, 0x37, 0xDF, 0xC0, + 0x00, 0x37, 0xDF, 0xC0, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00 + }); + + amp_write_block_at(0x28, { + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x57, 0x62, 0x00, 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x0E); + + amp_write_block_at(0x5C, { + 0x00, 0x03, 0x69, 0xC5, 0x00, 0x60, 0x3F, 0x2A, + 0x00, 0x22, 0x1D, 0x95, 0x00, 0x03, 0x69, 0xC5 + }); + } + + { + amp_set_page(0x0F); + + amp_write_block_at(0x5C, { + 0x7F, 0xF9, 0x2C, 0x60, 0x04, 0x1A, 0xB4, 0xF9 + }); + } + + { + amp_set_page(0x07); + + amp_write_block_at(0x64, { + 0x00, 0x80, 0x00, 0x00 + }); + + amp_write_block_at(0x6C, { + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 + }); + } + + amp_set_book(0xAA); + + { + amp_set_page(0x01); + + amp_write_block_at(0x30, { + 0x08, 0x10, 0x92, 0xFE, 0xF0, 0x84, 0x2F, 0xC0, + 0x07, 0x6F, 0x67, 0x29, 0x0F, 0x7B, 0xD0, 0x40, + 0xF8, 0x80, 0x05, 0xDA, 0x08, 0x18, 0xBA, 0xDB, + 0xF0, 0xA9, 0xF7, 0x0B, 0x07, 0x44, 0x20 + }); + + amp_write_block_at(0x4F, { + 0x4E, 0x0F, 0x56, 0x08, 0xF5, 0xF8, 0xA3, 0x24, + 0xD7, 0x08, 0x20, 0x24, 0xC9, 0xF1, 0x08, 0x6D, + 0x45, 0x06, 0xE7, 0x92, 0x27, 0x0E, 0xF7, 0x92, + 0xBB, 0xF8, 0xF8, 0x49, 0x10, 0x08, 0x13 + }); + + amp_write_block_at(0x6E, { + 0xEA, 0xAD, 0xF3, 0x14, 0xE9, 0xB1, 0x05, 0x4B, + 0xD4, 0xF4, 0x0C, 0xEB, 0x16, 0x4F, 0xFA, 0xA0, + 0x40, 0x5F + }); + } + + { + amp_set_page(0x02); + + amp_write_block_at(0x08, { + 0x08, 0x13, 0x8A, 0xBF, 0xF0, 0x78, 0x40, 0xD7, + 0x07, 0x77, 0x45, 0xB3, 0x0F, 0x87, 0xBF, 0x29, + 0xF8, 0x75, 0x2F, 0x8E, 0x08, 0x46, 0x76, 0x67, + 0xF6, 0x0C, 0xF9, 0x7A, 0x03, 0x36, 0x96 + }); + + amp_write_block_at(0x27, { + 0xD5, 0x09, 0xF3, 0x06, 0x86, 0xFC, 0x82, 0xF2, + 0xC4, 0x08, 0x0B, 0x02, 0xAF, 0xF0, 0xBC, 0xDB, + 0x13, 0x07, 0x40, 0x84, 0x68, 0x0F, 0x43, 0x24, + 0xED, 0xF8, 0xB4, 0x78, 0xEA, 0x08, 0x00 + }); + + amp_write_block_at(0x46, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x03); + + amp_write_block_at(0x08, { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xB7, 0x9B, 0x16, + 0xF0, 0x90, 0xC9, 0xD5, 0x07, 0xB7, 0x9B + }); + + amp_write_block_at(0x27, { + 0x16, 0x0F, 0x6D, 0xB0, 0xA9, 0xF8, 0x8F, 0x44, + 0x52, 0x07, 0xBB, 0x6D, 0x71, 0xF0, 0xCF, 0x04, + 0xEA, 0x07, 0x7F, 0x86, 0x4C, 0x0F, 0x30, 0xFB, + 0x16, 0xF8, 0xC5, 0x0C, 0x43, 0x08, 0x49 + }); + + amp_write_block_at(0x46, { + 0x93, 0xE5, 0xF0, 0x43, 0x4D, 0x1F, 0x07, 0x7D, + 0x73, 0x57, 0x0F, 0xC0, 0x4F, 0x67, 0xF8, 0x3C, + 0x95, 0x49, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x04); + + amp_write_block_at(0x08, { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x27, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 + }); + + amp_write_block_at(0x46, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x65, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 + }); + } + + { + amp_set_page(0x05); + + amp_write_block_at(0x08, { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x27, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 + }); + + amp_write_block_at(0x46, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xB7, 0x9B, 0x16, 0xF0, 0x90, + 0xC9, 0xD5, 0x07, 0xB7, 0x9B, 0x16, 0x0F + }); + + amp_write_block_at(0x65, { + 0x6D, 0xB0, 0xA9, 0xF8, 0x8F, 0x44, 0x52, 0x07, + 0xBB, 0x6D, 0x71, 0xF0, 0xCF, 0x04, 0xEA, 0x07, + 0x7F, 0x86, 0x4C, 0x0F, 0x30, 0xFB, 0x16, 0xF8, + 0xC5, 0x0C, 0x43 + }); + } + + { + amp_set_page(0x06); + + amp_write_block_at(0x08, { + 0x08, 0x49, 0x93, 0xE5, 0xF0, 0x43, 0x4D, 0x1F, + 0x07, 0x7D, 0x73, 0x57, 0x0F, 0xC0, 0x4F, 0x67, + 0xF8, 0x3C, 0x95, 0x49, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }); + + amp_write_block_at(0x27, { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 + }); + } + + { + amp_set_page(0x0E); + + amp_write_block_at(0x6C, { + 0x00, 0x99, 0xF7, 0x27, 0xFF, 0x09, 0x5A, 0xB9, + 0x00, 0x66, 0xFF, 0x35, 0x0F, 0xB7, 0xB4, 0x87, + 0xF8, 0x3D, 0xFA, 0x65 + }); + } + + { + amp_set_page(0x0F); + + amp_write_block_at(0x08, { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x95, + 0xFF, 0xFE, 0x7B, 0x29, 0xFF, 0xFF, 0x3D + }); + + amp_write_block_at(0x27, { + 0x95, 0x0F, 0x62, 0x3F, 0x77, 0xF8, 0x9A, 0xB6, + 0xDB, 0x07, 0xB1, 0xE2, 0x27, 0xF0, 0x9C, 0x3B, + 0xB2, 0x07, 0xB1, 0xE2, 0x27, 0x0F, 0x62, 0x3F, + 0x77, 0xF8, 0x9A, 0xB6, 0xDB, 0x00, 0x00 + }); + + amp_write_block_at(0x46, { + 0x38, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xD5, 0x55, 0x55, 0xF8, 0x2A, + 0x71, 0xC7 + }); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x60, 0x00); + amp_write_at(0x63, 0x03); + amp_write_at(0x30, 0x00); + amp_write_at(0x4C, 0x30); + amp_write_at(0x03, 0x0B); + } + + amp_set_book(0x00); + + { + // Page 0 + + amp_write_at(0x78, 0x80); + } + + mdelay(100); + + { + // Page 0 + + amp_write_at(0x03, 0x03); + } + + return 0; +}