From nobody@FreeBSD.org  Wed Jan 12 03:07:00 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 891D8106566C
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Jan 2011 03:07:00 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (unknown [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 758EC8FC17
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Jan 2011 03:07:00 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p0C36x2i042226
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Jan 2011 03:06:59 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p0C36x7m042225;
	Wed, 12 Jan 2011 03:06:59 GMT
	(envelope-from nobody)
Message-Id: <201101120306.p0C36x7m042225@red.freebsd.org>
Date: Wed, 12 Jan 2011 03:06:59 GMT
From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Replace the GPL'd sound/maestro3 headers with BSD versions from OSS
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         153920
>Category:       kern
>Synopsis:       [sound] [patch] Replace the GPL'd sound/maestro3 headers with BSD versions from OSS
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-multimedia
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 12 03:10:10 UTC 2011
>Closed-Date:    Sat Feb 04 17:16:51 UTC 2012
>Last-Modified:  Sat Feb  4 17:20:08 UTC 2012
>Originator:     Pedro F. Giffuni
>Release:        8.2-RC1
>Organization:
>Environment:
FreeBSD mogwai.giffuni.net 8.2-RC1 FreeBSD 8.2-RC1 #0: Thu Dec 23 15:32:35 UTC 2010     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

>Description:
The headers used by the maestro3 driver were under the GPL, however the definitions and data used in them was also available on the OSS source distribution under a BSD license, in the attic/drv/oss_allegro dir.

I have built two new headers based on the legacy driver, trying to keep the same definitions and name of the data structures in the OSS code. I also mentioned the files where the information was obtained. The maestro3.c code then received minor modifications to compile.
>How-To-Repeat:
maestro3_dsp.h and maestro3_reg.h GPL'd files can now be removed.
>Fix:


Patch attached with submission follows:

diff -ruN dev/sound/pci.emu10k/allegro_code.h dev/sound/pci/allegro_code.h
--- dev/sound/pci.emu10k/allegro_code.h	1970-01-01 00:00:00.000000000 +0000
+++ dev/sound/pci/allegro_code.h	2011-01-11 16:38:49.000000000 +0000
@@ -0,0 +1,219 @@
+
+/*-
+ * Copyright (C) 1996-2008, 4Front Technologies
+ * Copyright (C) 1997-1999 ESS Technology, Inc
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*---------------------------------------------------------------------------
+ * This source code, its compiled object code, and its associated data sets
+ * are copyright (C) 1997-1999 ESS Technology, Inc. This source code and its
+ * associated data sets are trade secrets of ESS Technology, Inc.
+ *---------------------------------------------------------------------------
+ * DESCRIPTION: DSP binaries
+ *---------------------------------------------------------------------------
+ * AUTHOR:  Henry Tang / Hong Kim / Alger Yeung/Don Kim
+ *---------------------------------------------------------------------------
+ * For practical purposes we only include what is necessary for current
+ *  Maestro3 driver. Files used in this header include:
+ *    kernel.dat
+ *    400m_src.dat
+ *    mini_src_lpf from srcmgr.h
+ *---------------------------------------------------------------------------
+ */
+#ifndef _DEV_SOUND_PCI_ALLEGRO_CODE_H
+#define _DEV_SOUND_PCI_ALLEGRO_CODE_H
+
+/*
+ * Kernel
+ */
+
+uint16_t gaw_kernel_vect_code[] = {
+    0x7980, 0x0030, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x00FB, 0x7980,
+    0x00DD, 0x7980, 0x03B4, 0x7980, 0x0332, 0x7980, 0x0287, 0x7980, 0x03B4,
+    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x031A, 0x7980,
+    0x03B4, 0x7980, 0x022F, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4,
+    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x0063, 0x7980, 0x006B, 0x7980,
+    0x03B4, 0x7980, 0x03B4, 0xBF80, 0x2C7C, 0x8806, 0x8804, 0xBE40, 0xBC20,
+    0xAE09, 0x1000, 0xAE0A, 0x0001, 0x6938, 0xEB08, 0x0053, 0x695A, 0xEB08,
+    0x00D6, 0x0009, 0x8B88, 0x6980, 0xE388, 0x0036, 0xBE30, 0xBC20, 0x6909,
+    0xB801, 0x9009, 0xBE41, 0xBE41, 0x6928, 0xEB88, 0x0078, 0xBE41, 0xBE40,
+    0x7980, 0x0038, 0xBE41, 0xBE41, 0x903A, 0x6938, 0xE308, 0x0056, 0x903A,
+    0xBE41, 0xBE40, 0xEF00, 0x903A, 0x6939, 0xE308, 0x005E, 0x903A, 0xEF00,
+    0x690B, 0x660C, 0xEF8C, 0x690A, 0x660C, 0x620B, 0x6609, 0xEF00, 0x6910,
+    0x660F, 0xEF04, 0xE388, 0x0075, 0x690E, 0x660F, 0x6210, 0x660D, 0xEF00,
+    0x690E, 0x660D, 0xEF00, 0xAE70, 0x0001, 0xBC20, 0xAE27, 0x0001, 0x6939,
+    0xEB08, 0x005D, 0x6926, 0xB801, 0x9026, 0x0026, 0x8B88, 0x6980, 0xE388,
+    0x00CB, 0x9028, 0x0D28, 0x4211, 0xE100, 0x007A, 0x4711, 0xE100, 0x00A0,
+    0x7A80, 0x0063, 0xB811, 0x660A, 0x6209, 0xE304, 0x007A, 0x0C0B, 0x4005,
+    0x100A, 0xBA01, 0x9012, 0x0C12, 0x4002, 0x7980, 0x00AF, 0x7A80, 0x006B,
+    0xBE02, 0x620E, 0x660D, 0xBA10, 0xE344, 0x007A, 0x0C10, 0x4005, 0x100E,
+    0xBA01, 0x9012, 0x0C12, 0x4002, 0x1003, 0xBA02, 0x9012, 0x0C12, 0x4000, 
+    0x1003, 0xE388, 0x00BA, 0x1004, 0x7980, 0x00BC, 0x1004, 0xBA01, 0x9012,
+    0x0C12, 0x4001, 0x0C05, 0x4003, 0x0C06, 0x4004, 0x1011, 0xBFB0, 0x01FF,
+    0x9012, 0x0C12, 0x4006, 0xBC20, 0xEF00, 0xAE26, 0x1028, 0x6970, 0xBFD0,
+    0x0001, 0x9070, 0xE388, 0x007A, 0xAE28, 0x0000, 0xEF00, 0xAE70, 0x0300, 
+    0x0C70, 0xB00C, 0xAE5A, 0x0000, 0xEF00, 0x7A80, 0x038A, 0x697F, 0xB801,
+    0x907F, 0x0056, 0x8B88, 0x0CA0, 0xB008, 0xAF71, 0xB000, 0x4E71, 0xE200,
+    0x00F3, 0xAE56, 0x1057, 0x0056, 0x0CA0, 0xB008, 0x8056, 0x7980, 0x03A1,
+    0x0810, 0xBFA0, 0x1059, 0xE304, 0x03A1, 0x8056, 0x7980, 0x03A1, 0x7A80,
+    0x038A, 0xBF01, 0xBE43, 0xBE59, 0x907C, 0x6937, 0xE388, 0x010D, 0xBA01,
+    0xE308, 0x010C, 0xAE71, 0x0004, 0x0C71, 0x5000, 0x6936, 0x9037, 0xBF0A,
+    0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xBF0A, 0x0560, 0xF500, 0xBF0A,
+    0x0520, 0xB900, 0xBB17, 0x90A0, 0x6917, 0xE388, 0x0148, 0x0D17, 0xE100,
+    0x0127, 0xBF0C, 0x0578, 0xBF0D, 0x057C, 0x7980, 0x012B, 0xBF0C, 0x0538,
+    0xBF0D, 0x053C, 0x6900, 0xE308, 0x0135, 0x8B8C, 0xBE59, 0xBB07, 0x90A0,
+    0xBC20, 0x7980, 0x0157, 0x030C, 0x8B8B, 0xB903, 0x8809, 0xBEC6, 0x013E,
+    0x69AC, 0x90AB, 0x69AD, 0x90AB, 0x0813, 0x660A, 0xE344, 0x0144, 0x0309,
+    0x830C, 0xBC20, 0x7980, 0x0157, 0x6955, 0xE388, 0x0157, 0x7C38, 0xBF0B,
+    0x0578, 0xF500, 0xBF0B, 0x0538, 0xB907, 0x8809, 0xBEC6, 0x0156, 0x10AB,
+    0x90AA, 0x6974, 0xE388, 0x0163, 0xAE72, 0x0540, 0xF500, 0xAE72, 0x0500,
+    0xAE61, 0x103B, 0x7A80, 0x02F6, 0x6978, 0xE388, 0x0182, 0x8B8C, 0xBF0C,
+    0x0560, 0xE500, 0x7C40, 0x0814, 0xBA20, 0x8812, 0x733D, 0x7A80, 0x0380,
+    0x733E, 0x7A80, 0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814,
+    0xBA2C, 0x8812, 0x733F, 0x7A80, 0x0380, 0x7340, 0x7A80, 0x0380, 0x6975,
+    0xE388, 0x018E, 0xAE72, 0x0548, 0xF500, 0xAE72, 0x0508, 0xAE61, 0x1041,
+    0x7A80, 0x02F6, 0x6979, 0xE388, 0x01AD, 0x8B8C, 0xBF0C, 0x0560, 0xE500,
+    0x7C40, 0x0814, 0xBA18, 0x8812, 0x7343, 0x7A80, 0x0380, 0x7344, 0x7A80,
+    0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA24, 0x8812,
+    0x7345, 0x7A80, 0x0380, 0x7346, 0x7A80, 0x0380, 0x6976, 0xE388, 0x01B9,
+    0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61, 0x1047, 0x7A80, 0x02F6,
+    0x697A, 0xE388, 0x01D8, 0x8B8C, 0xBF0C, 0x0560, 0xE500, 0x7C40, 0x0814,
+    0xBA08, 0x8812, 0x7349, 0x7A80, 0x0380, 0x734A, 0x7A80, 0x0380, 0x8B8C,
+    0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA14, 0x8812, 0x734B, 0x7A80,
+    0x0380, 0x734C, 0x7A80, 0x0380, 0xBC21, 0xAE1C, 0x1090, 0x8B8A, 0xBF0A,
+    0x0560, 0xE500, 0x7C40, 0x0812, 0xB804, 0x8813, 0x8B8D, 0xBF0D, 0x056C,
+    0xE500, 0x7C40, 0x0815, 0xB804, 0x8811, 0x7A80, 0x034A, 0x8B8A, 0xBF0A,
+    0x0560, 0xE500, 0x7C40, 0x731F, 0xB903, 0x8809, 0xBEC6, 0x01F9, 0x548A, 
+    0xBE03, 0x98A0, 0x7320, 0xB903, 0x8809, 0xBEC6, 0x0201, 0x548A, 0xBE03,
+    0x98A0, 0x1F20, 0x2F1F, 0x9826, 0xBC20, 0x6935, 0xE388, 0x03A1, 0x6933,
+    0xB801, 0x9033, 0xBFA0, 0x02EE, 0xE308, 0x03A1, 0x9033, 0xBF00, 0x6951,
+    0xE388, 0x021F, 0x7334, 0xBE80, 0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x9034,
+    0x697E, 0x0D51, 0x9013, 0xBC20, 0x695C, 0xE388, 0x03A1, 0x735E, 0xBE80,
+    0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x905E, 0x697E, 0x0D5C, 0x9013, 0x7980,
+    0x03A1, 0x7A80, 0x038A, 0xBF01, 0xBE43, 0x6977, 0xE388, 0x024E, 0xAE61,
+    0x104D, 0x0061, 0x8B88, 0x6980, 0xE388, 0x024E, 0x9071, 0x0D71, 0x000B,
+    0xAFA0, 0x8010, 0xAFA0, 0x8010, 0x0810, 0x660A, 0xE308, 0x0249, 0x0009,
+    0x0810, 0x660C, 0xE388, 0x024E, 0x800B, 0xBC20, 0x697B, 0xE388, 0x03A1,
+    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xE100, 0x0266, 0x697C,
+    0xBF90, 0x0560, 0x9072, 0x0372, 0x697C, 0xBF90, 0x0564, 0x9073, 0x0473,
+    0x7980, 0x0270, 0x697C, 0xBF90, 0x0520, 0x9072, 0x0372, 0x697C, 0xBF90,
+    0x0524, 0x9073, 0x0473, 0x697C, 0xB801, 0x907C, 0xBF0A, 0x10FD, 0x8B8A,
+    0xAF80, 0x8010, 0x734F, 0x548A, 0xBE03, 0x9880, 0xBC21, 0x7326, 0x548B,
+    0xBE03, 0x618B, 0x988C, 0xBE03, 0x6180, 0x9880, 0x7980, 0x03A1, 0x7A80,
+    0x038A, 0x0D28, 0x4711, 0xE100, 0x02BE, 0xAF12, 0x4006, 0x6912, 0xBFB0,
+    0x0C00, 0xE388, 0x02B6, 0xBFA0, 0x0800, 0xE388, 0x02B2, 0x6912, 0xBFB0,
+    0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02A3, 0x6909, 0x900B, 0x7980, 0x02A5,
+    0xAF0B, 0x4005, 0x6901, 0x9005, 0x6902, 0x9006, 0x4311, 0xE100, 0x02ED,
+    0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980, 0x02ED, 0x6909, 0x900B, 0x7980,
+    0x02B8, 0xAF0B, 0x4005, 0xAF05, 0x4003, 0xAF06, 0x4004, 0x7980, 0x02ED,
+    0xAF12, 0x4006, 0x6912, 0xBFB0, 0x0C00, 0xE388, 0x02E7, 0xBFA0, 0x0800,
+    0xE388, 0x02E3, 0x6912, 0xBFB0, 0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02D4,
+    0x690D, 0x9010, 0x7980, 0x02D6, 0xAF10, 0x4005, 0x6901, 0x9005, 0x6902,
+    0x9006, 0x4311, 0xE100, 0x02ED, 0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980,
+    0x02ED, 0x690D, 0x9010, 0x7980, 0x02E9, 0xAF10, 0x4005, 0xAF05, 0x4003,
+    0xAF06, 0x4004, 0xBC20, 0x6970, 0x9071, 0x7A80, 0x0078, 0x6971, 0x9070,
+    0x7980, 0x03A1, 0xBC20, 0x0361, 0x8B8B, 0x6980, 0xEF88, 0x0272, 0x0372,
+    0x7804, 0x9071, 0x0D71, 0x8B8A, 0x000B, 0xB903, 0x8809, 0xBEC6, 0x0309,
+    0x69A8, 0x90AB, 0x69A8, 0x90AA, 0x0810, 0x660A, 0xE344, 0x030F, 0x0009,
+    0x0810, 0x660C, 0xE388, 0x0314, 0x800B, 0xBC20, 0x6961, 0xB801, 0x9061,
+    0x7980, 0x02F7, 0x7A80, 0x038A, 0x5D35, 0x0001, 0x6934, 0xB801, 0x9034,
+    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4880, 0xAE72, 0x0550, 0xF500,
+    0xAE72, 0x0510, 0xAE61, 0x1051, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x7A80,
+    0x038A, 0x5D35, 0x0002, 0x695E, 0xB801, 0x905E, 0xBF0A, 0x109E, 0x8B8A,
+    0xAF80, 0x8014, 0x4780, 0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61,
+    0x105C, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x001C, 0x8B88, 0x6980, 0xEF88,
+    0x901D, 0x0D1D, 0x100F, 0x6610, 0xE38C, 0x0358, 0x690E, 0x6610, 0x620F,
+    0x660D, 0xBA0F, 0xE301, 0x037A, 0x0410, 0x8B8A, 0xB903, 0x8809, 0xBEC6,
+    0x036C, 0x6A8C, 0x61AA, 0x98AB, 0x6A8C, 0x61AB, 0x98AD, 0x6A8C, 0x61AD,
+    0x98A9, 0x6A8C, 0x61A9, 0x98AA, 0x7C04, 0x8B8B, 0x7C04, 0x8B8D, 0x7C04,
+    0x8B89, 0x7C04, 0x0814, 0x660E, 0xE308, 0x0379, 0x040D, 0x8410, 0xBC21,
+    0x691C, 0xB801, 0x901C, 0x7980, 0x034A, 0xB903, 0x8809, 0x8B8A, 0xBEC6,
+    0x0388, 0x54AC, 0xBE03, 0x618C, 0x98AA, 0xEF00, 0xBC20, 0xBE46, 0x0809,
+    0x906B, 0x080A, 0x906C, 0x080B, 0x906D, 0x081A, 0x9062, 0x081B, 0x9063,
+    0x081E, 0x9064, 0xBE59, 0x881E, 0x8065, 0x8166, 0x8267, 0x8368, 0x8469,
+    0x856A, 0xEF00, 0xBC20, 0x696B, 0x8809, 0x696C, 0x880A, 0x696D, 0x880B,
+    0x6962, 0x881A, 0x6963, 0x881B, 0x6964, 0x881E, 0x0065, 0x0166, 0x0267,
+    0x0368, 0x0469, 0x056A, 0xBE3A,
+};
+
+/*
+ * MINI Sample Rate Conversion
+ */
+
+uint16_t gaw_minisrc_code_0400[] = {
+    0xBF80, 0x101E, 0x906E, 0x006E, 0x8B88, 0x6980, 0xEF88, 0x906F, 0x0D6F,
+    0x6900, 0xEB08, 0x0412, 0xBC20, 0x696E, 0xB801, 0x906E, 0x7980, 0x0403,
+    0xB90E, 0x8807, 0xBE43, 0xBF01, 0xBE47, 0xBE41, 0x7A80, 0x002A, 0xBE40,
+    0x3029, 0xEFCC, 0xBE41, 0x7A80, 0x0028, 0xBE40, 0x3028, 0xEFCC, 0x6907,
+    0xE308, 0x042A, 0x6909, 0x902C, 0x7980, 0x042C, 0x690D, 0x902C, 0x1009,
+    0x881A, 0x100A, 0xBA01, 0x881B, 0x100D, 0x881C, 0x100E, 0xBA01, 0x881D,
+    0xBF80, 0x00ED, 0x881E, 0x050C, 0x0124, 0xB904, 0x9027, 0x6918, 0xE308,
+    0x04B3, 0x902D, 0x6913, 0xBFA0, 0x7598, 0xF704, 0xAE2D, 0x00FF, 0x8B8D,
+    0x6919, 0xE308, 0x0463, 0x691A, 0xE308, 0x0456, 0xB907, 0x8809, 0xBEC6,
+    0x0453, 0x10A9, 0x90AD, 0x7980, 0x047C, 0xB903, 0x8809, 0xBEC6, 0x0460,
+    0x1889, 0x6C22, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90AD, 0x7980, 0x047C,
+    0x101A, 0xE308, 0x046F, 0xB903, 0x8809, 0xBEC6, 0x046C, 0x10A9, 0x90A0,
+    0x90AD, 0x7980, 0x047C, 0xB901, 0x8809, 0xBEC6, 0x047B, 0x1889, 0x6C22,
+    0x90A0, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90A0, 0x90AD, 0x692D, 0xE308,
+    0x049C, 0x0124, 0xB703, 0xB902, 0x8818, 0x8B89, 0x022C, 0x108A, 0x7C04,
+    0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89, 0x99A0,
+    0x108A, 0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89,
+    0x99AF, 0x7B99, 0x0484, 0x0124, 0x060F, 0x101B, 0x2013, 0x901B, 0xBFA0,
+    0x7FFF, 0xE344, 0x04AC, 0x901B, 0x8B89, 0x7A80, 0x051A, 0x6927, 0xBA01,
+    0x9027, 0x7A80, 0x0523, 0x6927, 0xE308, 0x049E, 0x7980, 0x050F, 0x0624,
+    0x1026, 0x2013, 0x9026, 0xBFA0, 0x7FFF, 0xE304, 0x04C0, 0x8B8D, 0x7A80,
+    0x051A, 0x7980, 0x04B4, 0x9026, 0x1013, 0x3026, 0x901B, 0x8B8D, 0x7A80,
+    0x051A, 0x7A80, 0x0523, 0x1027, 0xBA01, 0x9027, 0xE308, 0x04B4, 0x0124,
+    0x060F, 0x8B89, 0x691A, 0xE308, 0x04EA, 0x6919, 0xE388, 0x04E0, 0xB903,
+    0x8809, 0xBEC6, 0x04DD, 0x1FA0, 0x2FAE, 0x98A9, 0x7980, 0x050F, 0xB901,
+    0x8818, 0xB907, 0x8809, 0xBEC6, 0x04E7, 0x10EE, 0x90A9, 0x7980, 0x050F,
+    0x6919, 0xE308, 0x04FE, 0xB903, 0x8809, 0xBE46, 0xBEC6, 0x04FA, 0x17A0,
+    0xBE1E, 0x1FAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080, 0x99A9, 0xBE47,
+    0x7980, 0x050F, 0xB901, 0x8809, 0xBEC6, 0x050E, 0x16A0, 0x26A0, 0xBFB7,
+    0xFF00, 0xBE1E, 0x1EA0, 0x2EAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080,
+    0x99A9, 0x850C, 0x860F, 0x6907, 0xE388, 0x0516, 0x0D07, 0x8510, 0xBE59,
+    0x881E, 0xBE4A, 0xEF00, 0x101E, 0x901C, 0x101F, 0x901D, 0x10A0, 0x901E,
+    0x10A0, 0x901F, 0xEF00, 0x101E, 0x301C, 0x9020, 0x731B, 0x5420, 0xBE03,
+    0x9825, 0x1025, 0x201C, 0x9025, 0x7325, 0x5414, 0xBE03, 0x8B8E, 0x9880,
+    0x692F, 0xE388, 0x0539, 0xBE59, 0xBB07, 0x6180, 0x9880, 0x8BA0, 0x101F,
+    0x301D, 0x9021, 0x731B, 0x5421, 0xBE03, 0x982E, 0x102E, 0x201D, 0x902E,
+    0x732E, 0x5415, 0xBE03, 0x9880, 0x692F, 0xE388, 0x054F, 0xBE59, 0xBB07,
+    0x6180, 0x9880, 0x8BA0, 0x6918, 0xEF08, 0x7325, 0x5416, 0xBE03, 0x98A0,
+    0x732E, 0x5417, 0xBE03, 0x98A0, 0xEF00, 0x8BA0, 0xBEC6, 0x056B, 0xBE59,
+    0xBB04, 0xAA90, 0xBE04, 0xBE1E, 0x99E0, 0x8BE0, 0x69A0, 0x90D0, 0x69A0, 
+    0x90D0, 0x081F, 0xB805, 0x881F, 0x8B90, 0x69A0, 0x90D0, 0x69A0, 0x9090,
+    0x8BD0, 0x8BD8, 0xBE1F, 0xEF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+uint16_t minisrc_lpf[10] = {
+	0X0743, 0X1104, 0X0A4C, 0XF88D, 0X242C,
+	0X1023, 0X1AA9, 0X0B60, 0XEFDD, 0X186F
+};
+
+#endif	/* !_DEV_SOUND_PCI_ALLEGRO_CODE_H */
diff -ruN dev/sound/pci.emu10k/allegro_reg.h dev/sound/pci/allegro_reg.h
--- dev/sound/pci.emu10k/allegro_reg.h	1970-01-01 00:00:00.000000000 +0000
+++ dev/sound/pci/allegro_reg.h	2011-01-11 16:02:11.000000000 +0000
@@ -0,0 +1,789 @@
+/*-
+ * Copyright (c) 1996-2008, 4Front Technologies
+ * Copyright (C) 1992-2000  Don Kim (don.kim@esstech.com)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*---------------------------------------------------------------------------
+ *              Copyright (C) 1997-1999, ESS Technology, Inc.
+ * This source code, its compiled object code, and its associated data sets
+ * are copyright (C) 1997-1999 ESS Technology, Inc.
+ *---------------------------------------------------------------------------
+ * For practical purposes we only include necessary definitions for current
+ *  Maestro3 driver. Files used for this header include:
+ *    hardware.h
+ *    kernel.h and hckernel.h
+ *    srcmgr.h
+ *---------------------------------------------------------------------------
+ */
+
+#ifndef _DEV_SOUND_PCI_ALLEGRO_REG_H
+#define _DEV_SOUND_PCI_ALLEGRO_REG_H
+
+/* Allegro PCI configuration registers */
+#define PCI_LEGACY_AUDIO_CTRL   0x40
+#define SOUND_BLASTER_ENABLE    0x00000001
+#define FM_SYNTHESIS_ENABLE     0x00000002
+#define GAME_PORT_ENABLE        0x00000004
+#define MPU401_IO_ENABLE        0x00000008
+#define MPU401_IRQ_ENABLE       0x00000010
+#define ALIAS_10BIT_IO          0x00000020
+#define SB_DMA_MASK             0x000000C0
+#define SB_DMA_0                0x00000040
+#define SB_DMA_1                0x00000040
+#define SB_DMA_R                0x00000080
+#define SB_DMA_3                0x000000C0
+#define SB_IRQ_MASK             0x00000700
+#define SB_IRQ_5                0x00000000
+#define SB_IRQ_7                0x00000100
+#define SB_IRQ_9                0x00000200
+#define SB_IRQ_10               0x00000300
+#define MIDI_IRQ_MASK           0x00003800
+#define SERIAL_IRQ_ENABLE       0x00004000
+#define DISABLE_LEGACY          0x00008000
+
+#define PCI_ALLEGRO_CONFIG      0x50
+#define SB_ADDR_240             0x00000004
+#define MPU_ADDR_MASK           0x00000018
+#define MPU_ADDR_330            0x00000000
+#define MPU_ADDR_300            0x00000008
+#define MPU_ADDR_320            0x00000010
+#define MPU_ADDR_340            0x00000018
+#define USE_PCI_TIMING          0x00000040
+#define POSTED_WRITE_ENABLE     0x00000080
+#define DMA_POLICY_MASK         0x00000700
+#define DMA_DDMA                0x00000000
+#define DMA_TDMA                0x00000100
+#define DMA_PCPCI               0x00000200
+#define DMA_WBDMA16             0x00000400
+#define DMA_WBDMA4              0x00000500
+#define DMA_WBDMA2              0x00000600
+#define DMA_WBDMA1              0x00000700
+#define DMA_SAFE_GUARD          0x00000800
+#define HI_PERF_GP_ENABLE       0x00001000
+#define PIC_SNOOP_MODE_0        0x00002000
+#define PIC_SNOOP_MODE_1        0x00004000
+#define SOUNDBLASTER_IRQ_MASK   0x00008000
+#define RING_IN_ENABLE          0x00010000
+#define SPDIF_TEST_MODE         0x00020000
+#define CLK_MULT_MODE_SELECT_2  0x00040000
+#define EEPROM_WRITE_ENABLE     0x00080000
+#define CODEC_DIR_IN            0x00100000
+#define HV_BUTTON_FROM_GD       0x00200000
+#define REDUCED_DEBOUNCE        0x00400000
+#define HV_CTRL_ENABLE          0x00800000
+#define SPDIF_ENABLE            0x01000000
+#define CLK_DIV_SELECT          0x06000000
+#define CLK_DIV_BY_48           0x00000000
+#define CLK_DIV_BY_49           0x02000000
+#define CLK_DIV_BY_50           0x04000000
+#define CLK_DIV_RESERVED        0x06000000
+#define PM_CTRL_ENABLE          0x08000000
+#define CLK_MULT_MODE_SELECT    0x30000000
+#define CLK_MULT_MODE_SHIFT     28
+#define CLK_MULT_MODE_0         0x00000000
+#define CLK_MULT_MODE_1         0x10000000
+#define CLK_MULT_MODE_2         0x20000000
+#define CLK_MULT_MODE_3         0x30000000
+#define INT_CLK_SELECT          0x40000000
+#define INT_CLK_MULT_RESET      0x80000000
+
+/* M3 */
+#define INT_CLK_SRC_NOT_PCI     0x00100000
+#define INT_CLK_MULT_ENABLE     0x80000000
+
+#define PCI_ACPI_CONTROL        0x54
+#define PCI_ACPI_D0             0x00000000
+#define PCI_ACPI_D1             0xB4F70000
+#define PCI_ACPI_D2             0xB4F7B4F7
+
+#define PCI_USER_CONFIG         0x58
+#define EXT_PCI_MASTER_ENABLE   0x00000001
+#define SPDIF_OUT_SELECT        0x00000002
+#define TEST_PIN_DIR_CTRL       0x00000004
+#define AC97_CODEC_TEST         0x00000020
+#define TRI_STATE_BUFFER        0x00000080
+#define IN_CLK_12MHZ_SELECT     0x00000100
+#define MULTI_FUNC_DISABLE      0x00000200
+#define EXT_MASTER_PAIR_SEL     0x00000400
+#define PCI_MASTER_SUPPORT      0x00000800
+#define STOP_CLOCK_ENABLE       0x00001000
+#define EAPD_DRIVE_ENABLE       0x00002000
+#define REQ_TRI_STATE_ENABLE    0x00004000
+#define REQ_LOW_ENABLE          0x00008000
+#define MIDI_1_ENABLE           0x00010000
+#define MIDI_2_ENABLE           0x00020000
+#define SB_AUDIO_SYNC           0x00040000
+#define HV_CTRL_TEST            0x00100000
+#define SOUNDBLASTER_TEST       0x00400000
+
+#define PCI_USER_CONFIG_C       0x5C
+
+#define PCI_DDMA_CTRL           0x60
+#define DDMA_ENABLE             0x00000001
+
+
+/* Allegro registers */
+#define HOST_INT_CTRL           0x18
+#define SB_INT_ENABLE           0x0001
+#define MPU401_INT_ENABLE       0x0002
+#define ASSP_INT_ENABLE         0x0010
+#define RING_INT_ENABLE         0x0020
+#define HV_INT_ENABLE           0x0040
+#define CLKRUN_GEN_ENABLE       0x0100
+#define HV_CTRL_TO_PME          0x0400
+#define SOFTWARE_RESET_ENABLE   0x8000
+
+#define HOST_INT_STATUS         0x1A
+#define SB_INT_PENDING          0x01
+#define MPU401_INT_PENDING      0x02
+#define ASSP_INT_PENDING        0x10
+#define RING_INT_PENDING        0x20
+#define HV_INT_PENDING          0x40
+
+#define HARDWARE_VOL_CTRL       0x1B
+#define SHADOW_MIX_REG_VOICE    0x1C
+#define HW_VOL_COUNTER_VOICE    0x1D
+#define SHADOW_MIX_REG_MASTER   0x1E
+#define HW_VOL_COUNTER_MASTER   0x1F
+
+#define CODEC_COMMAND           0x30
+#define CODEC_READ_B            0x80
+
+#define CODEC_STATUS            0x30
+#define CODEC_BUSY_B            0x01
+
+#define CODEC_DATA              0x32
+
+/* AC97 registers */
+#ifndef ESS_MAESTRO3
+#define AC97_RESET              0x00
+#endif
+
+#define AC97_VOL_MUTE_B         0x8000
+#define AC97_VOL_M              0x1F
+#define AC97_LEFT_VOL_S         8
+
+#define AC97_MASTER_VOL         0x02
+#define AC97_LINE_LEVEL_VOL     0x04
+#define AC97_MASTER_MONO_VOL    0x06
+#define AC97_PC_BEEP_VOL        0x0A
+#define AC97_PC_BEEP_VOL_M      0x0F
+#define AC97_SROUND_MASTER_VOL  0x38
+#define AC97_PC_BEEP_VOL_S      1
+
+#ifndef ESS_MAESTRO3
+#define AC97_PHONE_VOL          0x0C
+#define AC97_MIC_VOL            0x0E
+#endif
+#define AC97_MIC_20DB_ENABLE    0x40
+
+#ifndef ESS_MAESTRO3
+#define AC97_LINEIN_VOL         0x10
+#define AC97_CD_VOL             0x12
+#define AC97_VIDEO_VOL          0x14
+#define AC97_AUX_VOL            0x16
+#endif
+#define AC97_PCM_OUT_VOL        0x18
+#ifndef ESS_MAESTRO3
+#define AC97_RECORD_SELECT      0x1A
+#endif
+#define AC97_RECORD_MIC         0x00
+#define AC97_RECORD_CD          0x01
+#define AC97_RECORD_VIDEO       0x02
+#define AC97_RECORD_AUX         0x03
+#define AC97_RECORD_MONO_MUX    0x02
+#define AC97_RECORD_DIGITAL     0x03
+#define AC97_RECORD_LINE        0x04
+#define AC97_RECORD_STEREO      0x05
+#define AC97_RECORD_MONO        0x06
+#define AC97_RECORD_PHONE       0x07
+
+#ifndef ESS_MAESTRO3
+#define AC97_RECORD_GAIN        0x1C
+#endif
+#define AC97_RECORD_VOL_M       0x0F
+
+#ifndef ESS_MAESTRO3
+#define AC97_GENERAL_PURPOSE    0x20
+#endif
+#define AC97_POWER_DOWN_CTRL    0x26
+#define AC97_ADC_READY          0x0001
+#define AC97_DAC_READY          0x0002
+#define AC97_ANALOG_READY       0x0004
+#define AC97_VREF_ON            0x0008
+#define AC97_PR0                0x0100
+#define AC97_PR1                0x0200
+#define AC97_PR2                0x0400
+#define AC97_PR3                0x0800
+#define AC97_PR4                0x1000
+
+#define AC97_RESERVED1          0x28
+
+#define AC97_VENDOR_TEST        0x5A
+
+#define AC97_CLOCK_DELAY        0x5C
+#define AC97_LINEOUT_MUX_SEL    0x0001
+#define AC97_MONO_MUX_SEL       0x0002
+#define AC97_CLOCK_DELAY_SEL    0x1F
+#define AC97_DAC_CDS_SHIFT      6
+#define AC97_ADC_CDS_SHIFT      11
+
+#define AC97_MULTI_CHANNEL_SEL  0x74
+
+#ifndef ESS_MAESTRO3
+#define AC97_VENDOR_ID1         0x7C
+#define AC97_VENDOR_ID2         0x7E
+#endif
+
+#define RING_BUS_CTRL_A         0x36
+#define RAC_PME_ENABLE          0x0100
+#define RAC_SDFS_ENABLE         0x0200
+#define LAC_PME_ENABLE          0x0400
+#define LAC_SDFS_ENABLE         0x0800
+#define SERIAL_AC_LINK_ENABLE   0x1000
+#define IO_SRAM_ENABLE          0x2000
+#define IIS_INPUT_ENABLE        0x8000
+
+#define RING_BUS_CTRL_B         0x38
+#define SECOND_CODEC_ID_MASK    0x0003
+#define SPDIF_FUNC_ENABLE       0x0010
+#define SECOND_AC_ENABLE        0x0020
+#define SB_MODULE_INTF_ENABLE   0x0040
+#define SSPE_ENABLE             0x0040
+#define M3I_DOCK_ENABLE         0x0080
+
+#define SDO_OUT_DEST_CTRL       0x3A
+#define COMMAND_ADDR_OUT        0x0003
+#define PCM_LR_OUT_LOCAL        0x0000
+#define PCM_LR_OUT_REMOTE       0x0004
+#define PCM_LR_OUT_MUTE         0x0008
+#define PCM_LR_OUT_BOTH         0x000C
+#define LINE1_DAC_OUT_LOCAL     0x0000
+#define LINE1_DAC_OUT_REMOTE    0x0010
+#define LINE1_DAC_OUT_MUTE      0x0020
+#define LINE1_DAC_OUT_BOTH      0x0030
+#define PCM_CLS_OUT_LOCAL       0x0000
+#define PCM_CLS_OUT_REMOTE      0x0040
+#define PCM_CLS_OUT_MUTE        0x0080
+#define PCM_CLS_OUT_BOTH        0x00C0
+#define PCM_RLF_OUT_LOCAL       0x0000
+#define PCM_RLF_OUT_REMOTE      0x0100
+#define PCM_RLF_OUT_MUTE        0x0200
+#define PCM_RLF_OUT_BOTH        0x0300
+#define LINE2_DAC_OUT_LOCAL     0x0000
+#define LINE2_DAC_OUT_REMOTE    0x0400
+#define LINE2_DAC_OUT_MUTE      0x0800
+#define LINE2_DAC_OUT_BOTH      0x0C00
+#define HANDSET_OUT_LOCAL       0x0000
+#define HANDSET_OUT_REMOTE      0x1000
+#define HANDSET_OUT_MUTE        0x2000
+#define HANDSET_OUT_BOTH        0x3000
+#define IO_CTRL_OUT_LOCAL       0x0000
+#define IO_CTRL_OUT_REMOTE      0x4000
+#define IO_CTRL_OUT_MUTE        0x8000
+#define IO_CTRL_OUT_BOTH        0xC000
+
+#define SDO_IN_DEST_CTRL        0x3C
+#define STATUS_ADDR_IN          0x0003
+#define PCM_LR_IN_LOCAL         0x0000
+#define PCM_LR_IN_REMOTE        0x0004
+#define PCM_LR_RESERVED         0x0008
+#define PCM_LR_IN_BOTH          0x000C
+#define LINE1_ADC_IN_LOCAL      0x0000
+#define LINE1_ADC_IN_REMOTE     0x0010
+#define LINE1_ADC_IN_MUTE       0x0020
+#define MIC_ADC_IN_LOCAL        0x0000
+#define MIC_ADC_IN_REMOTE       0x0040
+#define MIC_ADC_IN_MUTE         0x0080
+#define LINE2_DAC_IN_LOCAL      0x0000
+#define LINE2_DAC_IN_REMOTE     0x0400
+#define LINE2_DAC_IN_MUTE       0x0800
+#define HANDSET_IN_LOCAL        0x0000
+#define HANDSET_IN_REMOTE       0x1000
+#define HANDSET_IN_MUTE         0x2000
+#define IO_STATUS_IN_LOCAL      0x0000
+#define IO_STATUS_IN_REMOTE     0x4000
+
+#define SPDIF_IN_CTRL           0x3E
+#define SPDIF_IN_ENABLE         0x0001
+
+#define GPIO_DATA               0x60
+#define GPIO_DATA_MASK          0x0FFF
+#define GPIO_HV_STATUS          0x3000
+#define GPIO_PME_STATUS         0x4000
+
+#define GPIO_MASK               0x64
+#define GPIO_DIRECTION          0x68
+#define GPO_PRIMARY_AC97        0x0001
+#define GPI_LINEOUT_SENSE       0x0004
+#define GPO_SECONDARY_AC97      0x0008
+#define GPI_VOL_DOWN            0x0010
+#define GPI_VOL_UP              0x0020
+#define GPI_IIS_CLK             0x0040
+#define GPI_IIS_LRCLK           0x0080
+#define GPI_IIS_DATA            0x0100
+#define GPI_DOCKING_STATUS      0x0100
+#define GPI_HEADPHONE_SENSE     0x0200
+#define GPO_EXT_AMP_SHUTDOWN    0x1000
+
+/* M3 */
+#define GPO_M3_EXT_AMP_SHUTDN   0x0002
+
+#define ASSP_INDEX_PORT         0x80
+#define ASSP_MEMORY_PORT        0x82
+#define ASSP_DATA_PORT          0x84
+
+#define MPU401_DATA_PORT        0x98
+#define MPU401_STATUS_PORT      0x99
+
+#define CLK_MULT_DATA_PORT      0x9C
+
+#define ASSP_CONTROL_A          0xA2
+#define ASSP_0_WS_ENABLE        0x01
+#define ASSP_CTRL_A_RESERVED1   0x02
+#define ASSP_CTRL_A_RESERVED2   0x04
+#define ASSP_CLK_49MHZ_SELECT   0x08
+#define FAST_PLU_ENABLE         0x10
+#define ASSP_CTRL_A_RESERVED3   0x20
+#define DSP_CLK_36MHZ_SELECT    0x40
+
+#define ASSP_CONTROL_B          0xA4
+#define RESET_ASSP              0x00
+#define RUN_ASSP                0x01
+#define ENABLE_ASSP_CLOCK       0x00
+#define STOP_ASSP_CLOCK         0x10
+#define RESET_TOGGLE            0x40
+
+#define ASSP_CONTROL_C          0xA6
+#define ASSP_HOST_INT_ENABLE    0x01
+#define FM_ADDR_REMAP_DISABLE   0x02
+#define HOST_WRITE_PORT_ENABLE  0x08
+
+#define ASSP_HOST_INT_STATUS    0xAC
+#define DSP2HOST_REQ_PIORECORD  0x01
+#define DSP2HOST_REQ_I2SRATE    0x02
+#define DSP2HOST_REQ_TIMER      0x04
+
+/*
+ * DSP memory map
+ */
+
+#define REV_A_CODE_MEMORY_BEGIN         0x0000
+#define REV_A_CODE_MEMORY_END           0x0FFF
+#define REV_A_CODE_MEMORY_UNIT_LENGTH   0x0040
+#define REV_A_CODE_MEMORY_LENGTH        (REV_A_CODE_MEMORY_END - REV_A_CODE_MEMORY_BEGIN + 1)
+
+#define REV_B_CODE_MEMORY_BEGIN         0x0000
+#define REV_B_CODE_MEMORY_END           0x0BFF
+#define REV_B_CODE_MEMORY_UNIT_LENGTH   0x0040
+#define REV_B_CODE_MEMORY_LENGTH        (REV_B_CODE_MEMORY_END - REV_B_CODE_MEMORY_BEGIN + 1)
+
+#if (REV_A_CODE_MEMORY_LENGTH % REV_A_CODE_MEMORY_UNIT_LENGTH)
+#error Assumption about code memory unit length failed.
+#endif
+#if (REV_B_CODE_MEMORY_LENGTH % REV_B_CODE_MEMORY_UNIT_LENGTH)
+#error Assumption about code memory unit length failed.
+#endif
+
+#define REV_A_DATA_MEMORY_BEGIN         0x1000
+#define REV_A_DATA_MEMORY_END           0x2FFF
+#define REV_A_DATA_MEMORY_UNIT_LENGTH   0x0080
+#define REV_A_DATA_MEMORY_LENGTH        (REV_A_DATA_MEMORY_END - REV_A_DATA_MEMORY_BEGIN + 1)
+
+#define REV_B_DATA_MEMORY_BEGIN         0x1000
+/*#define REV_B_DATA_MEMORY_END           0x23FF */
+#define REV_B_DATA_MEMORY_END           0x2BFF
+#define REV_B_DATA_MEMORY_UNIT_LENGTH   0x0080
+#define REV_B_DATA_MEMORY_LENGTH        (REV_B_DATA_MEMORY_END - REV_B_DATA_MEMORY_BEGIN + 1)
+
+#if (REV_A_DATA_MEMORY_LENGTH % REV_A_DATA_MEMORY_UNIT_LENGTH)
+#error Assumption about data memory unit length failed.
+#endif
+#if (REV_B_DATA_MEMORY_LENGTH % REV_B_DATA_MEMORY_UNIT_LENGTH)
+#error Assumption about data memory unit length failed.
+#endif
+
+#define CODE_MEMORY_MAP_LENGTH          (64 + 1)
+#define DATA_MEMORY_MAP_LENGTH          (64 + 1)
+
+#if (CODE_MEMORY_MAP_LENGTH < ((REV_A_CODE_MEMORY_LENGTH / REV_A_CODE_MEMORY_UNIT_LENGTH) + 1))
+#error Code memory map length too short.
+#endif
+#if (DATA_MEMORY_MAP_LENGTH < ((REV_A_DATA_MEMORY_LENGTH / REV_A_DATA_MEMORY_UNIT_LENGTH) + 1))
+#error Data memory map length too short.
+#endif
+#if (CODE_MEMORY_MAP_LENGTH < ((REV_B_CODE_MEMORY_LENGTH / REV_B_CODE_MEMORY_UNIT_LENGTH) + 1))
+#error Code memory map length too short.
+#endif
+#if (DATA_MEMORY_MAP_LENGTH < ((REV_B_DATA_MEMORY_LENGTH / REV_B_DATA_MEMORY_UNIT_LENGTH) + 1))
+#error Data memory map length too short.
+#endif
+
+
+/*
+ * Kernel code memory definition
+ */
+
+#define KCODE_VECTORS_BEGIN             0x0000
+#define KCODE_VECTORS_END               0x002F
+#define KCODE_VECTORS_UNIT_LENGTH       0x0002
+#define KCODE_VECTORS_LENGTH            (KCODE_VECTORS_END - KCODE_VECTORS_BEGIN + 1)
+
+
+/*
+ * Kernel data memory definition
+ */
+
+#define KDATA_BASE_ADDR                 0x1000
+#define KDATA_BASE_ADDR2                0x1080
+
+#define KDATA_TASK0                     (KDATA_BASE_ADDR + 0x0000)
+#define KDATA_TASK1                     (KDATA_BASE_ADDR + 0x0001)
+#define KDATA_TASK2                     (KDATA_BASE_ADDR + 0x0002)
+#define KDATA_TASK3                     (KDATA_BASE_ADDR + 0x0003)
+#define KDATA_TASK4                     (KDATA_BASE_ADDR + 0x0004)
+#define KDATA_TASK5                     (KDATA_BASE_ADDR + 0x0005)
+#define KDATA_TASK6                     (KDATA_BASE_ADDR + 0x0006)
+#define KDATA_TASK7                     (KDATA_BASE_ADDR + 0x0007)
+#define KDATA_TASK_ENDMARK              (KDATA_BASE_ADDR + 0x0008)
+
+#define KDATA_CURRENT_TASK              (KDATA_BASE_ADDR + 0x0009)
+#define KDATA_TASK_SWITCH               (KDATA_BASE_ADDR + 0x000A)
+
+#define KDATA_INSTANCE0_POS3D           (KDATA_BASE_ADDR + 0x000B)
+#define KDATA_INSTANCE1_POS3D           (KDATA_BASE_ADDR + 0x000C)
+#define KDATA_INSTANCE2_POS3D           (KDATA_BASE_ADDR + 0x000D)
+#define KDATA_INSTANCE3_POS3D           (KDATA_BASE_ADDR + 0x000E)
+#define KDATA_INSTANCE4_POS3D           (KDATA_BASE_ADDR + 0x000F)
+#define KDATA_INSTANCE5_POS3D           (KDATA_BASE_ADDR + 0x0010)
+#define KDATA_INSTANCE6_POS3D           (KDATA_BASE_ADDR + 0x0011)
+#define KDATA_INSTANCE7_POS3D           (KDATA_BASE_ADDR + 0x0012)
+#define KDATA_INSTANCE8_POS3D           (KDATA_BASE_ADDR + 0x0013)
+#define KDATA_INSTANCE_POS3D_ENDMARK    (KDATA_BASE_ADDR + 0x0014)
+
+#define KDATA_INSTANCE0_SPKVIRT         (KDATA_BASE_ADDR + 0x0015)
+#define KDATA_INSTANCE_SPKVIRT_ENDMARK  (KDATA_BASE_ADDR + 0x0016)
+
+#define KDATA_INSTANCE0_SPDIF           (KDATA_BASE_ADDR + 0x0017)
+#define KDATA_INSTANCE_SPDIF_ENDMARK    (KDATA_BASE_ADDR + 0x0018)
+
+#define KDATA_INSTANCE0_MODEM           (KDATA_BASE_ADDR + 0x0019)
+#define KDATA_INSTANCE_MODEM_ENDMARK    (KDATA_BASE_ADDR + 0x001A)
+
+#define KDATA_INSTANCE0_SRC             (KDATA_BASE_ADDR + 0x001B)
+#define KDATA_INSTANCE1_SRC             (KDATA_BASE_ADDR + 0x001C)
+#define KDATA_INSTANCE_SRC_ENDMARK      (KDATA_BASE_ADDR + 0x001D)
+
+#define KDATA_INSTANCE0_MINISRC         (KDATA_BASE_ADDR + 0x001E)
+#define KDATA_INSTANCE1_MINISRC         (KDATA_BASE_ADDR + 0x001F)
+#define KDATA_INSTANCE2_MINISRC         (KDATA_BASE_ADDR + 0x0020)
+#define KDATA_INSTANCE3_MINISRC         (KDATA_BASE_ADDR + 0x0021)
+#define KDATA_INSTANCE_MINISRC_ENDMARK  (KDATA_BASE_ADDR + 0x0022)
+
+#define KDATA_INSTANCE0_CPYTHRU         (KDATA_BASE_ADDR + 0x0023)
+#define KDATA_INSTANCE1_CPYTHRU         (KDATA_BASE_ADDR + 0x0024)
+#define KDATA_INSTANCE_CPYTHRU_ENDMARK  (KDATA_BASE_ADDR + 0x0025)
+
+#define KDATA_CURRENT_DMA               (KDATA_BASE_ADDR + 0x0026)
+#define KDATA_DMA_SWITCH                (KDATA_BASE_ADDR + 0x0027)
+#define KDATA_DMA_ACTIVE                (KDATA_BASE_ADDR + 0x0028)
+
+#define KDATA_DMA_XFER0                 (KDATA_BASE_ADDR + 0x0029)
+#define KDATA_DMA_XFER1                 (KDATA_BASE_ADDR + 0x002A)
+#define KDATA_DMA_XFER2                 (KDATA_BASE_ADDR + 0x002B)
+#define KDATA_DMA_XFER3                 (KDATA_BASE_ADDR + 0x002C)
+#define KDATA_DMA_XFER4                 (KDATA_BASE_ADDR + 0x002D)
+#define KDATA_DMA_XFER5                 (KDATA_BASE_ADDR + 0x002E)
+#define KDATA_DMA_XFER6                 (KDATA_BASE_ADDR + 0x002F)
+#define KDATA_DMA_XFER7                 (KDATA_BASE_ADDR + 0x0030)
+#define KDATA_DMA_XFER8                 (KDATA_BASE_ADDR + 0x0031)
+#define KDATA_DMA_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0032)
+
+#define KDATA_I2S_SAMPLE_COUNT          (KDATA_BASE_ADDR + 0x0033)
+#define KDATA_I2S_INT_METER             (KDATA_BASE_ADDR + 0x0034)
+#define KDATA_I2S_ACTIVE                (KDATA_BASE_ADDR + 0x0035)
+
+#define KDATA_TIMER_COUNT_RELOAD        (KDATA_BASE_ADDR + 0x0036)
+#define KDATA_TIMER_COUNT_CURRENT       (KDATA_BASE_ADDR + 0x0037)
+
+#define KDATA_HALT_SYNCH_CLIENT         (KDATA_BASE_ADDR + 0x0038)
+#define KDATA_HALT_SYNCH_DMA            (KDATA_BASE_ADDR + 0x0039)
+#define KDATA_HALT_ACKNOWLEDGE          (KDATA_BASE_ADDR + 0x003A)
+
+#define KDATA_ADC1_XFER0                (KDATA_BASE_ADDR + 0x003B)
+#define KDATA_ADC1_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x003C)
+#define KDATA_ADC1_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x003D)
+#define KDATA_ADC1_RIGHT_VOLUME  	(KDATA_BASE_ADDR + 0x003E)
+#define KDATA_ADC1_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x003F)
+#define KDATA_ADC1_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0040)
+
+#define KDATA_ADC2_XFER0                (KDATA_BASE_ADDR + 0x0041)
+#define KDATA_ADC2_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x0042)
+#define KDATA_ADC2_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0043)
+#define KDATA_ADC2_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x0044)
+#define KDATA_ADC2_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x0045)
+#define KDATA_ADC2_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0046)
+
+#define KDATA_CD_XFER0			(KDATA_BASE_ADDR + 0x0047)
+#define KDATA_CD_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x0048)
+#define KDATA_CD_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0049)
+#define KDATA_CD_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x004A)
+#define KDATA_CD_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x004B)
+#define KDATA_CD_RIGHT_SUR_VOL		(KDATA_BASE_ADDR + 0x004C)
+
+#define KDATA_MIC_XFER0			(KDATA_BASE_ADDR + 0x004D)
+#define KDATA_MIC_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x004E)
+#define KDATA_MIC_VOLUME		(KDATA_BASE_ADDR + 0x004F)
+#define KDATA_MIC_SUR_VOL		(KDATA_BASE_ADDR + 0x0050)
+
+#define KDATA_I2S_XFER0                 (KDATA_BASE_ADDR + 0x0051)
+#define KDATA_I2S_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0052)
+
+#define KDATA_CHI_XFER0                 (KDATA_BASE_ADDR + 0x0053)
+#define KDATA_CHI_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0054)
+
+#define KDATA_SPDIF_XFER                (KDATA_BASE_ADDR + 0x0055)
+#define KDATA_SPDIF_CURRENT_FRAME       (KDATA_BASE_ADDR + 0x0056)
+#define KDATA_SPDIF_FRAME0              (KDATA_BASE_ADDR + 0x0057)
+#define KDATA_SPDIF_FRAME1              (KDATA_BASE_ADDR + 0x0058)
+#define KDATA_SPDIF_FRAME2              (KDATA_BASE_ADDR + 0x0059)
+
+#define KDATA_SPDIF_REQUEST             (KDATA_BASE_ADDR + 0x005A)
+#define KDATA_SPDIF_TEMP                (KDATA_BASE_ADDR + 0x005B)
+
+/*AY SPDIF IN */
+#define KDATA_SPDIFIN_XFER0             (KDATA_BASE_ADDR + 0x005C)
+#define KDATA_SPDIFIN_XFER_ENDMARK      (KDATA_BASE_ADDR + 0x005D)
+#define KDATA_SPDIFIN_INT_METER         (KDATA_BASE_ADDR + 0x005E)
+
+#define KDATA_DSP_RESET_COUNT           (KDATA_BASE_ADDR + 0x005F)
+#define KDATA_DEBUG_OUTPUT              (KDATA_BASE_ADDR + 0x0060)
+
+#define KDATA_KERNEL_ISR_LIST           (KDATA_BASE_ADDR + 0x0061)
+
+#define KDATA_KERNEL_ISR_CBSR1          (KDATA_BASE_ADDR + 0x0062)
+#define KDATA_KERNEL_ISR_CBER1          (KDATA_BASE_ADDR + 0x0063)
+#define KDATA_KERNEL_ISR_CBCR           (KDATA_BASE_ADDR + 0x0064)
+#define KDATA_KERNEL_ISR_AR0            (KDATA_BASE_ADDR + 0x0065)
+#define KDATA_KERNEL_ISR_AR1            (KDATA_BASE_ADDR + 0x0066)
+#define KDATA_KERNEL_ISR_AR2            (KDATA_BASE_ADDR + 0x0067)
+#define KDATA_KERNEL_ISR_AR3            (KDATA_BASE_ADDR + 0x0068)
+#define KDATA_KERNEL_ISR_AR4            (KDATA_BASE_ADDR + 0x0069)
+#define KDATA_KERNEL_ISR_AR5            (KDATA_BASE_ADDR + 0x006A)
+#define KDATA_KERNEL_ISR_BRCR           (KDATA_BASE_ADDR + 0x006B)
+#define KDATA_KERNEL_ISR_PASR           (KDATA_BASE_ADDR + 0x006C)
+#define KDATA_KERNEL_ISR_PAER           (KDATA_BASE_ADDR + 0x006D)
+
+#define KDATA_CLIENT_SCRATCH0           (KDATA_BASE_ADDR + 0x006E)
+#define KDATA_CLIENT_SCRATCH1           (KDATA_BASE_ADDR + 0x006F)
+#define KDATA_KERNEL_SCRATCH            (KDATA_BASE_ADDR + 0x0070)
+#define KDATA_KERNEL_ISR_SCRATCH        (KDATA_BASE_ADDR + 0x0071)
+
+#define KDATA_OUEUE_LEFT                (KDATA_BASE_ADDR + 0x0072)
+#define KDATA_QUEUE_RIGHT               (KDATA_BASE_ADDR + 0x0073)
+
+#define KDATA_ADC1_REQUEST              (KDATA_BASE_ADDR + 0x0074)
+#define KDATA_ADC2_REQUEST              (KDATA_BASE_ADDR + 0x0075)
+#define KDATA_CD_REQUEST		(KDATA_BASE_ADDR + 0x0076)
+#define KDATA_MIC_REQUEST		(KDATA_BASE_ADDR + 0x0077)
+
+#define KDATA_ADC1_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0078)
+#define KDATA_ADC2_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0079)
+#define KDATA_CD_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007A)
+#define KDATA_MIC_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007B)
+#define KDATA_MIC_SYNC_COUNTER		(KDATA_BASE_ADDR + 0x007C)
+
+/*
+ * second segment
+ */
+
+/* smart mixer buffer */
+
+#define KDATA_MIXER_WORD0               (KDATA_BASE_ADDR2 + 0x0000)
+#define KDATA_MIXER_WORD1               (KDATA_BASE_ADDR2 + 0x0001)
+#define KDATA_MIXER_WORD2               (KDATA_BASE_ADDR2 + 0x0002)
+#define KDATA_MIXER_WORD3               (KDATA_BASE_ADDR2 + 0x0003)
+#define KDATA_MIXER_WORD4               (KDATA_BASE_ADDR2 + 0x0004)
+#define KDATA_MIXER_WORD5               (KDATA_BASE_ADDR2 + 0x0005)
+#define KDATA_MIXER_WORD6               (KDATA_BASE_ADDR2 + 0x0006)
+#define KDATA_MIXER_WORD7               (KDATA_BASE_ADDR2 + 0x0007)
+#define KDATA_MIXER_WORD8               (KDATA_BASE_ADDR2 + 0x0008)
+#define KDATA_MIXER_WORD9               (KDATA_BASE_ADDR2 + 0x0009)
+#define KDATA_MIXER_WORDA               (KDATA_BASE_ADDR2 + 0x000A)
+#define KDATA_MIXER_WORDB               (KDATA_BASE_ADDR2 + 0x000B)
+#define KDATA_MIXER_WORDC               (KDATA_BASE_ADDR2 + 0x000C)
+#define KDATA_MIXER_WORDD               (KDATA_BASE_ADDR2 + 0x000D)
+#define KDATA_MIXER_WORDE               (KDATA_BASE_ADDR2 + 0x000E)
+#define KDATA_MIXER_WORDF               (KDATA_BASE_ADDR2 + 0x000F)
+
+#define KDATA_MIXER_XFER0               (KDATA_BASE_ADDR2 + 0x0010)
+#define KDATA_MIXER_XFER1               (KDATA_BASE_ADDR2 + 0x0011)
+#define KDATA_MIXER_XFER2               (KDATA_BASE_ADDR2 + 0x0012)
+#define KDATA_MIXER_XFER3               (KDATA_BASE_ADDR2 + 0x0013)
+#define KDATA_MIXER_XFER4               (KDATA_BASE_ADDR2 + 0x0014)
+#define KDATA_MIXER_XFER5               (KDATA_BASE_ADDR2 + 0x0015)
+#define KDATA_MIXER_XFER6               (KDATA_BASE_ADDR2 + 0x0016)
+#define KDATA_MIXER_XFER7               (KDATA_BASE_ADDR2 + 0x0017)
+#define KDATA_MIXER_XFER8               (KDATA_BASE_ADDR2 + 0x0018)
+#define KDATA_MIXER_XFER9               (KDATA_BASE_ADDR2 + 0x0019)
+#define KDATA_MIXER_XFER_ENDMARK        (KDATA_BASE_ADDR2 + 0x001A)
+
+#define KDATA_MIXER_TASK_NUMBER         (KDATA_BASE_ADDR2 + 0x001B)
+#define KDATA_CURRENT_MIXER             (KDATA_BASE_ADDR2 + 0x001C)
+#define KDATA_MIXER_ACTIVE              (KDATA_BASE_ADDR2 + 0x001D)
+#define KDATA_MIXER_BANK_STATUS         (KDATA_BASE_ADDR2 + 0x001E)
+#define KDATA_DAC_LEFT_VOLUME	        (KDATA_BASE_ADDR2 + 0x001F)
+#define KDATA_DAC_RIGHT_VOLUME          (KDATA_BASE_ADDR2 + 0x0020)
+
+/*
+ * Client data memory definition
+ */
+
+#define CDATA_INSTANCE_READY            0x00
+
+#define CDATA_HOST_SRC_ADDRL            0x01
+#define CDATA_HOST_SRC_ADDRH            0x02
+#define CDATA_HOST_SRC_END_PLUS_1L      0x03
+#define CDATA_HOST_SRC_END_PLUS_1H      0x04
+#define CDATA_HOST_SRC_CURRENTL         0x05
+#define CDATA_HOST_SRC_CURRENTH         0x06
+
+#define CDATA_IN_BUF_CONNECT            0x07
+#define CDATA_OUT_BUF_CONNECT           0x08
+
+#define CDATA_IN_BUF_BEGIN              0x09
+#define CDATA_IN_BUF_END_PLUS_1         0x0A
+#define CDATA_IN_BUF_HEAD               0x0B
+#define CDATA_IN_BUF_TAIL               0x0C
+
+#define CDATA_OUT_BUF_BEGIN             0x0D
+#define CDATA_OUT_BUF_END_PLUS_1        0x0E
+#define CDATA_OUT_BUF_HEAD              0x0F
+#define CDATA_OUT_BUF_TAIL              0x10
+
+#define CDATA_DMA_CONTROL               0x11
+#define CDATA_RESERVED                  0x12
+
+#define CDATA_FREQUENCY                 0x13
+#define CDATA_LEFT_VOLUME               0x14
+#define CDATA_RIGHT_VOLUME              0x15
+#define CDATA_LEFT_SUR_VOL              0x16
+#define CDATA_RIGHT_SUR_VOL             0x17
+
+/* These are from Allegro hckernel.h */
+#define CDATA_HEADER_LEN                0x18
+#define SRC3_DIRECTION_OFFSET           CDATA_HEADER_LEN
+#define SRC3_MODE_OFFSET                CDATA_HEADER_LEN + 1
+#define SRC3_WORD_LENGTH_OFFSET         CDATA_HEADER_LEN + 2
+#define SRC3_PARAMETER_OFFSET           CDATA_HEADER_LEN + 3
+#define SRC3_COEFF_ADDR_OFFSET          CDATA_HEADER_LEN + 8
+#define SRC3_FILTAP_ADDR_OFFSET         CDATA_HEADER_LEN + 10
+#define SRC3_TEMP_INBUF_ADDR_OFFSET     CDATA_HEADER_LEN + 16
+#define SRC3_TEMP_OUTBUF_ADDR_OFFSET    CDATA_HEADER_LEN + 17
+#define FOR_FUTURE_USE                  10	/* for storing temporary variable in future */
+
+/*
+ * DMA control definition
+ */
+
+#define DMACONTROL_BLOCK_MASK           0x000F
+#define  DMAC_BLOCK0_SELECTOR           0x0000
+#define  DMAC_BLOCK1_SELECTOR           0x0001
+#define  DMAC_BLOCK2_SELECTOR           0x0002
+#define  DMAC_BLOCK3_SELECTOR           0x0003
+#define  DMAC_BLOCK4_SELECTOR           0x0004
+#define  DMAC_BLOCK5_SELECTOR           0x0005
+#define  DMAC_BLOCK6_SELECTOR           0x0006
+#define  DMAC_BLOCK7_SELECTOR           0x0007
+#define  DMAC_BLOCK8_SELECTOR           0x0008
+#define  DMAC_BLOCK9_SELECTOR           0x0009
+#define  DMAC_BLOCKA_SELECTOR           0x000A
+#define  DMAC_BLOCKB_SELECTOR           0x000B
+#define  DMAC_BLOCKC_SELECTOR           0x000C
+#define  DMAC_BLOCKD_SELECTOR           0x000D
+#define  DMAC_BLOCKE_SELECTOR           0x000E
+#define  DMAC_BLOCKF_SELECTOR           0x000F
+#define DMACONTROL_PAGE_MASK            0x00F0
+#define  DMAC_PAGE0_SELECTOR            0x0030
+#define  DMAC_PAGE1_SELECTOR            0x0020
+#define  DMAC_PAGE2_SELECTOR            0x0010
+#define  DMAC_PAGE3_SELECTOR            0x0000
+#define DMACONTROL_AUTOREPEAT           0x1000
+#define DMACONTROL_STOPPED              0x2000
+#define DMACONTROL_DIRECTION            0x0100
+
+/*
+ * Kernel/client memory allocation
+ */
+
+#define NUM_UNITS_KERNEL_CODE          16
+#define NUM_UNITS_KERNEL_DATA           2
+
+#define NUM_UNITS_KERNEL_CODE_WITH_HSP 16
+#ifdef NT_MODEL
+#define NUM_UNITS_KERNEL_DATA_WITH_HSP  5
+#else
+#define NUM_UNITS_KERNEL_DATA_WITH_HSP  4
+#endif
+
+#define NUM_UNITS( BYTES, UNITLEN )    ((((BYTES+1)>>1) + (UNITLEN-1)) / UNITLEN)
+
+/*
+ * DSP hardware
+ */
+
+#define DSP_PORT_TIMER_COUNT            0x06
+#define DSP_PORT_MEMORY_INDEX           0x80
+#define DSP_PORT_MEMORY_TYPE            0x82
+#define DSP_PORT_MEMORY_DATA            0x84
+#define DSP_PORT_CONTROL_REG_A          0xA2
+#define DSP_PORT_CONTROL_REG_B          0xA4
+#define DSP_PORT_CONTROL_REG_C          0xA6
+
+#define MEMTYPE_INTERNAL_CODE           0x0002
+#define MEMTYPE_INTERNAL_DATA           0x0003
+#define MEMTYPE_MASK                    0x0003
+
+#define REGB_ENABLE_RESET               0x01
+#define REGB_STOP_CLOCK                 0x10
+
+#define REGC_DISABLE_FM_MAPPING         0x02
+
+#define DP_SHIFT_COUNT                  7
+
+#define DMA_BLOCK_LENGTH                32
+
+/* These are from Allegro srcmgr.h */
+#define MINISRC_BIQUAD_STAGE    2
+#define MINISRC_IN_BUFFER_SIZE   ( 0x50 * 2 )
+#define MINISRC_OUT_BUFFER_SIZE  ( 0x50 * 2 * 2)
+#define MINISRC_TMP_BUFFER_SIZE  ( 112 + ( MINISRC_BIQUAD_STAGE * 3 + 4 ) * 2 * 2 )
+#define MINISRC_BIQUAD_STAGE    2
+/* M. SRC LPF coefficient could be changed in the DSP code */
+#define MINISRC_COEF_LOC          0X175
+
+#endif	/* !_DEV_SOUND_PCI_ALLEGRO_REG_H */
diff -ruN dev/sound/pci.emu10k/emu10k1reg.h dev/sound/pci/emu10k1reg.h
--- dev/sound/pci.emu10k/emu10k1reg.h	2011-01-10 17:30:25.000000000 +0000
+++ dev/sound/pci/emu10k1reg.h	2011-01-10 20:27:17.000000000 +0000
@@ -1,3 +1,4 @@
+/* $FreeBSD$ */
 /*	$NetBSD: emuxkireg.h,v 1.8 2008/04/28 20:23:54 martin Exp $	*/
 
 /*-
diff -ruN dev/sound/pci.emu10k/maestro3.c dev/sound/pci/maestro3.c
--- dev/sound/pci.emu10k/maestro3.c	2011-01-10 17:30:25.000000000 +0000
+++ dev/sound/pci/maestro3.c	2011-01-11 21:48:35.000000000 +0000
@@ -62,11 +62,14 @@
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
 
-#include <gnu/dev/sound/pci/maestro3_reg.h>
-#include <gnu/dev/sound/pci/maestro3_dsp.h>
+#include <dev/pci/allegro_reg.h>
+#include <dev/pci/allegro_code.h>
 
 SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/maestro3.c,v 1.36.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $");
 
+#define NT_MODEL 1
+#define DFT_VOLUME 0x6800
+
 /* -------------------------------------------------------------------- */
 
 enum {CHANGE=0, CALL=1, INTR=2, BORING=3, NONE=-1};
@@ -376,6 +379,31 @@
 	int idx, data_bytes, dac_data;
 	int dsp_in_size, dsp_out_size, dsp_in_buf, dsp_out_buf;
 
+	struct data_word {
+	    u_int16_t addr, val;
+	} pv[] = {
+	    {CDATA_LEFT_VOLUME, DFT_VOLUME},
+	    {CDATA_RIGHT_VOLUME, DFT_VOLUME},
+	    {SRC3_DIRECTION_OFFSET, 0} ,
+	    {SRC3_DIRECTION_OFFSET + 3, 0x0000},
+	    {SRC3_DIRECTION_OFFSET + 4, 0},
+	    {SRC3_DIRECTION_OFFSET + 5, 0},
+	    {SRC3_DIRECTION_OFFSET + 6, 0},
+	    {SRC3_DIRECTION_OFFSET + 7, 0},
+	    {SRC3_DIRECTION_OFFSET + 8, 0},
+	    {SRC3_DIRECTION_OFFSET + 9, 0},
+	    {SRC3_DIRECTION_OFFSET + 10, 0x8000},
+	    {SRC3_DIRECTION_OFFSET + 11, 0xFF00},
+	    {SRC3_DIRECTION_OFFSET + 13, 0},
+	    {SRC3_DIRECTION_OFFSET + 14, 0},
+	    {SRC3_DIRECTION_OFFSET + 15, 0},
+	    {SRC3_DIRECTION_OFFSET + 16, 8},
+	    {SRC3_DIRECTION_OFFSET + 17, 50*2},
+	    {SRC3_DIRECTION_OFFSET + 18, MINISRC_BIQUAD_STAGE - 1},
+	    {SRC3_DIRECTION_OFFSET + 20, 0},
+	    {SRC3_DIRECTION_OFFSET + 21, 0}
+	};
+
 	M3_LOCK(sc);
 	idx = sc->pch_cnt; /* dac instance number, no active reuse! */
         M3_DEBUG(CHANGE, ("m3_pchan_init(dac=%d)\n", idx));
@@ -729,6 +757,33 @@
 	int idx, data_bytes, adc_data;
 	int dsp_in_size, dsp_out_size, dsp_in_buf, dsp_out_buf; 
 
+	struct data_word {
+	u_int16_t addr, val;
+	} rv[] = {
+	    {CDATA_LEFT_VOLUME, DFT_VOLUME},
+	    {CDATA_RIGHT_VOLUME, DFT_VOLUME},
+	    {SRC3_DIRECTION_OFFSET, 1},
+	    {SRC3_DIRECTION_OFFSET + 3, 0x0000},
+	    {SRC3_DIRECTION_OFFSET + 4, 0},
+	    {SRC3_DIRECTION_OFFSET + 5, 0},
+	    {SRC3_DIRECTION_OFFSET + 6, 0},
+	    {SRC3_DIRECTION_OFFSET + 7, 0},
+	    {SRC3_DIRECTION_OFFSET + 8, 0},
+	    {SRC3_DIRECTION_OFFSET + 9, 0},
+	    {SRC3_DIRECTION_OFFSET + 10, 0x8000},
+	    {SRC3_DIRECTION_OFFSET + 11, 0xFF00},
+	    {SRC3_DIRECTION_OFFSET + 13, 0},
+	    {SRC3_DIRECTION_OFFSET + 14, 0},
+	    {SRC3_DIRECTION_OFFSET + 15, 0},
+	    {SRC3_DIRECTION_OFFSET + 16, 50},
+	    {SRC3_DIRECTION_OFFSET + 17, 8},
+	    {SRC3_DIRECTION_OFFSET + 18, 0},
+	    {SRC3_DIRECTION_OFFSET + 19, 0},
+	    {SRC3_DIRECTION_OFFSET + 20, 0},
+	    {SRC3_DIRECTION_OFFSET + 21, 0},
+	    {SRC3_DIRECTION_OFFSET + 22, 0xff}
+	};
+
 	M3_LOCK(sc);
 	idx = sc->rch_cnt; /* adc instance number, no active reuse! */
         M3_DEBUG(CHANGE, ("m3_rchan_init(adc=%d)\n", idx));
@@ -1189,25 +1244,25 @@
 	m3_wr_assp_data(sc, KDATA_CURRENT_DMA,
 			KDATA_DMA_XFER0);
 	/* write kernel into code memory */
-	size = sizeof(assp_kernel_image);
+	size = sizeof(gaw_kernel_vect_code);
 	for(i = 0 ; i < size / 2; i++) {
 		m3_wr_assp_code(sc, REV_B_CODE_MEMORY_BEGIN + i,
-				assp_kernel_image[i]);
+				gaw_kernel_vect_code[i]);
 	}
 	/*
 	 * We only have this one client and we know that 0x400 is free in
 	 * our kernel's mem map, so lets just drop it there.  It seems that
 	 * the minisrc doesn't need vectors, so we won't bother with them..
 	 */
-	size = sizeof(assp_minisrc_image);
+	size = sizeof(gaw_minisrc_code_0400);
 	for(i = 0 ; i < size / 2; i++) {
-		m3_wr_assp_code(sc, 0x400 + i, assp_minisrc_image[i]);
+		m3_wr_assp_code(sc, 0x400 + i, gaw_minisrc_code_0400[i]);
 	}
 	/* write the coefficients for the low pass filter? */
-	size = sizeof(minisrc_lpf_image);
+	size = sizeof(minisrc_lpf);
 	for(i = 0; i < size / 2 ; i++) {
 		m3_wr_assp_code(sc,0x400 + MINISRC_COEF_LOC + i,
-				minisrc_lpf_image[i]);
+				minisrc_lpf[i]);
 	}
 	m3_wr_assp_code(sc, 0x400 + MINISRC_COEF_LOC + size, 0x8000);
 	/* the minisrc is the only thing on our task list */
@@ -1215,8 +1270,8 @@
 	/* init the mixer number */
 	m3_wr_assp_data(sc, KDATA_MIXER_TASK_NUMBER, 0);
 	/* extreme kernel master volume */
-	m3_wr_assp_data(sc, KDATA_DAC_LEFT_VOLUME, ARB_VOLUME);
-	m3_wr_assp_data(sc, KDATA_DAC_RIGHT_VOLUME, ARB_VOLUME);
+	m3_wr_assp_data(sc, KDATA_DAC_LEFT_VOLUME, DFT_VOLUME);
+	m3_wr_assp_data(sc, KDATA_DAC_RIGHT_VOLUME, DFT_VOLUME);
 
 	m3_amp_enable(sc);
 
--- modules/sound/driver/maestro3/Makefile.orig	2011-01-11 21:35:49.000000000 +0000
+++ modules/sound/driver/maestro3/Makefile	2011-01-11 21:38:24.000000000 +0000
@@ -4,6 +4,7 @@
 
 KMOD=	snd_maestro3
 SRCS=	device_if.h bus_if.h pci_if.h
+SRCS+=	allegro_code.h allegro_reg.h
 SRCS+=	maestro3.c
 
 CFLAGS+= -Wall -DM3_DEBUG_LEVEL=-1


>Release-Note:
>Audit-Trail:

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/153920: Replace the GPL'd sound/maestro3 headers with BSD versions from OSS
Date: Tue, 11 Jan 2011 21:09:43 -0800 (PST)

 There is a typo in the maestro3.c patch, but it's not
 worthy to send a new patch: the correct patch for the
 new include files is, of course,
      dev/sound/pci/allegro_*.h
 
 (I tested it using "allegro_*.h", and didn't run another
 test before submitting it, sorry)
 
 
       

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/153920: Replace the GPL'd sound/maestro3 headers with BSD versions from OSS
Date: Wed, 12 Jan 2011 07:43:50 -0800 (PST)

 --0-1011579751-1294847030=:77902
 Content-Type: text/plain; charset=us-ascii
 
 Minor update to make naming more consistent.
 
 
 
       
 --0-1011579751-1294847030=:77902
 Content-Type: text/plain; name="patch-maestro3.txt"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="patch-maestro3.txt"
 
 ZGlmZiAtcnVOIGRldi9zb3VuZC9wY2kuZW11MTBrL2FsbGVncm9fY29kZS5o
 IGRldi9zb3VuZC9wY2kvYWxsZWdyb19jb2RlLmgKLS0tIGRldi9zb3VuZC9w
 Y2kuZW11MTBrL2FsbGVncm9fY29kZS5oCTE5NzAtMDEtMDEgMDA6MDA6MDAu
 MDAwMDAwMDAwICswMDAwCisrKyBkZXYvc291bmQvcGNpL2FsbGVncm9fY29k
 ZS5oCTIwMTEtMDEtMTEgMTY6Mzg6NDkuMDAwMDAwMDAwICswMDAwCkBAIC0w
 LDAgKzEsMjE5IEBACisKKy8qLQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIw
 MDgsIDRGcm9udCBUZWNobm9sb2dpZXMKKyAqIENvcHlyaWdodCAoQykgMTk5
 Ny0xOTk5IEVTUyBUZWNobm9sb2d5LCBJbmMKKyAqIEFsbCByaWdodHMgcmVz
 ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
 Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
 ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
 bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
 aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
 IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
 aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
 ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
 IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
 aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
 cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
 UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05U
 UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
 TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
 TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
 SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
 QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S
 IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNU
 LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
 UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
 T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
 UworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
 SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
 VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
 SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJ
 TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
 QU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
 RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
 SCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisgKi8KKworLyotLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFRoaXMgc291cmNlIGNvZGUs
 IGl0cyBjb21waWxlZCBvYmplY3QgY29kZSwgYW5kIGl0cyBhc3NvY2lhdGVk
 IGRhdGEgc2V0cworICogYXJlIGNvcHlyaWdodCAoQykgMTk5Ny0xOTk5IEVT
 UyBUZWNobm9sb2d5LCBJbmMuIFRoaXMgc291cmNlIGNvZGUgYW5kIGl0cwor
 ICogYXNzb2NpYXRlZCBkYXRhIHNldHMgYXJlIHRyYWRlIHNlY3JldHMgb2Yg
 RVNTIFRlY2hub2xvZ3ksIEluYy4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tCisgKiBERVNDUklQVElPTjogRFNQIGJpbmFyaWVzCisgKi0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQVVUSE9SOiAgSGVu
 cnkgVGFuZyAvIEhvbmcgS2ltIC8gQWxnZXIgWWV1bmcvRG9uIEtpbQorICot
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEZvciBwcmFjdGlj
 YWwgcHVycG9zZXMgd2Ugb25seSBpbmNsdWRlIHdoYXQgaXMgbmVjZXNzYXJ5
 IGZvciBjdXJyZW50CisgKiAgTWFlc3RybzMgZHJpdmVyLiBGaWxlcyB1c2Vk
 IGluIHRoaXMgaGVhZGVyIGluY2x1ZGU6CisgKiAgICBrZXJuZWwuZGF0Cisg
 KiAgICA0MDBtX3NyYy5kYXQKKyAqICAgIG1pbmlfc3JjX2xwZiBmcm9tIHNy
 Y21nci5oCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov
 CisjaWZuZGVmIF9ERVZfU09VTkRfUENJX0FMTEVHUk9fQ09ERV9ICisjZGVm
 aW5lIF9ERVZfU09VTkRfUENJX0FMTEVHUk9fQ09ERV9ICisKKy8qCisgKiBL
 ZXJuZWwKKyAqLworCit1aW50MTZfdCBnYXdfa2VybmVsX3ZlY3RfY29kZVtd
 ID0geworICAgIDB4Nzk4MCwgMHgwMDMwLCAweDc5ODAsIDB4MDNCNCwgMHg3
 OTgwLCAweDAzQjQsIDB4Nzk4MCwgMHgwMEZCLCAweDc5ODAsCisgICAgMHgw
 MERELCAweDc5ODAsIDB4MDNCNCwgMHg3OTgwLCAweDAzMzIsIDB4Nzk4MCwg
 MHgwMjg3LCAweDc5ODAsIDB4MDNCNCwKKyAgICAweDc5ODAsIDB4MDNCNCwg
 MHg3OTgwLCAweDAzQjQsIDB4Nzk4MCwgMHgwM0I0LCAweDc5ODAsIDB4MDMx
 QSwgMHg3OTgwLAorICAgIDB4MDNCNCwgMHg3OTgwLCAweDAyMkYsIDB4Nzk4
 MCwgMHgwM0I0LCAweDc5ODAsIDB4MDNCNCwgMHg3OTgwLCAweDAzQjQsCisg
 ICAgMHg3OTgwLCAweDAzQjQsIDB4Nzk4MCwgMHgwM0I0LCAweDc5ODAsIDB4
 MDA2MywgMHg3OTgwLCAweDAwNkIsIDB4Nzk4MCwKKyAgICAweDAzQjQsIDB4
 Nzk4MCwgMHgwM0I0LCAweEJGODAsIDB4MkM3QywgMHg4ODA2LCAweDg4MDQs
 IDB4QkU0MCwgMHhCQzIwLAorICAgIDB4QUUwOSwgMHgxMDAwLCAweEFFMEEs
 IDB4MDAwMSwgMHg2OTM4LCAweEVCMDgsIDB4MDA1MywgMHg2OTVBLCAweEVC
 MDgsCisgICAgMHgwMEQ2LCAweDAwMDksIDB4OEI4OCwgMHg2OTgwLCAweEUz
 ODgsIDB4MDAzNiwgMHhCRTMwLCAweEJDMjAsIDB4NjkwOSwKKyAgICAweEI4
 MDEsIDB4OTAwOSwgMHhCRTQxLCAweEJFNDEsIDB4NjkyOCwgMHhFQjg4LCAw
 eDAwNzgsIDB4QkU0MSwgMHhCRTQwLAorICAgIDB4Nzk4MCwgMHgwMDM4LCAw
 eEJFNDEsIDB4QkU0MSwgMHg5MDNBLCAweDY5MzgsIDB4RTMwOCwgMHgwMDU2
 LCAweDkwM0EsCisgICAgMHhCRTQxLCAweEJFNDAsIDB4RUYwMCwgMHg5MDNB
 LCAweDY5MzksIDB4RTMwOCwgMHgwMDVFLCAweDkwM0EsIDB4RUYwMCwKKyAg
 ICAweDY5MEIsIDB4NjYwQywgMHhFRjhDLCAweDY5MEEsIDB4NjYwQywgMHg2
 MjBCLCAweDY2MDksIDB4RUYwMCwgMHg2OTEwLAorICAgIDB4NjYwRiwgMHhF
 RjA0LCAweEUzODgsIDB4MDA3NSwgMHg2OTBFLCAweDY2MEYsIDB4NjIxMCwg
 MHg2NjBELCAweEVGMDAsCisgICAgMHg2OTBFLCAweDY2MEQsIDB4RUYwMCwg
 MHhBRTcwLCAweDAwMDEsIDB4QkMyMCwgMHhBRTI3LCAweDAwMDEsIDB4Njkz
 OSwKKyAgICAweEVCMDgsIDB4MDA1RCwgMHg2OTI2LCAweEI4MDEsIDB4OTAy
 NiwgMHgwMDI2LCAweDhCODgsIDB4Njk4MCwgMHhFMzg4LAorICAgIDB4MDBD
 QiwgMHg5MDI4LCAweDBEMjgsIDB4NDIxMSwgMHhFMTAwLCAweDAwN0EsIDB4
 NDcxMSwgMHhFMTAwLCAweDAwQTAsCisgICAgMHg3QTgwLCAweDAwNjMsIDB4
 QjgxMSwgMHg2NjBBLCAweDYyMDksIDB4RTMwNCwgMHgwMDdBLCAweDBDMEIs
 IDB4NDAwNSwKKyAgICAweDEwMEEsIDB4QkEwMSwgMHg5MDEyLCAweDBDMTIs
 IDB4NDAwMiwgMHg3OTgwLCAweDAwQUYsIDB4N0E4MCwgMHgwMDZCLAorICAg
 IDB4QkUwMiwgMHg2MjBFLCAweDY2MEQsIDB4QkExMCwgMHhFMzQ0LCAweDAw
 N0EsIDB4MEMxMCwgMHg0MDA1LCAweDEwMEUsCisgICAgMHhCQTAxLCAweDkw
 MTIsIDB4MEMxMiwgMHg0MDAyLCAweDEwMDMsIDB4QkEwMiwgMHg5MDEyLCAw
 eDBDMTIsIDB4NDAwMCwgCisgICAgMHgxMDAzLCAweEUzODgsIDB4MDBCQSwg
 MHgxMDA0LCAweDc5ODAsIDB4MDBCQywgMHgxMDA0LCAweEJBMDEsIDB4OTAx
 MiwKKyAgICAweDBDMTIsIDB4NDAwMSwgMHgwQzA1LCAweDQwMDMsIDB4MEMw
 NiwgMHg0MDA0LCAweDEwMTEsIDB4QkZCMCwgMHgwMUZGLAorICAgIDB4OTAx
 MiwgMHgwQzEyLCAweDQwMDYsIDB4QkMyMCwgMHhFRjAwLCAweEFFMjYsIDB4
 MTAyOCwgMHg2OTcwLCAweEJGRDAsCisgICAgMHgwMDAxLCAweDkwNzAsIDB4
 RTM4OCwgMHgwMDdBLCAweEFFMjgsIDB4MDAwMCwgMHhFRjAwLCAweEFFNzAs
 IDB4MDMwMCwgCisgICAgMHgwQzcwLCAweEIwMEMsIDB4QUU1QSwgMHgwMDAw
 LCAweEVGMDAsIDB4N0E4MCwgMHgwMzhBLCAweDY5N0YsIDB4QjgwMSwKKyAg
 ICAweDkwN0YsIDB4MDA1NiwgMHg4Qjg4LCAweDBDQTAsIDB4QjAwOCwgMHhB
 RjcxLCAweEIwMDAsIDB4NEU3MSwgMHhFMjAwLAorICAgIDB4MDBGMywgMHhB
 RTU2LCAweDEwNTcsIDB4MDA1NiwgMHgwQ0EwLCAweEIwMDgsIDB4ODA1Niwg
 MHg3OTgwLCAweDAzQTEsCisgICAgMHgwODEwLCAweEJGQTAsIDB4MTA1OSwg
 MHhFMzA0LCAweDAzQTEsIDB4ODA1NiwgMHg3OTgwLCAweDAzQTEsIDB4N0E4
 MCwKKyAgICAweDAzOEEsIDB4QkYwMSwgMHhCRTQzLCAweEJFNTksIDB4OTA3
 QywgMHg2OTM3LCAweEUzODgsIDB4MDEwRCwgMHhCQTAxLAorICAgIDB4RTMw
 OCwgMHgwMTBDLCAweEFFNzEsIDB4MDAwNCwgMHgwQzcxLCAweDUwMDAsIDB4
 NjkzNiwgMHg5MDM3LCAweEJGMEEsCisgICAgMHgxMDlFLCAweDhCOEEsIDB4
 QUY4MCwgMHg4MDE0LCAweDRDODAsIDB4QkYwQSwgMHgwNTYwLCAweEY1MDAs
 IDB4QkYwQSwKKyAgICAweDA1MjAsIDB4QjkwMCwgMHhCQjE3LCAweDkwQTAs
 IDB4NjkxNywgMHhFMzg4LCAweDAxNDgsIDB4MEQxNywgMHhFMTAwLAorICAg
 IDB4MDEyNywgMHhCRjBDLCAweDA1NzgsIDB4QkYwRCwgMHgwNTdDLCAweDc5
 ODAsIDB4MDEyQiwgMHhCRjBDLCAweDA1MzgsCisgICAgMHhCRjBELCAweDA1
 M0MsIDB4NjkwMCwgMHhFMzA4LCAweDAxMzUsIDB4OEI4QywgMHhCRTU5LCAw
 eEJCMDcsIDB4OTBBMCwKKyAgICAweEJDMjAsIDB4Nzk4MCwgMHgwMTU3LCAw
 eDAzMEMsIDB4OEI4QiwgMHhCOTAzLCAweDg4MDksIDB4QkVDNiwgMHgwMTNF
 LAorICAgIDB4NjlBQywgMHg5MEFCLCAweDY5QUQsIDB4OTBBQiwgMHgwODEz
 LCAweDY2MEEsIDB4RTM0NCwgMHgwMTQ0LCAweDAzMDksCisgICAgMHg4MzBD
 LCAweEJDMjAsIDB4Nzk4MCwgMHgwMTU3LCAweDY5NTUsIDB4RTM4OCwgMHgw
 MTU3LCAweDdDMzgsIDB4QkYwQiwKKyAgICAweDA1NzgsIDB4RjUwMCwgMHhC
 RjBCLCAweDA1MzgsIDB4QjkwNywgMHg4ODA5LCAweEJFQzYsIDB4MDE1Niwg
 MHgxMEFCLAorICAgIDB4OTBBQSwgMHg2OTc0LCAweEUzODgsIDB4MDE2Mywg
 MHhBRTcyLCAweDA1NDAsIDB4RjUwMCwgMHhBRTcyLCAweDA1MDAsCisgICAg
 MHhBRTYxLCAweDEwM0IsIDB4N0E4MCwgMHgwMkY2LCAweDY5NzgsIDB4RTM4
 OCwgMHgwMTgyLCAweDhCOEMsIDB4QkYwQywKKyAgICAweDA1NjAsIDB4RTUw
 MCwgMHg3QzQwLCAweDA4MTQsIDB4QkEyMCwgMHg4ODEyLCAweDczM0QsIDB4
 N0E4MCwgMHgwMzgwLAorICAgIDB4NzMzRSwgMHg3QTgwLCAweDAzODAsIDB4
 OEI4QywgMHhCRjBDLCAweDA1NkMsIDB4RTUwMCwgMHg3QzQwLCAweDA4MTQs
 CisgICAgMHhCQTJDLCAweDg4MTIsIDB4NzMzRiwgMHg3QTgwLCAweDAzODAs
 IDB4NzM0MCwgMHg3QTgwLCAweDAzODAsIDB4Njk3NSwKKyAgICAweEUzODgs
 IDB4MDE4RSwgMHhBRTcyLCAweDA1NDgsIDB4RjUwMCwgMHhBRTcyLCAweDA1
 MDgsIDB4QUU2MSwgMHgxMDQxLAorICAgIDB4N0E4MCwgMHgwMkY2LCAweDY5
 NzksIDB4RTM4OCwgMHgwMUFELCAweDhCOEMsIDB4QkYwQywgMHgwNTYwLCAw
 eEU1MDAsCisgICAgMHg3QzQwLCAweDA4MTQsIDB4QkExOCwgMHg4ODEyLCAw
 eDczNDMsIDB4N0E4MCwgMHgwMzgwLCAweDczNDQsIDB4N0E4MCwKKyAgICAw
 eDAzODAsIDB4OEI4QywgMHhCRjBDLCAweDA1NkMsIDB4RTUwMCwgMHg3QzQw
 LCAweDA4MTQsIDB4QkEyNCwgMHg4ODEyLAorICAgIDB4NzM0NSwgMHg3QTgw
 LCAweDAzODAsIDB4NzM0NiwgMHg3QTgwLCAweDAzODAsIDB4Njk3NiwgMHhF
 Mzg4LCAweDAxQjksCisgICAgMHhBRTcyLCAweDA1NTgsIDB4RjUwMCwgMHhB
 RTcyLCAweDA1MTgsIDB4QUU2MSwgMHgxMDQ3LCAweDdBODAsIDB4MDJGNiwK
 KyAgICAweDY5N0EsIDB4RTM4OCwgMHgwMUQ4LCAweDhCOEMsIDB4QkYwQywg
 MHgwNTYwLCAweEU1MDAsIDB4N0M0MCwgMHgwODE0LAorICAgIDB4QkEwOCwg
 MHg4ODEyLCAweDczNDksIDB4N0E4MCwgMHgwMzgwLCAweDczNEEsIDB4N0E4
 MCwgMHgwMzgwLCAweDhCOEMsCisgICAgMHhCRjBDLCAweDA1NkMsIDB4RTUw
 MCwgMHg3QzQwLCAweDA4MTQsIDB4QkExNCwgMHg4ODEyLCAweDczNEIsIDB4
 N0E4MCwKKyAgICAweDAzODAsIDB4NzM0QywgMHg3QTgwLCAweDAzODAsIDB4
 QkMyMSwgMHhBRTFDLCAweDEwOTAsIDB4OEI4QSwgMHhCRjBBLAorICAgIDB4
 MDU2MCwgMHhFNTAwLCAweDdDNDAsIDB4MDgxMiwgMHhCODA0LCAweDg4MTMs
 IDB4OEI4RCwgMHhCRjBELCAweDA1NkMsCisgICAgMHhFNTAwLCAweDdDNDAs
 IDB4MDgxNSwgMHhCODA0LCAweDg4MTEsIDB4N0E4MCwgMHgwMzRBLCAweDhC
 OEEsIDB4QkYwQSwKKyAgICAweDA1NjAsIDB4RTUwMCwgMHg3QzQwLCAweDcz
 MUYsIDB4QjkwMywgMHg4ODA5LCAweEJFQzYsIDB4MDFGOSwgMHg1NDhBLCAK
 KyAgICAweEJFMDMsIDB4OThBMCwgMHg3MzIwLCAweEI5MDMsIDB4ODgwOSwg
 MHhCRUM2LCAweDAyMDEsIDB4NTQ4QSwgMHhCRTAzLAorICAgIDB4OThBMCwg
 MHgxRjIwLCAweDJGMUYsIDB4OTgyNiwgMHhCQzIwLCAweDY5MzUsIDB4RTM4
 OCwgMHgwM0ExLCAweDY5MzMsCisgICAgMHhCODAxLCAweDkwMzMsIDB4QkZB
 MCwgMHgwMkVFLCAweEUzMDgsIDB4MDNBMSwgMHg5MDMzLCAweEJGMDAsIDB4
 Njk1MSwKKyAgICAweEUzODgsIDB4MDIxRiwgMHg3MzM0LCAweEJFODAsIDB4
 NTc2MCwgMHhCRTAzLCAweDlGN0UsIDB4QkU1OSwgMHg5MDM0LAorICAgIDB4
 Njk3RSwgMHgwRDUxLCAweDkwMTMsIDB4QkMyMCwgMHg2OTVDLCAweEUzODgs
 IDB4MDNBMSwgMHg3MzVFLCAweEJFODAsCisgICAgMHg1NzYwLCAweEJFMDMs
 IDB4OUY3RSwgMHhCRTU5LCAweDkwNUUsIDB4Njk3RSwgMHgwRDVDLCAweDkw
 MTMsIDB4Nzk4MCwKKyAgICAweDAzQTEsIDB4N0E4MCwgMHgwMzhBLCAweEJG
 MDEsIDB4QkU0MywgMHg2OTc3LCAweEUzODgsIDB4MDI0RSwgMHhBRTYxLAor
 ICAgIDB4MTA0RCwgMHgwMDYxLCAweDhCODgsIDB4Njk4MCwgMHhFMzg4LCAw
 eDAyNEUsIDB4OTA3MSwgMHgwRDcxLCAweDAwMEIsCisgICAgMHhBRkEwLCAw
 eDgwMTAsIDB4QUZBMCwgMHg4MDEwLCAweDA4MTAsIDB4NjYwQSwgMHhFMzA4
 LCAweDAyNDksIDB4MDAwOSwKKyAgICAweDA4MTAsIDB4NjYwQywgMHhFMzg4
 LCAweDAyNEUsIDB4ODAwQiwgMHhCQzIwLCAweDY5N0IsIDB4RTM4OCwgMHgw
 M0ExLAorICAgIDB4QkYwQSwgMHgxMDlFLCAweDhCOEEsIDB4QUY4MCwgMHg4
 MDE0LCAweDRDODAsIDB4RTEwMCwgMHgwMjY2LCAweDY5N0MsCisgICAgMHhC
 RjkwLCAweDA1NjAsIDB4OTA3MiwgMHgwMzcyLCAweDY5N0MsIDB4QkY5MCwg
 MHgwNTY0LCAweDkwNzMsIDB4MDQ3MywKKyAgICAweDc5ODAsIDB4MDI3MCwg
 MHg2OTdDLCAweEJGOTAsIDB4MDUyMCwgMHg5MDcyLCAweDAzNzIsIDB4Njk3
 QywgMHhCRjkwLAorICAgIDB4MDUyNCwgMHg5MDczLCAweDA0NzMsIDB4Njk3
 QywgMHhCODAxLCAweDkwN0MsIDB4QkYwQSwgMHgxMEZELCAweDhCOEEsCisg
 ICAgMHhBRjgwLCAweDgwMTAsIDB4NzM0RiwgMHg1NDhBLCAweEJFMDMsIDB4
 OTg4MCwgMHhCQzIxLCAweDczMjYsIDB4NTQ4QiwKKyAgICAweEJFMDMsIDB4
 NjE4QiwgMHg5ODhDLCAweEJFMDMsIDB4NjE4MCwgMHg5ODgwLCAweDc5ODAs
 IDB4MDNBMSwgMHg3QTgwLAorICAgIDB4MDM4QSwgMHgwRDI4LCAweDQ3MTEs
 IDB4RTEwMCwgMHgwMkJFLCAweEFGMTIsIDB4NDAwNiwgMHg2OTEyLCAweEJG
 QjAsCisgICAgMHgwQzAwLCAweEUzODgsIDB4MDJCNiwgMHhCRkEwLCAweDA4
 MDAsIDB4RTM4OCwgMHgwMkIyLCAweDY5MTIsIDB4QkZCMCwKKyAgICAweDBD
 MDAsIDB4QkZBMCwgMHgwNDAwLCAweEUzODgsIDB4MDJBMywgMHg2OTA5LCAw
 eDkwMEIsIDB4Nzk4MCwgMHgwMkE1LAorICAgIDB4QUYwQiwgMHg0MDA1LCAw
 eDY5MDEsIDB4OTAwNSwgMHg2OTAyLCAweDkwMDYsIDB4NDMxMSwgMHhFMTAw
 LCAweDAyRUQsCisgICAgMHg2OTExLCAweEJGQzAsIDB4MjAwMCwgMHg5MDEx
 LCAweDc5ODAsIDB4MDJFRCwgMHg2OTA5LCAweDkwMEIsIDB4Nzk4MCwKKyAg
 ICAweDAyQjgsIDB4QUYwQiwgMHg0MDA1LCAweEFGMDUsIDB4NDAwMywgMHhB
 RjA2LCAweDQwMDQsIDB4Nzk4MCwgMHgwMkVELAorICAgIDB4QUYxMiwgMHg0
 MDA2LCAweDY5MTIsIDB4QkZCMCwgMHgwQzAwLCAweEUzODgsIDB4MDJFNywg
 MHhCRkEwLCAweDA4MDAsCisgICAgMHhFMzg4LCAweDAyRTMsIDB4NjkxMiwg
 MHhCRkIwLCAweDBDMDAsIDB4QkZBMCwgMHgwNDAwLCAweEUzODgsIDB4MDJE
 NCwKKyAgICAweDY5MEQsIDB4OTAxMCwgMHg3OTgwLCAweDAyRDYsIDB4QUYx
 MCwgMHg0MDA1LCAweDY5MDEsIDB4OTAwNSwgMHg2OTAyLAorICAgIDB4OTAw
 NiwgMHg0MzExLCAweEUxMDAsIDB4MDJFRCwgMHg2OTExLCAweEJGQzAsIDB4
 MjAwMCwgMHg5MDExLCAweDc5ODAsCisgICAgMHgwMkVELCAweDY5MEQsIDB4
 OTAxMCwgMHg3OTgwLCAweDAyRTksIDB4QUYxMCwgMHg0MDA1LCAweEFGMDUs
 IDB4NDAwMywKKyAgICAweEFGMDYsIDB4NDAwNCwgMHhCQzIwLCAweDY5NzAs
 IDB4OTA3MSwgMHg3QTgwLCAweDAwNzgsIDB4Njk3MSwgMHg5MDcwLAorICAg
 IDB4Nzk4MCwgMHgwM0ExLCAweEJDMjAsIDB4MDM2MSwgMHg4QjhCLCAweDY5
 ODAsIDB4RUY4OCwgMHgwMjcyLCAweDAzNzIsCisgICAgMHg3ODA0LCAweDkw
 NzEsIDB4MEQ3MSwgMHg4QjhBLCAweDAwMEIsIDB4QjkwMywgMHg4ODA5LCAw
 eEJFQzYsIDB4MDMwOSwKKyAgICAweDY5QTgsIDB4OTBBQiwgMHg2OUE4LCAw
 eDkwQUEsIDB4MDgxMCwgMHg2NjBBLCAweEUzNDQsIDB4MDMwRiwgMHgwMDA5
 LAorICAgIDB4MDgxMCwgMHg2NjBDLCAweEUzODgsIDB4MDMxNCwgMHg4MDBC
 LCAweEJDMjAsIDB4Njk2MSwgMHhCODAxLCAweDkwNjEsCisgICAgMHg3OTgw
 LCAweDAyRjcsIDB4N0E4MCwgMHgwMzhBLCAweDVEMzUsIDB4MDAwMSwgMHg2
 OTM0LCAweEI4MDEsIDB4OTAzNCwKKyAgICAweEJGMEEsIDB4MTA5RSwgMHg4
 QjhBLCAweEFGODAsIDB4ODAxNCwgMHg0ODgwLCAweEFFNzIsIDB4MDU1MCwg
 MHhGNTAwLAorICAgIDB4QUU3MiwgMHgwNTEwLCAweEFFNjEsIDB4MTA1MSwg
 MHg3QTgwLCAweDAyRjYsIDB4Nzk4MCwgMHgwM0ExLCAweDdBODAsCisgICAg
 MHgwMzhBLCAweDVEMzUsIDB4MDAwMiwgMHg2OTVFLCAweEI4MDEsIDB4OTA1
 RSwgMHhCRjBBLCAweDEwOUUsIDB4OEI4QSwKKyAgICAweEFGODAsIDB4ODAx
 NCwgMHg0NzgwLCAweEFFNzIsIDB4MDU1OCwgMHhGNTAwLCAweEFFNzIsIDB4
 MDUxOCwgMHhBRTYxLAorICAgIDB4MTA1QywgMHg3QTgwLCAweDAyRjYsIDB4
 Nzk4MCwgMHgwM0ExLCAweDAwMUMsIDB4OEI4OCwgMHg2OTgwLCAweEVGODgs
 CisgICAgMHg5MDFELCAweDBEMUQsIDB4MTAwRiwgMHg2NjEwLCAweEUzOEMs
 IDB4MDM1OCwgMHg2OTBFLCAweDY2MTAsIDB4NjIwRiwKKyAgICAweDY2MEQs
 IDB4QkEwRiwgMHhFMzAxLCAweDAzN0EsIDB4MDQxMCwgMHg4QjhBLCAweEI5
 MDMsIDB4ODgwOSwgMHhCRUM2LAorICAgIDB4MDM2QywgMHg2QThDLCAweDYx
 QUEsIDB4OThBQiwgMHg2QThDLCAweDYxQUIsIDB4OThBRCwgMHg2QThDLCAw
 eDYxQUQsCisgICAgMHg5OEE5LCAweDZBOEMsIDB4NjFBOSwgMHg5OEFBLCAw
 eDdDMDQsIDB4OEI4QiwgMHg3QzA0LCAweDhCOEQsIDB4N0MwNCwKKyAgICAw
 eDhCODksIDB4N0MwNCwgMHgwODE0LCAweDY2MEUsIDB4RTMwOCwgMHgwMzc5
 LCAweDA0MEQsIDB4ODQxMCwgMHhCQzIxLAorICAgIDB4NjkxQywgMHhCODAx
 LCAweDkwMUMsIDB4Nzk4MCwgMHgwMzRBLCAweEI5MDMsIDB4ODgwOSwgMHg4
 QjhBLCAweEJFQzYsCisgICAgMHgwMzg4LCAweDU0QUMsIDB4QkUwMywgMHg2
 MThDLCAweDk4QUEsIDB4RUYwMCwgMHhCQzIwLCAweEJFNDYsIDB4MDgwOSwK
 KyAgICAweDkwNkIsIDB4MDgwQSwgMHg5MDZDLCAweDA4MEIsIDB4OTA2RCwg
 MHgwODFBLCAweDkwNjIsIDB4MDgxQiwgMHg5MDYzLAorICAgIDB4MDgxRSwg
 MHg5MDY0LCAweEJFNTksIDB4ODgxRSwgMHg4MDY1LCAweDgxNjYsIDB4ODI2
 NywgMHg4MzY4LCAweDg0NjksCisgICAgMHg4NTZBLCAweEVGMDAsIDB4QkMy
 MCwgMHg2OTZCLCAweDg4MDksIDB4Njk2QywgMHg4ODBBLCAweDY5NkQsIDB4
 ODgwQiwKKyAgICAweDY5NjIsIDB4ODgxQSwgMHg2OTYzLCAweDg4MUIsIDB4
 Njk2NCwgMHg4ODFFLCAweDAwNjUsIDB4MDE2NiwgMHgwMjY3LAorICAgIDB4
 MDM2OCwgMHgwNDY5LCAweDA1NkEsIDB4QkUzQSwKK307CisKKy8qCisgKiBN
 SU5JIFNhbXBsZSBSYXRlIENvbnZlcnNpb24KKyAqLworCit1aW50MTZfdCBn
 YXdfbWluaXNyY19jb2RlXzA0MDBbXSA9IHsKKyAgICAweEJGODAsIDB4MTAx
 RSwgMHg5MDZFLCAweDAwNkUsIDB4OEI4OCwgMHg2OTgwLCAweEVGODgsIDB4
 OTA2RiwgMHgwRDZGLAorICAgIDB4NjkwMCwgMHhFQjA4LCAweDA0MTIsIDB4
 QkMyMCwgMHg2OTZFLCAweEI4MDEsIDB4OTA2RSwgMHg3OTgwLCAweDA0MDMs
 CisgICAgMHhCOTBFLCAweDg4MDcsIDB4QkU0MywgMHhCRjAxLCAweEJFNDcs
 IDB4QkU0MSwgMHg3QTgwLCAweDAwMkEsIDB4QkU0MCwKKyAgICAweDMwMjks
 IDB4RUZDQywgMHhCRTQxLCAweDdBODAsIDB4MDAyOCwgMHhCRTQwLCAweDMw
 MjgsIDB4RUZDQywgMHg2OTA3LAorICAgIDB4RTMwOCwgMHgwNDJBLCAweDY5
 MDksIDB4OTAyQywgMHg3OTgwLCAweDA0MkMsIDB4NjkwRCwgMHg5MDJDLCAw
 eDEwMDksCisgICAgMHg4ODFBLCAweDEwMEEsIDB4QkEwMSwgMHg4ODFCLCAw
 eDEwMEQsIDB4ODgxQywgMHgxMDBFLCAweEJBMDEsIDB4ODgxRCwKKyAgICAw
 eEJGODAsIDB4MDBFRCwgMHg4ODFFLCAweDA1MEMsIDB4MDEyNCwgMHhCOTA0
 LCAweDkwMjcsIDB4NjkxOCwgMHhFMzA4LAorICAgIDB4MDRCMywgMHg5MDJE
 LCAweDY5MTMsIDB4QkZBMCwgMHg3NTk4LCAweEY3MDQsIDB4QUUyRCwgMHgw
 MEZGLCAweDhCOEQsCisgICAgMHg2OTE5LCAweEUzMDgsIDB4MDQ2MywgMHg2
 OTFBLCAweEUzMDgsIDB4MDQ1NiwgMHhCOTA3LCAweDg4MDksIDB4QkVDNiwK
 KyAgICAweDA0NTMsIDB4MTBBOSwgMHg5MEFELCAweDc5ODAsIDB4MDQ3Qywg
 MHhCOTAzLCAweDg4MDksIDB4QkVDNiwgMHgwNDYwLAorICAgIDB4MTg4OSwg
 MHg2QzIyLCAweDkwQUQsIDB4MTBBOSwgMHg2RTIzLCAweDZDMjIsIDB4OTBB
 RCwgMHg3OTgwLCAweDA0N0MsCisgICAgMHgxMDFBLCAweEUzMDgsIDB4MDQ2
 RiwgMHhCOTAzLCAweDg4MDksIDB4QkVDNiwgMHgwNDZDLCAweDEwQTksIDB4
 OTBBMCwKKyAgICAweDkwQUQsIDB4Nzk4MCwgMHgwNDdDLCAweEI5MDEsIDB4
 ODgwOSwgMHhCRUM2LCAweDA0N0IsIDB4MTg4OSwgMHg2QzIyLAorICAgIDB4
 OTBBMCwgMHg5MEFELCAweDEwQTksIDB4NkUyMywgMHg2QzIyLCAweDkwQTAs
 IDB4OTBBRCwgMHg2OTJELCAweEUzMDgsCisgICAgMHgwNDlDLCAweDAxMjQs
 IDB4QjcwMywgMHhCOTAyLCAweDg4MTgsIDB4OEI4OSwgMHgwMjJDLCAweDEw
 OEEsIDB4N0MwNCwKKyAgICAweDkwQTAsIDB4NjkyQiwgMHg4ODFGLCAweDdF
 ODAsIDB4MDU1QiwgMHg2OTJBLCAweDg4MDksIDB4OEI4OSwgMHg5OUEwLAor
 ICAgIDB4MTA4QSwgMHg5MEEwLCAweDY5MkIsIDB4ODgxRiwgMHg3RTgwLCAw
 eDA1NUIsIDB4NjkyQSwgMHg4ODA5LCAweDhCODksCisgICAgMHg5OUFGLCAw
 eDdCOTksIDB4MDQ4NCwgMHgwMTI0LCAweDA2MEYsIDB4MTAxQiwgMHgyMDEz
 LCAweDkwMUIsIDB4QkZBMCwKKyAgICAweDdGRkYsIDB4RTM0NCwgMHgwNEFD
 LCAweDkwMUIsIDB4OEI4OSwgMHg3QTgwLCAweDA1MUEsIDB4NjkyNywgMHhC
 QTAxLAorICAgIDB4OTAyNywgMHg3QTgwLCAweDA1MjMsIDB4NjkyNywgMHhF
 MzA4LCAweDA0OUUsIDB4Nzk4MCwgMHgwNTBGLCAweDA2MjQsCisgICAgMHgx
 MDI2LCAweDIwMTMsIDB4OTAyNiwgMHhCRkEwLCAweDdGRkYsIDB4RTMwNCwg
 MHgwNEMwLCAweDhCOEQsIDB4N0E4MCwKKyAgICAweDA1MUEsIDB4Nzk4MCwg
 MHgwNEI0LCAweDkwMjYsIDB4MTAxMywgMHgzMDI2LCAweDkwMUIsIDB4OEI4
 RCwgMHg3QTgwLAorICAgIDB4MDUxQSwgMHg3QTgwLCAweDA1MjMsIDB4MTAy
 NywgMHhCQTAxLCAweDkwMjcsIDB4RTMwOCwgMHgwNEI0LCAweDAxMjQsCisg
 ICAgMHgwNjBGLCAweDhCODksIDB4NjkxQSwgMHhFMzA4LCAweDA0RUEsIDB4
 NjkxOSwgMHhFMzg4LCAweDA0RTAsIDB4QjkwMywKKyAgICAweDg4MDksIDB4
 QkVDNiwgMHgwNERELCAweDFGQTAsIDB4MkZBRSwgMHg5OEE5LCAweDc5ODAs
 IDB4MDUwRiwgMHhCOTAxLAorICAgIDB4ODgxOCwgMHhCOTA3LCAweDg4MDks
 IDB4QkVDNiwgMHgwNEU3LCAweDEwRUUsIDB4OTBBOSwgMHg3OTgwLCAweDA1
 MEYsCisgICAgMHg2OTE5LCAweEUzMDgsIDB4MDRGRSwgMHhCOTAzLCAweDg4
 MDksIDB4QkU0NiwgMHhCRUM2LCAweDA0RkEsIDB4MTdBMCwKKyAgICAweEJF
 MUUsIDB4MUZBRSwgMHhCRkJGLCAweEZGMDAsIDB4QkUxMywgMHhCRkRGLCAw
 eDgwODAsIDB4OTlBOSwgMHhCRTQ3LAorICAgIDB4Nzk4MCwgMHgwNTBGLCAw
 eEI5MDEsIDB4ODgwOSwgMHhCRUM2LCAweDA1MEUsIDB4MTZBMCwgMHgyNkEw
 LCAweEJGQjcsCisgICAgMHhGRjAwLCAweEJFMUUsIDB4MUVBMCwgMHgyRUFF
 LCAweEJGQkYsIDB4RkYwMCwgMHhCRTEzLCAweEJGREYsIDB4ODA4MCwKKyAg
 ICAweDk5QTksIDB4ODUwQywgMHg4NjBGLCAweDY5MDcsIDB4RTM4OCwgMHgw
 NTE2LCAweDBEMDcsIDB4ODUxMCwgMHhCRTU5LAorICAgIDB4ODgxRSwgMHhC
 RTRBLCAweEVGMDAsIDB4MTAxRSwgMHg5MDFDLCAweDEwMUYsIDB4OTAxRCwg
 MHgxMEEwLCAweDkwMUUsCisgICAgMHgxMEEwLCAweDkwMUYsIDB4RUYwMCwg
 MHgxMDFFLCAweDMwMUMsIDB4OTAyMCwgMHg3MzFCLCAweDU0MjAsIDB4QkUw
 MywKKyAgICAweDk4MjUsIDB4MTAyNSwgMHgyMDFDLCAweDkwMjUsIDB4NzMy
 NSwgMHg1NDE0LCAweEJFMDMsIDB4OEI4RSwgMHg5ODgwLAorICAgIDB4Njky
 RiwgMHhFMzg4LCAweDA1MzksIDB4QkU1OSwgMHhCQjA3LCAweDYxODAsIDB4
 OTg4MCwgMHg4QkEwLCAweDEwMUYsCisgICAgMHgzMDFELCAweDkwMjEsIDB4
 NzMxQiwgMHg1NDIxLCAweEJFMDMsIDB4OTgyRSwgMHgxMDJFLCAweDIwMUQs
 IDB4OTAyRSwKKyAgICAweDczMkUsIDB4NTQxNSwgMHhCRTAzLCAweDk4ODAs
 IDB4NjkyRiwgMHhFMzg4LCAweDA1NEYsIDB4QkU1OSwgMHhCQjA3LAorICAg
 IDB4NjE4MCwgMHg5ODgwLCAweDhCQTAsIDB4NjkxOCwgMHhFRjA4LCAweDcz
 MjUsIDB4NTQxNiwgMHhCRTAzLCAweDk4QTAsCisgICAgMHg3MzJFLCAweDU0
 MTcsIDB4QkUwMywgMHg5OEEwLCAweEVGMDAsIDB4OEJBMCwgMHhCRUM2LCAw
 eDA1NkIsIDB4QkU1OSwKKyAgICAweEJCMDQsIDB4QUE5MCwgMHhCRTA0LCAw
 eEJFMUUsIDB4OTlFMCwgMHg4QkUwLCAweDY5QTAsIDB4OTBEMCwgMHg2OUEw
 LCAKKyAgICAweDkwRDAsIDB4MDgxRiwgMHhCODA1LCAweDg4MUYsIDB4OEI5
 MCwgMHg2OUEwLCAweDkwRDAsIDB4NjlBMCwgMHg5MDkwLAorICAgIDB4OEJE
 MCwgMHg4QkQ4LCAweEJFMUYsIDB4RUYwMCwgMHgwMDAwLCAweDAwMDAsIDB4
 MDAwMCwgMHgwMDAwLCAweDAwMDAsCisgICAgMHgwMDAwLCAweDAwMDAsIDB4
 MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAs
 IDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAs
 IDB4MDAwMCwgMHgwMDAwLAorfTsKKwordWludDE2X3QgbWluaXNyY19scGZb
 MTBdID0geworCTBYMDc0MywgMFgxMTA0LCAwWDBBNEMsIDBYRjg4RCwgMFgy
 NDJDLAorCTBYMTAyMywgMFgxQUE5LCAwWDBCNjAsIDBYRUZERCwgMFgxODZG
 Cit9OworCisjZW5kaWYJLyogIV9ERVZfU09VTkRfUENJX0FMTEVHUk9fQ09E
 RV9IICovCmRpZmYgLXJ1TiBkZXYvc291bmQvcGNpLmVtdTEway9hbGxlZ3Jv
 X3JlZy5oIGRldi9zb3VuZC9wY2kvYWxsZWdyb19yZWcuaAotLS0gZGV2L3Nv
 dW5kL3BjaS5lbXUxMGsvYWxsZWdyb19yZWcuaAkxOTcwLTAxLTAxIDAwOjAw
 OjAwLjAwMDAwMDAwMCArMDAwMAorKysgZGV2L3NvdW5kL3BjaS9hbGxlZ3Jv
 X3JlZy5oCTIwMTEtMDEtMTIgMTA6MDM6MjEuMDAwMDAwMDAwICswMDAwCkBA
 IC0wLDAgKzEsNzg5IEBACisvKi0KKyAqIENvcHlyaWdodCAoYykgMTk5Ni0y
 MDA4LCA0RnJvbnQgVGVjaG5vbG9naWVzCisgKiBDb3B5cmlnaHQgKEMpIDE5
 OTItMjAwMCAgRG9uIEtpbSAoZG9uLmtpbUBlc3N0ZWNoLmNvbSkKKyAqIEFs
 bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
 IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
 b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
 dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
 KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
 aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
 c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
 LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
 cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
 dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
 Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
 CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
 SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
 UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
 T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
 TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
 UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
 TCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
 UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
 RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
 VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
 U1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
 QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisg
 KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
 VFksIFdIRVRIRVJJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks
 IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
 QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
 IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
 IE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiAkRnJlZUJTRCQKKyAqLwor
 CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogICAgICAg
 ICAgICAgIENvcHlyaWdodCAoQykgMTk5Ny0xOTk5LCBFU1MgVGVjaG5vbG9n
 eSwgSW5jLgorICogVGhpcyBzb3VyY2UgY29kZSwgaXRzIGNvbXBpbGVkIG9i
 amVjdCBjb2RlLCBhbmQgaXRzIGFzc29jaWF0ZWQgZGF0YSBzZXRzCisgKiBh
 cmUgY29weXJpZ2h0IChDKSAxOTk3LTE5OTkgRVNTIFRlY2hub2xvZ3ksIElu
 Yy4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBGb3Ig
 cHJhY3RpY2FsIHB1cnBvc2VzIHdlIG9ubHkgaW5jbHVkZSBuZWNlc3Nhcnkg
 ZGVmaW5pdGlvbnMgZm9yIGN1cnJlbnQKKyAqICBNYWVzdHJvMyBkcml2ZXIu
 IEZpbGVzIHVzZWQgZm9yIHRoaXMgaGVhZGVyIGluY2x1ZGU6CisgKiAgICBo
 YXJkd2FyZS5oCisgKiAgICBrZXJuZWwuaCBhbmQgaGNrZXJuZWwuaAorICog
 ICAgc3JjbWdyLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 CisgKi8KKworI2lmbmRlZiBfREVWX1NPVU5EX1BDSV9BTExFR1JPX1JFR19I
 CisjZGVmaW5lIF9ERVZfU09VTkRfUENJX0FMTEVHUk9fUkVHX0gKKworLyog
 QWxsZWdybyBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKi8KKyNkZWZp
 bmUgUENJX0xFR0FDWV9BVURJT19DVFJMICAgMHg0MAorI2RlZmluZSBTT1VO
 RF9CTEFTVEVSX0VOQUJMRSAgICAweDAwMDAwMDAxCisjZGVmaW5lIEZNX1NZ
 TlRIRVNJU19FTkFCTEUgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgR0FNRV9Q
 T1JUX0VOQUJMRSAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBNUFU0MDFf
 SU9fRU5BQkxFICAgICAgICAweDAwMDAwMDA4CisjZGVmaW5lIE1QVTQwMV9J
 UlFfRU5BQkxFICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgQUxJQVNfMTBC
 SVRfSU8gICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBTQl9ETUFfTUFT
 SyAgICAgICAgICAgICAweDAwMDAwMEMwCisjZGVmaW5lIFNCX0RNQV8wICAg
 ICAgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgU0JfRE1BXzEgICAg
 ICAgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBTQl9ETUFfUiAgICAg
 ICAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIFNCX0RNQV8zICAgICAg
 ICAgICAgICAgIDB4MDAwMDAwQzAKKyNkZWZpbmUgU0JfSVJRX01BU0sgICAg
 ICAgICAgICAgMHgwMDAwMDcwMAorI2RlZmluZSBTQl9JUlFfNSAgICAgICAg
 ICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFNCX0lSUV83ICAgICAgICAg
 ICAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgU0JfSVJRXzkgICAgICAgICAg
 ICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBTQl9JUlFfMTAgICAgICAgICAg
 ICAgICAweDAwMDAwMzAwCisjZGVmaW5lIE1JRElfSVJRX01BU0sgICAgICAg
 ICAgIDB4MDAwMDM4MDAKKyNkZWZpbmUgU0VSSUFMX0lSUV9FTkFCTEUgICAg
 ICAgMHgwMDAwNDAwMAorI2RlZmluZSBESVNBQkxFX0xFR0FDWSAgICAgICAg
 ICAweDAwMDA4MDAwCisKKyNkZWZpbmUgUENJX0FMTEVHUk9fQ09ORklHICAg
 ICAgMHg1MAorI2RlZmluZSBTQl9BRERSXzI0MCAgICAgICAgICAgICAweDAw
 MDAwMDA0CisjZGVmaW5lIE1QVV9BRERSX01BU0sgICAgICAgICAgIDB4MDAw
 MDAwMTgKKyNkZWZpbmUgTVBVX0FERFJfMzMwICAgICAgICAgICAgMHgwMDAw
 MDAwMAorI2RlZmluZSBNUFVfQUREUl8zMDAgICAgICAgICAgICAweDAwMDAw
 MDA4CisjZGVmaW5lIE1QVV9BRERSXzMyMCAgICAgICAgICAgIDB4MDAwMDAw
 MTAKKyNkZWZpbmUgTVBVX0FERFJfMzQwICAgICAgICAgICAgMHgwMDAwMDAx
 OAorI2RlZmluZSBVU0VfUENJX1RJTUlORyAgICAgICAgICAweDAwMDAwMDQw
 CisjZGVmaW5lIFBPU1RFRF9XUklURV9FTkFCTEUgICAgIDB4MDAwMDAwODAK
 KyNkZWZpbmUgRE1BX1BPTElDWV9NQVNLICAgICAgICAgMHgwMDAwMDcwMAor
 I2RlZmluZSBETUFfRERNQSAgICAgICAgICAgICAgICAweDAwMDAwMDAwCisj
 ZGVmaW5lIERNQV9URE1BICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKyNk
 ZWZpbmUgRE1BX1BDUENJICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorI2Rl
 ZmluZSBETUFfV0JETUExNiAgICAgICAgICAgICAweDAwMDAwNDAwCisjZGVm
 aW5lIERNQV9XQkRNQTQgICAgICAgICAgICAgIDB4MDAwMDA1MDAKKyNkZWZp
 bmUgRE1BX1dCRE1BMiAgICAgICAgICAgICAgMHgwMDAwMDYwMAorI2RlZmlu
 ZSBETUFfV0JETUExICAgICAgICAgICAgICAweDAwMDAwNzAwCisjZGVmaW5l
 IERNQV9TQUZFX0dVQVJEICAgICAgICAgIDB4MDAwMDA4MDAKKyNkZWZpbmUg
 SElfUEVSRl9HUF9FTkFCTEUgICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBQ
 SUNfU05PT1BfTU9ERV8wICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIFBJ
 Q19TTk9PUF9NT0RFXzEgICAgICAgIDB4MDAwMDQwMDAKKyNkZWZpbmUgU09V
 TkRCTEFTVEVSX0lSUV9NQVNLICAgMHgwMDAwODAwMAorI2RlZmluZSBSSU5H
 X0lOX0VOQUJMRSAgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIFNQRElG
 X1RFU1RfTU9ERSAgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZpbmUgQ0xLX01V
 TFRfTU9ERV9TRUxFQ1RfMiAgMHgwMDA0MDAwMAorI2RlZmluZSBFRVBST01f
 V1JJVEVfRU5BQkxFICAgICAweDAwMDgwMDAwCisjZGVmaW5lIENPREVDX0RJ
 Ul9JTiAgICAgICAgICAgIDB4MDAxMDAwMDAKKyNkZWZpbmUgSFZfQlVUVE9O
 X0ZST01fR0QgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBSRURVQ0VEX0RF
 Qk9VTkNFICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIEhWX0NUUkxfRU5B
 QkxFICAgICAgICAgIDB4MDA4MDAwMDAKKyNkZWZpbmUgU1BESUZfRU5BQkxF
 ICAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBDTEtfRElWX1NFTEVD
 VCAgICAgICAgICAweDA2MDAwMDAwCisjZGVmaW5lIENMS19ESVZfQllfNDgg
 ICAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgQ0xLX0RJVl9CWV80OSAg
 ICAgICAgICAgMHgwMjAwMDAwMAorI2RlZmluZSBDTEtfRElWX0JZXzUwICAg
 ICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIENMS19ESVZfUkVTRVJWRUQg
 ICAgICAgIDB4MDYwMDAwMDAKKyNkZWZpbmUgUE1fQ1RSTF9FTkFCTEUgICAg
 ICAgICAgMHgwODAwMDAwMAorI2RlZmluZSBDTEtfTVVMVF9NT0RFX1NFTEVD
 VCAgICAweDMwMDAwMDAwCisjZGVmaW5lIENMS19NVUxUX01PREVfU0hJRlQg
 ICAgIDI4CisjZGVmaW5lIENMS19NVUxUX01PREVfMCAgICAgICAgIDB4MDAw
 MDAwMDAKKyNkZWZpbmUgQ0xLX01VTFRfTU9ERV8xICAgICAgICAgMHgxMDAw
 MDAwMAorI2RlZmluZSBDTEtfTVVMVF9NT0RFXzIgICAgICAgICAweDIwMDAw
 MDAwCisjZGVmaW5lIENMS19NVUxUX01PREVfMyAgICAgICAgIDB4MzAwMDAw
 MDAKKyNkZWZpbmUgSU5UX0NMS19TRUxFQ1QgICAgICAgICAgMHg0MDAwMDAw
 MAorI2RlZmluZSBJTlRfQ0xLX01VTFRfUkVTRVQgICAgICAweDgwMDAwMDAw
 CisKKy8qIE0zICovCisjZGVmaW5lIElOVF9DTEtfU1JDX05PVF9QQ0kgICAg
 IDB4MDAxMDAwMDAKKyNkZWZpbmUgSU5UX0NMS19NVUxUX0VOQUJMRSAgICAg
 MHg4MDAwMDAwMAorCisjZGVmaW5lIFBDSV9BQ1BJX0NPTlRST0wgICAgICAg
 IDB4NTQKKyNkZWZpbmUgUENJX0FDUElfRDAgICAgICAgICAgICAgMHgwMDAw
 MDAwMAorI2RlZmluZSBQQ0lfQUNQSV9EMSAgICAgICAgICAgICAweEI0Rjcw
 MDAwCisjZGVmaW5lIFBDSV9BQ1BJX0QyICAgICAgICAgICAgIDB4QjRGN0I0
 RjcKKworI2RlZmluZSBQQ0lfVVNFUl9DT05GSUcgICAgICAgICAweDU4Cisj
 ZGVmaW5lIEVYVF9QQ0lfTUFTVEVSX0VOQUJMRSAgIDB4MDAwMDAwMDEKKyNk
 ZWZpbmUgU1BESUZfT1VUX1NFTEVDVCAgICAgICAgMHgwMDAwMDAwMgorI2Rl
 ZmluZSBURVNUX1BJTl9ESVJfQ1RSTCAgICAgICAweDAwMDAwMDA0CisjZGVm
 aW5lIEFDOTdfQ09ERUNfVEVTVCAgICAgICAgIDB4MDAwMDAwMjAKKyNkZWZp
 bmUgVFJJX1NUQVRFX0JVRkZFUiAgICAgICAgMHgwMDAwMDA4MAorI2RlZmlu
 ZSBJTl9DTEtfMTJNSFpfU0VMRUNUICAgICAweDAwMDAwMTAwCisjZGVmaW5l
 IE1VTFRJX0ZVTkNfRElTQUJMRSAgICAgIDB4MDAwMDAyMDAKKyNkZWZpbmUg
 RVhUX01BU1RFUl9QQUlSX1NFTCAgICAgMHgwMDAwMDQwMAorI2RlZmluZSBQ
 Q0lfTUFTVEVSX1NVUFBPUlQgICAgICAweDAwMDAwODAwCisjZGVmaW5lIFNU
 T1BfQ0xPQ0tfRU5BQkxFICAgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgRUFQ
 RF9EUklWRV9FTkFCTEUgICAgICAgMHgwMDAwMjAwMAorI2RlZmluZSBSRVFf
 VFJJX1NUQVRFX0VOQUJMRSAgICAweDAwMDA0MDAwCisjZGVmaW5lIFJFUV9M
 T1dfRU5BQkxFICAgICAgICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgTUlESV8x
 X0VOQUJMRSAgICAgICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBNSURJXzJf
 RU5BQkxFICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIFNCX0FVRElP
 X1NZTkMgICAgICAgICAgIDB4MDAwNDAwMDAKKyNkZWZpbmUgSFZfQ1RSTF9U
 RVNUICAgICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBTT1VOREJMQVNU
 RVJfVEVTVCAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgUENJX1VTRVJf
 Q09ORklHX0MgICAgICAgMHg1QworCisjZGVmaW5lIFBDSV9ERE1BX0NUUkwg
 ICAgICAgICAgIDB4NjAKKyNkZWZpbmUgRERNQV9FTkFCTEUgICAgICAgICAg
 ICAgMHgwMDAwMDAwMQorCisKKy8qIEFsbGVncm8gcmVnaXN0ZXJzICovCisj
 ZGVmaW5lIEhPU1RfSU5UX0NUUkwgICAgICAgICAgIDB4MTgKKyNkZWZpbmUg
 U0JfSU5UX0VOQUJMRSAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIE1QVTQw
 MV9JTlRfRU5BQkxFICAgICAgIDB4MDAwMgorI2RlZmluZSBBU1NQX0lOVF9F
 TkFCTEUgICAgICAgICAweDAwMTAKKyNkZWZpbmUgUklOR19JTlRfRU5BQkxF
 ICAgICAgICAgMHgwMDIwCisjZGVmaW5lIEhWX0lOVF9FTkFCTEUgICAgICAg
 ICAgIDB4MDA0MAorI2RlZmluZSBDTEtSVU5fR0VOX0VOQUJMRSAgICAgICAw
 eDAxMDAKKyNkZWZpbmUgSFZfQ1RSTF9UT19QTUUgICAgICAgICAgMHgwNDAw
 CisjZGVmaW5lIFNPRlRXQVJFX1JFU0VUX0VOQUJMRSAgIDB4ODAwMAorCisj
 ZGVmaW5lIEhPU1RfSU5UX1NUQVRVUyAgICAgICAgIDB4MUEKKyNkZWZpbmUg
 U0JfSU5UX1BFTkRJTkcgICAgICAgICAgMHgwMQorI2RlZmluZSBNUFU0MDFf
 SU5UX1BFTkRJTkcgICAgICAweDAyCisjZGVmaW5lIEFTU1BfSU5UX1BFTkRJ
 TkcgICAgICAgIDB4MTAKKyNkZWZpbmUgUklOR19JTlRfUEVORElORyAgICAg
 ICAgMHgyMAorI2RlZmluZSBIVl9JTlRfUEVORElORyAgICAgICAgICAweDQw
 CisKKyNkZWZpbmUgSEFSRFdBUkVfVk9MX0NUUkwgICAgICAgMHgxQgorI2Rl
 ZmluZSBTSEFET1dfTUlYX1JFR19WT0lDRSAgICAweDFDCisjZGVmaW5lIEhX
 X1ZPTF9DT1VOVEVSX1ZPSUNFICAgIDB4MUQKKyNkZWZpbmUgU0hBRE9XX01J
 WF9SRUdfTUFTVEVSICAgMHgxRQorI2RlZmluZSBIV19WT0xfQ09VTlRFUl9N
 QVNURVIgICAweDFGCisKKyNkZWZpbmUgQ09ERUNfQ09NTUFORCAgICAgICAg
 ICAgMHgzMAorI2RlZmluZSBDT0RFQ19SRUFEX0IgICAgICAgICAgICAweDgw
 CisKKyNkZWZpbmUgQ09ERUNfU1RBVFVTICAgICAgICAgICAgMHgzMAorI2Rl
 ZmluZSBDT0RFQ19CVVNZX0IgICAgICAgICAgICAweDAxCisKKyNkZWZpbmUg
 Q09ERUNfREFUQSAgICAgICAgICAgICAgMHgzMgorCisvKiBBQzk3IHJlZ2lz
 dGVycyAqLworI2lmbmRlZiBNM19NT0RFTAorI2RlZmluZSBBQzk3X1JFU0VU
 ICAgICAgICAgICAgICAweDAwCisjZW5kaWYKKworI2RlZmluZSBBQzk3X1ZP
 TF9NVVRFX0IgICAgICAgICAweDgwMDAKKyNkZWZpbmUgQUM5N19WT0xfTSAg
 ICAgICAgICAgICAgMHgxRgorI2RlZmluZSBBQzk3X0xFRlRfVk9MX1MgICAg
 ICAgICA4CisKKyNkZWZpbmUgQUM5N19NQVNURVJfVk9MICAgICAgICAgMHgw
 MgorI2RlZmluZSBBQzk3X0xJTkVfTEVWRUxfVk9MICAgICAweDA0CisjZGVm
 aW5lIEFDOTdfTUFTVEVSX01PTk9fVk9MICAgIDB4MDYKKyNkZWZpbmUgQUM5
 N19QQ19CRUVQX1ZPTCAgICAgICAgMHgwQQorI2RlZmluZSBBQzk3X1BDX0JF
 RVBfVk9MX00gICAgICAweDBGCisjZGVmaW5lIEFDOTdfU1JPVU5EX01BU1RF
 Ul9WT0wgIDB4MzgKKyNkZWZpbmUgQUM5N19QQ19CRUVQX1ZPTF9TICAgICAg
 MQorCisjaWZuZGVmIE0zX01PREVMCisjZGVmaW5lIEFDOTdfUEhPTkVfVk9M
 ICAgICAgICAgIDB4MEMKKyNkZWZpbmUgQUM5N19NSUNfVk9MICAgICAgICAg
 ICAgMHgwRQorI2VuZGlmCisjZGVmaW5lIEFDOTdfTUlDXzIwREJfRU5BQkxF
 ICAgIDB4NDAKKworI2lmbmRlZiBNM19NT0RFTAorI2RlZmluZSBBQzk3X0xJ
 TkVJTl9WT0wgICAgICAgICAweDEwCisjZGVmaW5lIEFDOTdfQ0RfVk9MICAg
 ICAgICAgICAgIDB4MTIKKyNkZWZpbmUgQUM5N19WSURFT19WT0wgICAgICAg
 ICAgMHgxNAorI2RlZmluZSBBQzk3X0FVWF9WT0wgICAgICAgICAgICAweDE2
 CisjZW5kaWYKKyNkZWZpbmUgQUM5N19QQ01fT1VUX1ZPTCAgICAgICAgMHgx
 OAorI2lmbmRlZiBNM19NT0RFTAorI2RlZmluZSBBQzk3X1JFQ09SRF9TRUxF
 Q1QgICAgICAweDFBCisjZW5kaWYKKyNkZWZpbmUgQUM5N19SRUNPUkRfTUlD
 ICAgICAgICAgMHgwMAorI2RlZmluZSBBQzk3X1JFQ09SRF9DRCAgICAgICAg
 ICAweDAxCisjZGVmaW5lIEFDOTdfUkVDT1JEX1ZJREVPICAgICAgIDB4MDIK
 KyNkZWZpbmUgQUM5N19SRUNPUkRfQVVYICAgICAgICAgMHgwMworI2RlZmlu
 ZSBBQzk3X1JFQ09SRF9NT05PX01VWCAgICAweDAyCisjZGVmaW5lIEFDOTdf
 UkVDT1JEX0RJR0lUQUwgICAgIDB4MDMKKyNkZWZpbmUgQUM5N19SRUNPUkRf
 TElORSAgICAgICAgMHgwNAorI2RlZmluZSBBQzk3X1JFQ09SRF9TVEVSRU8g
 ICAgICAweDA1CisjZGVmaW5lIEFDOTdfUkVDT1JEX01PTk8gICAgICAgIDB4
 MDYKKyNkZWZpbmUgQUM5N19SRUNPUkRfUEhPTkUgICAgICAgMHgwNworCisj
 aWZuZGVmIE0zX01PREVMCisjZGVmaW5lIEFDOTdfUkVDT1JEX0dBSU4gICAg
 ICAgIDB4MUMKKyNlbmRpZgorI2RlZmluZSBBQzk3X1JFQ09SRF9WT0xfTSAg
 ICAgICAweDBGCisKKyNpZm5kZWYgTTNfTU9ERUwKKyNkZWZpbmUgQUM5N19H
 RU5FUkFMX1BVUlBPU0UgICAgMHgyMAorI2VuZGlmCisjZGVmaW5lIEFDOTdf
 UE9XRVJfRE9XTl9DVFJMICAgIDB4MjYKKyNkZWZpbmUgQUM5N19BRENfUkVB
 RFkgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIEFDOTdfREFDX1JFQURZICAg
 ICAgICAgIDB4MDAwMgorI2RlZmluZSBBQzk3X0FOQUxPR19SRUFEWSAgICAg
 ICAweDAwMDQKKyNkZWZpbmUgQUM5N19WUkVGX09OICAgICAgICAgICAgMHgw
 MDA4CisjZGVmaW5lIEFDOTdfUFIwICAgICAgICAgICAgICAgIDB4MDEwMAor
 I2RlZmluZSBBQzk3X1BSMSAgICAgICAgICAgICAgICAweDAyMDAKKyNkZWZp
 bmUgQUM5N19QUjIgICAgICAgICAgICAgICAgMHgwNDAwCisjZGVmaW5lIEFD
 OTdfUFIzICAgICAgICAgICAgICAgIDB4MDgwMAorI2RlZmluZSBBQzk3X1BS
 NCAgICAgICAgICAgICAgICAweDEwMDAKKworI2RlZmluZSBBQzk3X1JFU0VS
 VkVEMSAgICAgICAgICAweDI4CisKKyNkZWZpbmUgQUM5N19WRU5ET1JfVEVT
 VCAgICAgICAgMHg1QQorCisjZGVmaW5lIEFDOTdfQ0xPQ0tfREVMQVkgICAg
 ICAgIDB4NUMKKyNkZWZpbmUgQUM5N19MSU5FT1VUX01VWF9TRUwgICAgMHgw
 MDAxCisjZGVmaW5lIEFDOTdfTU9OT19NVVhfU0VMICAgICAgIDB4MDAwMgor
 I2RlZmluZSBBQzk3X0NMT0NLX0RFTEFZX1NFTCAgICAweDFGCisjZGVmaW5l
 IEFDOTdfREFDX0NEU19TSElGVCAgICAgIDYKKyNkZWZpbmUgQUM5N19BRENf
 Q0RTX1NISUZUICAgICAgMTEKKworI2RlZmluZSBBQzk3X01VTFRJX0NIQU5O
 RUxfU0VMICAweDc0CisKKyNpZm5kZWYgTTNfTU9ERUwKKyNkZWZpbmUgQUM5
 N19WRU5ET1JfSUQxICAgICAgICAgMHg3QworI2RlZmluZSBBQzk3X1ZFTkRP
 Ul9JRDIgICAgICAgICAweDdFCisjZW5kaWYKKworI2RlZmluZSBSSU5HX0JV
 U19DVFJMX0EgICAgICAgICAweDM2CisjZGVmaW5lIFJBQ19QTUVfRU5BQkxF
 ICAgICAgICAgIDB4MDEwMAorI2RlZmluZSBSQUNfU0RGU19FTkFCTEUgICAg
 ICAgICAweDAyMDAKKyNkZWZpbmUgTEFDX1BNRV9FTkFCTEUgICAgICAgICAg
 MHgwNDAwCisjZGVmaW5lIExBQ19TREZTX0VOQUJMRSAgICAgICAgIDB4MDgw
 MAorI2RlZmluZSBTRVJJQUxfQUNfTElOS19FTkFCTEUgICAweDEwMDAKKyNk
 ZWZpbmUgSU9fU1JBTV9FTkFCTEUgICAgICAgICAgMHgyMDAwCisjZGVmaW5l
 IElJU19JTlBVVF9FTkFCTEUgICAgICAgIDB4ODAwMAorCisjZGVmaW5lIFJJ
 TkdfQlVTX0NUUkxfQiAgICAgICAgIDB4MzgKKyNkZWZpbmUgU0VDT05EX0NP
 REVDX0lEX01BU0sgICAgMHgwMDAzCisjZGVmaW5lIFNQRElGX0ZVTkNfRU5B
 QkxFICAgICAgIDB4MDAxMAorI2RlZmluZSBTRUNPTkRfQUNfRU5BQkxFICAg
 ICAgICAweDAwMjAKKyNkZWZpbmUgU0JfTU9EVUxFX0lOVEZfRU5BQkxFICAg
 MHgwMDQwCisjZGVmaW5lIFNTUEVfRU5BQkxFICAgICAgICAgICAgIDB4MDA0
 MAorI2RlZmluZSBNM0lfRE9DS19FTkFCTEUgICAgICAgICAweDAwODAKKwor
 I2RlZmluZSBTRE9fT1VUX0RFU1RfQ1RSTCAgICAgICAweDNBCisjZGVmaW5l
 IENPTU1BTkRfQUREUl9PVVQgICAgICAgIDB4MDAwMworI2RlZmluZSBQQ01f
 TFJfT1VUX0xPQ0FMICAgICAgICAweDAwMDAKKyNkZWZpbmUgUENNX0xSX09V
 VF9SRU1PVEUgICAgICAgMHgwMDA0CisjZGVmaW5lIFBDTV9MUl9PVVRfTVVU
 RSAgICAgICAgIDB4MDAwOAorI2RlZmluZSBQQ01fTFJfT1VUX0JPVEggICAg
 ICAgICAweDAwMEMKKyNkZWZpbmUgTElORTFfREFDX09VVF9MT0NBTCAgICAg
 MHgwMDAwCisjZGVmaW5lIExJTkUxX0RBQ19PVVRfUkVNT1RFICAgIDB4MDAx
 MAorI2RlZmluZSBMSU5FMV9EQUNfT1VUX01VVEUgICAgICAweDAwMjAKKyNk
 ZWZpbmUgTElORTFfREFDX09VVF9CT1RIICAgICAgMHgwMDMwCisjZGVmaW5l
 IFBDTV9DTFNfT1VUX0xPQ0FMICAgICAgIDB4MDAwMAorI2RlZmluZSBQQ01f
 Q0xTX09VVF9SRU1PVEUgICAgICAweDAwNDAKKyNkZWZpbmUgUENNX0NMU19P
 VVRfTVVURSAgICAgICAgMHgwMDgwCisjZGVmaW5lIFBDTV9DTFNfT1VUX0JP
 VEggICAgICAgIDB4MDBDMAorI2RlZmluZSBQQ01fUkxGX09VVF9MT0NBTCAg
 ICAgICAweDAwMDAKKyNkZWZpbmUgUENNX1JMRl9PVVRfUkVNT1RFICAgICAg
 MHgwMTAwCisjZGVmaW5lIFBDTV9STEZfT1VUX01VVEUgICAgICAgIDB4MDIw
 MAorI2RlZmluZSBQQ01fUkxGX09VVF9CT1RIICAgICAgICAweDAzMDAKKyNk
 ZWZpbmUgTElORTJfREFDX09VVF9MT0NBTCAgICAgMHgwMDAwCisjZGVmaW5l
 IExJTkUyX0RBQ19PVVRfUkVNT1RFICAgIDB4MDQwMAorI2RlZmluZSBMSU5F
 Ml9EQUNfT1VUX01VVEUgICAgICAweDA4MDAKKyNkZWZpbmUgTElORTJfREFD
 X09VVF9CT1RIICAgICAgMHgwQzAwCisjZGVmaW5lIEhBTkRTRVRfT1VUX0xP
 Q0FMICAgICAgIDB4MDAwMAorI2RlZmluZSBIQU5EU0VUX09VVF9SRU1PVEUg
 ICAgICAweDEwMDAKKyNkZWZpbmUgSEFORFNFVF9PVVRfTVVURSAgICAgICAg
 MHgyMDAwCisjZGVmaW5lIEhBTkRTRVRfT1VUX0JPVEggICAgICAgIDB4MzAw
 MAorI2RlZmluZSBJT19DVFJMX09VVF9MT0NBTCAgICAgICAweDAwMDAKKyNk
 ZWZpbmUgSU9fQ1RSTF9PVVRfUkVNT1RFICAgICAgMHg0MDAwCisjZGVmaW5l
 IElPX0NUUkxfT1VUX01VVEUgICAgICAgIDB4ODAwMAorI2RlZmluZSBJT19D
 VFJMX09VVF9CT1RIICAgICAgICAweEMwMDAKKworI2RlZmluZSBTRE9fSU5f
 REVTVF9DVFJMICAgICAgICAweDNDCisjZGVmaW5lIFNUQVRVU19BRERSX0lO
 ICAgICAgICAgIDB4MDAwMworI2RlZmluZSBQQ01fTFJfSU5fTE9DQUwgICAg
 ICAgICAweDAwMDAKKyNkZWZpbmUgUENNX0xSX0lOX1JFTU9URSAgICAgICAg
 MHgwMDA0CisjZGVmaW5lIFBDTV9MUl9SRVNFUlZFRCAgICAgICAgIDB4MDAw
 OAorI2RlZmluZSBQQ01fTFJfSU5fQk9USCAgICAgICAgICAweDAwMEMKKyNk
 ZWZpbmUgTElORTFfQURDX0lOX0xPQ0FMICAgICAgMHgwMDAwCisjZGVmaW5l
 IExJTkUxX0FEQ19JTl9SRU1PVEUgICAgIDB4MDAxMAorI2RlZmluZSBMSU5F
 MV9BRENfSU5fTVVURSAgICAgICAweDAwMjAKKyNkZWZpbmUgTUlDX0FEQ19J
 Tl9MT0NBTCAgICAgICAgMHgwMDAwCisjZGVmaW5lIE1JQ19BRENfSU5fUkVN
 T1RFICAgICAgIDB4MDA0MAorI2RlZmluZSBNSUNfQURDX0lOX01VVEUgICAg
 ICAgICAweDAwODAKKyNkZWZpbmUgTElORTJfREFDX0lOX0xPQ0FMICAgICAg
 MHgwMDAwCisjZGVmaW5lIExJTkUyX0RBQ19JTl9SRU1PVEUgICAgIDB4MDQw
 MAorI2RlZmluZSBMSU5FMl9EQUNfSU5fTVVURSAgICAgICAweDA4MDAKKyNk
 ZWZpbmUgSEFORFNFVF9JTl9MT0NBTCAgICAgICAgMHgwMDAwCisjZGVmaW5l
 IEhBTkRTRVRfSU5fUkVNT1RFICAgICAgIDB4MTAwMAorI2RlZmluZSBIQU5E
 U0VUX0lOX01VVEUgICAgICAgICAweDIwMDAKKyNkZWZpbmUgSU9fU1RBVFVT
 X0lOX0xPQ0FMICAgICAgMHgwMDAwCisjZGVmaW5lIElPX1NUQVRVU19JTl9S
 RU1PVEUgICAgIDB4NDAwMAorCisjZGVmaW5lIFNQRElGX0lOX0NUUkwgICAg
 ICAgICAgIDB4M0UKKyNkZWZpbmUgU1BESUZfSU5fRU5BQkxFICAgICAgICAg
 MHgwMDAxCisKKyNkZWZpbmUgR1BJT19EQVRBICAgICAgICAgICAgICAgMHg2
 MAorI2RlZmluZSBHUElPX0RBVEFfTUFTSyAgICAgICAgICAweDBGRkYKKyNk
 ZWZpbmUgR1BJT19IVl9TVEFUVVMgICAgICAgICAgMHgzMDAwCisjZGVmaW5l
 IEdQSU9fUE1FX1NUQVRVUyAgICAgICAgIDB4NDAwMAorCisjZGVmaW5lIEdQ
 SU9fTUFTSyAgICAgICAgICAgICAgIDB4NjQKKyNkZWZpbmUgR1BJT19ESVJF
 Q1RJT04gICAgICAgICAgMHg2OAorI2RlZmluZSBHUE9fUFJJTUFSWV9BQzk3
 ICAgICAgICAweDAwMDEKKyNkZWZpbmUgR1BJX0xJTkVPVVRfU0VOU0UgICAg
 ICAgMHgwMDA0CisjZGVmaW5lIEdQT19TRUNPTkRBUllfQUM5NyAgICAgIDB4
 MDAwOAorI2RlZmluZSBHUElfVk9MX0RPV04gICAgICAgICAgICAweDAwMTAK
 KyNkZWZpbmUgR1BJX1ZPTF9VUCAgICAgICAgICAgICAgMHgwMDIwCisjZGVm
 aW5lIEdQSV9JSVNfQ0xLICAgICAgICAgICAgIDB4MDA0MAorI2RlZmluZSBH
 UElfSUlTX0xSQ0xLICAgICAgICAgICAweDAwODAKKyNkZWZpbmUgR1BJX0lJ
 U19EQVRBICAgICAgICAgICAgMHgwMTAwCisjZGVmaW5lIEdQSV9ET0NLSU5H
 X1NUQVRVUyAgICAgIDB4MDEwMAorI2RlZmluZSBHUElfSEVBRFBIT05FX1NF
 TlNFICAgICAweDAyMDAKKyNkZWZpbmUgR1BPX0VYVF9BTVBfU0hVVERPV04g
 ICAgMHgxMDAwCisKKy8qIE0zICovCisjZGVmaW5lIEdQT19NM19FWFRfQU1Q
 X1NIVVRETiAgIDB4MDAwMgorCisjZGVmaW5lIEFTU1BfSU5ERVhfUE9SVCAg
 ICAgICAgIDB4ODAKKyNkZWZpbmUgQVNTUF9NRU1PUllfUE9SVCAgICAgICAg
 MHg4MgorI2RlZmluZSBBU1NQX0RBVEFfUE9SVCAgICAgICAgICAweDg0CisK
 KyNkZWZpbmUgTVBVNDAxX0RBVEFfUE9SVCAgICAgICAgMHg5OAorI2RlZmlu
 ZSBNUFU0MDFfU1RBVFVTX1BPUlQgICAgICAweDk5CisKKyNkZWZpbmUgQ0xL
 X01VTFRfREFUQV9QT1JUICAgICAgMHg5QworCisjZGVmaW5lIEFTU1BfQ09O
 VFJPTF9BICAgICAgICAgIDB4QTIKKyNkZWZpbmUgQVNTUF8wX1dTX0VOQUJM
 RSAgICAgICAgMHgwMQorI2RlZmluZSBBU1NQX0NUUkxfQV9SRVNFUlZFRDEg
 ICAweDAyCisjZGVmaW5lIEFTU1BfQ1RSTF9BX1JFU0VSVkVEMiAgIDB4MDQK
 KyNkZWZpbmUgQVNTUF9DTEtfNDlNSFpfU0VMRUNUICAgMHgwOAorI2RlZmlu
 ZSBGQVNUX1BMVV9FTkFCTEUgICAgICAgICAweDEwCisjZGVmaW5lIEFTU1Bf
 Q1RSTF9BX1JFU0VSVkVEMyAgIDB4MjAKKyNkZWZpbmUgRFNQX0NMS18zNk1I
 Wl9TRUxFQ1QgICAgMHg0MAorCisjZGVmaW5lIEFTU1BfQ09OVFJPTF9CICAg
 ICAgICAgIDB4QTQKKyNkZWZpbmUgUkVTRVRfQVNTUCAgICAgICAgICAgICAg
 MHgwMAorI2RlZmluZSBSVU5fQVNTUCAgICAgICAgICAgICAgICAweDAxCisj
 ZGVmaW5lIEVOQUJMRV9BU1NQX0NMT0NLICAgICAgIDB4MDAKKyNkZWZpbmUg
 U1RPUF9BU1NQX0NMT0NLICAgICAgICAgMHgxMAorI2RlZmluZSBSRVNFVF9U
 T0dHTEUgICAgICAgICAgICAweDQwCisKKyNkZWZpbmUgQVNTUF9DT05UUk9M
 X0MgICAgICAgICAgMHhBNgorI2RlZmluZSBBU1NQX0hPU1RfSU5UX0VOQUJM
 RSAgICAweDAxCisjZGVmaW5lIEZNX0FERFJfUkVNQVBfRElTQUJMRSAgIDB4
 MDIKKyNkZWZpbmUgSE9TVF9XUklURV9QT1JUX0VOQUJMRSAgMHgwOAorCisj
 ZGVmaW5lIEFTU1BfSE9TVF9JTlRfU1RBVFVTICAgIDB4QUMKKyNkZWZpbmUg
 RFNQMkhPU1RfUkVRX1BJT1JFQ09SRCAgMHgwMQorI2RlZmluZSBEU1AySE9T
 VF9SRVFfSTJTUkFURSAgICAweDAyCisjZGVmaW5lIERTUDJIT1NUX1JFUV9U
 SU1FUiAgICAgIDB4MDQKKworLyoKKyAqIERTUCBtZW1vcnkgbWFwCisgKi8K
 KworI2RlZmluZSBSRVZfQV9DT0RFX01FTU9SWV9CRUdJTiAgICAgICAgIDB4
 MDAwMAorI2RlZmluZSBSRVZfQV9DT0RFX01FTU9SWV9FTkQgICAgICAgICAg
 IDB4MEZGRgorI2RlZmluZSBSRVZfQV9DT0RFX01FTU9SWV9VTklUX0xFTkdU
 SCAgIDB4MDA0MAorI2RlZmluZSBSRVZfQV9DT0RFX01FTU9SWV9MRU5HVEgg
 ICAgICAgIChSRVZfQV9DT0RFX01FTU9SWV9FTkQgLSBSRVZfQV9DT0RFX01F
 TU9SWV9CRUdJTiArIDEpCisKKyNkZWZpbmUgUkVWX0JfQ09ERV9NRU1PUllf
 QkVHSU4gICAgICAgICAweDAwMDAKKyNkZWZpbmUgUkVWX0JfQ09ERV9NRU1P
 UllfRU5EICAgICAgICAgICAweDBCRkYKKyNkZWZpbmUgUkVWX0JfQ09ERV9N
 RU1PUllfVU5JVF9MRU5HVEggICAweDAwNDAKKyNkZWZpbmUgUkVWX0JfQ09E
 RV9NRU1PUllfTEVOR1RIICAgICAgICAoUkVWX0JfQ09ERV9NRU1PUllfRU5E
 IC0gUkVWX0JfQ09ERV9NRU1PUllfQkVHSU4gKyAxKQorCisjaWYgKFJFVl9B
 X0NPREVfTUVNT1JZX0xFTkdUSCAlIFJFVl9BX0NPREVfTUVNT1JZX1VOSVRf
 TEVOR1RIKQorI2Vycm9yIEFzc3VtcHRpb24gYWJvdXQgY29kZSBtZW1vcnkg
 dW5pdCBsZW5ndGggZmFpbGVkLgorI2VuZGlmCisjaWYgKFJFVl9CX0NPREVf
 TUVNT1JZX0xFTkdUSCAlIFJFVl9CX0NPREVfTUVNT1JZX1VOSVRfTEVOR1RI
 KQorI2Vycm9yIEFzc3VtcHRpb24gYWJvdXQgY29kZSBtZW1vcnkgdW5pdCBs
 ZW5ndGggZmFpbGVkLgorI2VuZGlmCisKKyNkZWZpbmUgUkVWX0FfREFUQV9N
 RU1PUllfQkVHSU4gICAgICAgICAweDEwMDAKKyNkZWZpbmUgUkVWX0FfREFU
 QV9NRU1PUllfRU5EICAgICAgICAgICAweDJGRkYKKyNkZWZpbmUgUkVWX0Ff
 REFUQV9NRU1PUllfVU5JVF9MRU5HVEggICAweDAwODAKKyNkZWZpbmUgUkVW
 X0FfREFUQV9NRU1PUllfTEVOR1RIICAgICAgICAoUkVWX0FfREFUQV9NRU1P
 UllfRU5EIC0gUkVWX0FfREFUQV9NRU1PUllfQkVHSU4gKyAxKQorCisjZGVm
 aW5lIFJFVl9CX0RBVEFfTUVNT1JZX0JFR0lOICAgICAgICAgMHgxMDAwCisv
 KiNkZWZpbmUgUkVWX0JfREFUQV9NRU1PUllfRU5EICAgICAgICAgICAweDIz
 RkYgKi8KKyNkZWZpbmUgUkVWX0JfREFUQV9NRU1PUllfRU5EICAgICAgICAg
 ICAweDJCRkYKKyNkZWZpbmUgUkVWX0JfREFUQV9NRU1PUllfVU5JVF9MRU5H
 VEggICAweDAwODAKKyNkZWZpbmUgUkVWX0JfREFUQV9NRU1PUllfTEVOR1RI
 ICAgICAgICAoUkVWX0JfREFUQV9NRU1PUllfRU5EIC0gUkVWX0JfREFUQV9N
 RU1PUllfQkVHSU4gKyAxKQorCisjaWYgKFJFVl9BX0RBVEFfTUVNT1JZX0xF
 TkdUSCAlIFJFVl9BX0RBVEFfTUVNT1JZX1VOSVRfTEVOR1RIKQorI2Vycm9y
 IEFzc3VtcHRpb24gYWJvdXQgZGF0YSBtZW1vcnkgdW5pdCBsZW5ndGggZmFp
 bGVkLgorI2VuZGlmCisjaWYgKFJFVl9CX0RBVEFfTUVNT1JZX0xFTkdUSCAl
 IFJFVl9CX0RBVEFfTUVNT1JZX1VOSVRfTEVOR1RIKQorI2Vycm9yIEFzc3Vt
 cHRpb24gYWJvdXQgZGF0YSBtZW1vcnkgdW5pdCBsZW5ndGggZmFpbGVkLgor
 I2VuZGlmCisKKyNkZWZpbmUgQ09ERV9NRU1PUllfTUFQX0xFTkdUSCAgICAg
 ICAgICAoNjQgKyAxKQorI2RlZmluZSBEQVRBX01FTU9SWV9NQVBfTEVOR1RI
 ICAgICAgICAgICg2NCArIDEpCisKKyNpZiAoQ09ERV9NRU1PUllfTUFQX0xF
 TkdUSCA8ICgoUkVWX0FfQ09ERV9NRU1PUllfTEVOR1RIIC8gUkVWX0FfQ09E
 RV9NRU1PUllfVU5JVF9MRU5HVEgpICsgMSkpCisjZXJyb3IgQ29kZSBtZW1v
 cnkgbWFwIGxlbmd0aCB0b28gc2hvcnQuCisjZW5kaWYKKyNpZiAoREFUQV9N
 RU1PUllfTUFQX0xFTkdUSCA8ICgoUkVWX0FfREFUQV9NRU1PUllfTEVOR1RI
 IC8gUkVWX0FfREFUQV9NRU1PUllfVU5JVF9MRU5HVEgpICsgMSkpCisjZXJy
 b3IgRGF0YSBtZW1vcnkgbWFwIGxlbmd0aCB0b28gc2hvcnQuCisjZW5kaWYK
 KyNpZiAoQ09ERV9NRU1PUllfTUFQX0xFTkdUSCA8ICgoUkVWX0JfQ09ERV9N
 RU1PUllfTEVOR1RIIC8gUkVWX0JfQ09ERV9NRU1PUllfVU5JVF9MRU5HVEgp
 ICsgMSkpCisjZXJyb3IgQ29kZSBtZW1vcnkgbWFwIGxlbmd0aCB0b28gc2hv
 cnQuCisjZW5kaWYKKyNpZiAoREFUQV9NRU1PUllfTUFQX0xFTkdUSCA8ICgo
 UkVWX0JfREFUQV9NRU1PUllfTEVOR1RIIC8gUkVWX0JfREFUQV9NRU1PUllf
 VU5JVF9MRU5HVEgpICsgMSkpCisjZXJyb3IgRGF0YSBtZW1vcnkgbWFwIGxl
 bmd0aCB0b28gc2hvcnQuCisjZW5kaWYKKworCisvKgorICogS2VybmVsIGNv
 ZGUgbWVtb3J5IGRlZmluaXRpb24KKyAqLworCisjZGVmaW5lIEtDT0RFX1ZF
 Q1RPUlNfQkVHSU4gICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIEtDT0RF
 X1ZFQ1RPUlNfRU5EICAgICAgICAgICAgICAgMHgwMDJGCisjZGVmaW5lIEtD
 T0RFX1ZFQ1RPUlNfVU5JVF9MRU5HVEggICAgICAgMHgwMDAyCisjZGVmaW5l
 IEtDT0RFX1ZFQ1RPUlNfTEVOR1RIICAgICAgICAgICAgKEtDT0RFX1ZFQ1RP
 UlNfRU5EIC0gS0NPREVfVkVDVE9SU19CRUdJTiArIDEpCisKKworLyoKKyAq
 IEtlcm5lbCBkYXRhIG1lbW9yeSBkZWZpbml0aW9uCisgKi8KKworI2RlZmlu
 ZSBLREFUQV9CQVNFX0FERFIgICAgICAgICAgICAgICAgIDB4MTAwMAorI2Rl
 ZmluZSBLREFUQV9CQVNFX0FERFIyICAgICAgICAgICAgICAgIDB4MTA4MAor
 CisjZGVmaW5lIEtEQVRBX1RBU0swICAgICAgICAgICAgICAgICAgICAgKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDAwMCkKKyNkZWZpbmUgS0RBVEFfVEFTSzEg
 ICAgICAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDAx
 KQorI2RlZmluZSBLREFUQV9UQVNLMiAgICAgICAgICAgICAgICAgICAgIChL
 REFUQV9CQVNFX0FERFIgKyAweDAwMDIpCisjZGVmaW5lIEtEQVRBX1RBU0sz
 ICAgICAgICAgICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAw
 MykKKyNkZWZpbmUgS0RBVEFfVEFTSzQgICAgICAgICAgICAgICAgICAgICAo
 S0RBVEFfQkFTRV9BRERSICsgMHgwMDA0KQorI2RlZmluZSBLREFUQV9UQVNL
 NSAgICAgICAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAw
 MDUpCisjZGVmaW5lIEtEQVRBX1RBU0s2ICAgICAgICAgICAgICAgICAgICAg
 KEtEQVRBX0JBU0VfQUREUiArIDB4MDAwNikKKyNkZWZpbmUgS0RBVEFfVEFT
 SzcgICAgICAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgw
 MDA3KQorI2RlZmluZSBLREFUQV9UQVNLX0VORE1BUksgICAgICAgICAgICAg
 IChLREFUQV9CQVNFX0FERFIgKyAweDAwMDgpCisKKyNkZWZpbmUgS0RBVEFf
 Q1VSUkVOVF9UQVNLICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsg
 MHgwMDA5KQorI2RlZmluZSBLREFUQV9UQVNLX1NXSVRDSCAgICAgICAgICAg
 ICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMEEpCisKKyNkZWZpbmUgS0RB
 VEFfSU5TVEFOQ0UwX1BPUzNEICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERS
 ICsgMHgwMDBCKQorI2RlZmluZSBLREFUQV9JTlNUQU5DRTFfUE9TM0QgICAg
 ICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMEMpCisjZGVmaW5lIEtE
 QVRBX0lOU1RBTkNFMl9QT1MzRCAgICAgICAgICAgKEtEQVRBX0JBU0VfQURE
 UiArIDB4MDAwRCkKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0UzX1BPUzNEICAg
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDBFKQorI2RlZmluZSBL
 REFUQV9JTlNUQU5DRTRfUE9TM0QgICAgICAgICAgIChLREFUQV9CQVNFX0FE
 RFIgKyAweDAwMEYpCisjZGVmaW5lIEtEQVRBX0lOU1RBTkNFNV9QT1MzRCAg
 ICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAxMCkKKyNkZWZpbmUg
 S0RBVEFfSU5TVEFOQ0U2X1BPUzNEICAgICAgICAgICAoS0RBVEFfQkFTRV9B
 RERSICsgMHgwMDExKQorI2RlZmluZSBLREFUQV9JTlNUQU5DRTdfUE9TM0Qg
 ICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMTIpCisjZGVmaW5l
 IEtEQVRBX0lOU1RBTkNFOF9QT1MzRCAgICAgICAgICAgKEtEQVRBX0JBU0Vf
 QUREUiArIDB4MDAxMykKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0VfUE9TM0Rf
 RU5ETUFSSyAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDE0KQorCisjZGVm
 aW5lIEtEQVRBX0lOU1RBTkNFMF9TUEtWSVJUICAgICAgICAgKEtEQVRBX0JB
 U0VfQUREUiArIDB4MDAxNSkKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0VfU1BL
 VklSVF9FTkRNQVJLICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDE2KQorCisj
 ZGVmaW5lIEtEQVRBX0lOU1RBTkNFMF9TUERJRiAgICAgICAgICAgKEtEQVRB
 X0JBU0VfQUREUiArIDB4MDAxNykKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0Vf
 U1BESUZfRU5ETUFSSyAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDE4KQor
 CisjZGVmaW5lIEtEQVRBX0lOU1RBTkNFMF9NT0RFTSAgICAgICAgICAgKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDAxOSkKKyNkZWZpbmUgS0RBVEFfSU5TVEFO
 Q0VfTU9ERU1fRU5ETUFSSyAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDFB
 KQorCisjZGVmaW5lIEtEQVRBX0lOU1RBTkNFMF9TUkMgICAgICAgICAgICAg
 KEtEQVRBX0JBU0VfQUREUiArIDB4MDAxQikKKyNkZWZpbmUgS0RBVEFfSU5T
 VEFOQ0UxX1NSQyAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgw
 MDFDKQorI2RlZmluZSBLREFUQV9JTlNUQU5DRV9TUkNfRU5ETUFSSyAgICAg
 IChLREFUQV9CQVNFX0FERFIgKyAweDAwMUQpCisKKyNkZWZpbmUgS0RBVEFf
 SU5TVEFOQ0UwX01JTklTUkMgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsg
 MHgwMDFFKQorI2RlZmluZSBLREFUQV9JTlNUQU5DRTFfTUlOSVNSQyAgICAg
 ICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMUYpCisjZGVmaW5lIEtEQVRB
 X0lOU1RBTkNFMl9NSU5JU1JDICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiAr
 IDB4MDAyMCkKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0UzX01JTklTUkMgICAg
 ICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDIxKQorI2RlZmluZSBLREFU
 QV9JTlNUQU5DRV9NSU5JU1JDX0VORE1BUksgIChLREFUQV9CQVNFX0FERFIg
 KyAweDAwMjIpCisKKyNkZWZpbmUgS0RBVEFfSU5TVEFOQ0UwX0NQWVRIUlUg
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDIzKQorI2RlZmluZSBL
 REFUQV9JTlNUQU5DRTFfQ1BZVEhSVSAgICAgICAgIChLREFUQV9CQVNFX0FE
 RFIgKyAweDAwMjQpCisjZGVmaW5lIEtEQVRBX0lOU1RBTkNFX0NQWVRIUlVf
 RU5ETUFSSyAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAyNSkKKworI2RlZmlu
 ZSBLREFUQV9DVVJSRU5UX0RNQSAgICAgICAgICAgICAgIChLREFUQV9CQVNF
 X0FERFIgKyAweDAwMjYpCisjZGVmaW5lIEtEQVRBX0RNQV9TV0lUQ0ggICAg
 ICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAyNykKKyNkZWZp
 bmUgS0RBVEFfRE1BX0FDVElWRSAgICAgICAgICAgICAgICAoS0RBVEFfQkFT
 RV9BRERSICsgMHgwMDI4KQorCisjZGVmaW5lIEtEQVRBX0RNQV9YRkVSMCAg
 ICAgICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAyOSkKKyNk
 ZWZpbmUgS0RBVEFfRE1BX1hGRVIxICAgICAgICAgICAgICAgICAoS0RBVEFf
 QkFTRV9BRERSICsgMHgwMDJBKQorI2RlZmluZSBLREFUQV9ETUFfWEZFUjIg
 ICAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMkIpCisj
 ZGVmaW5lIEtEQVRBX0RNQV9YRkVSMyAgICAgICAgICAgICAgICAgKEtEQVRB
 X0JBU0VfQUREUiArIDB4MDAyQykKKyNkZWZpbmUgS0RBVEFfRE1BX1hGRVI0
 ICAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDJEKQor
 I2RlZmluZSBLREFUQV9ETUFfWEZFUjUgICAgICAgICAgICAgICAgIChLREFU
 QV9CQVNFX0FERFIgKyAweDAwMkUpCisjZGVmaW5lIEtEQVRBX0RNQV9YRkVS
 NiAgICAgICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAyRikK
 KyNkZWZpbmUgS0RBVEFfRE1BX1hGRVI3ICAgICAgICAgICAgICAgICAoS0RB
 VEFfQkFTRV9BRERSICsgMHgwMDMwKQorI2RlZmluZSBLREFUQV9ETUFfWEZF
 UjggICAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwMzEp
 CisjZGVmaW5lIEtEQVRBX0RNQV9YRkVSX0VORE1BUksgICAgICAgICAgKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDAzMikKKworI2RlZmluZSBLREFUQV9JMlNf
 U0FNUExFX0NPVU5UICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAw
 MzMpCisjZGVmaW5lIEtEQVRBX0kyU19JTlRfTUVURVIgICAgICAgICAgICAg
 KEtEQVRBX0JBU0VfQUREUiArIDB4MDAzNCkKKyNkZWZpbmUgS0RBVEFfSTJT
 X0FDVElWRSAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgw
 MDM1KQorCisjZGVmaW5lIEtEQVRBX1RJTUVSX0NPVU5UX1JFTE9BRCAgICAg
 ICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAzNikKKyNkZWZpbmUgS0RBVEFf
 VElNRVJfQ09VTlRfQ1VSUkVOVCAgICAgICAoS0RBVEFfQkFTRV9BRERSICsg
 MHgwMDM3KQorCisjZGVmaW5lIEtEQVRBX0hBTFRfU1lOQ0hfQ0xJRU5UICAg
 ICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDAzOCkKKyNkZWZpbmUgS0RB
 VEFfSEFMVF9TWU5DSF9ETUEgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERS
 ICsgMHgwMDM5KQorI2RlZmluZSBLREFUQV9IQUxUX0FDS05PV0xFREdFICAg
 ICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwM0EpCisKKyNkZWZpbmUg
 S0RBVEFfQURDMV9YRkVSMCAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9B
 RERSICsgMHgwMDNCKQorI2RlZmluZSBLREFUQV9BREMxX1hGRVJfRU5ETUFS
 SyAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwM0MpCisjZGVmaW5l
 IEtEQVRBX0FEQzFfTEVGVF9WT0xVTUUJCShLREFUQV9CQVNFX0FERFIgKyAw
 eDAwM0QpCisjZGVmaW5lIEtEQVRBX0FEQzFfUklHSFRfVk9MVU1FICAJKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDAzRSkKKyNkZWZpbmUgS0RBVEFfQURDMV9M
 RUZUX1NVUl9WT0wJCShLREFUQV9CQVNFX0FERFIgKyAweDAwM0YpCisjZGVm
 aW5lIEtEQVRBX0FEQzFfUklHSFRfU1VSX1ZPTAkoS0RBVEFfQkFTRV9BRERS
 ICsgMHgwMDQwKQorCisjZGVmaW5lIEtEQVRBX0FEQzJfWEZFUjAgICAgICAg
 ICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDA0MSkKKyNkZWZpbmUg
 S0RBVEFfQURDMl9YRkVSX0VORE1BUksgICAgICAgICAoS0RBVEFfQkFTRV9B
 RERSICsgMHgwMDQyKQorI2RlZmluZSBLREFUQV9BREMyX0xFRlRfVk9MVU1F
 CQkoS0RBVEFfQkFTRV9BRERSICsgMHgwMDQzKQorI2RlZmluZSBLREFUQV9B
 REMyX1JJR0hUX1ZPTFVNRQkJKEtEQVRBX0JBU0VfQUREUiArIDB4MDA0NCkK
 KyNkZWZpbmUgS0RBVEFfQURDMl9MRUZUX1NVUl9WT0wJCShLREFUQV9CQVNF
 X0FERFIgKyAweDAwNDUpCisjZGVmaW5lIEtEQVRBX0FEQzJfUklHSFRfU1VS
 X1ZPTAkoS0RBVEFfQkFTRV9BRERSICsgMHgwMDQ2KQorCisjZGVmaW5lIEtE
 QVRBX0NEX1hGRVIwCQkJKEtEQVRBX0JBU0VfQUREUiArIDB4MDA0NykKKyNk
 ZWZpbmUgS0RBVEFfQ0RfWEZFUl9FTkRNQVJLCQkoS0RBVEFfQkFTRV9BRERS
 ICsgMHgwMDQ4KQorI2RlZmluZSBLREFUQV9DRF9MRUZUX1ZPTFVNRQkJKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDA0OSkKKyNkZWZpbmUgS0RBVEFfQ0RfUklH
 SFRfVk9MVU1FCQkoS0RBVEFfQkFTRV9BRERSICsgMHgwMDRBKQorI2RlZmlu
 ZSBLREFUQV9DRF9MRUZUX1NVUl9WT0wJCShLREFUQV9CQVNFX0FERFIgKyAw
 eDAwNEIpCisjZGVmaW5lIEtEQVRBX0NEX1JJR0hUX1NVUl9WT0wJCShLREFU
 QV9CQVNFX0FERFIgKyAweDAwNEMpCisKKyNkZWZpbmUgS0RBVEFfTUlDX1hG
 RVIwCQkJKEtEQVRBX0JBU0VfQUREUiArIDB4MDA0RCkKKyNkZWZpbmUgS0RB
 VEFfTUlDX1hGRVJfRU5ETUFSSwkJKEtEQVRBX0JBU0VfQUREUiArIDB4MDA0
 RSkKKyNkZWZpbmUgS0RBVEFfTUlDX1ZPTFVNRQkJKEtEQVRBX0JBU0VfQURE
 UiArIDB4MDA0RikKKyNkZWZpbmUgS0RBVEFfTUlDX1NVUl9WT0wJCShLREFU
 QV9CQVNFX0FERFIgKyAweDAwNTApCisKKyNkZWZpbmUgS0RBVEFfSTJTX1hG
 RVIwICAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDUx
 KQorI2RlZmluZSBLREFUQV9JMlNfWEZFUl9FTkRNQVJLICAgICAgICAgIChL
 REFUQV9CQVNFX0FERFIgKyAweDAwNTIpCisKKyNkZWZpbmUgS0RBVEFfQ0hJ
 X1hGRVIwICAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgw
 MDUzKQorI2RlZmluZSBLREFUQV9DSElfWEZFUl9FTkRNQVJLICAgICAgICAg
 IChLREFUQV9CQVNFX0FERFIgKyAweDAwNTQpCisKKyNkZWZpbmUgS0RBVEFf
 U1BESUZfWEZFUiAgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsg
 MHgwMDU1KQorI2RlZmluZSBLREFUQV9TUERJRl9DVVJSRU5UX0ZSQU1FICAg
 ICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNTYpCisjZGVmaW5lIEtEQVRB
 X1NQRElGX0ZSQU1FMCAgICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiAr
 IDB4MDA1NykKKyNkZWZpbmUgS0RBVEFfU1BESUZfRlJBTUUxICAgICAgICAg
 ICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDU4KQorI2RlZmluZSBLREFU
 QV9TUERJRl9GUkFNRTIgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIg
 KyAweDAwNTkpCisKKyNkZWZpbmUgS0RBVEFfU1BESUZfUkVRVUVTVCAgICAg
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDVBKQorI2RlZmluZSBL
 REFUQV9TUERJRl9URU1QICAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FE
 RFIgKyAweDAwNUIpCisKKy8qQVkgU1BESUYgSU4gKi8KKyNkZWZpbmUgS0RB
 VEFfU1BESUZJTl9YRkVSMCAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERS
 ICsgMHgwMDVDKQorI2RlZmluZSBLREFUQV9TUERJRklOX1hGRVJfRU5ETUFS
 SyAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNUQpCisjZGVmaW5lIEtE
 QVRBX1NQRElGSU5fSU5UX01FVEVSICAgICAgICAgKEtEQVRBX0JBU0VfQURE
 UiArIDB4MDA1RSkKKworI2RlZmluZSBLREFUQV9EU1BfUkVTRVRfQ09VTlQg
 ICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNUYpCisjZGVmaW5l
 IEtEQVRBX0RFQlVHX09VVFBVVCAgICAgICAgICAgICAgKEtEQVRBX0JBU0Vf
 QUREUiArIDB4MDA2MCkKKworI2RlZmluZSBLREFUQV9LRVJORUxfSVNSX0xJ
 U1QgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNjEpCisKKyNk
 ZWZpbmUgS0RBVEFfS0VSTkVMX0lTUl9DQlNSMSAgICAgICAgICAoS0RBVEFf
 QkFTRV9BRERSICsgMHgwMDYyKQorI2RlZmluZSBLREFUQV9LRVJORUxfSVNS
 X0NCRVIxICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNjMpCisj
 ZGVmaW5lIEtEQVRBX0tFUk5FTF9JU1JfQ0JDUiAgICAgICAgICAgKEtEQVRB
 X0JBU0VfQUREUiArIDB4MDA2NCkKKyNkZWZpbmUgS0RBVEFfS0VSTkVMX0lT
 Ul9BUjAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDY1KQor
 I2RlZmluZSBLREFUQV9LRVJORUxfSVNSX0FSMSAgICAgICAgICAgIChLREFU
 QV9CQVNFX0FERFIgKyAweDAwNjYpCisjZGVmaW5lIEtEQVRBX0tFUk5FTF9J
 U1JfQVIyICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDA2NykK
 KyNkZWZpbmUgS0RBVEFfS0VSTkVMX0lTUl9BUjMgICAgICAgICAgICAoS0RB
 VEFfQkFTRV9BRERSICsgMHgwMDY4KQorI2RlZmluZSBLREFUQV9LRVJORUxf
 SVNSX0FSNCAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAweDAwNjkp
 CisjZGVmaW5lIEtEQVRBX0tFUk5FTF9JU1JfQVI1ICAgICAgICAgICAgKEtE
 QVRBX0JBU0VfQUREUiArIDB4MDA2QSkKKyNkZWZpbmUgS0RBVEFfS0VSTkVM
 X0lTUl9CUkNSICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDZC
 KQorI2RlZmluZSBLREFUQV9LRVJORUxfSVNSX1BBU1IgICAgICAgICAgIChL
 REFUQV9CQVNFX0FERFIgKyAweDAwNkMpCisjZGVmaW5lIEtEQVRBX0tFUk5F
 TF9JU1JfUEFFUiAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4MDA2
 RCkKKworI2RlZmluZSBLREFUQV9DTElFTlRfU0NSQVRDSDAgICAgICAgICAg
 IChLREFUQV9CQVNFX0FERFIgKyAweDAwNkUpCisjZGVmaW5lIEtEQVRBX0NM
 SUVOVF9TQ1JBVENIMSAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUiArIDB4
 MDA2RikKKyNkZWZpbmUgS0RBVEFfS0VSTkVMX1NDUkFUQ0ggICAgICAgICAg
 ICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDcwKQorI2RlZmluZSBLREFUQV9L
 RVJORUxfSVNSX1NDUkFUQ0ggICAgICAgIChLREFUQV9CQVNFX0FERFIgKyAw
 eDAwNzEpCisKKyNkZWZpbmUgS0RBVEFfT1VFVUVfTEVGVCAgICAgICAgICAg
 ICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDcyKQorI2RlZmluZSBLREFU
 QV9RVUVVRV9SSUdIVCAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIg
 KyAweDAwNzMpCisKKyNkZWZpbmUgS0RBVEFfQURDMV9SRVFVRVNUICAgICAg
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDc0KQorI2RlZmluZSBL
 REFUQV9BREMyX1JFUVVFU1QgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FE
 RFIgKyAweDAwNzUpCisjZGVmaW5lIEtEQVRBX0NEX1JFUVVFU1QJCShLREFU
 QV9CQVNFX0FERFIgKyAweDAwNzYpCisjZGVmaW5lIEtEQVRBX01JQ19SRVFV
 RVNUCQkoS0RBVEFfQkFTRV9BRERSICsgMHgwMDc3KQorCisjZGVmaW5lIEtE
 QVRBX0FEQzFfTUlYRVJfUkVRVUVTVCAgICAgICAgKEtEQVRBX0JBU0VfQURE
 UiArIDB4MDA3OCkKKyNkZWZpbmUgS0RBVEFfQURDMl9NSVhFUl9SRVFVRVNU
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSICsgMHgwMDc5KQorI2RlZmluZSBL
 REFUQV9DRF9NSVhFUl9SRVFVRVNUCQkoS0RBVEFfQkFTRV9BRERSICsgMHgw
 MDdBKQorI2RlZmluZSBLREFUQV9NSUNfTUlYRVJfUkVRVUVTVAkJKEtEQVRB
 X0JBU0VfQUREUiArIDB4MDA3QikKKyNkZWZpbmUgS0RBVEFfTUlDX1NZTkNf
 Q09VTlRFUgkJKEtEQVRBX0JBU0VfQUREUiArIDB4MDA3QykKKworLyoKKyAq
 IHNlY29uZCBzZWdtZW50CisgKi8KKworLyogc21hcnQgbWl4ZXIgYnVmZmVy
 ICovCisKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SRDAgICAgICAgICAgICAg
 ICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwMCkKKyNkZWZpbmUgS0RBVEFf
 TUlYRVJfV09SRDEgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiAr
 IDB4MDAwMSkKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SRDIgICAgICAgICAg
 ICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwMikKKyNkZWZpbmUgS0RB
 VEFfTUlYRVJfV09SRDMgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERS
 MiArIDB4MDAwMykKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SRDQgICAgICAg
 ICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwNCkKKyNkZWZpbmUg
 S0RBVEFfTUlYRVJfV09SRDUgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9B
 RERSMiArIDB4MDAwNSkKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SRDYgICAg
 ICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwNikKKyNkZWZp
 bmUgS0RBVEFfTUlYRVJfV09SRDcgICAgICAgICAgICAgICAoS0RBVEFfQkFT
 RV9BRERSMiArIDB4MDAwNykKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SRDgg
 ICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwOCkKKyNk
 ZWZpbmUgS0RBVEFfTUlYRVJfV09SRDkgICAgICAgICAgICAgICAoS0RBVEFf
 QkFTRV9BRERSMiArIDB4MDAwOSkKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09S
 REEgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwQSkK
 KyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SREIgICAgICAgICAgICAgICAoS0RB
 VEFfQkFTRV9BRERSMiArIDB4MDAwQikKKyNkZWZpbmUgS0RBVEFfTUlYRVJf
 V09SREMgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAw
 QykKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SREQgICAgICAgICAgICAgICAo
 S0RBVEFfQkFTRV9BRERSMiArIDB4MDAwRCkKKyNkZWZpbmUgS0RBVEFfTUlY
 RVJfV09SREUgICAgICAgICAgICAgICAoS0RBVEFfQkFTRV9BRERSMiArIDB4
 MDAwRSkKKyNkZWZpbmUgS0RBVEFfTUlYRVJfV09SREYgICAgICAgICAgICAg
 ICAoS0RBVEFfQkFTRV9BRERSMiArIDB4MDAwRikKKworI2RlZmluZSBLREFU
 QV9NSVhFUl9YRkVSMCAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIy
 ICsgMHgwMDEwKQorI2RlZmluZSBLREFUQV9NSVhFUl9YRkVSMSAgICAgICAg
 ICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDExKQorI2RlZmluZSBL
 REFUQV9NSVhFUl9YRkVSMiAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FE
 RFIyICsgMHgwMDEyKQorI2RlZmluZSBLREFUQV9NSVhFUl9YRkVSMyAgICAg
 ICAgICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDEzKQorI2RlZmlu
 ZSBLREFUQV9NSVhFUl9YRkVSNCAgICAgICAgICAgICAgIChLREFUQV9CQVNF
 X0FERFIyICsgMHgwMDE0KQorI2RlZmluZSBLREFUQV9NSVhFUl9YRkVSNSAg
 ICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDE1KQorI2Rl
 ZmluZSBLREFUQV9NSVhFUl9YRkVSNiAgICAgICAgICAgICAgIChLREFUQV9C
 QVNFX0FERFIyICsgMHgwMDE2KQorI2RlZmluZSBLREFUQV9NSVhFUl9YRkVS
 NyAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDE3KQor
 I2RlZmluZSBLREFUQV9NSVhFUl9YRkVSOCAgICAgICAgICAgICAgIChLREFU
 QV9CQVNFX0FERFIyICsgMHgwMDE4KQorI2RlZmluZSBLREFUQV9NSVhFUl9Y
 RkVSOSAgICAgICAgICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDE5
 KQorI2RlZmluZSBLREFUQV9NSVhFUl9YRkVSX0VORE1BUksgICAgICAgIChL
 REFUQV9CQVNFX0FERFIyICsgMHgwMDFBKQorCisjZGVmaW5lIEtEQVRBX01J
 WEVSX1RBU0tfTlVNQkVSICAgICAgICAgKEtEQVRBX0JBU0VfQUREUjIgKyAw
 eDAwMUIpCisjZGVmaW5lIEtEQVRBX0NVUlJFTlRfTUlYRVIgICAgICAgICAg
 ICAgKEtEQVRBX0JBU0VfQUREUjIgKyAweDAwMUMpCisjZGVmaW5lIEtEQVRB
 X01JWEVSX0FDVElWRSAgICAgICAgICAgICAgKEtEQVRBX0JBU0VfQUREUjIg
 KyAweDAwMUQpCisjZGVmaW5lIEtEQVRBX01JWEVSX0JBTktfU1RBVFVTICAg
 ICAgICAgKEtEQVRBX0JBU0VfQUREUjIgKyAweDAwMUUpCisjZGVmaW5lIEtE
 QVRBX0RBQ19MRUZUX1ZPTFVNRQkgICAgICAgIChLREFUQV9CQVNFX0FERFIy
 ICsgMHgwMDFGKQorI2RlZmluZSBLREFUQV9EQUNfUklHSFRfVk9MVU1FICAg
 ICAgICAgIChLREFUQV9CQVNFX0FERFIyICsgMHgwMDIwKQorCisvKgorICog
 Q2xpZW50IGRhdGEgbWVtb3J5IGRlZmluaXRpb24KKyAqLworCisjZGVmaW5l
 IENEQVRBX0lOU1RBTkNFX1JFQURZICAgICAgICAgICAgMHgwMAorCisjZGVm
 aW5lIENEQVRBX0hPU1RfU1JDX0FERFJMICAgICAgICAgICAgMHgwMQorI2Rl
 ZmluZSBDREFUQV9IT1NUX1NSQ19BRERSSCAgICAgICAgICAgIDB4MDIKKyNk
 ZWZpbmUgQ0RBVEFfSE9TVF9TUkNfRU5EX1BMVVNfMUwgICAgICAweDAzCisj
 ZGVmaW5lIENEQVRBX0hPU1RfU1JDX0VORF9QTFVTXzFIICAgICAgMHgwNAor
 I2RlZmluZSBDREFUQV9IT1NUX1NSQ19DVVJSRU5UTCAgICAgICAgIDB4MDUK
 KyNkZWZpbmUgQ0RBVEFfSE9TVF9TUkNfQ1VSUkVOVEggICAgICAgICAweDA2
 CisKKyNkZWZpbmUgQ0RBVEFfSU5fQlVGX0NPTk5FQ1QgICAgICAgICAgICAw
 eDA3CisjZGVmaW5lIENEQVRBX09VVF9CVUZfQ09OTkVDVCAgICAgICAgICAg
 MHgwOAorCisjZGVmaW5lIENEQVRBX0lOX0JVRl9CRUdJTiAgICAgICAgICAg
 ICAgMHgwOQorI2RlZmluZSBDREFUQV9JTl9CVUZfRU5EX1BMVVNfMSAgICAg
 ICAgIDB4MEEKKyNkZWZpbmUgQ0RBVEFfSU5fQlVGX0hFQUQgICAgICAgICAg
 ICAgICAweDBCCisjZGVmaW5lIENEQVRBX0lOX0JVRl9UQUlMICAgICAgICAg
 ICAgICAgMHgwQworCisjZGVmaW5lIENEQVRBX09VVF9CVUZfQkVHSU4gICAg
 ICAgICAgICAgMHgwRAorI2RlZmluZSBDREFUQV9PVVRfQlVGX0VORF9QTFVT
 XzEgICAgICAgIDB4MEUKKyNkZWZpbmUgQ0RBVEFfT1VUX0JVRl9IRUFEICAg
 ICAgICAgICAgICAweDBGCisjZGVmaW5lIENEQVRBX09VVF9CVUZfVEFJTCAg
 ICAgICAgICAgICAgMHgxMAorCisjZGVmaW5lIENEQVRBX0RNQV9DT05UUk9M
 ICAgICAgICAgICAgICAgMHgxMQorI2RlZmluZSBDREFUQV9SRVNFUlZFRCAg
 ICAgICAgICAgICAgICAgIDB4MTIKKworI2RlZmluZSBDREFUQV9GUkVRVUVO
 Q1kgICAgICAgICAgICAgICAgIDB4MTMKKyNkZWZpbmUgQ0RBVEFfTEVGVF9W
 T0xVTUUgICAgICAgICAgICAgICAweDE0CisjZGVmaW5lIENEQVRBX1JJR0hU
 X1ZPTFVNRSAgICAgICAgICAgICAgMHgxNQorI2RlZmluZSBDREFUQV9MRUZU
 X1NVUl9WT0wgICAgICAgICAgICAgIDB4MTYKKyNkZWZpbmUgQ0RBVEFfUklH
 SFRfU1VSX1ZPTCAgICAgICAgICAgICAweDE3CisKKy8qIFRoZXNlIGFyZSBm
 cm9tIEFsbGVncm8gaGNrZXJuZWwuaCAqLworI2RlZmluZSBDREFUQV9IRUFE
 RVJfTEVOICAgICAgICAgICAgICAgIDB4MTgKKyNkZWZpbmUgU1JDM19ESVJF
 Q1RJT05fT0ZGU0VUICAgICAgICAgICBDREFUQV9IRUFERVJfTEVOCisjZGVm
 aW5lIFNSQzNfTU9ERV9PRkZTRVQgICAgICAgICAgICAgICAgQ0RBVEFfSEVB
 REVSX0xFTiArIDEKKyNkZWZpbmUgU1JDM19XT1JEX0xFTkdUSF9PRkZTRVQg
 ICAgICAgICBDREFUQV9IRUFERVJfTEVOICsgMgorI2RlZmluZSBTUkMzX1BB
 UkFNRVRFUl9PRkZTRVQgICAgICAgICAgIENEQVRBX0hFQURFUl9MRU4gKyAz
 CisjZGVmaW5lIFNSQzNfQ09FRkZfQUREUl9PRkZTRVQgICAgICAgICAgQ0RB
 VEFfSEVBREVSX0xFTiArIDgKKyNkZWZpbmUgU1JDM19GSUxUQVBfQUREUl9P
 RkZTRVQgICAgICAgICBDREFUQV9IRUFERVJfTEVOICsgMTAKKyNkZWZpbmUg
 U1JDM19URU1QX0lOQlVGX0FERFJfT0ZGU0VUICAgICBDREFUQV9IRUFERVJf
 TEVOICsgMTYKKyNkZWZpbmUgU1JDM19URU1QX09VVEJVRl9BRERSX09GRlNF
 VCAgICBDREFUQV9IRUFERVJfTEVOICsgMTcKKyNkZWZpbmUgRk9SX0ZVVFVS
 RV9VU0UgICAgICAgICAgICAgICAgICAxMAkvKiBmb3Igc3RvcmluZyB0ZW1w
 b3JhcnkgdmFyaWFibGUgaW4gZnV0dXJlICovCisKKy8qCisgKiBETUEgY29u
 dHJvbCBkZWZpbml0aW9uCisgKi8KKworI2RlZmluZSBETUFDT05UUk9MX0JM
 T0NLX01BU0sgICAgICAgICAgIDB4MDAwRgorI2RlZmluZSAgRE1BQ19CTE9D
 SzBfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSAgRE1BQ19C
 TE9DSzFfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSAgRE1B
 Q19CTE9DSzJfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwMgorI2RlZmluZSAg
 RE1BQ19CTE9DSzNfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwMworI2RlZmlu
 ZSAgRE1BQ19CTE9DSzRfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwNAorI2Rl
 ZmluZSAgRE1BQ19CTE9DSzVfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwNQor
 I2RlZmluZSAgRE1BQ19CTE9DSzZfU0VMRUNUT1IgICAgICAgICAgIDB4MDAw
 NgorI2RlZmluZSAgRE1BQ19CTE9DSzdfU0VMRUNUT1IgICAgICAgICAgIDB4
 MDAwNworI2RlZmluZSAgRE1BQ19CTE9DSzhfU0VMRUNUT1IgICAgICAgICAg
 IDB4MDAwOAorI2RlZmluZSAgRE1BQ19CTE9DSzlfU0VMRUNUT1IgICAgICAg
 ICAgIDB4MDAwOQorI2RlZmluZSAgRE1BQ19CTE9DS0FfU0VMRUNUT1IgICAg
 ICAgICAgIDB4MDAwQQorI2RlZmluZSAgRE1BQ19CTE9DS0JfU0VMRUNUT1Ig
 ICAgICAgICAgIDB4MDAwQgorI2RlZmluZSAgRE1BQ19CTE9DS0NfU0VMRUNU
 T1IgICAgICAgICAgIDB4MDAwQworI2RlZmluZSAgRE1BQ19CTE9DS0RfU0VM
 RUNUT1IgICAgICAgICAgIDB4MDAwRAorI2RlZmluZSAgRE1BQ19CTE9DS0Vf
 U0VMRUNUT1IgICAgICAgICAgIDB4MDAwRQorI2RlZmluZSAgRE1BQ19CTE9D
 S0ZfU0VMRUNUT1IgICAgICAgICAgIDB4MDAwRgorI2RlZmluZSBETUFDT05U
 Uk9MX1BBR0VfTUFTSyAgICAgICAgICAgIDB4MDBGMAorI2RlZmluZSAgRE1B
 Q19QQUdFMF9TRUxFQ1RPUiAgICAgICAgICAgIDB4MDAzMAorI2RlZmluZSAg
 RE1BQ19QQUdFMV9TRUxFQ1RPUiAgICAgICAgICAgIDB4MDAyMAorI2RlZmlu
 ZSAgRE1BQ19QQUdFMl9TRUxFQ1RPUiAgICAgICAgICAgIDB4MDAxMAorI2Rl
 ZmluZSAgRE1BQ19QQUdFM19TRUxFQ1RPUiAgICAgICAgICAgIDB4MDAwMAor
 I2RlZmluZSBETUFDT05UUk9MX0FVVE9SRVBFQVQgICAgICAgICAgIDB4MTAw
 MAorI2RlZmluZSBETUFDT05UUk9MX1NUT1BQRUQgICAgICAgICAgICAgIDB4
 MjAwMAorI2RlZmluZSBETUFDT05UUk9MX0RJUkVDVElPTiAgICAgICAgICAg
 IDB4MDEwMAorCisvKgorICogS2VybmVsL2NsaWVudCBtZW1vcnkgYWxsb2Nh
 dGlvbgorICovCisKKyNkZWZpbmUgTlVNX1VOSVRTX0tFUk5FTF9DT0RFICAg
 ICAgICAgIDE2CisjZGVmaW5lIE5VTV9VTklUU19LRVJORUxfREFUQSAgICAg
 ICAgICAgMgorCisjZGVmaW5lIE5VTV9VTklUU19LRVJORUxfQ09ERV9XSVRI
 X0hTUCAxNgorI2lmZGVmIE0zX01PREVMCisjZGVmaW5lIE5VTV9VTklUU19L
 RVJORUxfREFUQV9XSVRIX0hTUCAgNQorI2Vsc2UKKyNkZWZpbmUgTlVNX1VO
 SVRTX0tFUk5FTF9EQVRBX1dJVEhfSFNQICA0CisjZW5kaWYKKworI2RlZmlu
 ZSBOVU1fVU5JVFMoIEJZVEVTLCBVTklUTEVOICkgICAgKCgoKEJZVEVTKzEp
 Pj4xKSArIChVTklUTEVOLTEpKSAvIFVOSVRMRU4pCisKKy8qCisgKiBEU1Ag
 aGFyZHdhcmUKKyAqLworCisjZGVmaW5lIERTUF9QT1JUX1RJTUVSX0NPVU5U
 ICAgICAgICAgICAgMHgwNgorI2RlZmluZSBEU1BfUE9SVF9NRU1PUllfSU5E
 RVggICAgICAgICAgIDB4ODAKKyNkZWZpbmUgRFNQX1BPUlRfTUVNT1JZX1RZ
 UEUgICAgICAgICAgICAweDgyCisjZGVmaW5lIERTUF9QT1JUX01FTU9SWV9E
 QVRBICAgICAgICAgICAgMHg4NAorI2RlZmluZSBEU1BfUE9SVF9DT05UUk9M
 X1JFR19BICAgICAgICAgIDB4QTIKKyNkZWZpbmUgRFNQX1BPUlRfQ09OVFJP
 TF9SRUdfQiAgICAgICAgICAweEE0CisjZGVmaW5lIERTUF9QT1JUX0NPTlRS
 T0xfUkVHX0MgICAgICAgICAgMHhBNgorCisjZGVmaW5lIE1FTVRZUEVfSU5U
 RVJOQUxfQ09ERSAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIE1FTVRZUEVf
 SU5URVJOQUxfREFUQSAgICAgICAgICAgMHgwMDAzCisjZGVmaW5lIE1FTVRZ
 UEVfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgwMDAzCisKKyNkZWZpbmUg
 UkVHQl9FTkFCTEVfUkVTRVQgICAgICAgICAgICAgICAweDAxCisjZGVmaW5l
 IFJFR0JfU1RPUF9DTE9DSyAgICAgICAgICAgICAgICAgMHgxMAorCisjZGVm
 aW5lIFJFR0NfRElTQUJMRV9GTV9NQVBQSU5HICAgICAgICAgMHgwMgorCisj
 ZGVmaW5lIERQX1NISUZUX0NPVU5UICAgICAgICAgICAgICAgICAgNworCisj
 ZGVmaW5lIERNQV9CTE9DS19MRU5HVEggICAgICAgICAgICAgICAgMzIKKwor
 LyogVGhlc2UgYXJlIGZyb20gQWxsZWdybyBzcmNtZ3IuaCAqLworI2RlZmlu
 ZSBNSU5JU1JDX0JJUVVBRF9TVEFHRSAgICAyCisjZGVmaW5lIE1JTklTUkNf
 SU5fQlVGRkVSX1NJWkUgICAoIDB4NTAgKiAyICkKKyNkZWZpbmUgTUlOSVNS
 Q19PVVRfQlVGRkVSX1NJWkUgICggMHg1MCAqIDIgKiAyKQorI2RlZmluZSBN
 SU5JU1JDX1RNUF9CVUZGRVJfU0laRSAgKCAxMTIgKyAoIE1JTklTUkNfQklR
 VUFEX1NUQUdFICogMyArIDQgKSAqIDIgKiAyICkKKyNkZWZpbmUgTUlOSVNS
 Q19CSVFVQURfU1RBR0UgICAgMgorLyogTS4gU1JDIExQRiBjb2VmZmljaWVu
 dCBjb3VsZCBiZSBjaGFuZ2VkIGluIHRoZSBEU1AgY29kZSAqLworI2RlZmlu
 ZSBNSU5JU1JDX0NPRUZfTE9DICAgICAgICAgIDBYMTc1CisKKyNlbmRpZgkv
 KiAhX0RFVl9TT1VORF9QQ0lfQUxMRUdST19SRUdfSCAqLwpkaWZmIC1ydU4g
 ZGV2L3NvdW5kL3BjaS5lbXUxMGsvZW11MTBrMXJlZy5oIGRldi9zb3VuZC9w
 Y2kvZW11MTBrMXJlZy5oCi0tLSBkZXYvc291bmQvcGNpLmVtdTEway9lbXUx
 MGsxcmVnLmgJMjAxMS0wMS0xMCAxNzozMDoyNS4wMDAwMDAwMDAgKzAwMDAK
 KysrIGRldi9zb3VuZC9wY2kvZW11MTBrMXJlZy5oCTIwMTEtMDEtMTAgMjA6
 Mjc6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0xLDMgKzEsNCBAQAorLyogJEZy
 ZWVCU0QkICovCiAvKgkkTmV0QlNEOiBlbXV4a2lyZWcuaCx2IDEuOCAyMDA4
 LzA0LzI4IDIwOjIzOjU0IG1hcnRpbiBFeHAgJAkqLwogCiAvKi0KZGlmZiAt
 cnVOIGRldi9zb3VuZC9wY2kuZW11MTBrL21hZXN0cm8zLmMgZGV2L3NvdW5k
 L3BjaS9tYWVzdHJvMy5jCi0tLSBkZXYvc291bmQvcGNpLmVtdTEway9tYWVz
 dHJvMy5jCTIwMTEtMDEtMTAgMTc6MzA6MjUuMDAwMDAwMDAwICswMDAwCisr
 KyBkZXYvc291bmQvcGNpL21hZXN0cm8zLmMJMjAxMS0wMS0xMiAxMDowMTo0
 NC4wMDAwMDAwMDAgKzAwMDAKQEAgLTYyLDggKzYyLDEwIEBACiAjaW5jbHVk
 ZSA8ZGV2L3BjaS9wY2lyZWcuaD4KICNpbmNsdWRlIDxkZXYvcGNpL3BjaXZh
 ci5oPgogCi0jaW5jbHVkZSA8Z251L2Rldi9zb3VuZC9wY2kvbWFlc3RybzNf
 cmVnLmg+Ci0jaW5jbHVkZSA8Z251L2Rldi9zb3VuZC9wY2kvbWFlc3RybzNf
 ZHNwLmg+CisjZGVmaW5lIE0zX01PREVMIDEKKworI2luY2x1ZGUgPGRldi9z
 b3VuZC9wY2kvYWxsZWdyb19yZWcuaD4KKyNpbmNsdWRlIDxkZXYvc291bmQv
 cGNpL2FsbGVncm9fY29kZS5oPgogCiBTTkRfREVDTEFSRV9GSUxFKCIkRnJl
 ZUJTRDogc3JjL3N5cy9kZXYvc291bmQvcGNpL21hZXN0cm8zLmMsdiAxLjM2
 LjIuMi40LjEgMjAxMC8xMi8yMSAxNzowOToyNSBrZW5zbWl0aCBFeHAgJCIp
 OwogCkBAIC05Niw2ICs5OCw3IEBACiAjZGVmaW5lIE0zX1BDSEFOUyA0IC8q
 IGNyZWF0ZSAvZGV2L2RzcDAuWzAtTl0gdG8gdXNlIG1vcmUgdGhhbiBvbmUg
 Ki8KICNkZWZpbmUgTTNfUkNIQU5TIDEKICNkZWZpbmUgTTNfTUFYQUREUiAo
 KDEgPDwgMjcpIC0gMSkKKyNkZWZpbmUgTTNfREVGQVVMVF9WT0wgMHg2ODAw
 CiAKIHN0cnVjdCBzY19pbmZvOwogCkBAIC0zNzYsNiArMzc5LDMxIEBACiAJ
 aW50IGlkeCwgZGF0YV9ieXRlcywgZGFjX2RhdGE7CiAJaW50IGRzcF9pbl9z
 aXplLCBkc3Bfb3V0X3NpemUsIGRzcF9pbl9idWYsIGRzcF9vdXRfYnVmOwog
 CisJc3RydWN0IGRhdGFfd29yZCB7CisJICAgIHVfaW50MTZfdCBhZGRyLCB2
 YWw7CisJfSBwdltdID0geworCSAgICB7Q0RBVEFfTEVGVF9WT0xVTUUsIE0z
 X0RFRkFVTFRfVk9MfSwKKwkgICAge0NEQVRBX1JJR0hUX1ZPTFVNRSwgTTNf
 REVGQVVMVF9WT0x9LAorCSAgICB7U1JDM19ESVJFQ1RJT05fT0ZGU0VULCAw
 fSAsCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyAzLCAweDAwMDB9
 LAorCSAgICB7U1JDM19ESVJFQ1RJT05fT0ZGU0VUICsgNCwgMH0sCisJICAg
 IHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyA1LCAwfSwKKwkgICAge1NSQzNf
 RElSRUNUSU9OX09GRlNFVCArIDYsIDB9LAorCSAgICB7U1JDM19ESVJFQ1RJ
 T05fT0ZGU0VUICsgNywgMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZT
 RVQgKyA4LCAwfSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDks
 IDB9LAorCSAgICB7U1JDM19ESVJFQ1RJT05fT0ZGU0VUICsgMTAsIDB4ODAw
 MH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyAxMSwgMHhGRjAw
 fSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDEzLCAwfSwKKwkg
 ICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDE0LCAwfSwKKwkgICAge1NS
 QzNfRElSRUNUSU9OX09GRlNFVCArIDE1LCAwfSwKKwkgICAge1NSQzNfRElS
 RUNUSU9OX09GRlNFVCArIDE2LCA4fSwKKwkgICAge1NSQzNfRElSRUNUSU9O
 X09GRlNFVCArIDE3LCA1MCoyfSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09G
 RlNFVCArIDE4LCBNSU5JU1JDX0JJUVVBRF9TVEFHRSAtIDF9LAorCSAgICB7
 U1JDM19ESVJFQ1RJT05fT0ZGU0VUICsgMjAsIDB9LAorCSAgICB7U1JDM19E
 SVJFQ1RJT05fT0ZGU0VUICsgMjEsIDB9CisJfTsKKwogCU0zX0xPQ0soc2Mp
 OwogCWlkeCA9IHNjLT5wY2hfY250OyAvKiBkYWMgaW5zdGFuY2UgbnVtYmVy
 LCBubyBhY3RpdmUgcmV1c2UhICovCiAgICAgICAgIE0zX0RFQlVHKENIQU5H
 RSwgKCJtM19wY2hhbl9pbml0KGRhYz0lZClcbiIsIGlkeCkpOwpAQCAtNzI5
 LDYgKzc1NywzMyBAQAogCWludCBpZHgsIGRhdGFfYnl0ZXMsIGFkY19kYXRh
 OwogCWludCBkc3BfaW5fc2l6ZSwgZHNwX291dF9zaXplLCBkc3BfaW5fYnVm
 LCBkc3Bfb3V0X2J1ZjsgCiAKKwlzdHJ1Y3QgZGF0YV93b3JkIHsKKwl1X2lu
 dDE2X3QgYWRkciwgdmFsOworCX0gcnZbXSA9IHsKKwkgICAge0NEQVRBX0xF
 RlRfVk9MVU1FLCBNM19ERUZBVUxUX1ZPTH0sCisJICAgIHtDREFUQV9SSUdI
 VF9WT0xVTUUsIE0zX0RFRkFVTFRfVk9MfSwKKwkgICAge1NSQzNfRElSRUNU
 SU9OX09GRlNFVCwgMX0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQg
 KyAzLCAweDAwMDB9LAorCSAgICB7U1JDM19ESVJFQ1RJT05fT0ZGU0VUICsg
 NCwgMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyA1LCAwfSwK
 KwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDYsIDB9LAorCSAgICB7
 U1JDM19ESVJFQ1RJT05fT0ZGU0VUICsgNywgMH0sCisJICAgIHtTUkMzX0RJ
 UkVDVElPTl9PRkZTRVQgKyA4LCAwfSwKKwkgICAge1NSQzNfRElSRUNUSU9O
 X09GRlNFVCArIDksIDB9LAorCSAgICB7U1JDM19ESVJFQ1RJT05fT0ZGU0VU
 ICsgMTAsIDB4ODAwMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQg
 KyAxMSwgMHhGRjAwfSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCAr
 IDEzLCAwfSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDE0LCAw
 fSwKKwkgICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDE1LCAwfSwKKwkg
 ICAge1NSQzNfRElSRUNUSU9OX09GRlNFVCArIDE2LCA1MH0sCisJICAgIHtT
 UkMzX0RJUkVDVElPTl9PRkZTRVQgKyAxNywgOH0sCisJICAgIHtTUkMzX0RJ
 UkVDVElPTl9PRkZTRVQgKyAxOCwgMH0sCisJICAgIHtTUkMzX0RJUkVDVElP
 Tl9PRkZTRVQgKyAxOSwgMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZT
 RVQgKyAyMCwgMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyAy
 MSwgMH0sCisJICAgIHtTUkMzX0RJUkVDVElPTl9PRkZTRVQgKyAyMiwgMHhm
 Zn0KKwl9OworCiAJTTNfTE9DSyhzYyk7CiAJaWR4ID0gc2MtPnJjaF9jbnQ7
 IC8qIGFkYyBpbnN0YW5jZSBudW1iZXIsIG5vIGFjdGl2ZSByZXVzZSEgKi8K
 ICAgICAgICAgTTNfREVCVUcoQ0hBTkdFLCAoIm0zX3JjaGFuX2luaXQoYWRj
 PSVkKVxuIiwgaWR4KSk7CkBAIC0xMTg5LDI1ICsxMjQ0LDI1IEBACiAJbTNf
 d3JfYXNzcF9kYXRhKHNjLCBLREFUQV9DVVJSRU5UX0RNQSwKIAkJCUtEQVRB
 X0RNQV9YRkVSMCk7CiAJLyogd3JpdGUga2VybmVsIGludG8gY29kZSBtZW1v
 cnkgKi8KLQlzaXplID0gc2l6ZW9mKGFzc3Bfa2VybmVsX2ltYWdlKTsKKwlz
 aXplID0gc2l6ZW9mKGdhd19rZXJuZWxfdmVjdF9jb2RlKTsKIAlmb3IoaSA9
 IDAgOyBpIDwgc2l6ZSAvIDI7IGkrKykgewogCQltM193cl9hc3NwX2NvZGUo
 c2MsIFJFVl9CX0NPREVfTUVNT1JZX0JFR0lOICsgaSwKLQkJCQlhc3NwX2tl
 cm5lbF9pbWFnZVtpXSk7CisJCQkJZ2F3X2tlcm5lbF92ZWN0X2NvZGVbaV0p
 OwogCX0KIAkvKgogCSAqIFdlIG9ubHkgaGF2ZSB0aGlzIG9uZSBjbGllbnQg
 YW5kIHdlIGtub3cgdGhhdCAweDQwMCBpcyBmcmVlIGluCiAJICogb3VyIGtl
 cm5lbCdzIG1lbSBtYXAsIHNvIGxldHMganVzdCBkcm9wIGl0IHRoZXJlLiAg
 SXQgc2VlbXMgdGhhdAogCSAqIHRoZSBtaW5pc3JjIGRvZXNuJ3QgbmVlZCB2
 ZWN0b3JzLCBzbyB3ZSB3b24ndCBib3RoZXIgd2l0aCB0aGVtLi4KIAkgKi8K
 LQlzaXplID0gc2l6ZW9mKGFzc3BfbWluaXNyY19pbWFnZSk7CisJc2l6ZSA9
 IHNpemVvZihnYXdfbWluaXNyY19jb2RlXzA0MDApOwogCWZvcihpID0gMCA7
 IGkgPCBzaXplIC8gMjsgaSsrKSB7Ci0JCW0zX3dyX2Fzc3BfY29kZShzYywg
 MHg0MDAgKyBpLCBhc3NwX21pbmlzcmNfaW1hZ2VbaV0pOworCQltM193cl9h
 c3NwX2NvZGUoc2MsIDB4NDAwICsgaSwgZ2F3X21pbmlzcmNfY29kZV8wNDAw
 W2ldKTsKIAl9CiAJLyogd3JpdGUgdGhlIGNvZWZmaWNpZW50cyBmb3IgdGhl
 IGxvdyBwYXNzIGZpbHRlcj8gKi8KLQlzaXplID0gc2l6ZW9mKG1pbmlzcmNf
 bHBmX2ltYWdlKTsKKwlzaXplID0gc2l6ZW9mKG1pbmlzcmNfbHBmKTsKIAlm
 b3IoaSA9IDA7IGkgPCBzaXplIC8gMiA7IGkrKykgewogCQltM193cl9hc3Nw
 X2NvZGUoc2MsMHg0MDAgKyBNSU5JU1JDX0NPRUZfTE9DICsgaSwKLQkJCQlt
 aW5pc3JjX2xwZl9pbWFnZVtpXSk7CisJCQkJbWluaXNyY19scGZbaV0pOwog
 CX0KIAltM193cl9hc3NwX2NvZGUoc2MsIDB4NDAwICsgTUlOSVNSQ19DT0VG
 X0xPQyArIHNpemUsIDB4ODAwMCk7CiAJLyogdGhlIG1pbmlzcmMgaXMgdGhl
 IG9ubHkgdGhpbmcgb24gb3VyIHRhc2sgbGlzdCAqLwpAQCAtMTIxNSw4ICsx
 MjcwLDggQEAKIAkvKiBpbml0IHRoZSBtaXhlciBudW1iZXIgKi8KIAltM193
 cl9hc3NwX2RhdGEoc2MsIEtEQVRBX01JWEVSX1RBU0tfTlVNQkVSLCAwKTsK
 IAkvKiBleHRyZW1lIGtlcm5lbCBtYXN0ZXIgdm9sdW1lICovCi0JbTNfd3Jf
 YXNzcF9kYXRhKHNjLCBLREFUQV9EQUNfTEVGVF9WT0xVTUUsIEFSQl9WT0xV
 TUUpOwotCW0zX3dyX2Fzc3BfZGF0YShzYywgS0RBVEFfREFDX1JJR0hUX1ZP
 TFVNRSwgQVJCX1ZPTFVNRSk7CisJbTNfd3JfYXNzcF9kYXRhKHNjLCBLREFU
 QV9EQUNfTEVGVF9WT0xVTUUsIE0zX0RFRkFVTFRfVk9MKTsKKwltM193cl9h
 c3NwX2RhdGEoc2MsIEtEQVRBX0RBQ19SSUdIVF9WT0xVTUUsIE0zX0RFRkFV
 TFRfVk9MKTsKIAogCW0zX2FtcF9lbmFibGUoc2MpOwogCi0tLSBtb2R1bGVz
 L3NvdW5kL2RyaXZlci9tYWVzdHJvMy9NYWtlZmlsZS5vcmlnCTIwMTEtMDEt
 MTEgMjE6MzU6NDkuMDAwMDAwMDAwICswMDAwCisrKyBtb2R1bGVzL3NvdW5k
 L2RyaXZlci9tYWVzdHJvMy9NYWtlZmlsZQkyMDExLTAxLTExIDIxOjM4OjI0
 LjAwMDAwMDAwMCArMDAwMApAQCAtNCw2ICs0LDcgQEAKIAogS01PRD0Jc25k
 X21hZXN0cm8zCiBTUkNTPQlkZXZpY2VfaWYuaCBidXNfaWYuaCBwY2lfaWYu
 aAorU1JDUys9CWFsbGVncm9fY29kZS5oIGFsbGVncm9fcmVnLmgKIFNSQ1Mr
 PQltYWVzdHJvMy5jCiAKIENGTEFHUys9IC1XYWxsIC1ETTNfREVCVUdfTEVW
 RUw9LTEK
 
 --0-1011579751-1294847030=:77902--
Responsible-Changed-From-To: freebsd-bugs->freebsd-multimedia 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Thu Jan 13 10:03:40 UTC 2011 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=153920 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/153920: commit references a PR
Date: Fri, 20 Jan 2012 22:37:22 +0000 (UTC)

 Author: pfg
 Date: Fri Jan 20 22:37:10 2012
 New Revision: 230401
 URL: http://svn.freebsd.org/changeset/base/230401
 
 Log:
   Replace GPLd headers from the Maestro3 driver with BSD licensed
   versions derived from /usr/ports/audio/oss.
   
   The particular headers used were taken from the
   attic/drv/oss_allegro directory and are mostly identical
   to the previous files.
   
   The Maestro3 driver is now free from the GPL.
   
   NOTE: due to lack of testers this driver is being
   considered for deprecation and removal.
   
   PR:		kern/153920
   Approved by:	jhb (mentor)
   MFC after:	2 weeks
 
 Added:
   head/sys/dev/sound/pci/allegro_code.h   (contents, props changed)
   head/sys/dev/sound/pci/allegro_reg.h   (contents, props changed)
 Deleted:
   head/sys/gnu/dev/sound/pci/maestro3_dsp.h
   head/sys/gnu/dev/sound/pci/maestro3_reg.h
 Modified:
   head/sys/conf/files
   head/sys/dev/sound/pci/maestro3.c
   head/sys/modules/sound/driver/maestro3/Makefile
 
 Modified: head/sys/conf/files
 ==============================================================================
 --- head/sys/conf/files	Fri Jan 20 22:34:19 2012	(r230400)
 +++ head/sys/conf/files	Fri Jan 20 22:37:10 2012	(r230401)
 @@ -1741,8 +1741,7 @@ dev/sound/pci/es137x.c		optional snd_es1
  dev/sound/pci/fm801.c		optional snd_fm801 pci
  dev/sound/pci/ich.c		optional snd_ich pci
  dev/sound/pci/maestro.c		optional snd_maestro pci
 -dev/sound/pci/maestro3.c	optional snd_maestro3 pci \
 -	warning "kernel contains GPL contaminated maestro3 headers"
 +dev/sound/pci/maestro3.c	optional snd_maestro3 pci
  dev/sound/pci/neomagic.c	optional snd_neomagic pci
  dev/sound/pci/solo.c		optional snd_solo pci
  dev/sound/pci/spicds.c		optional snd_spicds pci
 
 Added: head/sys/dev/sound/pci/allegro_code.h
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ head/sys/dev/sound/pci/allegro_code.h	Fri Jan 20 22:37:10 2012	(r230401)
 @@ -0,0 +1,218 @@
 +/* $FreeBSD$ */
 +/*-
 + * Copyright (C) 1996-2008, 4Front Technologies
 + * Copyright (C) 1997-1999 ESS Technology, Inc
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + * 1. Redistributions of source code must retain the above copyright
 + *    notice, this list of conditions and the following disclaimer.
 + * 2. Redistributions in binary form must reproduce the above copyright
 + *    notice, this list of conditions and the following disclaimer in the
 + *    documentation and/or other materials provided with the distribution.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 + * SUCH DAMAGE.
 + *
 + */
 +
 +/*---------------------------------------------------------------------------
 + * This source code, its compiled object code, and its associated data sets
 + * are copyright (C) 1997-1999 ESS Technology, Inc. This source code and its
 + * associated data sets are trade secrets of ESS Technology, Inc.
 + *---------------------------------------------------------------------------
 + * DESCRIPTION: DSP binaries
 + *---------------------------------------------------------------------------
 + * AUTHOR:  Henry Tang / Hong Kim / Alger Yeung/Don Kim
 + *---------------------------------------------------------------------------
 + * For practical purposes we only include what is necessary for current
 + *  Maestro3 driver. Files used in this header include:
 + *    kernel.dat
 + *    400m_src.dat
 + *    mini_src_lpf from srcmgr.h
 + *---------------------------------------------------------------------------
 + */
 +#ifndef _DEV_SOUND_PCI_ALLEGRO_CODE_H
 +#define _DEV_SOUND_PCI_ALLEGRO_CODE_H
 +
 +/*
 + * Kernel
 + */
 +
 +uint16_t gaw_kernel_vect_code[] = {
 +    0x7980, 0x0030, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x00FB, 0x7980,
 +    0x00DD, 0x7980, 0x03B4, 0x7980, 0x0332, 0x7980, 0x0287, 0x7980, 0x03B4,
 +    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x031A, 0x7980,
 +    0x03B4, 0x7980, 0x022F, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4,
 +    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x0063, 0x7980, 0x006B, 0x7980,
 +    0x03B4, 0x7980, 0x03B4, 0xBF80, 0x2C7C, 0x8806, 0x8804, 0xBE40, 0xBC20,
 +    0xAE09, 0x1000, 0xAE0A, 0x0001, 0x6938, 0xEB08, 0x0053, 0x695A, 0xEB08,
 +    0x00D6, 0x0009, 0x8B88, 0x6980, 0xE388, 0x0036, 0xBE30, 0xBC20, 0x6909,
 +    0xB801, 0x9009, 0xBE41, 0xBE41, 0x6928, 0xEB88, 0x0078, 0xBE41, 0xBE40,
 +    0x7980, 0x0038, 0xBE41, 0xBE41, 0x903A, 0x6938, 0xE308, 0x0056, 0x903A,
 +    0xBE41, 0xBE40, 0xEF00, 0x903A, 0x6939, 0xE308, 0x005E, 0x903A, 0xEF00,
 +    0x690B, 0x660C, 0xEF8C, 0x690A, 0x660C, 0x620B, 0x6609, 0xEF00, 0x6910,
 +    0x660F, 0xEF04, 0xE388, 0x0075, 0x690E, 0x660F, 0x6210, 0x660D, 0xEF00,
 +    0x690E, 0x660D, 0xEF00, 0xAE70, 0x0001, 0xBC20, 0xAE27, 0x0001, 0x6939,
 +    0xEB08, 0x005D, 0x6926, 0xB801, 0x9026, 0x0026, 0x8B88, 0x6980, 0xE388,
 +    0x00CB, 0x9028, 0x0D28, 0x4211, 0xE100, 0x007A, 0x4711, 0xE100, 0x00A0,
 +    0x7A80, 0x0063, 0xB811, 0x660A, 0x6209, 0xE304, 0x007A, 0x0C0B, 0x4005,
 +    0x100A, 0xBA01, 0x9012, 0x0C12, 0x4002, 0x7980, 0x00AF, 0x7A80, 0x006B,
 +    0xBE02, 0x620E, 0x660D, 0xBA10, 0xE344, 0x007A, 0x0C10, 0x4005, 0x100E,
 +    0xBA01, 0x9012, 0x0C12, 0x4002, 0x1003, 0xBA02, 0x9012, 0x0C12, 0x4000, 
 +    0x1003, 0xE388, 0x00BA, 0x1004, 0x7980, 0x00BC, 0x1004, 0xBA01, 0x9012,
 +    0x0C12, 0x4001, 0x0C05, 0x4003, 0x0C06, 0x4004, 0x1011, 0xBFB0, 0x01FF,
 +    0x9012, 0x0C12, 0x4006, 0xBC20, 0xEF00, 0xAE26, 0x1028, 0x6970, 0xBFD0,
 +    0x0001, 0x9070, 0xE388, 0x007A, 0xAE28, 0x0000, 0xEF00, 0xAE70, 0x0300, 
 +    0x0C70, 0xB00C, 0xAE5A, 0x0000, 0xEF00, 0x7A80, 0x038A, 0x697F, 0xB801,
 +    0x907F, 0x0056, 0x8B88, 0x0CA0, 0xB008, 0xAF71, 0xB000, 0x4E71, 0xE200,
 +    0x00F3, 0xAE56, 0x1057, 0x0056, 0x0CA0, 0xB008, 0x8056, 0x7980, 0x03A1,
 +    0x0810, 0xBFA0, 0x1059, 0xE304, 0x03A1, 0x8056, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0xBF01, 0xBE43, 0xBE59, 0x907C, 0x6937, 0xE388, 0x010D, 0xBA01,
 +    0xE308, 0x010C, 0xAE71, 0x0004, 0x0C71, 0x5000, 0x6936, 0x9037, 0xBF0A,
 +    0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xBF0A, 0x0560, 0xF500, 0xBF0A,
 +    0x0520, 0xB900, 0xBB17, 0x90A0, 0x6917, 0xE388, 0x0148, 0x0D17, 0xE100,
 +    0x0127, 0xBF0C, 0x0578, 0xBF0D, 0x057C, 0x7980, 0x012B, 0xBF0C, 0x0538,
 +    0xBF0D, 0x053C, 0x6900, 0xE308, 0x0135, 0x8B8C, 0xBE59, 0xBB07, 0x90A0,
 +    0xBC20, 0x7980, 0x0157, 0x030C, 0x8B8B, 0xB903, 0x8809, 0xBEC6, 0x013E,
 +    0x69AC, 0x90AB, 0x69AD, 0x90AB, 0x0813, 0x660A, 0xE344, 0x0144, 0x0309,
 +    0x830C, 0xBC20, 0x7980, 0x0157, 0x6955, 0xE388, 0x0157, 0x7C38, 0xBF0B,
 +    0x0578, 0xF500, 0xBF0B, 0x0538, 0xB907, 0x8809, 0xBEC6, 0x0156, 0x10AB,
 +    0x90AA, 0x6974, 0xE388, 0x0163, 0xAE72, 0x0540, 0xF500, 0xAE72, 0x0500,
 +    0xAE61, 0x103B, 0x7A80, 0x02F6, 0x6978, 0xE388, 0x0182, 0x8B8C, 0xBF0C,
 +    0x0560, 0xE500, 0x7C40, 0x0814, 0xBA20, 0x8812, 0x733D, 0x7A80, 0x0380,
 +    0x733E, 0x7A80, 0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814,
 +    0xBA2C, 0x8812, 0x733F, 0x7A80, 0x0380, 0x7340, 0x7A80, 0x0380, 0x6975,
 +    0xE388, 0x018E, 0xAE72, 0x0548, 0xF500, 0xAE72, 0x0508, 0xAE61, 0x1041,
 +    0x7A80, 0x02F6, 0x6979, 0xE388, 0x01AD, 0x8B8C, 0xBF0C, 0x0560, 0xE500,
 +    0x7C40, 0x0814, 0xBA18, 0x8812, 0x7343, 0x7A80, 0x0380, 0x7344, 0x7A80,
 +    0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA24, 0x8812,
 +    0x7345, 0x7A80, 0x0380, 0x7346, 0x7A80, 0x0380, 0x6976, 0xE388, 0x01B9,
 +    0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61, 0x1047, 0x7A80, 0x02F6,
 +    0x697A, 0xE388, 0x01D8, 0x8B8C, 0xBF0C, 0x0560, 0xE500, 0x7C40, 0x0814,
 +    0xBA08, 0x8812, 0x7349, 0x7A80, 0x0380, 0x734A, 0x7A80, 0x0380, 0x8B8C,
 +    0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA14, 0x8812, 0x734B, 0x7A80,
 +    0x0380, 0x734C, 0x7A80, 0x0380, 0xBC21, 0xAE1C, 0x1090, 0x8B8A, 0xBF0A,
 +    0x0560, 0xE500, 0x7C40, 0x0812, 0xB804, 0x8813, 0x8B8D, 0xBF0D, 0x056C,
 +    0xE500, 0x7C40, 0x0815, 0xB804, 0x8811, 0x7A80, 0x034A, 0x8B8A, 0xBF0A,
 +    0x0560, 0xE500, 0x7C40, 0x731F, 0xB903, 0x8809, 0xBEC6, 0x01F9, 0x548A, 
 +    0xBE03, 0x98A0, 0x7320, 0xB903, 0x8809, 0xBEC6, 0x0201, 0x548A, 0xBE03,
 +    0x98A0, 0x1F20, 0x2F1F, 0x9826, 0xBC20, 0x6935, 0xE388, 0x03A1, 0x6933,
 +    0xB801, 0x9033, 0xBFA0, 0x02EE, 0xE308, 0x03A1, 0x9033, 0xBF00, 0x6951,
 +    0xE388, 0x021F, 0x7334, 0xBE80, 0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x9034,
 +    0x697E, 0x0D51, 0x9013, 0xBC20, 0x695C, 0xE388, 0x03A1, 0x735E, 0xBE80,
 +    0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x905E, 0x697E, 0x0D5C, 0x9013, 0x7980,
 +    0x03A1, 0x7A80, 0x038A, 0xBF01, 0xBE43, 0x6977, 0xE388, 0x024E, 0xAE61,
 +    0x104D, 0x0061, 0x8B88, 0x6980, 0xE388, 0x024E, 0x9071, 0x0D71, 0x000B,
 +    0xAFA0, 0x8010, 0xAFA0, 0x8010, 0x0810, 0x660A, 0xE308, 0x0249, 0x0009,
 +    0x0810, 0x660C, 0xE388, 0x024E, 0x800B, 0xBC20, 0x697B, 0xE388, 0x03A1,
 +    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xE100, 0x0266, 0x697C,
 +    0xBF90, 0x0560, 0x9072, 0x0372, 0x697C, 0xBF90, 0x0564, 0x9073, 0x0473,
 +    0x7980, 0x0270, 0x697C, 0xBF90, 0x0520, 0x9072, 0x0372, 0x697C, 0xBF90,
 +    0x0524, 0x9073, 0x0473, 0x697C, 0xB801, 0x907C, 0xBF0A, 0x10FD, 0x8B8A,
 +    0xAF80, 0x8010, 0x734F, 0x548A, 0xBE03, 0x9880, 0xBC21, 0x7326, 0x548B,
 +    0xBE03, 0x618B, 0x988C, 0xBE03, 0x6180, 0x9880, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0x0D28, 0x4711, 0xE100, 0x02BE, 0xAF12, 0x4006, 0x6912, 0xBFB0,
 +    0x0C00, 0xE388, 0x02B6, 0xBFA0, 0x0800, 0xE388, 0x02B2, 0x6912, 0xBFB0,
 +    0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02A3, 0x6909, 0x900B, 0x7980, 0x02A5,
 +    0xAF0B, 0x4005, 0x6901, 0x9005, 0x6902, 0x9006, 0x4311, 0xE100, 0x02ED,
 +    0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980, 0x02ED, 0x6909, 0x900B, 0x7980,
 +    0x02B8, 0xAF0B, 0x4005, 0xAF05, 0x4003, 0xAF06, 0x4004, 0x7980, 0x02ED,
 +    0xAF12, 0x4006, 0x6912, 0xBFB0, 0x0C00, 0xE388, 0x02E7, 0xBFA0, 0x0800,
 +    0xE388, 0x02E3, 0x6912, 0xBFB0, 0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02D4,
 +    0x690D, 0x9010, 0x7980, 0x02D6, 0xAF10, 0x4005, 0x6901, 0x9005, 0x6902,
 +    0x9006, 0x4311, 0xE100, 0x02ED, 0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980,
 +    0x02ED, 0x690D, 0x9010, 0x7980, 0x02E9, 0xAF10, 0x4005, 0xAF05, 0x4003,
 +    0xAF06, 0x4004, 0xBC20, 0x6970, 0x9071, 0x7A80, 0x0078, 0x6971, 0x9070,
 +    0x7980, 0x03A1, 0xBC20, 0x0361, 0x8B8B, 0x6980, 0xEF88, 0x0272, 0x0372,
 +    0x7804, 0x9071, 0x0D71, 0x8B8A, 0x000B, 0xB903, 0x8809, 0xBEC6, 0x0309,
 +    0x69A8, 0x90AB, 0x69A8, 0x90AA, 0x0810, 0x660A, 0xE344, 0x030F, 0x0009,
 +    0x0810, 0x660C, 0xE388, 0x0314, 0x800B, 0xBC20, 0x6961, 0xB801, 0x9061,
 +    0x7980, 0x02F7, 0x7A80, 0x038A, 0x5D35, 0x0001, 0x6934, 0xB801, 0x9034,
 +    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4880, 0xAE72, 0x0550, 0xF500,
 +    0xAE72, 0x0510, 0xAE61, 0x1051, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0x5D35, 0x0002, 0x695E, 0xB801, 0x905E, 0xBF0A, 0x109E, 0x8B8A,
 +    0xAF80, 0x8014, 0x4780, 0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61,
 +    0x105C, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x001C, 0x8B88, 0x6980, 0xEF88,
 +    0x901D, 0x0D1D, 0x100F, 0x6610, 0xE38C, 0x0358, 0x690E, 0x6610, 0x620F,
 +    0x660D, 0xBA0F, 0xE301, 0x037A, 0x0410, 0x8B8A, 0xB903, 0x8809, 0xBEC6,
 +    0x036C, 0x6A8C, 0x61AA, 0x98AB, 0x6A8C, 0x61AB, 0x98AD, 0x6A8C, 0x61AD,
 +    0x98A9, 0x6A8C, 0x61A9, 0x98AA, 0x7C04, 0x8B8B, 0x7C04, 0x8B8D, 0x7C04,
 +    0x8B89, 0x7C04, 0x0814, 0x660E, 0xE308, 0x0379, 0x040D, 0x8410, 0xBC21,
 +    0x691C, 0xB801, 0x901C, 0x7980, 0x034A, 0xB903, 0x8809, 0x8B8A, 0xBEC6,
 +    0x0388, 0x54AC, 0xBE03, 0x618C, 0x98AA, 0xEF00, 0xBC20, 0xBE46, 0x0809,
 +    0x906B, 0x080A, 0x906C, 0x080B, 0x906D, 0x081A, 0x9062, 0x081B, 0x9063,
 +    0x081E, 0x9064, 0xBE59, 0x881E, 0x8065, 0x8166, 0x8267, 0x8368, 0x8469,
 +    0x856A, 0xEF00, 0xBC20, 0x696B, 0x8809, 0x696C, 0x880A, 0x696D, 0x880B,
 +    0x6962, 0x881A, 0x6963, 0x881B, 0x6964, 0x881E, 0x0065, 0x0166, 0x0267,
 +    0x0368, 0x0469, 0x056A, 0xBE3A,
 +};
 +
 +/*
 + * MINI Sample Rate Conversion
 + */
 +
 +uint16_t gaw_minisrc_code_0400[] = {
 +    0xBF80, 0x101E, 0x906E, 0x006E, 0x8B88, 0x6980, 0xEF88, 0x906F, 0x0D6F,
 +    0x6900, 0xEB08, 0x0412, 0xBC20, 0x696E, 0xB801, 0x906E, 0x7980, 0x0403,
 +    0xB90E, 0x8807, 0xBE43, 0xBF01, 0xBE47, 0xBE41, 0x7A80, 0x002A, 0xBE40,
 +    0x3029, 0xEFCC, 0xBE41, 0x7A80, 0x0028, 0xBE40, 0x3028, 0xEFCC, 0x6907,
 +    0xE308, 0x042A, 0x6909, 0x902C, 0x7980, 0x042C, 0x690D, 0x902C, 0x1009,
 +    0x881A, 0x100A, 0xBA01, 0x881B, 0x100D, 0x881C, 0x100E, 0xBA01, 0x881D,
 +    0xBF80, 0x00ED, 0x881E, 0x050C, 0x0124, 0xB904, 0x9027, 0x6918, 0xE308,
 +    0x04B3, 0x902D, 0x6913, 0xBFA0, 0x7598, 0xF704, 0xAE2D, 0x00FF, 0x8B8D,
 +    0x6919, 0xE308, 0x0463, 0x691A, 0xE308, 0x0456, 0xB907, 0x8809, 0xBEC6,
 +    0x0453, 0x10A9, 0x90AD, 0x7980, 0x047C, 0xB903, 0x8809, 0xBEC6, 0x0460,
 +    0x1889, 0x6C22, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90AD, 0x7980, 0x047C,
 +    0x101A, 0xE308, 0x046F, 0xB903, 0x8809, 0xBEC6, 0x046C, 0x10A9, 0x90A0,
 +    0x90AD, 0x7980, 0x047C, 0xB901, 0x8809, 0xBEC6, 0x047B, 0x1889, 0x6C22,
 +    0x90A0, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90A0, 0x90AD, 0x692D, 0xE308,
 +    0x049C, 0x0124, 0xB703, 0xB902, 0x8818, 0x8B89, 0x022C, 0x108A, 0x7C04,
 +    0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89, 0x99A0,
 +    0x108A, 0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89,
 +    0x99AF, 0x7B99, 0x0484, 0x0124, 0x060F, 0x101B, 0x2013, 0x901B, 0xBFA0,
 +    0x7FFF, 0xE344, 0x04AC, 0x901B, 0x8B89, 0x7A80, 0x051A, 0x6927, 0xBA01,
 +    0x9027, 0x7A80, 0x0523, 0x6927, 0xE308, 0x049E, 0x7980, 0x050F, 0x0624,
 +    0x1026, 0x2013, 0x9026, 0xBFA0, 0x7FFF, 0xE304, 0x04C0, 0x8B8D, 0x7A80,
 +    0x051A, 0x7980, 0x04B4, 0x9026, 0x1013, 0x3026, 0x901B, 0x8B8D, 0x7A80,
 +    0x051A, 0x7A80, 0x0523, 0x1027, 0xBA01, 0x9027, 0xE308, 0x04B4, 0x0124,
 +    0x060F, 0x8B89, 0x691A, 0xE308, 0x04EA, 0x6919, 0xE388, 0x04E0, 0xB903,
 +    0x8809, 0xBEC6, 0x04DD, 0x1FA0, 0x2FAE, 0x98A9, 0x7980, 0x050F, 0xB901,
 +    0x8818, 0xB907, 0x8809, 0xBEC6, 0x04E7, 0x10EE, 0x90A9, 0x7980, 0x050F,
 +    0x6919, 0xE308, 0x04FE, 0xB903, 0x8809, 0xBE46, 0xBEC6, 0x04FA, 0x17A0,
 +    0xBE1E, 0x1FAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080, 0x99A9, 0xBE47,
 +    0x7980, 0x050F, 0xB901, 0x8809, 0xBEC6, 0x050E, 0x16A0, 0x26A0, 0xBFB7,
 +    0xFF00, 0xBE1E, 0x1EA0, 0x2EAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080,
 +    0x99A9, 0x850C, 0x860F, 0x6907, 0xE388, 0x0516, 0x0D07, 0x8510, 0xBE59,
 +    0x881E, 0xBE4A, 0xEF00, 0x101E, 0x901C, 0x101F, 0x901D, 0x10A0, 0x901E,
 +    0x10A0, 0x901F, 0xEF00, 0x101E, 0x301C, 0x9020, 0x731B, 0x5420, 0xBE03,
 +    0x9825, 0x1025, 0x201C, 0x9025, 0x7325, 0x5414, 0xBE03, 0x8B8E, 0x9880,
 +    0x692F, 0xE388, 0x0539, 0xBE59, 0xBB07, 0x6180, 0x9880, 0x8BA0, 0x101F,
 +    0x301D, 0x9021, 0x731B, 0x5421, 0xBE03, 0x982E, 0x102E, 0x201D, 0x902E,
 +    0x732E, 0x5415, 0xBE03, 0x9880, 0x692F, 0xE388, 0x054F, 0xBE59, 0xBB07,
 +    0x6180, 0x9880, 0x8BA0, 0x6918, 0xEF08, 0x7325, 0x5416, 0xBE03, 0x98A0,
 +    0x732E, 0x5417, 0xBE03, 0x98A0, 0xEF00, 0x8BA0, 0xBEC6, 0x056B, 0xBE59,
 +    0xBB04, 0xAA90, 0xBE04, 0xBE1E, 0x99E0, 0x8BE0, 0x69A0, 0x90D0, 0x69A0, 
 +    0x90D0, 0x081F, 0xB805, 0x881F, 0x8B90, 0x69A0, 0x90D0, 0x69A0, 0x9090,
 +    0x8BD0, 0x8BD8, 0xBE1F, 0xEF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +};
 +
 +uint16_t minisrc_lpf[10] = {
 +	0X0743, 0X1104, 0X0A4C, 0XF88D, 0X242C,
 +	0X1023, 0X1AA9, 0X0B60, 0XEFDD, 0X186F
 +};
 +
 +#endif	/* !_DEV_SOUND_PCI_ALLEGRO_CODE_H */
 
 Added: head/sys/dev/sound/pci/allegro_reg.h
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ head/sys/dev/sound/pci/allegro_reg.h	Fri Jan 20 22:37:10 2012	(r230401)
 @@ -0,0 +1,790 @@
 +/* $FreeBSD$ */
 +/*-
 + * Copyright (c) 1996-2008, 4Front Technologies
 + * Copyright (C) 1992-2000  Don Kim (don.kim@esstech.com)
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + * 1. Redistributions of source code must retain the above copyright
 + *    notice, this list of conditions and the following disclaimer.
 + * 2. Redistributions in binary form must reproduce the above copyright
 + *    notice, this list of conditions and the following disclaimer in the
 + *    documentation and/or other materials provided with the distribution.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 + * SUCH DAMAGE.
 + *
 + */
 +
 +/*---------------------------------------------------------------------------
 + *              Copyright (C) 1997-1999, ESS Technology, Inc.
 + * This source code, its compiled object code, and its associated data sets
 + * are copyright (C) 1997-1999 ESS Technology, Inc.
 + *---------------------------------------------------------------------------
 + * This header contains data structures and registers taken from the
 + * 4Front OSS Allegro BSD licensed driver (in the Attic/ directory).
 + *  Files used for this header include:
 + *    hardware.h
 + *    kernel.h and hckernel.h
 + *    srcmgr.h
 + *---------------------------------------------------------------------------
 + */
 +
 +#ifndef _DEV_SOUND_PCI_ALLEGRO_REG_H
 +#define _DEV_SOUND_PCI_ALLEGRO_REG_H
 +
 +/* Allegro PCI configuration registers */
 +#define PCI_LEGACY_AUDIO_CTRL   0x40
 +#define SOUND_BLASTER_ENABLE    0x00000001
 +#define FM_SYNTHESIS_ENABLE     0x00000002
 +#define GAME_PORT_ENABLE        0x00000004
 +#define MPU401_IO_ENABLE        0x00000008
 +#define MPU401_IRQ_ENABLE       0x00000010
 +#define ALIAS_10BIT_IO          0x00000020
 +#define SB_DMA_MASK             0x000000C0
 +#define SB_DMA_0                0x00000040
 +#define SB_DMA_1                0x00000040
 +#define SB_DMA_R                0x00000080
 +#define SB_DMA_3                0x000000C0
 +#define SB_IRQ_MASK             0x00000700
 +#define SB_IRQ_5                0x00000000
 +#define SB_IRQ_7                0x00000100
 +#define SB_IRQ_9                0x00000200
 +#define SB_IRQ_10               0x00000300
 +#define MIDI_IRQ_MASK           0x00003800
 +#define SERIAL_IRQ_ENABLE       0x00004000
 +#define DISABLE_LEGACY          0x00008000
 +
 +#define PCI_ALLEGRO_CONFIG      0x50
 +#define SB_ADDR_240             0x00000004
 +#define MPU_ADDR_MASK           0x00000018
 +#define MPU_ADDR_330            0x00000000
 +#define MPU_ADDR_300            0x00000008
 +#define MPU_ADDR_320            0x00000010
 +#define MPU_ADDR_340            0x00000018
 +#define USE_PCI_TIMING          0x00000040
 +#define POSTED_WRITE_ENABLE     0x00000080
 +#define DMA_POLICY_MASK         0x00000700
 +#define DMA_DDMA                0x00000000
 +#define DMA_TDMA                0x00000100
 +#define DMA_PCPCI               0x00000200
 +#define DMA_WBDMA16             0x00000400
 +#define DMA_WBDMA4              0x00000500
 +#define DMA_WBDMA2              0x00000600
 +#define DMA_WBDMA1              0x00000700
 +#define DMA_SAFE_GUARD          0x00000800
 +#define HI_PERF_GP_ENABLE       0x00001000
 +#define PIC_SNOOP_MODE_0        0x00002000
 +#define PIC_SNOOP_MODE_1        0x00004000
 +#define SOUNDBLASTER_IRQ_MASK   0x00008000
 +#define RING_IN_ENABLE          0x00010000
 +#define SPDIF_TEST_MODE         0x00020000
 +#define CLK_MULT_MODE_SELECT_2  0x00040000
 +#define EEPROM_WRITE_ENABLE     0x00080000
 +#define CODEC_DIR_IN            0x00100000
 +#define HV_BUTTON_FROM_GD       0x00200000
 +#define REDUCED_DEBOUNCE        0x00400000
 +#define HV_CTRL_ENABLE          0x00800000
 +#define SPDIF_ENABLE            0x01000000
 +#define CLK_DIV_SELECT          0x06000000
 +#define CLK_DIV_BY_48           0x00000000
 +#define CLK_DIV_BY_49           0x02000000
 +#define CLK_DIV_BY_50           0x04000000
 +#define CLK_DIV_RESERVED        0x06000000
 +#define PM_CTRL_ENABLE          0x08000000
 +#define CLK_MULT_MODE_SELECT    0x30000000
 +#define CLK_MULT_MODE_SHIFT     28
 +#define CLK_MULT_MODE_0         0x00000000
 +#define CLK_MULT_MODE_1         0x10000000
 +#define CLK_MULT_MODE_2         0x20000000
 +#define CLK_MULT_MODE_3         0x30000000
 +#define INT_CLK_SELECT          0x40000000
 +#define INT_CLK_MULT_RESET      0x80000000
 +
 +/* M3 */
 +#define INT_CLK_SRC_NOT_PCI     0x00100000
 +#define INT_CLK_MULT_ENABLE     0x80000000
 +
 +#define PCI_ACPI_CONTROL        0x54
 +#define PCI_ACPI_D0             0x00000000
 +#define PCI_ACPI_D1             0xB4F70000
 +#define PCI_ACPI_D2             0xB4F7B4F7
 +
 +#define PCI_USER_CONFIG         0x58
 +#define EXT_PCI_MASTER_ENABLE   0x00000001
 +#define SPDIF_OUT_SELECT        0x00000002
 +#define TEST_PIN_DIR_CTRL       0x00000004
 +#define AC97_CODEC_TEST         0x00000020
 +#define TRI_STATE_BUFFER        0x00000080
 +#define IN_CLK_12MHZ_SELECT     0x00000100
 +#define MULTI_FUNC_DISABLE      0x00000200
 +#define EXT_MASTER_PAIR_SEL     0x00000400
 +#define PCI_MASTER_SUPPORT      0x00000800
 +#define STOP_CLOCK_ENABLE       0x00001000
 +#define EAPD_DRIVE_ENABLE       0x00002000
 +#define REQ_TRI_STATE_ENABLE    0x00004000
 +#define REQ_LOW_ENABLE          0x00008000
 +#define MIDI_1_ENABLE           0x00010000
 +#define MIDI_2_ENABLE           0x00020000
 +#define SB_AUDIO_SYNC           0x00040000
 +#define HV_CTRL_TEST            0x00100000
 +#define SOUNDBLASTER_TEST       0x00400000
 +
 +#define PCI_USER_CONFIG_C       0x5C
 +
 +#define PCI_DDMA_CTRL           0x60
 +#define DDMA_ENABLE             0x00000001
 +
 +
 +/* Allegro registers */
 +#define HOST_INT_CTRL           0x18
 +#define SB_INT_ENABLE           0x0001
 +#define MPU401_INT_ENABLE       0x0002
 +#define ASSP_INT_ENABLE         0x0010
 +#define RING_INT_ENABLE         0x0020
 +#define HV_INT_ENABLE           0x0040
 +#define CLKRUN_GEN_ENABLE       0x0100
 +#define HV_CTRL_TO_PME          0x0400
 +#define SOFTWARE_RESET_ENABLE   0x8000
 +
 +#define HOST_INT_STATUS         0x1A
 +#define SB_INT_PENDING          0x01
 +#define MPU401_INT_PENDING      0x02
 +#define ASSP_INT_PENDING        0x10
 +#define RING_INT_PENDING        0x20
 +#define HV_INT_PENDING          0x40
 +
 +#define HARDWARE_VOL_CTRL       0x1B
 +#define SHADOW_MIX_REG_VOICE    0x1C
 +#define HW_VOL_COUNTER_VOICE    0x1D
 +#define SHADOW_MIX_REG_MASTER   0x1E
 +#define HW_VOL_COUNTER_MASTER   0x1F
 +
 +#define CODEC_COMMAND           0x30
 +#define CODEC_READ_B            0x80
 +
 +#define CODEC_STATUS            0x30
 +#define CODEC_BUSY_B            0x01
 +
 +#define CODEC_DATA              0x32
 +
 +/* AC97 registers */
 +#ifndef M3_MODEL
 +#define AC97_RESET              0x00
 +#endif
 +
 +#define AC97_VOL_MUTE_B         0x8000
 +#define AC97_VOL_M              0x1F
 +#define AC97_LEFT_VOL_S         8
 +
 +#define AC97_MASTER_VOL         0x02
 +#define AC97_LINE_LEVEL_VOL     0x04
 +#define AC97_MASTER_MONO_VOL    0x06
 +#define AC97_PC_BEEP_VOL        0x0A
 +#define AC97_PC_BEEP_VOL_M      0x0F
 +#define AC97_SROUND_MASTER_VOL  0x38
 +#define AC97_PC_BEEP_VOL_S      1
 +
 +#ifndef M3_MODEL
 +#define AC97_PHONE_VOL          0x0C
 +#define AC97_MIC_VOL            0x0E
 +#endif
 +#define AC97_MIC_20DB_ENABLE    0x40
 +
 +#ifndef M3_MODEL
 +#define AC97_LINEIN_VOL         0x10
 +#define AC97_CD_VOL             0x12
 +#define AC97_VIDEO_VOL          0x14
 +#define AC97_AUX_VOL            0x16
 +#endif
 +#define AC97_PCM_OUT_VOL        0x18
 +#ifndef M3_MODEL
 +#define AC97_RECORD_SELECT      0x1A
 +#endif
 +#define AC97_RECORD_MIC         0x00
 +#define AC97_RECORD_CD          0x01
 +#define AC97_RECORD_VIDEO       0x02
 +#define AC97_RECORD_AUX         0x03
 +#define AC97_RECORD_MONO_MUX    0x02
 +#define AC97_RECORD_DIGITAL     0x03
 +#define AC97_RECORD_LINE        0x04
 +#define AC97_RECORD_STEREO      0x05
 +#define AC97_RECORD_MONO        0x06
 +#define AC97_RECORD_PHONE       0x07
 +
 +#ifndef M3_MODEL
 +#define AC97_RECORD_GAIN        0x1C
 +#endif
 +#define AC97_RECORD_VOL_M       0x0F
 +
 +#ifndef M3_MODEL
 +#define AC97_GENERAL_PURPOSE    0x20
 +#endif
 +#define AC97_POWER_DOWN_CTRL    0x26
 +#define AC97_ADC_READY          0x0001
 +#define AC97_DAC_READY          0x0002
 +#define AC97_ANALOG_READY       0x0004
 +#define AC97_VREF_ON            0x0008
 +#define AC97_PR0                0x0100
 +#define AC97_PR1                0x0200
 +#define AC97_PR2                0x0400
 +#define AC97_PR3                0x0800
 +#define AC97_PR4                0x1000
 +
 +#define AC97_RESERVED1          0x28
 +
 +#define AC97_VENDOR_TEST        0x5A
 +
 +#define AC97_CLOCK_DELAY        0x5C
 +#define AC97_LINEOUT_MUX_SEL    0x0001
 +#define AC97_MONO_MUX_SEL       0x0002
 +#define AC97_CLOCK_DELAY_SEL    0x1F
 +#define AC97_DAC_CDS_SHIFT      6
 +#define AC97_ADC_CDS_SHIFT      11
 +
 +#define AC97_MULTI_CHANNEL_SEL  0x74
 +
 +#ifndef M3_MODEL
 +#define AC97_VENDOR_ID1         0x7C
 +#define AC97_VENDOR_ID2         0x7E
 +#endif
 +
 +#define RING_BUS_CTRL_A         0x36
 +#define RAC_PME_ENABLE          0x0100
 +#define RAC_SDFS_ENABLE         0x0200
 +#define LAC_PME_ENABLE          0x0400
 +#define LAC_SDFS_ENABLE         0x0800
 +#define SERIAL_AC_LINK_ENABLE   0x1000
 +#define IO_SRAM_ENABLE          0x2000
 +#define IIS_INPUT_ENABLE        0x8000
 +
 +#define RING_BUS_CTRL_B         0x38
 +#define SECOND_CODEC_ID_MASK    0x0003
 +#define SPDIF_FUNC_ENABLE       0x0010
 +#define SECOND_AC_ENABLE        0x0020
 +#define SB_MODULE_INTF_ENABLE   0x0040
 +#define SSPE_ENABLE             0x0040
 +#define M3I_DOCK_ENABLE         0x0080
 +
 +#define SDO_OUT_DEST_CTRL       0x3A
 +#define COMMAND_ADDR_OUT        0x0003
 +#define PCM_LR_OUT_LOCAL        0x0000
 +#define PCM_LR_OUT_REMOTE       0x0004
 +#define PCM_LR_OUT_MUTE         0x0008
 +#define PCM_LR_OUT_BOTH         0x000C
 +#define LINE1_DAC_OUT_LOCAL     0x0000
 +#define LINE1_DAC_OUT_REMOTE    0x0010
 +#define LINE1_DAC_OUT_MUTE      0x0020
 +#define LINE1_DAC_OUT_BOTH      0x0030
 +#define PCM_CLS_OUT_LOCAL       0x0000
 +#define PCM_CLS_OUT_REMOTE      0x0040
 +#define PCM_CLS_OUT_MUTE        0x0080
 +#define PCM_CLS_OUT_BOTH        0x00C0
 +#define PCM_RLF_OUT_LOCAL       0x0000
 +#define PCM_RLF_OUT_REMOTE      0x0100
 +#define PCM_RLF_OUT_MUTE        0x0200
 +#define PCM_RLF_OUT_BOTH        0x0300
 +#define LINE2_DAC_OUT_LOCAL     0x0000
 +#define LINE2_DAC_OUT_REMOTE    0x0400
 +#define LINE2_DAC_OUT_MUTE      0x0800
 +#define LINE2_DAC_OUT_BOTH      0x0C00
 +#define HANDSET_OUT_LOCAL       0x0000
 +#define HANDSET_OUT_REMOTE      0x1000
 +#define HANDSET_OUT_MUTE        0x2000
 +#define HANDSET_OUT_BOTH        0x3000
 +#define IO_CTRL_OUT_LOCAL       0x0000
 +#define IO_CTRL_OUT_REMOTE      0x4000
 +#define IO_CTRL_OUT_MUTE        0x8000
 +#define IO_CTRL_OUT_BOTH        0xC000
 +
 +#define SDO_IN_DEST_CTRL        0x3C
 +#define STATUS_ADDR_IN          0x0003
 +#define PCM_LR_IN_LOCAL         0x0000
 +#define PCM_LR_IN_REMOTE        0x0004
 +#define PCM_LR_RESERVED         0x0008
 +#define PCM_LR_IN_BOTH          0x000C
 +#define LINE1_ADC_IN_LOCAL      0x0000
 +#define LINE1_ADC_IN_REMOTE     0x0010
 +#define LINE1_ADC_IN_MUTE       0x0020
 +#define MIC_ADC_IN_LOCAL        0x0000
 +#define MIC_ADC_IN_REMOTE       0x0040
 +#define MIC_ADC_IN_MUTE         0x0080
 +#define LINE2_DAC_IN_LOCAL      0x0000
 +#define LINE2_DAC_IN_REMOTE     0x0400
 +#define LINE2_DAC_IN_MUTE       0x0800
 +#define HANDSET_IN_LOCAL        0x0000
 +#define HANDSET_IN_REMOTE       0x1000
 +#define HANDSET_IN_MUTE         0x2000
 +#define IO_STATUS_IN_LOCAL      0x0000
 +#define IO_STATUS_IN_REMOTE     0x4000
 +
 +#define SPDIF_IN_CTRL           0x3E
 +#define SPDIF_IN_ENABLE         0x0001
 +
 +#define GPIO_DATA               0x60
 +#define GPIO_DATA_MASK          0x0FFF
 +#define GPIO_HV_STATUS          0x3000
 +#define GPIO_PME_STATUS         0x4000
 +
 +#define GPIO_MASK               0x64
 +#define GPIO_DIRECTION          0x68
 +#define GPO_PRIMARY_AC97        0x0001
 +#define GPI_LINEOUT_SENSE       0x0004
 +#define GPO_SECONDARY_AC97      0x0008
 +#define GPI_VOL_DOWN            0x0010
 +#define GPI_VOL_UP              0x0020
 +#define GPI_IIS_CLK             0x0040
 +#define GPI_IIS_LRCLK           0x0080
 +#define GPI_IIS_DATA            0x0100
 +#define GPI_DOCKING_STATUS      0x0100
 +#define GPI_HEADPHONE_SENSE     0x0200
 +#define GPO_EXT_AMP_SHUTDOWN    0x1000
 +
 +/* M3 */
 +#define GPO_M3_EXT_AMP_SHUTDN   0x0002
 +
 +#define ASSP_INDEX_PORT         0x80
 +#define ASSP_MEMORY_PORT        0x82
 +#define ASSP_DATA_PORT          0x84
 +
 +#define MPU401_DATA_PORT        0x98
 +#define MPU401_STATUS_PORT      0x99
 +
 +#define CLK_MULT_DATA_PORT      0x9C
 +
 +#define ASSP_CONTROL_A          0xA2
 +#define ASSP_0_WS_ENABLE        0x01
 +#define ASSP_CTRL_A_RESERVED1   0x02
 +#define ASSP_CTRL_A_RESERVED2   0x04
 +#define ASSP_CLK_49MHZ_SELECT   0x08
 +#define FAST_PLU_ENABLE         0x10
 +#define ASSP_CTRL_A_RESERVED3   0x20
 +#define DSP_CLK_36MHZ_SELECT    0x40
 +
 +#define ASSP_CONTROL_B          0xA4
 +#define RESET_ASSP              0x00
 +#define RUN_ASSP                0x01
 +#define ENABLE_ASSP_CLOCK       0x00
 +#define STOP_ASSP_CLOCK         0x10
 +#define RESET_TOGGLE            0x40
 +
 +#define ASSP_CONTROL_C          0xA6
 +#define ASSP_HOST_INT_ENABLE    0x01
 +#define FM_ADDR_REMAP_DISABLE   0x02
 +#define HOST_WRITE_PORT_ENABLE  0x08
 +
 +#define ASSP_HOST_INT_STATUS    0xAC
 +#define DSP2HOST_REQ_PIORECORD  0x01
 +#define DSP2HOST_REQ_I2SRATE    0x02
 +#define DSP2HOST_REQ_TIMER      0x04
 +
 +/*
 + * DSP memory map
 + */
 +
 +#define REV_A_CODE_MEMORY_BEGIN         0x0000
 +#define REV_A_CODE_MEMORY_END           0x0FFF
 +#define REV_A_CODE_MEMORY_UNIT_LENGTH   0x0040
 +#define REV_A_CODE_MEMORY_LENGTH        (REV_A_CODE_MEMORY_END - REV_A_CODE_MEMORY_BEGIN + 1)
 +
 +#define REV_B_CODE_MEMORY_BEGIN         0x0000
 +#define REV_B_CODE_MEMORY_END           0x0BFF
 +#define REV_B_CODE_MEMORY_UNIT_LENGTH   0x0040
 +#define REV_B_CODE_MEMORY_LENGTH        (REV_B_CODE_MEMORY_END - REV_B_CODE_MEMORY_BEGIN + 1)
 +
 +#if (REV_A_CODE_MEMORY_LENGTH % REV_A_CODE_MEMORY_UNIT_LENGTH)
 +#error Assumption about code memory unit length failed.
 +#endif
 +#if (REV_B_CODE_MEMORY_LENGTH % REV_B_CODE_MEMORY_UNIT_LENGTH)
 +#error Assumption about code memory unit length failed.
 +#endif
 +
 +#define REV_A_DATA_MEMORY_BEGIN         0x1000
 +#define REV_A_DATA_MEMORY_END           0x2FFF
 +#define REV_A_DATA_MEMORY_UNIT_LENGTH   0x0080
 +#define REV_A_DATA_MEMORY_LENGTH        (REV_A_DATA_MEMORY_END - REV_A_DATA_MEMORY_BEGIN + 1)
 +
 +#define REV_B_DATA_MEMORY_BEGIN         0x1000
 +/*#define REV_B_DATA_MEMORY_END           0x23FF */
 +#define REV_B_DATA_MEMORY_END           0x2BFF
 +#define REV_B_DATA_MEMORY_UNIT_LENGTH   0x0080
 +#define REV_B_DATA_MEMORY_LENGTH        (REV_B_DATA_MEMORY_END - REV_B_DATA_MEMORY_BEGIN + 1)
 +
 +#if (REV_A_DATA_MEMORY_LENGTH % REV_A_DATA_MEMORY_UNIT_LENGTH)
 +#error Assumption about data memory unit length failed.
 +#endif
 +#if (REV_B_DATA_MEMORY_LENGTH % REV_B_DATA_MEMORY_UNIT_LENGTH)
 +#error Assumption about data memory unit length failed.
 +#endif
 +
 +#define CODE_MEMORY_MAP_LENGTH          (64 + 1)
 +#define DATA_MEMORY_MAP_LENGTH          (64 + 1)
 +
 +#if (CODE_MEMORY_MAP_LENGTH < ((REV_A_CODE_MEMORY_LENGTH / REV_A_CODE_MEMORY_UNIT_LENGTH) + 1))
 +#error Code memory map length too short.
 +#endif
 +#if (DATA_MEMORY_MAP_LENGTH < ((REV_A_DATA_MEMORY_LENGTH / REV_A_DATA_MEMORY_UNIT_LENGTH) + 1))
 +#error Data memory map length too short.
 +#endif
 +#if (CODE_MEMORY_MAP_LENGTH < ((REV_B_CODE_MEMORY_LENGTH / REV_B_CODE_MEMORY_UNIT_LENGTH) + 1))
 +#error Code memory map length too short.
 +#endif
 +#if (DATA_MEMORY_MAP_LENGTH < ((REV_B_DATA_MEMORY_LENGTH / REV_B_DATA_MEMORY_UNIT_LENGTH) + 1))
 +#error Data memory map length too short.
 +#endif
 +
 +
 +/*
 + * Kernel code memory definition
 + */
 +
 +#define KCODE_VECTORS_BEGIN             0x0000
 +#define KCODE_VECTORS_END               0x002F
 +#define KCODE_VECTORS_UNIT_LENGTH       0x0002
 +#define KCODE_VECTORS_LENGTH            (KCODE_VECTORS_END - KCODE_VECTORS_BEGIN + 1)
 +
 +
 +/*
 + * Kernel data memory definition
 + */
 +
 +#define KDATA_BASE_ADDR                 0x1000
 +#define KDATA_BASE_ADDR2                0x1080
 +
 +#define KDATA_TASK0                     (KDATA_BASE_ADDR + 0x0000)
 +#define KDATA_TASK1                     (KDATA_BASE_ADDR + 0x0001)
 +#define KDATA_TASK2                     (KDATA_BASE_ADDR + 0x0002)
 +#define KDATA_TASK3                     (KDATA_BASE_ADDR + 0x0003)
 +#define KDATA_TASK4                     (KDATA_BASE_ADDR + 0x0004)
 +#define KDATA_TASK5                     (KDATA_BASE_ADDR + 0x0005)
 +#define KDATA_TASK6                     (KDATA_BASE_ADDR + 0x0006)
 +#define KDATA_TASK7                     (KDATA_BASE_ADDR + 0x0007)
 +#define KDATA_TASK_ENDMARK              (KDATA_BASE_ADDR + 0x0008)
 +
 +#define KDATA_CURRENT_TASK              (KDATA_BASE_ADDR + 0x0009)
 +#define KDATA_TASK_SWITCH               (KDATA_BASE_ADDR + 0x000A)
 +
 +#define KDATA_INSTANCE0_POS3D           (KDATA_BASE_ADDR + 0x000B)
 +#define KDATA_INSTANCE1_POS3D           (KDATA_BASE_ADDR + 0x000C)
 +#define KDATA_INSTANCE2_POS3D           (KDATA_BASE_ADDR + 0x000D)
 +#define KDATA_INSTANCE3_POS3D           (KDATA_BASE_ADDR + 0x000E)
 +#define KDATA_INSTANCE4_POS3D           (KDATA_BASE_ADDR + 0x000F)
 +#define KDATA_INSTANCE5_POS3D           (KDATA_BASE_ADDR + 0x0010)
 +#define KDATA_INSTANCE6_POS3D           (KDATA_BASE_ADDR + 0x0011)
 +#define KDATA_INSTANCE7_POS3D           (KDATA_BASE_ADDR + 0x0012)
 +#define KDATA_INSTANCE8_POS3D           (KDATA_BASE_ADDR + 0x0013)
 +#define KDATA_INSTANCE_POS3D_ENDMARK    (KDATA_BASE_ADDR + 0x0014)
 +
 +#define KDATA_INSTANCE0_SPKVIRT         (KDATA_BASE_ADDR + 0x0015)
 +#define KDATA_INSTANCE_SPKVIRT_ENDMARK  (KDATA_BASE_ADDR + 0x0016)
 +
 +#define KDATA_INSTANCE0_SPDIF           (KDATA_BASE_ADDR + 0x0017)
 +#define KDATA_INSTANCE_SPDIF_ENDMARK    (KDATA_BASE_ADDR + 0x0018)
 +
 +#define KDATA_INSTANCE0_MODEM           (KDATA_BASE_ADDR + 0x0019)
 +#define KDATA_INSTANCE_MODEM_ENDMARK    (KDATA_BASE_ADDR + 0x001A)
 +
 +#define KDATA_INSTANCE0_SRC             (KDATA_BASE_ADDR + 0x001B)
 +#define KDATA_INSTANCE1_SRC             (KDATA_BASE_ADDR + 0x001C)
 +#define KDATA_INSTANCE_SRC_ENDMARK      (KDATA_BASE_ADDR + 0x001D)
 +
 +#define KDATA_INSTANCE0_MINISRC         (KDATA_BASE_ADDR + 0x001E)
 +#define KDATA_INSTANCE1_MINISRC         (KDATA_BASE_ADDR + 0x001F)
 +#define KDATA_INSTANCE2_MINISRC         (KDATA_BASE_ADDR + 0x0020)
 +#define KDATA_INSTANCE3_MINISRC         (KDATA_BASE_ADDR + 0x0021)
 +#define KDATA_INSTANCE_MINISRC_ENDMARK  (KDATA_BASE_ADDR + 0x0022)
 +
 +#define KDATA_INSTANCE0_CPYTHRU         (KDATA_BASE_ADDR + 0x0023)
 +#define KDATA_INSTANCE1_CPYTHRU         (KDATA_BASE_ADDR + 0x0024)
 +#define KDATA_INSTANCE_CPYTHRU_ENDMARK  (KDATA_BASE_ADDR + 0x0025)
 +
 +#define KDATA_CURRENT_DMA               (KDATA_BASE_ADDR + 0x0026)
 +#define KDATA_DMA_SWITCH                (KDATA_BASE_ADDR + 0x0027)
 +#define KDATA_DMA_ACTIVE                (KDATA_BASE_ADDR + 0x0028)
 +
 +#define KDATA_DMA_XFER0                 (KDATA_BASE_ADDR + 0x0029)
 +#define KDATA_DMA_XFER1                 (KDATA_BASE_ADDR + 0x002A)
 +#define KDATA_DMA_XFER2                 (KDATA_BASE_ADDR + 0x002B)
 +#define KDATA_DMA_XFER3                 (KDATA_BASE_ADDR + 0x002C)
 +#define KDATA_DMA_XFER4                 (KDATA_BASE_ADDR + 0x002D)
 +#define KDATA_DMA_XFER5                 (KDATA_BASE_ADDR + 0x002E)
 +#define KDATA_DMA_XFER6                 (KDATA_BASE_ADDR + 0x002F)
 +#define KDATA_DMA_XFER7                 (KDATA_BASE_ADDR + 0x0030)
 +#define KDATA_DMA_XFER8                 (KDATA_BASE_ADDR + 0x0031)
 +#define KDATA_DMA_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0032)
 +
 +#define KDATA_I2S_SAMPLE_COUNT          (KDATA_BASE_ADDR + 0x0033)
 +#define KDATA_I2S_INT_METER             (KDATA_BASE_ADDR + 0x0034)
 +#define KDATA_I2S_ACTIVE                (KDATA_BASE_ADDR + 0x0035)
 +
 +#define KDATA_TIMER_COUNT_RELOAD        (KDATA_BASE_ADDR + 0x0036)
 +#define KDATA_TIMER_COUNT_CURRENT       (KDATA_BASE_ADDR + 0x0037)
 +
 +#define KDATA_HALT_SYNCH_CLIENT         (KDATA_BASE_ADDR + 0x0038)
 +#define KDATA_HALT_SYNCH_DMA            (KDATA_BASE_ADDR + 0x0039)
 +#define KDATA_HALT_ACKNOWLEDGE          (KDATA_BASE_ADDR + 0x003A)
 +
 +#define KDATA_ADC1_XFER0                (KDATA_BASE_ADDR + 0x003B)
 +#define KDATA_ADC1_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x003C)
 +#define KDATA_ADC1_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x003D)
 +#define KDATA_ADC1_RIGHT_VOLUME  	(KDATA_BASE_ADDR + 0x003E)
 +#define KDATA_ADC1_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x003F)
 +#define KDATA_ADC1_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0040)
 +
 +#define KDATA_ADC2_XFER0                (KDATA_BASE_ADDR + 0x0041)
 +#define KDATA_ADC2_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x0042)
 +#define KDATA_ADC2_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0043)
 +#define KDATA_ADC2_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x0044)
 +#define KDATA_ADC2_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x0045)
 +#define KDATA_ADC2_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0046)
 +
 +#define KDATA_CD_XFER0			(KDATA_BASE_ADDR + 0x0047)
 +#define KDATA_CD_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x0048)
 +#define KDATA_CD_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0049)
 +#define KDATA_CD_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x004A)
 +#define KDATA_CD_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x004B)
 +#define KDATA_CD_RIGHT_SUR_VOL		(KDATA_BASE_ADDR + 0x004C)
 +
 +#define KDATA_MIC_XFER0			(KDATA_BASE_ADDR + 0x004D)
 +#define KDATA_MIC_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x004E)
 +#define KDATA_MIC_VOLUME		(KDATA_BASE_ADDR + 0x004F)
 +#define KDATA_MIC_SUR_VOL		(KDATA_BASE_ADDR + 0x0050)
 +
 +#define KDATA_I2S_XFER0                 (KDATA_BASE_ADDR + 0x0051)
 +#define KDATA_I2S_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0052)
 +
 +#define KDATA_CHI_XFER0                 (KDATA_BASE_ADDR + 0x0053)
 +#define KDATA_CHI_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0054)
 +
 +#define KDATA_SPDIF_XFER                (KDATA_BASE_ADDR + 0x0055)
 +#define KDATA_SPDIF_CURRENT_FRAME       (KDATA_BASE_ADDR + 0x0056)
 +#define KDATA_SPDIF_FRAME0              (KDATA_BASE_ADDR + 0x0057)
 +#define KDATA_SPDIF_FRAME1              (KDATA_BASE_ADDR + 0x0058)
 +#define KDATA_SPDIF_FRAME2              (KDATA_BASE_ADDR + 0x0059)
 +
 +#define KDATA_SPDIF_REQUEST             (KDATA_BASE_ADDR + 0x005A)
 +#define KDATA_SPDIF_TEMP                (KDATA_BASE_ADDR + 0x005B)
 +
 +/*AY SPDIF IN */
 +#define KDATA_SPDIFIN_XFER0             (KDATA_BASE_ADDR + 0x005C)
 +#define KDATA_SPDIFIN_XFER_ENDMARK      (KDATA_BASE_ADDR + 0x005D)
 +#define KDATA_SPDIFIN_INT_METER         (KDATA_BASE_ADDR + 0x005E)
 +
 +#define KDATA_DSP_RESET_COUNT           (KDATA_BASE_ADDR + 0x005F)
 +#define KDATA_DEBUG_OUTPUT              (KDATA_BASE_ADDR + 0x0060)
 +
 +#define KDATA_KERNEL_ISR_LIST           (KDATA_BASE_ADDR + 0x0061)
 +
 +#define KDATA_KERNEL_ISR_CBSR1          (KDATA_BASE_ADDR + 0x0062)
 +#define KDATA_KERNEL_ISR_CBER1          (KDATA_BASE_ADDR + 0x0063)
 +#define KDATA_KERNEL_ISR_CBCR           (KDATA_BASE_ADDR + 0x0064)
 +#define KDATA_KERNEL_ISR_AR0            (KDATA_BASE_ADDR + 0x0065)
 +#define KDATA_KERNEL_ISR_AR1            (KDATA_BASE_ADDR + 0x0066)
 +#define KDATA_KERNEL_ISR_AR2            (KDATA_BASE_ADDR + 0x0067)
 +#define KDATA_KERNEL_ISR_AR3            (KDATA_BASE_ADDR + 0x0068)
 +#define KDATA_KERNEL_ISR_AR4            (KDATA_BASE_ADDR + 0x0069)
 +#define KDATA_KERNEL_ISR_AR5            (KDATA_BASE_ADDR + 0x006A)
 +#define KDATA_KERNEL_ISR_BRCR           (KDATA_BASE_ADDR + 0x006B)
 +#define KDATA_KERNEL_ISR_PASR           (KDATA_BASE_ADDR + 0x006C)
 +#define KDATA_KERNEL_ISR_PAER           (KDATA_BASE_ADDR + 0x006D)
 +
 +#define KDATA_CLIENT_SCRATCH0           (KDATA_BASE_ADDR + 0x006E)
 +#define KDATA_CLIENT_SCRATCH1           (KDATA_BASE_ADDR + 0x006F)
 +#define KDATA_KERNEL_SCRATCH            (KDATA_BASE_ADDR + 0x0070)
 +#define KDATA_KERNEL_ISR_SCRATCH        (KDATA_BASE_ADDR + 0x0071)
 +
 +#define KDATA_OUEUE_LEFT                (KDATA_BASE_ADDR + 0x0072)
 +#define KDATA_QUEUE_RIGHT               (KDATA_BASE_ADDR + 0x0073)
 +
 +#define KDATA_ADC1_REQUEST              (KDATA_BASE_ADDR + 0x0074)
 +#define KDATA_ADC2_REQUEST              (KDATA_BASE_ADDR + 0x0075)
 +#define KDATA_CD_REQUEST		(KDATA_BASE_ADDR + 0x0076)
 +#define KDATA_MIC_REQUEST		(KDATA_BASE_ADDR + 0x0077)
 +
 +#define KDATA_ADC1_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0078)
 +#define KDATA_ADC2_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0079)
 +#define KDATA_CD_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007A)
 +#define KDATA_MIC_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007B)
 +#define KDATA_MIC_SYNC_COUNTER		(KDATA_BASE_ADDR + 0x007C)
 +
 +/*
 + * second segment
 + */
 +
 +/* smart mixer buffer */
 +
 +#define KDATA_MIXER_WORD0               (KDATA_BASE_ADDR2 + 0x0000)
 +#define KDATA_MIXER_WORD1               (KDATA_BASE_ADDR2 + 0x0001)
 +#define KDATA_MIXER_WORD2               (KDATA_BASE_ADDR2 + 0x0002)
 +#define KDATA_MIXER_WORD3               (KDATA_BASE_ADDR2 + 0x0003)
 +#define KDATA_MIXER_WORD4               (KDATA_BASE_ADDR2 + 0x0004)
 +#define KDATA_MIXER_WORD5               (KDATA_BASE_ADDR2 + 0x0005)
 +#define KDATA_MIXER_WORD6               (KDATA_BASE_ADDR2 + 0x0006)
 +#define KDATA_MIXER_WORD7               (KDATA_BASE_ADDR2 + 0x0007)
 +#define KDATA_MIXER_WORD8               (KDATA_BASE_ADDR2 + 0x0008)
 +#define KDATA_MIXER_WORD9               (KDATA_BASE_ADDR2 + 0x0009)
 +#define KDATA_MIXER_WORDA               (KDATA_BASE_ADDR2 + 0x000A)
 +#define KDATA_MIXER_WORDB               (KDATA_BASE_ADDR2 + 0x000B)
 +#define KDATA_MIXER_WORDC               (KDATA_BASE_ADDR2 + 0x000C)
 +#define KDATA_MIXER_WORDD               (KDATA_BASE_ADDR2 + 0x000D)
 +#define KDATA_MIXER_WORDE               (KDATA_BASE_ADDR2 + 0x000E)
 +#define KDATA_MIXER_WORDF               (KDATA_BASE_ADDR2 + 0x000F)
 +
 +#define KDATA_MIXER_XFER0               (KDATA_BASE_ADDR2 + 0x0010)
 +#define KDATA_MIXER_XFER1               (KDATA_BASE_ADDR2 + 0x0011)
 +#define KDATA_MIXER_XFER2               (KDATA_BASE_ADDR2 + 0x0012)
 +#define KDATA_MIXER_XFER3               (KDATA_BASE_ADDR2 + 0x0013)
 +#define KDATA_MIXER_XFER4               (KDATA_BASE_ADDR2 + 0x0014)
 +#define KDATA_MIXER_XFER5               (KDATA_BASE_ADDR2 + 0x0015)
 +#define KDATA_MIXER_XFER6               (KDATA_BASE_ADDR2 + 0x0016)
 +#define KDATA_MIXER_XFER7               (KDATA_BASE_ADDR2 + 0x0017)
 +#define KDATA_MIXER_XFER8               (KDATA_BASE_ADDR2 + 0x0018)
 +#define KDATA_MIXER_XFER9               (KDATA_BASE_ADDR2 + 0x0019)
 +#define KDATA_MIXER_XFER_ENDMARK        (KDATA_BASE_ADDR2 + 0x001A)
 +
 +#define KDATA_MIXER_TASK_NUMBER         (KDATA_BASE_ADDR2 + 0x001B)
 +#define KDATA_CURRENT_MIXER             (KDATA_BASE_ADDR2 + 0x001C)
 +#define KDATA_MIXER_ACTIVE              (KDATA_BASE_ADDR2 + 0x001D)
 +#define KDATA_MIXER_BANK_STATUS         (KDATA_BASE_ADDR2 + 0x001E)
 +#define KDATA_DAC_LEFT_VOLUME	        (KDATA_BASE_ADDR2 + 0x001F)
 +#define KDATA_DAC_RIGHT_VOLUME          (KDATA_BASE_ADDR2 + 0x0020)
 +
 +/*
 + * Client data memory definition
 + */
 +
 +#define CDATA_INSTANCE_READY            0x00
 +
 +#define CDATA_HOST_SRC_ADDRL            0x01
 +#define CDATA_HOST_SRC_ADDRH            0x02
 +#define CDATA_HOST_SRC_END_PLUS_1L      0x03
 +#define CDATA_HOST_SRC_END_PLUS_1H      0x04
 +#define CDATA_HOST_SRC_CURRENTL         0x05
 +#define CDATA_HOST_SRC_CURRENTH         0x06
 +
 +#define CDATA_IN_BUF_CONNECT            0x07
 +#define CDATA_OUT_BUF_CONNECT           0x08
 +
 +#define CDATA_IN_BUF_BEGIN              0x09
 +#define CDATA_IN_BUF_END_PLUS_1         0x0A
 +#define CDATA_IN_BUF_HEAD               0x0B
 +#define CDATA_IN_BUF_TAIL               0x0C
 +
 +#define CDATA_OUT_BUF_BEGIN             0x0D
 +#define CDATA_OUT_BUF_END_PLUS_1        0x0E
 +#define CDATA_OUT_BUF_HEAD              0x0F
 +#define CDATA_OUT_BUF_TAIL              0x10
 +
 +#define CDATA_DMA_CONTROL               0x11
 +#define CDATA_RESERVED                  0x12
 +
 +#define CDATA_FREQUENCY                 0x13
 +#define CDATA_LEFT_VOLUME               0x14
 +#define CDATA_RIGHT_VOLUME              0x15
 +#define CDATA_LEFT_SUR_VOL              0x16
 +#define CDATA_RIGHT_SUR_VOL             0x17
 +
 +/* These are from Allegro hckernel.h */
 +#define CDATA_HEADER_LEN                0x18
 +#define SRC3_DIRECTION_OFFSET           CDATA_HEADER_LEN
 +#define SRC3_MODE_OFFSET                CDATA_HEADER_LEN + 1
 +#define SRC3_WORD_LENGTH_OFFSET         CDATA_HEADER_LEN + 2
 +#define SRC3_PARAMETER_OFFSET           CDATA_HEADER_LEN + 3
 +#define SRC3_COEFF_ADDR_OFFSET          CDATA_HEADER_LEN + 8
 +#define SRC3_FILTAP_ADDR_OFFSET         CDATA_HEADER_LEN + 10
 +#define SRC3_TEMP_INBUF_ADDR_OFFSET     CDATA_HEADER_LEN + 16
 +#define SRC3_TEMP_OUTBUF_ADDR_OFFSET    CDATA_HEADER_LEN + 17
 +#define FOR_FUTURE_USE                  10	/* for storing temporary variable in future */
 +
 +/*
 + * DMA control definition
 + */
 +
 +#define DMACONTROL_BLOCK_MASK           0x000F
 +#define  DMAC_BLOCK0_SELECTOR           0x0000
 +#define  DMAC_BLOCK1_SELECTOR           0x0001
 +#define  DMAC_BLOCK2_SELECTOR           0x0002
 +#define  DMAC_BLOCK3_SELECTOR           0x0003
 +#define  DMAC_BLOCK4_SELECTOR           0x0004
 +#define  DMAC_BLOCK5_SELECTOR           0x0005
 +#define  DMAC_BLOCK6_SELECTOR           0x0006
 +#define  DMAC_BLOCK7_SELECTOR           0x0007
 +#define  DMAC_BLOCK8_SELECTOR           0x0008
 +#define  DMAC_BLOCK9_SELECTOR           0x0009
 +#define  DMAC_BLOCKA_SELECTOR           0x000A
 +#define  DMAC_BLOCKB_SELECTOR           0x000B
 +#define  DMAC_BLOCKC_SELECTOR           0x000C
 +#define  DMAC_BLOCKD_SELECTOR           0x000D
 +#define  DMAC_BLOCKE_SELECTOR           0x000E
 +#define  DMAC_BLOCKF_SELECTOR           0x000F
 +#define DMACONTROL_PAGE_MASK            0x00F0
 +#define  DMAC_PAGE0_SELECTOR            0x0030
 +#define  DMAC_PAGE1_SELECTOR            0x0020
 +#define  DMAC_PAGE2_SELECTOR            0x0010
 +#define  DMAC_PAGE3_SELECTOR            0x0000
 +#define DMACONTROL_AUTOREPEAT           0x1000
 +#define DMACONTROL_STOPPED              0x2000
 +#define DMACONTROL_DIRECTION            0x0100
 +
 +/*
 + * Kernel/client memory allocation
 + */
 +
 +#define NUM_UNITS_KERNEL_CODE          16
 +#define NUM_UNITS_KERNEL_DATA           2
 +
 +#define NUM_UNITS_KERNEL_CODE_WITH_HSP 16
 +#ifdef M3_MODEL
 +#define NUM_UNITS_KERNEL_DATA_WITH_HSP  5
 +#else
 +#define NUM_UNITS_KERNEL_DATA_WITH_HSP  4
 +#endif
 +
 +#define NUM_UNITS( BYTES, UNITLEN )    ((((BYTES+1)>>1) + (UNITLEN-1)) / UNITLEN)
 +
 +/*
 + * DSP hardware
 + */
 +
 +#define DSP_PORT_TIMER_COUNT            0x06
 +#define DSP_PORT_MEMORY_INDEX           0x80
 +#define DSP_PORT_MEMORY_TYPE            0x82
 +#define DSP_PORT_MEMORY_DATA            0x84
 +#define DSP_PORT_CONTROL_REG_A          0xA2
 
 *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: pfg 
State-Changed-When: Sat Feb 4 17:16:02 UTC 2012 
State-Changed-Why:  
Committed and MFC/9 

http://www.freebsd.org/cgi/query-pr.cgi?pr=153920 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/153920: commit references a PR
Date: Sat,  4 Feb 2012 17:13:51 +0000 (UTC)

 Author: pfg
 Date: Sat Feb  4 17:13:34 2012
 New Revision: 230985
 URL: http://svn.freebsd.org/changeset/base/230985
 
 Log:
   MFC:	r230401, r230898
   
   Replace GPLd headers from the Maestro3 driver with BSD licensed
   versions derived from /usr/ports/audio/oss.
   
   The particular headers used were taken from the
   attic/drv/oss_allegro directory and are mostly identical
   to the previous files.
   
   The Maestro3 driver is now free from the GPL.
   
   NOTE: due to lack of testers this driver is being
   considered for deprecation and removal, however the MFC
   still makes sense instead of distribution a GPL'd
   firmware without source code.
   
   PR:		kern/153920
   Approved by:	jhb (mentor)
 
 Added:
   stable/9/sys/dev/sound/pci/allegro_code.h
      - copied unchanged from r230401, head/sys/dev/sound/pci/allegro_code.h
   stable/9/sys/dev/sound/pci/allegro_reg.h
      - copied unchanged from r230401, head/sys/dev/sound/pci/allegro_reg.h
 Deleted:
   stable/9/sys/gnu/dev/sound/pci/maestro3_dsp.h
   stable/9/sys/gnu/dev/sound/pci/maestro3_reg.h
 Modified:
   stable/9/sys/conf/files
   stable/9/sys/dev/sound/pci/maestro3.c
 Directory Properties:
   stable/9/sys/   (props changed)
   stable/9/sys/conf/   (props changed)
   stable/9/sys/modules/sound/driver/maestro3/   (props changed)
 
 Modified: stable/9/sys/conf/files
 ==============================================================================
 --- stable/9/sys/conf/files	Sat Feb  4 16:49:29 2012	(r230984)
 +++ stable/9/sys/conf/files	Sat Feb  4 17:13:34 2012	(r230985)
 @@ -1722,8 +1722,7 @@ dev/sound/pci/es137x.c		optional snd_es1
  dev/sound/pci/fm801.c		optional snd_fm801 pci
  dev/sound/pci/ich.c		optional snd_ich pci
  dev/sound/pci/maestro.c		optional snd_maestro pci
 -dev/sound/pci/maestro3.c	optional snd_maestro3 pci \
 -	warning "kernel contains GPL contaminated maestro3 headers"
 +dev/sound/pci/maestro3.c	optional snd_maestro3 pci
  dev/sound/pci/neomagic.c	optional snd_neomagic pci
  dev/sound/pci/solo.c		optional snd_solo pci
  dev/sound/pci/spicds.c		optional snd_spicds pci
 
 Copied: stable/9/sys/dev/sound/pci/allegro_code.h (from r230401, head/sys/dev/sound/pci/allegro_code.h)
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ stable/9/sys/dev/sound/pci/allegro_code.h	Sat Feb  4 17:13:34 2012	(r230985, copy of r230401, head/sys/dev/sound/pci/allegro_code.h)
 @@ -0,0 +1,218 @@
 +/* $FreeBSD$ */
 +/*-
 + * Copyright (C) 1996-2008, 4Front Technologies
 + * Copyright (C) 1997-1999 ESS Technology, Inc
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + * 1. Redistributions of source code must retain the above copyright
 + *    notice, this list of conditions and the following disclaimer.
 + * 2. Redistributions in binary form must reproduce the above copyright
 + *    notice, this list of conditions and the following disclaimer in the
 + *    documentation and/or other materials provided with the distribution.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 + * SUCH DAMAGE.
 + *
 + */
 +
 +/*---------------------------------------------------------------------------
 + * This source code, its compiled object code, and its associated data sets
 + * are copyright (C) 1997-1999 ESS Technology, Inc. This source code and its
 + * associated data sets are trade secrets of ESS Technology, Inc.
 + *---------------------------------------------------------------------------
 + * DESCRIPTION: DSP binaries
 + *---------------------------------------------------------------------------
 + * AUTHOR:  Henry Tang / Hong Kim / Alger Yeung/Don Kim
 + *---------------------------------------------------------------------------
 + * For practical purposes we only include what is necessary for current
 + *  Maestro3 driver. Files used in this header include:
 + *    kernel.dat
 + *    400m_src.dat
 + *    mini_src_lpf from srcmgr.h
 + *---------------------------------------------------------------------------
 + */
 +#ifndef _DEV_SOUND_PCI_ALLEGRO_CODE_H
 +#define _DEV_SOUND_PCI_ALLEGRO_CODE_H
 +
 +/*
 + * Kernel
 + */
 +
 +uint16_t gaw_kernel_vect_code[] = {
 +    0x7980, 0x0030, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x00FB, 0x7980,
 +    0x00DD, 0x7980, 0x03B4, 0x7980, 0x0332, 0x7980, 0x0287, 0x7980, 0x03B4,
 +    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x031A, 0x7980,
 +    0x03B4, 0x7980, 0x022F, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4,
 +    0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x0063, 0x7980, 0x006B, 0x7980,
 +    0x03B4, 0x7980, 0x03B4, 0xBF80, 0x2C7C, 0x8806, 0x8804, 0xBE40, 0xBC20,
 +    0xAE09, 0x1000, 0xAE0A, 0x0001, 0x6938, 0xEB08, 0x0053, 0x695A, 0xEB08,
 +    0x00D6, 0x0009, 0x8B88, 0x6980, 0xE388, 0x0036, 0xBE30, 0xBC20, 0x6909,
 +    0xB801, 0x9009, 0xBE41, 0xBE41, 0x6928, 0xEB88, 0x0078, 0xBE41, 0xBE40,
 +    0x7980, 0x0038, 0xBE41, 0xBE41, 0x903A, 0x6938, 0xE308, 0x0056, 0x903A,
 +    0xBE41, 0xBE40, 0xEF00, 0x903A, 0x6939, 0xE308, 0x005E, 0x903A, 0xEF00,
 +    0x690B, 0x660C, 0xEF8C, 0x690A, 0x660C, 0x620B, 0x6609, 0xEF00, 0x6910,
 +    0x660F, 0xEF04, 0xE388, 0x0075, 0x690E, 0x660F, 0x6210, 0x660D, 0xEF00,
 +    0x690E, 0x660D, 0xEF00, 0xAE70, 0x0001, 0xBC20, 0xAE27, 0x0001, 0x6939,
 +    0xEB08, 0x005D, 0x6926, 0xB801, 0x9026, 0x0026, 0x8B88, 0x6980, 0xE388,
 +    0x00CB, 0x9028, 0x0D28, 0x4211, 0xE100, 0x007A, 0x4711, 0xE100, 0x00A0,
 +    0x7A80, 0x0063, 0xB811, 0x660A, 0x6209, 0xE304, 0x007A, 0x0C0B, 0x4005,
 +    0x100A, 0xBA01, 0x9012, 0x0C12, 0x4002, 0x7980, 0x00AF, 0x7A80, 0x006B,
 +    0xBE02, 0x620E, 0x660D, 0xBA10, 0xE344, 0x007A, 0x0C10, 0x4005, 0x100E,
 +    0xBA01, 0x9012, 0x0C12, 0x4002, 0x1003, 0xBA02, 0x9012, 0x0C12, 0x4000, 
 +    0x1003, 0xE388, 0x00BA, 0x1004, 0x7980, 0x00BC, 0x1004, 0xBA01, 0x9012,
 +    0x0C12, 0x4001, 0x0C05, 0x4003, 0x0C06, 0x4004, 0x1011, 0xBFB0, 0x01FF,
 +    0x9012, 0x0C12, 0x4006, 0xBC20, 0xEF00, 0xAE26, 0x1028, 0x6970, 0xBFD0,
 +    0x0001, 0x9070, 0xE388, 0x007A, 0xAE28, 0x0000, 0xEF00, 0xAE70, 0x0300, 
 +    0x0C70, 0xB00C, 0xAE5A, 0x0000, 0xEF00, 0x7A80, 0x038A, 0x697F, 0xB801,
 +    0x907F, 0x0056, 0x8B88, 0x0CA0, 0xB008, 0xAF71, 0xB000, 0x4E71, 0xE200,
 +    0x00F3, 0xAE56, 0x1057, 0x0056, 0x0CA0, 0xB008, 0x8056, 0x7980, 0x03A1,
 +    0x0810, 0xBFA0, 0x1059, 0xE304, 0x03A1, 0x8056, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0xBF01, 0xBE43, 0xBE59, 0x907C, 0x6937, 0xE388, 0x010D, 0xBA01,
 +    0xE308, 0x010C, 0xAE71, 0x0004, 0x0C71, 0x5000, 0x6936, 0x9037, 0xBF0A,
 +    0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xBF0A, 0x0560, 0xF500, 0xBF0A,
 +    0x0520, 0xB900, 0xBB17, 0x90A0, 0x6917, 0xE388, 0x0148, 0x0D17, 0xE100,
 +    0x0127, 0xBF0C, 0x0578, 0xBF0D, 0x057C, 0x7980, 0x012B, 0xBF0C, 0x0538,
 +    0xBF0D, 0x053C, 0x6900, 0xE308, 0x0135, 0x8B8C, 0xBE59, 0xBB07, 0x90A0,
 +    0xBC20, 0x7980, 0x0157, 0x030C, 0x8B8B, 0xB903, 0x8809, 0xBEC6, 0x013E,
 +    0x69AC, 0x90AB, 0x69AD, 0x90AB, 0x0813, 0x660A, 0xE344, 0x0144, 0x0309,
 +    0x830C, 0xBC20, 0x7980, 0x0157, 0x6955, 0xE388, 0x0157, 0x7C38, 0xBF0B,
 +    0x0578, 0xF500, 0xBF0B, 0x0538, 0xB907, 0x8809, 0xBEC6, 0x0156, 0x10AB,
 +    0x90AA, 0x6974, 0xE388, 0x0163, 0xAE72, 0x0540, 0xF500, 0xAE72, 0x0500,
 +    0xAE61, 0x103B, 0x7A80, 0x02F6, 0x6978, 0xE388, 0x0182, 0x8B8C, 0xBF0C,
 +    0x0560, 0xE500, 0x7C40, 0x0814, 0xBA20, 0x8812, 0x733D, 0x7A80, 0x0380,
 +    0x733E, 0x7A80, 0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814,
 +    0xBA2C, 0x8812, 0x733F, 0x7A80, 0x0380, 0x7340, 0x7A80, 0x0380, 0x6975,
 +    0xE388, 0x018E, 0xAE72, 0x0548, 0xF500, 0xAE72, 0x0508, 0xAE61, 0x1041,
 +    0x7A80, 0x02F6, 0x6979, 0xE388, 0x01AD, 0x8B8C, 0xBF0C, 0x0560, 0xE500,
 +    0x7C40, 0x0814, 0xBA18, 0x8812, 0x7343, 0x7A80, 0x0380, 0x7344, 0x7A80,
 +    0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA24, 0x8812,
 +    0x7345, 0x7A80, 0x0380, 0x7346, 0x7A80, 0x0380, 0x6976, 0xE388, 0x01B9,
 +    0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61, 0x1047, 0x7A80, 0x02F6,
 +    0x697A, 0xE388, 0x01D8, 0x8B8C, 0xBF0C, 0x0560, 0xE500, 0x7C40, 0x0814,
 +    0xBA08, 0x8812, 0x7349, 0x7A80, 0x0380, 0x734A, 0x7A80, 0x0380, 0x8B8C,
 +    0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA14, 0x8812, 0x734B, 0x7A80,
 +    0x0380, 0x734C, 0x7A80, 0x0380, 0xBC21, 0xAE1C, 0x1090, 0x8B8A, 0xBF0A,
 +    0x0560, 0xE500, 0x7C40, 0x0812, 0xB804, 0x8813, 0x8B8D, 0xBF0D, 0x056C,
 +    0xE500, 0x7C40, 0x0815, 0xB804, 0x8811, 0x7A80, 0x034A, 0x8B8A, 0xBF0A,
 +    0x0560, 0xE500, 0x7C40, 0x731F, 0xB903, 0x8809, 0xBEC6, 0x01F9, 0x548A, 
 +    0xBE03, 0x98A0, 0x7320, 0xB903, 0x8809, 0xBEC6, 0x0201, 0x548A, 0xBE03,
 +    0x98A0, 0x1F20, 0x2F1F, 0x9826, 0xBC20, 0x6935, 0xE388, 0x03A1, 0x6933,
 +    0xB801, 0x9033, 0xBFA0, 0x02EE, 0xE308, 0x03A1, 0x9033, 0xBF00, 0x6951,
 +    0xE388, 0x021F, 0x7334, 0xBE80, 0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x9034,
 +    0x697E, 0x0D51, 0x9013, 0xBC20, 0x695C, 0xE388, 0x03A1, 0x735E, 0xBE80,
 +    0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x905E, 0x697E, 0x0D5C, 0x9013, 0x7980,
 +    0x03A1, 0x7A80, 0x038A, 0xBF01, 0xBE43, 0x6977, 0xE388, 0x024E, 0xAE61,
 +    0x104D, 0x0061, 0x8B88, 0x6980, 0xE388, 0x024E, 0x9071, 0x0D71, 0x000B,
 +    0xAFA0, 0x8010, 0xAFA0, 0x8010, 0x0810, 0x660A, 0xE308, 0x0249, 0x0009,
 +    0x0810, 0x660C, 0xE388, 0x024E, 0x800B, 0xBC20, 0x697B, 0xE388, 0x03A1,
 +    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xE100, 0x0266, 0x697C,
 +    0xBF90, 0x0560, 0x9072, 0x0372, 0x697C, 0xBF90, 0x0564, 0x9073, 0x0473,
 +    0x7980, 0x0270, 0x697C, 0xBF90, 0x0520, 0x9072, 0x0372, 0x697C, 0xBF90,
 +    0x0524, 0x9073, 0x0473, 0x697C, 0xB801, 0x907C, 0xBF0A, 0x10FD, 0x8B8A,
 +    0xAF80, 0x8010, 0x734F, 0x548A, 0xBE03, 0x9880, 0xBC21, 0x7326, 0x548B,
 +    0xBE03, 0x618B, 0x988C, 0xBE03, 0x6180, 0x9880, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0x0D28, 0x4711, 0xE100, 0x02BE, 0xAF12, 0x4006, 0x6912, 0xBFB0,
 +    0x0C00, 0xE388, 0x02B6, 0xBFA0, 0x0800, 0xE388, 0x02B2, 0x6912, 0xBFB0,
 +    0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02A3, 0x6909, 0x900B, 0x7980, 0x02A5,
 +    0xAF0B, 0x4005, 0x6901, 0x9005, 0x6902, 0x9006, 0x4311, 0xE100, 0x02ED,
 +    0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980, 0x02ED, 0x6909, 0x900B, 0x7980,
 +    0x02B8, 0xAF0B, 0x4005, 0xAF05, 0x4003, 0xAF06, 0x4004, 0x7980, 0x02ED,
 +    0xAF12, 0x4006, 0x6912, 0xBFB0, 0x0C00, 0xE388, 0x02E7, 0xBFA0, 0x0800,
 +    0xE388, 0x02E3, 0x6912, 0xBFB0, 0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02D4,
 +    0x690D, 0x9010, 0x7980, 0x02D6, 0xAF10, 0x4005, 0x6901, 0x9005, 0x6902,
 +    0x9006, 0x4311, 0xE100, 0x02ED, 0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980,
 +    0x02ED, 0x690D, 0x9010, 0x7980, 0x02E9, 0xAF10, 0x4005, 0xAF05, 0x4003,
 +    0xAF06, 0x4004, 0xBC20, 0x6970, 0x9071, 0x7A80, 0x0078, 0x6971, 0x9070,
 +    0x7980, 0x03A1, 0xBC20, 0x0361, 0x8B8B, 0x6980, 0xEF88, 0x0272, 0x0372,
 +    0x7804, 0x9071, 0x0D71, 0x8B8A, 0x000B, 0xB903, 0x8809, 0xBEC6, 0x0309,
 +    0x69A8, 0x90AB, 0x69A8, 0x90AA, 0x0810, 0x660A, 0xE344, 0x030F, 0x0009,
 +    0x0810, 0x660C, 0xE388, 0x0314, 0x800B, 0xBC20, 0x6961, 0xB801, 0x9061,
 +    0x7980, 0x02F7, 0x7A80, 0x038A, 0x5D35, 0x0001, 0x6934, 0xB801, 0x9034,
 +    0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4880, 0xAE72, 0x0550, 0xF500,
 +    0xAE72, 0x0510, 0xAE61, 0x1051, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x7A80,
 +    0x038A, 0x5D35, 0x0002, 0x695E, 0xB801, 0x905E, 0xBF0A, 0x109E, 0x8B8A,
 +    0xAF80, 0x8014, 0x4780, 0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61,
 +    0x105C, 0x7A80, 0x02F6, 0x7980, 0x03A1, 0x001C, 0x8B88, 0x6980, 0xEF88,
 +    0x901D, 0x0D1D, 0x100F, 0x6610, 0xE38C, 0x0358, 0x690E, 0x6610, 0x620F,
 +    0x660D, 0xBA0F, 0xE301, 0x037A, 0x0410, 0x8B8A, 0xB903, 0x8809, 0xBEC6,
 +    0x036C, 0x6A8C, 0x61AA, 0x98AB, 0x6A8C, 0x61AB, 0x98AD, 0x6A8C, 0x61AD,
 +    0x98A9, 0x6A8C, 0x61A9, 0x98AA, 0x7C04, 0x8B8B, 0x7C04, 0x8B8D, 0x7C04,
 +    0x8B89, 0x7C04, 0x0814, 0x660E, 0xE308, 0x0379, 0x040D, 0x8410, 0xBC21,
 +    0x691C, 0xB801, 0x901C, 0x7980, 0x034A, 0xB903, 0x8809, 0x8B8A, 0xBEC6,
 +    0x0388, 0x54AC, 0xBE03, 0x618C, 0x98AA, 0xEF00, 0xBC20, 0xBE46, 0x0809,
 +    0x906B, 0x080A, 0x906C, 0x080B, 0x906D, 0x081A, 0x9062, 0x081B, 0x9063,
 +    0x081E, 0x9064, 0xBE59, 0x881E, 0x8065, 0x8166, 0x8267, 0x8368, 0x8469,
 +    0x856A, 0xEF00, 0xBC20, 0x696B, 0x8809, 0x696C, 0x880A, 0x696D, 0x880B,
 +    0x6962, 0x881A, 0x6963, 0x881B, 0x6964, 0x881E, 0x0065, 0x0166, 0x0267,
 +    0x0368, 0x0469, 0x056A, 0xBE3A,
 +};
 +
 +/*
 + * MINI Sample Rate Conversion
 + */
 +
 +uint16_t gaw_minisrc_code_0400[] = {
 +    0xBF80, 0x101E, 0x906E, 0x006E, 0x8B88, 0x6980, 0xEF88, 0x906F, 0x0D6F,
 +    0x6900, 0xEB08, 0x0412, 0xBC20, 0x696E, 0xB801, 0x906E, 0x7980, 0x0403,
 +    0xB90E, 0x8807, 0xBE43, 0xBF01, 0xBE47, 0xBE41, 0x7A80, 0x002A, 0xBE40,
 +    0x3029, 0xEFCC, 0xBE41, 0x7A80, 0x0028, 0xBE40, 0x3028, 0xEFCC, 0x6907,
 +    0xE308, 0x042A, 0x6909, 0x902C, 0x7980, 0x042C, 0x690D, 0x902C, 0x1009,
 +    0x881A, 0x100A, 0xBA01, 0x881B, 0x100D, 0x881C, 0x100E, 0xBA01, 0x881D,
 +    0xBF80, 0x00ED, 0x881E, 0x050C, 0x0124, 0xB904, 0x9027, 0x6918, 0xE308,
 +    0x04B3, 0x902D, 0x6913, 0xBFA0, 0x7598, 0xF704, 0xAE2D, 0x00FF, 0x8B8D,
 +    0x6919, 0xE308, 0x0463, 0x691A, 0xE308, 0x0456, 0xB907, 0x8809, 0xBEC6,
 +    0x0453, 0x10A9, 0x90AD, 0x7980, 0x047C, 0xB903, 0x8809, 0xBEC6, 0x0460,
 +    0x1889, 0x6C22, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90AD, 0x7980, 0x047C,
 +    0x101A, 0xE308, 0x046F, 0xB903, 0x8809, 0xBEC6, 0x046C, 0x10A9, 0x90A0,
 +    0x90AD, 0x7980, 0x047C, 0xB901, 0x8809, 0xBEC6, 0x047B, 0x1889, 0x6C22,
 +    0x90A0, 0x90AD, 0x10A9, 0x6E23, 0x6C22, 0x90A0, 0x90AD, 0x692D, 0xE308,
 +    0x049C, 0x0124, 0xB703, 0xB902, 0x8818, 0x8B89, 0x022C, 0x108A, 0x7C04,
 +    0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89, 0x99A0,
 +    0x108A, 0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89,
 +    0x99AF, 0x7B99, 0x0484, 0x0124, 0x060F, 0x101B, 0x2013, 0x901B, 0xBFA0,
 +    0x7FFF, 0xE344, 0x04AC, 0x901B, 0x8B89, 0x7A80, 0x051A, 0x6927, 0xBA01,
 +    0x9027, 0x7A80, 0x0523, 0x6927, 0xE308, 0x049E, 0x7980, 0x050F, 0x0624,
 +    0x1026, 0x2013, 0x9026, 0xBFA0, 0x7FFF, 0xE304, 0x04C0, 0x8B8D, 0x7A80,
 +    0x051A, 0x7980, 0x04B4, 0x9026, 0x1013, 0x3026, 0x901B, 0x8B8D, 0x7A80,
 +    0x051A, 0x7A80, 0x0523, 0x1027, 0xBA01, 0x9027, 0xE308, 0x04B4, 0x0124,
 +    0x060F, 0x8B89, 0x691A, 0xE308, 0x04EA, 0x6919, 0xE388, 0x04E0, 0xB903,
 +    0x8809, 0xBEC6, 0x04DD, 0x1FA0, 0x2FAE, 0x98A9, 0x7980, 0x050F, 0xB901,
 +    0x8818, 0xB907, 0x8809, 0xBEC6, 0x04E7, 0x10EE, 0x90A9, 0x7980, 0x050F,
 +    0x6919, 0xE308, 0x04FE, 0xB903, 0x8809, 0xBE46, 0xBEC6, 0x04FA, 0x17A0,
 +    0xBE1E, 0x1FAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080, 0x99A9, 0xBE47,
 +    0x7980, 0x050F, 0xB901, 0x8809, 0xBEC6, 0x050E, 0x16A0, 0x26A0, 0xBFB7,
 +    0xFF00, 0xBE1E, 0x1EA0, 0x2EAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080,
 +    0x99A9, 0x850C, 0x860F, 0x6907, 0xE388, 0x0516, 0x0D07, 0x8510, 0xBE59,
 +    0x881E, 0xBE4A, 0xEF00, 0x101E, 0x901C, 0x101F, 0x901D, 0x10A0, 0x901E,
 +    0x10A0, 0x901F, 0xEF00, 0x101E, 0x301C, 0x9020, 0x731B, 0x5420, 0xBE03,
 +    0x9825, 0x1025, 0x201C, 0x9025, 0x7325, 0x5414, 0xBE03, 0x8B8E, 0x9880,
 +    0x692F, 0xE388, 0x0539, 0xBE59, 0xBB07, 0x6180, 0x9880, 0x8BA0, 0x101F,
 +    0x301D, 0x9021, 0x731B, 0x5421, 0xBE03, 0x982E, 0x102E, 0x201D, 0x902E,
 +    0x732E, 0x5415, 0xBE03, 0x9880, 0x692F, 0xE388, 0x054F, 0xBE59, 0xBB07,
 +    0x6180, 0x9880, 0x8BA0, 0x6918, 0xEF08, 0x7325, 0x5416, 0xBE03, 0x98A0,
 +    0x732E, 0x5417, 0xBE03, 0x98A0, 0xEF00, 0x8BA0, 0xBEC6, 0x056B, 0xBE59,
 +    0xBB04, 0xAA90, 0xBE04, 0xBE1E, 0x99E0, 0x8BE0, 0x69A0, 0x90D0, 0x69A0, 
 +    0x90D0, 0x081F, 0xB805, 0x881F, 0x8B90, 0x69A0, 0x90D0, 0x69A0, 0x9090,
 +    0x8BD0, 0x8BD8, 0xBE1F, 0xEF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 +};
 +
 +uint16_t minisrc_lpf[10] = {
 +	0X0743, 0X1104, 0X0A4C, 0XF88D, 0X242C,
 +	0X1023, 0X1AA9, 0X0B60, 0XEFDD, 0X186F
 +};
 +
 +#endif	/* !_DEV_SOUND_PCI_ALLEGRO_CODE_H */
 
 Copied: stable/9/sys/dev/sound/pci/allegro_reg.h (from r230401, head/sys/dev/sound/pci/allegro_reg.h)
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ stable/9/sys/dev/sound/pci/allegro_reg.h	Sat Feb  4 17:13:34 2012	(r230985, copy of r230401, head/sys/dev/sound/pci/allegro_reg.h)
 @@ -0,0 +1,790 @@
 +/* $FreeBSD$ */
 +/*-
 + * Copyright (c) 1996-2008, 4Front Technologies
 + * Copyright (C) 1992-2000  Don Kim (don.kim@esstech.com)
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + * 1. Redistributions of source code must retain the above copyright
 + *    notice, this list of conditions and the following disclaimer.
 + * 2. Redistributions in binary form must reproduce the above copyright
 + *    notice, this list of conditions and the following disclaimer in the
 + *    documentation and/or other materials provided with the distribution.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 + * SUCH DAMAGE.
 + *
 + */
 +
 +/*---------------------------------------------------------------------------
 + *              Copyright (C) 1997-1999, ESS Technology, Inc.
 + * This source code, its compiled object code, and its associated data sets
 + * are copyright (C) 1997-1999 ESS Technology, Inc.
 + *---------------------------------------------------------------------------
 + * This header contains data structures and registers taken from the
 + * 4Front OSS Allegro BSD licensed driver (in the Attic/ directory).
 + *  Files used for this header include:
 + *    hardware.h
 + *    kernel.h and hckernel.h
 + *    srcmgr.h
 + *---------------------------------------------------------------------------
 + */
 +
 +#ifndef _DEV_SOUND_PCI_ALLEGRO_REG_H
 +#define _DEV_SOUND_PCI_ALLEGRO_REG_H
 +
 +/* Allegro PCI configuration registers */
 +#define PCI_LEGACY_AUDIO_CTRL   0x40
 +#define SOUND_BLASTER_ENABLE    0x00000001
 +#define FM_SYNTHESIS_ENABLE     0x00000002
 +#define GAME_PORT_ENABLE        0x00000004
 +#define MPU401_IO_ENABLE        0x00000008
 +#define MPU401_IRQ_ENABLE       0x00000010
 +#define ALIAS_10BIT_IO          0x00000020
 +#define SB_DMA_MASK             0x000000C0
 +#define SB_DMA_0                0x00000040
 +#define SB_DMA_1                0x00000040
 +#define SB_DMA_R                0x00000080
 +#define SB_DMA_3                0x000000C0
 +#define SB_IRQ_MASK             0x00000700
 +#define SB_IRQ_5                0x00000000
 +#define SB_IRQ_7                0x00000100
 +#define SB_IRQ_9                0x00000200
 +#define SB_IRQ_10               0x00000300
 +#define MIDI_IRQ_MASK           0x00003800
 +#define SERIAL_IRQ_ENABLE       0x00004000
 +#define DISABLE_LEGACY          0x00008000
 +
 +#define PCI_ALLEGRO_CONFIG      0x50
 +#define SB_ADDR_240             0x00000004
 +#define MPU_ADDR_MASK           0x00000018
 +#define MPU_ADDR_330            0x00000000
 +#define MPU_ADDR_300            0x00000008
 +#define MPU_ADDR_320            0x00000010
 +#define MPU_ADDR_340            0x00000018
 +#define USE_PCI_TIMING          0x00000040
 +#define POSTED_WRITE_ENABLE     0x00000080
 +#define DMA_POLICY_MASK         0x00000700
 +#define DMA_DDMA                0x00000000
 +#define DMA_TDMA                0x00000100
 +#define DMA_PCPCI               0x00000200
 +#define DMA_WBDMA16             0x00000400
 +#define DMA_WBDMA4              0x00000500
 +#define DMA_WBDMA2              0x00000600
 +#define DMA_WBDMA1              0x00000700
 +#define DMA_SAFE_GUARD          0x00000800
 +#define HI_PERF_GP_ENABLE       0x00001000
 +#define PIC_SNOOP_MODE_0        0x00002000
 +#define PIC_SNOOP_MODE_1        0x00004000
 +#define SOUNDBLASTER_IRQ_MASK   0x00008000
 +#define RING_IN_ENABLE          0x00010000
 +#define SPDIF_TEST_MODE         0x00020000
 +#define CLK_MULT_MODE_SELECT_2  0x00040000
 +#define EEPROM_WRITE_ENABLE     0x00080000
 +#define CODEC_DIR_IN            0x00100000
 +#define HV_BUTTON_FROM_GD       0x00200000
 +#define REDUCED_DEBOUNCE        0x00400000
 +#define HV_CTRL_ENABLE          0x00800000
 +#define SPDIF_ENABLE            0x01000000
 +#define CLK_DIV_SELECT          0x06000000
 +#define CLK_DIV_BY_48           0x00000000
 +#define CLK_DIV_BY_49           0x02000000
 +#define CLK_DIV_BY_50           0x04000000
 +#define CLK_DIV_RESERVED        0x06000000
 +#define PM_CTRL_ENABLE          0x08000000
 +#define CLK_MULT_MODE_SELECT    0x30000000
 +#define CLK_MULT_MODE_SHIFT     28
 +#define CLK_MULT_MODE_0         0x00000000
 +#define CLK_MULT_MODE_1         0x10000000
 +#define CLK_MULT_MODE_2         0x20000000
 +#define CLK_MULT_MODE_3         0x30000000
 +#define INT_CLK_SELECT          0x40000000
 +#define INT_CLK_MULT_RESET      0x80000000
 +
 +/* M3 */
 +#define INT_CLK_SRC_NOT_PCI     0x00100000
 +#define INT_CLK_MULT_ENABLE     0x80000000
 +
 +#define PCI_ACPI_CONTROL        0x54
 +#define PCI_ACPI_D0             0x00000000
 +#define PCI_ACPI_D1             0xB4F70000
 +#define PCI_ACPI_D2             0xB4F7B4F7
 +
 +#define PCI_USER_CONFIG         0x58
 +#define EXT_PCI_MASTER_ENABLE   0x00000001
 +#define SPDIF_OUT_SELECT        0x00000002
 +#define TEST_PIN_DIR_CTRL       0x00000004
 +#define AC97_CODEC_TEST         0x00000020
 +#define TRI_STATE_BUFFER        0x00000080
 +#define IN_CLK_12MHZ_SELECT     0x00000100
 +#define MULTI_FUNC_DISABLE      0x00000200
 +#define EXT_MASTER_PAIR_SEL     0x00000400
 +#define PCI_MASTER_SUPPORT      0x00000800
 +#define STOP_CLOCK_ENABLE       0x00001000
 +#define EAPD_DRIVE_ENABLE       0x00002000
 +#define REQ_TRI_STATE_ENABLE    0x00004000
 +#define REQ_LOW_ENABLE          0x00008000
 +#define MIDI_1_ENABLE           0x00010000
 +#define MIDI_2_ENABLE           0x00020000
 +#define SB_AUDIO_SYNC           0x00040000
 +#define HV_CTRL_TEST            0x00100000
 +#define SOUNDBLASTER_TEST       0x00400000
 +
 +#define PCI_USER_CONFIG_C       0x5C
 +
 +#define PCI_DDMA_CTRL           0x60
 +#define DDMA_ENABLE             0x00000001
 +
 +
 +/* Allegro registers */
 +#define HOST_INT_CTRL           0x18
 +#define SB_INT_ENABLE           0x0001
 +#define MPU401_INT_ENABLE       0x0002
 +#define ASSP_INT_ENABLE         0x0010
 +#define RING_INT_ENABLE         0x0020
 +#define HV_INT_ENABLE           0x0040
 +#define CLKRUN_GEN_ENABLE       0x0100
 +#define HV_CTRL_TO_PME          0x0400
 +#define SOFTWARE_RESET_ENABLE   0x8000
 +
 +#define HOST_INT_STATUS         0x1A
 +#define SB_INT_PENDING          0x01
 +#define MPU401_INT_PENDING      0x02
 +#define ASSP_INT_PENDING        0x10
 +#define RING_INT_PENDING        0x20
 +#define HV_INT_PENDING          0x40
 +
 +#define HARDWARE_VOL_CTRL       0x1B
 +#define SHADOW_MIX_REG_VOICE    0x1C
 +#define HW_VOL_COUNTER_VOICE    0x1D
 +#define SHADOW_MIX_REG_MASTER   0x1E
 +#define HW_VOL_COUNTER_MASTER   0x1F
 +
 +#define CODEC_COMMAND           0x30
 +#define CODEC_READ_B            0x80
 +
 +#define CODEC_STATUS            0x30
 +#define CODEC_BUSY_B            0x01
 +
 +#define CODEC_DATA              0x32
 +
 +/* AC97 registers */
 +#ifndef M3_MODEL
 +#define AC97_RESET              0x00
 +#endif
 +
 +#define AC97_VOL_MUTE_B         0x8000
 +#define AC97_VOL_M              0x1F
 +#define AC97_LEFT_VOL_S         8
 +
 +#define AC97_MASTER_VOL         0x02
 +#define AC97_LINE_LEVEL_VOL     0x04
 +#define AC97_MASTER_MONO_VOL    0x06
 +#define AC97_PC_BEEP_VOL        0x0A
 +#define AC97_PC_BEEP_VOL_M      0x0F
 +#define AC97_SROUND_MASTER_VOL  0x38
 +#define AC97_PC_BEEP_VOL_S      1
 +
 +#ifndef M3_MODEL
 +#define AC97_PHONE_VOL          0x0C
 +#define AC97_MIC_VOL            0x0E
 +#endif
 +#define AC97_MIC_20DB_ENABLE    0x40
 +
 +#ifndef M3_MODEL
 +#define AC97_LINEIN_VOL         0x10
 +#define AC97_CD_VOL             0x12
 +#define AC97_VIDEO_VOL          0x14
 +#define AC97_AUX_VOL            0x16
 +#endif
 +#define AC97_PCM_OUT_VOL        0x18
 +#ifndef M3_MODEL
 +#define AC97_RECORD_SELECT      0x1A
 +#endif
 +#define AC97_RECORD_MIC         0x00
 +#define AC97_RECORD_CD          0x01
 +#define AC97_RECORD_VIDEO       0x02
 +#define AC97_RECORD_AUX         0x03
 +#define AC97_RECORD_MONO_MUX    0x02
 +#define AC97_RECORD_DIGITAL     0x03
 +#define AC97_RECORD_LINE        0x04
 +#define AC97_RECORD_STEREO      0x05
 +#define AC97_RECORD_MONO        0x06
 +#define AC97_RECORD_PHONE       0x07
 +
 +#ifndef M3_MODEL
 +#define AC97_RECORD_GAIN        0x1C
 +#endif
 +#define AC97_RECORD_VOL_M       0x0F
 +
 +#ifndef M3_MODEL
 +#define AC97_GENERAL_PURPOSE    0x20
 +#endif
 +#define AC97_POWER_DOWN_CTRL    0x26
 +#define AC97_ADC_READY          0x0001
 +#define AC97_DAC_READY          0x0002
 +#define AC97_ANALOG_READY       0x0004
 +#define AC97_VREF_ON            0x0008
 +#define AC97_PR0                0x0100
 +#define AC97_PR1                0x0200
 +#define AC97_PR2                0x0400
 +#define AC97_PR3                0x0800
 +#define AC97_PR4                0x1000
 +
 +#define AC97_RESERVED1          0x28
 +
 +#define AC97_VENDOR_TEST        0x5A
 +
 +#define AC97_CLOCK_DELAY        0x5C
 +#define AC97_LINEOUT_MUX_SEL    0x0001
 +#define AC97_MONO_MUX_SEL       0x0002
 +#define AC97_CLOCK_DELAY_SEL    0x1F
 +#define AC97_DAC_CDS_SHIFT      6
 +#define AC97_ADC_CDS_SHIFT      11
 +
 +#define AC97_MULTI_CHANNEL_SEL  0x74
 +
 +#ifndef M3_MODEL
 +#define AC97_VENDOR_ID1         0x7C
 +#define AC97_VENDOR_ID2         0x7E
 +#endif
 +
 +#define RING_BUS_CTRL_A         0x36
 +#define RAC_PME_ENABLE          0x0100
 +#define RAC_SDFS_ENABLE         0x0200
 +#define LAC_PME_ENABLE          0x0400
 +#define LAC_SDFS_ENABLE         0x0800
 +#define SERIAL_AC_LINK_ENABLE   0x1000
 +#define IO_SRAM_ENABLE          0x2000
 +#define IIS_INPUT_ENABLE        0x8000
 +
 +#define RING_BUS_CTRL_B         0x38
 +#define SECOND_CODEC_ID_MASK    0x0003
 +#define SPDIF_FUNC_ENABLE       0x0010
 +#define SECOND_AC_ENABLE        0x0020
 +#define SB_MODULE_INTF_ENABLE   0x0040
 +#define SSPE_ENABLE             0x0040
 +#define M3I_DOCK_ENABLE         0x0080
 +
 +#define SDO_OUT_DEST_CTRL       0x3A
 +#define COMMAND_ADDR_OUT        0x0003
 +#define PCM_LR_OUT_LOCAL        0x0000
 +#define PCM_LR_OUT_REMOTE       0x0004
 +#define PCM_LR_OUT_MUTE         0x0008
 +#define PCM_LR_OUT_BOTH         0x000C
 +#define LINE1_DAC_OUT_LOCAL     0x0000
 +#define LINE1_DAC_OUT_REMOTE    0x0010
 +#define LINE1_DAC_OUT_MUTE      0x0020
 +#define LINE1_DAC_OUT_BOTH      0x0030
 +#define PCM_CLS_OUT_LOCAL       0x0000
 +#define PCM_CLS_OUT_REMOTE      0x0040
 +#define PCM_CLS_OUT_MUTE        0x0080
 +#define PCM_CLS_OUT_BOTH        0x00C0
 +#define PCM_RLF_OUT_LOCAL       0x0000
 +#define PCM_RLF_OUT_REMOTE      0x0100
 +#define PCM_RLF_OUT_MUTE        0x0200
 +#define PCM_RLF_OUT_BOTH        0x0300
 +#define LINE2_DAC_OUT_LOCAL     0x0000
 +#define LINE2_DAC_OUT_REMOTE    0x0400
 +#define LINE2_DAC_OUT_MUTE      0x0800
 +#define LINE2_DAC_OUT_BOTH      0x0C00
 +#define HANDSET_OUT_LOCAL       0x0000
 +#define HANDSET_OUT_REMOTE      0x1000
 +#define HANDSET_OUT_MUTE        0x2000
 +#define HANDSET_OUT_BOTH        0x3000
 +#define IO_CTRL_OUT_LOCAL       0x0000
 +#define IO_CTRL_OUT_REMOTE      0x4000
 +#define IO_CTRL_OUT_MUTE        0x8000
 +#define IO_CTRL_OUT_BOTH        0xC000
 +
 +#define SDO_IN_DEST_CTRL        0x3C
 +#define STATUS_ADDR_IN          0x0003
 +#define PCM_LR_IN_LOCAL         0x0000
 +#define PCM_LR_IN_REMOTE        0x0004
 +#define PCM_LR_RESERVED         0x0008
 +#define PCM_LR_IN_BOTH          0x000C
 +#define LINE1_ADC_IN_LOCAL      0x0000
 +#define LINE1_ADC_IN_REMOTE     0x0010
 +#define LINE1_ADC_IN_MUTE       0x0020
 +#define MIC_ADC_IN_LOCAL        0x0000
 +#define MIC_ADC_IN_REMOTE       0x0040
 +#define MIC_ADC_IN_MUTE         0x0080
 +#define LINE2_DAC_IN_LOCAL      0x0000
 +#define LINE2_DAC_IN_REMOTE     0x0400
 +#define LINE2_DAC_IN_MUTE       0x0800
 +#define HANDSET_IN_LOCAL        0x0000
 +#define HANDSET_IN_REMOTE       0x1000
 +#define HANDSET_IN_MUTE         0x2000
 +#define IO_STATUS_IN_LOCAL      0x0000
 +#define IO_STATUS_IN_REMOTE     0x4000
 +
 +#define SPDIF_IN_CTRL           0x3E
 +#define SPDIF_IN_ENABLE         0x0001
 +
 +#define GPIO_DATA               0x60
 +#define GPIO_DATA_MASK          0x0FFF
 +#define GPIO_HV_STATUS          0x3000
 +#define GPIO_PME_STATUS         0x4000
 +
 +#define GPIO_MASK               0x64
 +#define GPIO_DIRECTION          0x68
 +#define GPO_PRIMARY_AC97        0x0001
 +#define GPI_LINEOUT_SENSE       0x0004
 +#define GPO_SECONDARY_AC97      0x0008
 +#define GPI_VOL_DOWN            0x0010
 +#define GPI_VOL_UP              0x0020
 +#define GPI_IIS_CLK             0x0040
 +#define GPI_IIS_LRCLK           0x0080
 +#define GPI_IIS_DATA            0x0100
 +#define GPI_DOCKING_STATUS      0x0100
 +#define GPI_HEADPHONE_SENSE     0x0200
 +#define GPO_EXT_AMP_SHUTDOWN    0x1000
 +
 +/* M3 */
 +#define GPO_M3_EXT_AMP_SHUTDN   0x0002
 +
 +#define ASSP_INDEX_PORT         0x80
 +#define ASSP_MEMORY_PORT        0x82
 +#define ASSP_DATA_PORT          0x84
 +
 +#define MPU401_DATA_PORT        0x98
 +#define MPU401_STATUS_PORT      0x99
 +
 +#define CLK_MULT_DATA_PORT      0x9C
 +
 +#define ASSP_CONTROL_A          0xA2
 +#define ASSP_0_WS_ENABLE        0x01
 +#define ASSP_CTRL_A_RESERVED1   0x02
 +#define ASSP_CTRL_A_RESERVED2   0x04
 +#define ASSP_CLK_49MHZ_SELECT   0x08
 +#define FAST_PLU_ENABLE         0x10
 +#define ASSP_CTRL_A_RESERVED3   0x20
 +#define DSP_CLK_36MHZ_SELECT    0x40
 +
 +#define ASSP_CONTROL_B          0xA4
 +#define RESET_ASSP              0x00
 +#define RUN_ASSP                0x01
 +#define ENABLE_ASSP_CLOCK       0x00
 +#define STOP_ASSP_CLOCK         0x10
 +#define RESET_TOGGLE            0x40
 +
 +#define ASSP_CONTROL_C          0xA6
 +#define ASSP_HOST_INT_ENABLE    0x01
 +#define FM_ADDR_REMAP_DISABLE   0x02
 +#define HOST_WRITE_PORT_ENABLE  0x08
 +
 +#define ASSP_HOST_INT_STATUS    0xAC
 +#define DSP2HOST_REQ_PIORECORD  0x01
 +#define DSP2HOST_REQ_I2SRATE    0x02
 +#define DSP2HOST_REQ_TIMER      0x04
 +
 +/*
 + * DSP memory map
 + */
 +
 +#define REV_A_CODE_MEMORY_BEGIN         0x0000
 +#define REV_A_CODE_MEMORY_END           0x0FFF
 +#define REV_A_CODE_MEMORY_UNIT_LENGTH   0x0040
 +#define REV_A_CODE_MEMORY_LENGTH        (REV_A_CODE_MEMORY_END - REV_A_CODE_MEMORY_BEGIN + 1)
 +
 +#define REV_B_CODE_MEMORY_BEGIN         0x0000
 +#define REV_B_CODE_MEMORY_END           0x0BFF
 +#define REV_B_CODE_MEMORY_UNIT_LENGTH   0x0040
 +#define REV_B_CODE_MEMORY_LENGTH        (REV_B_CODE_MEMORY_END - REV_B_CODE_MEMORY_BEGIN + 1)
 +
 +#if (REV_A_CODE_MEMORY_LENGTH % REV_A_CODE_MEMORY_UNIT_LENGTH)
 +#error Assumption about code memory unit length failed.
 +#endif
 +#if (REV_B_CODE_MEMORY_LENGTH % REV_B_CODE_MEMORY_UNIT_LENGTH)
 +#error Assumption about code memory unit length failed.
 +#endif
 +
 +#define REV_A_DATA_MEMORY_BEGIN         0x1000
 +#define REV_A_DATA_MEMORY_END           0x2FFF
 +#define REV_A_DATA_MEMORY_UNIT_LENGTH   0x0080
 +#define REV_A_DATA_MEMORY_LENGTH        (REV_A_DATA_MEMORY_END - REV_A_DATA_MEMORY_BEGIN + 1)
 +
 +#define REV_B_DATA_MEMORY_BEGIN         0x1000
 +/*#define REV_B_DATA_MEMORY_END           0x23FF */
 +#define REV_B_DATA_MEMORY_END           0x2BFF
 +#define REV_B_DATA_MEMORY_UNIT_LENGTH   0x0080
 +#define REV_B_DATA_MEMORY_LENGTH        (REV_B_DATA_MEMORY_END - REV_B_DATA_MEMORY_BEGIN + 1)
 +
 +#if (REV_A_DATA_MEMORY_LENGTH % REV_A_DATA_MEMORY_UNIT_LENGTH)
 +#error Assumption about data memory unit length failed.
 +#endif
 +#if (REV_B_DATA_MEMORY_LENGTH % REV_B_DATA_MEMORY_UNIT_LENGTH)
 +#error Assumption about data memory unit length failed.
 +#endif
 +
 +#define CODE_MEMORY_MAP_LENGTH          (64 + 1)
 +#define DATA_MEMORY_MAP_LENGTH          (64 + 1)
 +
 +#if (CODE_MEMORY_MAP_LENGTH < ((REV_A_CODE_MEMORY_LENGTH / REV_A_CODE_MEMORY_UNIT_LENGTH) + 1))
 +#error Code memory map length too short.
 +#endif
 +#if (DATA_MEMORY_MAP_LENGTH < ((REV_A_DATA_MEMORY_LENGTH / REV_A_DATA_MEMORY_UNIT_LENGTH) + 1))
 +#error Data memory map length too short.
 +#endif
 +#if (CODE_MEMORY_MAP_LENGTH < ((REV_B_CODE_MEMORY_LENGTH / REV_B_CODE_MEMORY_UNIT_LENGTH) + 1))
 +#error Code memory map length too short.
 +#endif
 +#if (DATA_MEMORY_MAP_LENGTH < ((REV_B_DATA_MEMORY_LENGTH / REV_B_DATA_MEMORY_UNIT_LENGTH) + 1))
 +#error Data memory map length too short.
 +#endif
 +
 +
 +/*
 + * Kernel code memory definition
 + */
 +
 +#define KCODE_VECTORS_BEGIN             0x0000
 +#define KCODE_VECTORS_END               0x002F
 +#define KCODE_VECTORS_UNIT_LENGTH       0x0002
 +#define KCODE_VECTORS_LENGTH            (KCODE_VECTORS_END - KCODE_VECTORS_BEGIN + 1)
 +
 +
 +/*
 + * Kernel data memory definition
 + */
 +
 +#define KDATA_BASE_ADDR                 0x1000
 +#define KDATA_BASE_ADDR2                0x1080
 +
 +#define KDATA_TASK0                     (KDATA_BASE_ADDR + 0x0000)
 +#define KDATA_TASK1                     (KDATA_BASE_ADDR + 0x0001)
 +#define KDATA_TASK2                     (KDATA_BASE_ADDR + 0x0002)
 +#define KDATA_TASK3                     (KDATA_BASE_ADDR + 0x0003)
 +#define KDATA_TASK4                     (KDATA_BASE_ADDR + 0x0004)
 +#define KDATA_TASK5                     (KDATA_BASE_ADDR + 0x0005)
 +#define KDATA_TASK6                     (KDATA_BASE_ADDR + 0x0006)
 +#define KDATA_TASK7                     (KDATA_BASE_ADDR + 0x0007)
 +#define KDATA_TASK_ENDMARK              (KDATA_BASE_ADDR + 0x0008)
 +
 +#define KDATA_CURRENT_TASK              (KDATA_BASE_ADDR + 0x0009)
 +#define KDATA_TASK_SWITCH               (KDATA_BASE_ADDR + 0x000A)
 +
 +#define KDATA_INSTANCE0_POS3D           (KDATA_BASE_ADDR + 0x000B)
 +#define KDATA_INSTANCE1_POS3D           (KDATA_BASE_ADDR + 0x000C)
 +#define KDATA_INSTANCE2_POS3D           (KDATA_BASE_ADDR + 0x000D)
 +#define KDATA_INSTANCE3_POS3D           (KDATA_BASE_ADDR + 0x000E)
 +#define KDATA_INSTANCE4_POS3D           (KDATA_BASE_ADDR + 0x000F)
 +#define KDATA_INSTANCE5_POS3D           (KDATA_BASE_ADDR + 0x0010)
 +#define KDATA_INSTANCE6_POS3D           (KDATA_BASE_ADDR + 0x0011)
 +#define KDATA_INSTANCE7_POS3D           (KDATA_BASE_ADDR + 0x0012)
 +#define KDATA_INSTANCE8_POS3D           (KDATA_BASE_ADDR + 0x0013)
 +#define KDATA_INSTANCE_POS3D_ENDMARK    (KDATA_BASE_ADDR + 0x0014)
 +
 +#define KDATA_INSTANCE0_SPKVIRT         (KDATA_BASE_ADDR + 0x0015)
 +#define KDATA_INSTANCE_SPKVIRT_ENDMARK  (KDATA_BASE_ADDR + 0x0016)
 +
 +#define KDATA_INSTANCE0_SPDIF           (KDATA_BASE_ADDR + 0x0017)
 +#define KDATA_INSTANCE_SPDIF_ENDMARK    (KDATA_BASE_ADDR + 0x0018)
 +
 +#define KDATA_INSTANCE0_MODEM           (KDATA_BASE_ADDR + 0x0019)
 +#define KDATA_INSTANCE_MODEM_ENDMARK    (KDATA_BASE_ADDR + 0x001A)
 +
 +#define KDATA_INSTANCE0_SRC             (KDATA_BASE_ADDR + 0x001B)
 +#define KDATA_INSTANCE1_SRC             (KDATA_BASE_ADDR + 0x001C)
 +#define KDATA_INSTANCE_SRC_ENDMARK      (KDATA_BASE_ADDR + 0x001D)
 +
 +#define KDATA_INSTANCE0_MINISRC         (KDATA_BASE_ADDR + 0x001E)
 +#define KDATA_INSTANCE1_MINISRC         (KDATA_BASE_ADDR + 0x001F)
 +#define KDATA_INSTANCE2_MINISRC         (KDATA_BASE_ADDR + 0x0020)
 +#define KDATA_INSTANCE3_MINISRC         (KDATA_BASE_ADDR + 0x0021)
 +#define KDATA_INSTANCE_MINISRC_ENDMARK  (KDATA_BASE_ADDR + 0x0022)
 +
 +#define KDATA_INSTANCE0_CPYTHRU         (KDATA_BASE_ADDR + 0x0023)
 +#define KDATA_INSTANCE1_CPYTHRU         (KDATA_BASE_ADDR + 0x0024)
 +#define KDATA_INSTANCE_CPYTHRU_ENDMARK  (KDATA_BASE_ADDR + 0x0025)
 +
 +#define KDATA_CURRENT_DMA               (KDATA_BASE_ADDR + 0x0026)
 +#define KDATA_DMA_SWITCH                (KDATA_BASE_ADDR + 0x0027)
 +#define KDATA_DMA_ACTIVE                (KDATA_BASE_ADDR + 0x0028)
 +
 +#define KDATA_DMA_XFER0                 (KDATA_BASE_ADDR + 0x0029)
 +#define KDATA_DMA_XFER1                 (KDATA_BASE_ADDR + 0x002A)
 +#define KDATA_DMA_XFER2                 (KDATA_BASE_ADDR + 0x002B)
 +#define KDATA_DMA_XFER3                 (KDATA_BASE_ADDR + 0x002C)
 +#define KDATA_DMA_XFER4                 (KDATA_BASE_ADDR + 0x002D)
 +#define KDATA_DMA_XFER5                 (KDATA_BASE_ADDR + 0x002E)
 +#define KDATA_DMA_XFER6                 (KDATA_BASE_ADDR + 0x002F)
 +#define KDATA_DMA_XFER7                 (KDATA_BASE_ADDR + 0x0030)
 +#define KDATA_DMA_XFER8                 (KDATA_BASE_ADDR + 0x0031)
 +#define KDATA_DMA_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0032)
 +
 +#define KDATA_I2S_SAMPLE_COUNT          (KDATA_BASE_ADDR + 0x0033)
 +#define KDATA_I2S_INT_METER             (KDATA_BASE_ADDR + 0x0034)
 +#define KDATA_I2S_ACTIVE                (KDATA_BASE_ADDR + 0x0035)
 +
 +#define KDATA_TIMER_COUNT_RELOAD        (KDATA_BASE_ADDR + 0x0036)
 +#define KDATA_TIMER_COUNT_CURRENT       (KDATA_BASE_ADDR + 0x0037)
 +
 +#define KDATA_HALT_SYNCH_CLIENT         (KDATA_BASE_ADDR + 0x0038)
 +#define KDATA_HALT_SYNCH_DMA            (KDATA_BASE_ADDR + 0x0039)
 +#define KDATA_HALT_ACKNOWLEDGE          (KDATA_BASE_ADDR + 0x003A)
 +
 +#define KDATA_ADC1_XFER0                (KDATA_BASE_ADDR + 0x003B)
 +#define KDATA_ADC1_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x003C)
 +#define KDATA_ADC1_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x003D)
 +#define KDATA_ADC1_RIGHT_VOLUME  	(KDATA_BASE_ADDR + 0x003E)
 +#define KDATA_ADC1_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x003F)
 +#define KDATA_ADC1_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0040)
 +
 +#define KDATA_ADC2_XFER0                (KDATA_BASE_ADDR + 0x0041)
 +#define KDATA_ADC2_XFER_ENDMARK         (KDATA_BASE_ADDR + 0x0042)
 +#define KDATA_ADC2_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0043)
 +#define KDATA_ADC2_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x0044)
 +#define KDATA_ADC2_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x0045)
 +#define KDATA_ADC2_RIGHT_SUR_VOL	(KDATA_BASE_ADDR + 0x0046)
 +
 +#define KDATA_CD_XFER0			(KDATA_BASE_ADDR + 0x0047)
 +#define KDATA_CD_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x0048)
 +#define KDATA_CD_LEFT_VOLUME		(KDATA_BASE_ADDR + 0x0049)
 +#define KDATA_CD_RIGHT_VOLUME		(KDATA_BASE_ADDR + 0x004A)
 +#define KDATA_CD_LEFT_SUR_VOL		(KDATA_BASE_ADDR + 0x004B)
 +#define KDATA_CD_RIGHT_SUR_VOL		(KDATA_BASE_ADDR + 0x004C)
 +
 +#define KDATA_MIC_XFER0			(KDATA_BASE_ADDR + 0x004D)
 +#define KDATA_MIC_XFER_ENDMARK		(KDATA_BASE_ADDR + 0x004E)
 +#define KDATA_MIC_VOLUME		(KDATA_BASE_ADDR + 0x004F)
 +#define KDATA_MIC_SUR_VOL		(KDATA_BASE_ADDR + 0x0050)
 +
 +#define KDATA_I2S_XFER0                 (KDATA_BASE_ADDR + 0x0051)
 +#define KDATA_I2S_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0052)
 +
 +#define KDATA_CHI_XFER0                 (KDATA_BASE_ADDR + 0x0053)
 +#define KDATA_CHI_XFER_ENDMARK          (KDATA_BASE_ADDR + 0x0054)
 +
 +#define KDATA_SPDIF_XFER                (KDATA_BASE_ADDR + 0x0055)
 +#define KDATA_SPDIF_CURRENT_FRAME       (KDATA_BASE_ADDR + 0x0056)
 +#define KDATA_SPDIF_FRAME0              (KDATA_BASE_ADDR + 0x0057)
 +#define KDATA_SPDIF_FRAME1              (KDATA_BASE_ADDR + 0x0058)
 +#define KDATA_SPDIF_FRAME2              (KDATA_BASE_ADDR + 0x0059)
 +
 +#define KDATA_SPDIF_REQUEST             (KDATA_BASE_ADDR + 0x005A)
 +#define KDATA_SPDIF_TEMP                (KDATA_BASE_ADDR + 0x005B)
 +
 +/*AY SPDIF IN */
 +#define KDATA_SPDIFIN_XFER0             (KDATA_BASE_ADDR + 0x005C)
 +#define KDATA_SPDIFIN_XFER_ENDMARK      (KDATA_BASE_ADDR + 0x005D)
 +#define KDATA_SPDIFIN_INT_METER         (KDATA_BASE_ADDR + 0x005E)
 +
 +#define KDATA_DSP_RESET_COUNT           (KDATA_BASE_ADDR + 0x005F)
 +#define KDATA_DEBUG_OUTPUT              (KDATA_BASE_ADDR + 0x0060)
 +
 +#define KDATA_KERNEL_ISR_LIST           (KDATA_BASE_ADDR + 0x0061)
 +
 +#define KDATA_KERNEL_ISR_CBSR1          (KDATA_BASE_ADDR + 0x0062)
 +#define KDATA_KERNEL_ISR_CBER1          (KDATA_BASE_ADDR + 0x0063)
 +#define KDATA_KERNEL_ISR_CBCR           (KDATA_BASE_ADDR + 0x0064)
 +#define KDATA_KERNEL_ISR_AR0            (KDATA_BASE_ADDR + 0x0065)
 +#define KDATA_KERNEL_ISR_AR1            (KDATA_BASE_ADDR + 0x0066)
 +#define KDATA_KERNEL_ISR_AR2            (KDATA_BASE_ADDR + 0x0067)
 +#define KDATA_KERNEL_ISR_AR3            (KDATA_BASE_ADDR + 0x0068)
 +#define KDATA_KERNEL_ISR_AR4            (KDATA_BASE_ADDR + 0x0069)
 +#define KDATA_KERNEL_ISR_AR5            (KDATA_BASE_ADDR + 0x006A)
 +#define KDATA_KERNEL_ISR_BRCR           (KDATA_BASE_ADDR + 0x006B)
 +#define KDATA_KERNEL_ISR_PASR           (KDATA_BASE_ADDR + 0x006C)
 +#define KDATA_KERNEL_ISR_PAER           (KDATA_BASE_ADDR + 0x006D)
 +
 +#define KDATA_CLIENT_SCRATCH0           (KDATA_BASE_ADDR + 0x006E)
 +#define KDATA_CLIENT_SCRATCH1           (KDATA_BASE_ADDR + 0x006F)
 +#define KDATA_KERNEL_SCRATCH            (KDATA_BASE_ADDR + 0x0070)
 +#define KDATA_KERNEL_ISR_SCRATCH        (KDATA_BASE_ADDR + 0x0071)
 +
 +#define KDATA_OUEUE_LEFT                (KDATA_BASE_ADDR + 0x0072)
 +#define KDATA_QUEUE_RIGHT               (KDATA_BASE_ADDR + 0x0073)
 +
 +#define KDATA_ADC1_REQUEST              (KDATA_BASE_ADDR + 0x0074)
 +#define KDATA_ADC2_REQUEST              (KDATA_BASE_ADDR + 0x0075)
 +#define KDATA_CD_REQUEST		(KDATA_BASE_ADDR + 0x0076)
 +#define KDATA_MIC_REQUEST		(KDATA_BASE_ADDR + 0x0077)
 +
 +#define KDATA_ADC1_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0078)
 +#define KDATA_ADC2_MIXER_REQUEST        (KDATA_BASE_ADDR + 0x0079)
 +#define KDATA_CD_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007A)
 +#define KDATA_MIC_MIXER_REQUEST		(KDATA_BASE_ADDR + 0x007B)
 +#define KDATA_MIC_SYNC_COUNTER		(KDATA_BASE_ADDR + 0x007C)
 +
 +/*
 + * second segment
 + */
 +
 +/* smart mixer buffer */
 +
 +#define KDATA_MIXER_WORD0               (KDATA_BASE_ADDR2 + 0x0000)
 +#define KDATA_MIXER_WORD1               (KDATA_BASE_ADDR2 + 0x0001)
 +#define KDATA_MIXER_WORD2               (KDATA_BASE_ADDR2 + 0x0002)
 +#define KDATA_MIXER_WORD3               (KDATA_BASE_ADDR2 + 0x0003)
 +#define KDATA_MIXER_WORD4               (KDATA_BASE_ADDR2 + 0x0004)
 +#define KDATA_MIXER_WORD5               (KDATA_BASE_ADDR2 + 0x0005)
 +#define KDATA_MIXER_WORD6               (KDATA_BASE_ADDR2 + 0x0006)
 +#define KDATA_MIXER_WORD7               (KDATA_BASE_ADDR2 + 0x0007)
 +#define KDATA_MIXER_WORD8               (KDATA_BASE_ADDR2 + 0x0008)
 +#define KDATA_MIXER_WORD9               (KDATA_BASE_ADDR2 + 0x0009)
 +#define KDATA_MIXER_WORDA               (KDATA_BASE_ADDR2 + 0x000A)
 +#define KDATA_MIXER_WORDB               (KDATA_BASE_ADDR2 + 0x000B)
 +#define KDATA_MIXER_WORDC               (KDATA_BASE_ADDR2 + 0x000C)
 +#define KDATA_MIXER_WORDD               (KDATA_BASE_ADDR2 + 0x000D)
 +#define KDATA_MIXER_WORDE               (KDATA_BASE_ADDR2 + 0x000E)
 +#define KDATA_MIXER_WORDF               (KDATA_BASE_ADDR2 + 0x000F)
 +
 +#define KDATA_MIXER_XFER0               (KDATA_BASE_ADDR2 + 0x0010)
 +#define KDATA_MIXER_XFER1               (KDATA_BASE_ADDR2 + 0x0011)
 +#define KDATA_MIXER_XFER2               (KDATA_BASE_ADDR2 + 0x0012)
 +#define KDATA_MIXER_XFER3               (KDATA_BASE_ADDR2 + 0x0013)
 +#define KDATA_MIXER_XFER4               (KDATA_BASE_ADDR2 + 0x0014)
 +#define KDATA_MIXER_XFER5               (KDATA_BASE_ADDR2 + 0x0015)
 +#define KDATA_MIXER_XFER6               (KDATA_BASE_ADDR2 + 0x0016)
 +#define KDATA_MIXER_XFER7               (KDATA_BASE_ADDR2 + 0x0017)
 +#define KDATA_MIXER_XFER8               (KDATA_BASE_ADDR2 + 0x0018)
 +#define KDATA_MIXER_XFER9               (KDATA_BASE_ADDR2 + 0x0019)
 +#define KDATA_MIXER_XFER_ENDMARK        (KDATA_BASE_ADDR2 + 0x001A)
 +
 +#define KDATA_MIXER_TASK_NUMBER         (KDATA_BASE_ADDR2 + 0x001B)
 +#define KDATA_CURRENT_MIXER             (KDATA_BASE_ADDR2 + 0x001C)
 +#define KDATA_MIXER_ACTIVE              (KDATA_BASE_ADDR2 + 0x001D)
 +#define KDATA_MIXER_BANK_STATUS         (KDATA_BASE_ADDR2 + 0x001E)
 +#define KDATA_DAC_LEFT_VOLUME	        (KDATA_BASE_ADDR2 + 0x001F)
 +#define KDATA_DAC_RIGHT_VOLUME          (KDATA_BASE_ADDR2 + 0x0020)
 +
 +/*
 + * Client data memory definition
 + */
 +
 +#define CDATA_INSTANCE_READY            0x00
 +
 +#define CDATA_HOST_SRC_ADDRL            0x01
 +#define CDATA_HOST_SRC_ADDRH            0x02
 +#define CDATA_HOST_SRC_END_PLUS_1L      0x03
 +#define CDATA_HOST_SRC_END_PLUS_1H      0x04
 +#define CDATA_HOST_SRC_CURRENTL         0x05
 +#define CDATA_HOST_SRC_CURRENTH         0x06
 +
 +#define CDATA_IN_BUF_CONNECT            0x07
 +#define CDATA_OUT_BUF_CONNECT           0x08
 +
 +#define CDATA_IN_BUF_BEGIN              0x09
 +#define CDATA_IN_BUF_END_PLUS_1         0x0A
 +#define CDATA_IN_BUF_HEAD               0x0B
 +#define CDATA_IN_BUF_TAIL               0x0C
 +
 +#define CDATA_OUT_BUF_BEGIN             0x0D
 +#define CDATA_OUT_BUF_END_PLUS_1        0x0E
 +#define CDATA_OUT_BUF_HEAD              0x0F
 +#define CDATA_OUT_BUF_TAIL              0x10
 +
 +#define CDATA_DMA_CONTROL               0x11
 +#define CDATA_RESERVED                  0x12
 +
 +#define CDATA_FREQUENCY                 0x13
 +#define CDATA_LEFT_VOLUME               0x14
 +#define CDATA_RIGHT_VOLUME              0x15
 +#define CDATA_LEFT_SUR_VOL              0x16
 +#define CDATA_RIGHT_SUR_VOL             0x17
 +
 +/* These are from Allegro hckernel.h */
 +#define CDATA_HEADER_LEN                0x18
 +#define SRC3_DIRECTION_OFFSET           CDATA_HEADER_LEN
 +#define SRC3_MODE_OFFSET                CDATA_HEADER_LEN + 1
 +#define SRC3_WORD_LENGTH_OFFSET         CDATA_HEADER_LEN + 2
 +#define SRC3_PARAMETER_OFFSET           CDATA_HEADER_LEN + 3
 +#define SRC3_COEFF_ADDR_OFFSET          CDATA_HEADER_LEN + 8
 +#define SRC3_FILTAP_ADDR_OFFSET         CDATA_HEADER_LEN + 10
 +#define SRC3_TEMP_INBUF_ADDR_OFFSET     CDATA_HEADER_LEN + 16
 +#define SRC3_TEMP_OUTBUF_ADDR_OFFSET    CDATA_HEADER_LEN + 17
 +#define FOR_FUTURE_USE                  10	/* for storing temporary variable in future */
 +
 +/*
 + * DMA control definition
 + */
 +
 +#define DMACONTROL_BLOCK_MASK           0x000F
 +#define  DMAC_BLOCK0_SELECTOR           0x0000
 +#define  DMAC_BLOCK1_SELECTOR           0x0001
 +#define  DMAC_BLOCK2_SELECTOR           0x0002
 +#define  DMAC_BLOCK3_SELECTOR           0x0003
 +#define  DMAC_BLOCK4_SELECTOR           0x0004
 +#define  DMAC_BLOCK5_SELECTOR           0x0005
 +#define  DMAC_BLOCK6_SELECTOR           0x0006
 +#define  DMAC_BLOCK7_SELECTOR           0x0007
 +#define  DMAC_BLOCK8_SELECTOR           0x0008
 +#define  DMAC_BLOCK9_SELECTOR           0x0009
 +#define  DMAC_BLOCKA_SELECTOR           0x000A
 +#define  DMAC_BLOCKB_SELECTOR           0x000B
 +#define  DMAC_BLOCKC_SELECTOR           0x000C
 +#define  DMAC_BLOCKD_SELECTOR           0x000D
 +#define  DMAC_BLOCKE_SELECTOR           0x000E
 +#define  DMAC_BLOCKF_SELECTOR           0x000F
 +#define DMACONTROL_PAGE_MASK            0x00F0
 +#define  DMAC_PAGE0_SELECTOR            0x0030
 +#define  DMAC_PAGE1_SELECTOR            0x0020
 +#define  DMAC_PAGE2_SELECTOR            0x0010
 +#define  DMAC_PAGE3_SELECTOR            0x0000
 +#define DMACONTROL_AUTOREPEAT           0x1000
 +#define DMACONTROL_STOPPED              0x2000
 +#define DMACONTROL_DIRECTION            0x0100
 +
 +/*
 + * Kernel/client memory allocation
 + */
 +
 +#define NUM_UNITS_KERNEL_CODE          16
 +#define NUM_UNITS_KERNEL_DATA           2
 +
 +#define NUM_UNITS_KERNEL_CODE_WITH_HSP 16
 +#ifdef M3_MODEL
 +#define NUM_UNITS_KERNEL_DATA_WITH_HSP  5
 +#else
 +#define NUM_UNITS_KERNEL_DATA_WITH_HSP  4
 +#endif
 +
 +#define NUM_UNITS( BYTES, UNITLEN )    ((((BYTES+1)>>1) + (UNITLEN-1)) / UNITLEN)
 +
 +/*
 + * DSP hardware
 + */
 +
 +#define DSP_PORT_TIMER_COUNT            0x06
 +#define DSP_PORT_MEMORY_INDEX           0x80
 +#define DSP_PORT_MEMORY_TYPE            0x82
 +#define DSP_PORT_MEMORY_DATA            0x84
 +#define DSP_PORT_CONTROL_REG_A          0xA2
 
 *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
