* [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop
@ 2021-11-23 16:31 Lucas Tanure
2021-11-23 16:31 ` [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device Lucas Tanure
` (11 more replies)
0 siblings, 12 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
Add support for laptops that have CS35L41 connected to an
HDA codec by I2S and direct I2C/SPI connection to the CPU
Hardware:
- The 16ACHg6 laptop has two CS35L41 amplifiers, connected
to Realtek ALC287 by an I2S bus and by and direct I2C to the CPU.
- The ALC287 codec is connected to the CPU by an HDA bus.
- The CS35L41 has a DSP which will require firmware to be loaded.
Architecture:
- Creation of a library of shared functions for CS35L41 ASoC and HDA
- HDA codec driver (RealTek) and CS35L41 HDA driver are combined
by using component binding, where it uses device names to find the
components and bind to the master
- The HDA CS35L41 driver applies pre-defined registers sequences
for each action in playback for HDA Sound card
Changes from V2:
- Not an RFC
- Create a new HDA driver for CS35L41 instead of using the ASoC one
- Use component binding and device names to find the CS35L41 driver
- Create a shared library for ASoC and HDA CS35L41 drivers
Lucas Tanure (11):
ASoC: cs35l41: Set the max SPI speed for the whole device
ASoC: cs35l41: Convert tables to shared source code
ASoC: cs35l41: Move regmap config struct to shared code
ASoC: cs35l41: Create function for init array of Supplies
ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
ASoC: cs35l41: Move power initializations to reg_sequence
ASoC: cs35l41: Create shared function for errata patches
ASoC: cs35l41: Create shared function for setting channels
ASoC: cs35l41: Create shared function for boost configuration
hda: cs35l41: Add support for CS35L41 in HDA systems
ACPI / scan: Create platform device for CLSA0100 ACPI nodes
MAINTAINERS | 2 +
drivers/acpi/scan.c | 1 +
drivers/platform/x86/i2c-multi-instantiate.c | 7 +
include/sound/cs35l41.h | 741 ++++++++++++++++++
sound/pci/hda/Kconfig | 10 +
sound/pci/hda/Makefile | 28 +-
sound/pci/hda/cs35l41_hda.c | 522 ++++++++++++
sound/pci/hda/cs35l41_hda.h | 69 ++
sound/pci/hda/cs35l41_hda_i2c.c | 61 ++
sound/pci/hda/hda_component.h | 20 +
sound/pci/hda/patch_realtek.c | 103 +++
sound/soc/codecs/Makefile | 4 +-
sound/soc/codecs/cs35l41-i2c.c | 16 -
.../{cs35l41-tables.c => cs35l41-lib.c} | 400 +++++++++-
sound/soc/codecs/cs35l41-spi.c | 49 +-
sound/soc/codecs/cs35l41.c | 390 +--------
sound/soc/codecs/cs35l41.h | 739 -----------------
17 files changed, 1964 insertions(+), 1198 deletions(-)
create mode 100644 sound/pci/hda/cs35l41_hda.c
create mode 100644 sound/pci/hda/cs35l41_hda.h
create mode 100644 sound/pci/hda/cs35l41_hda_i2c.c
create mode 100644 sound/pci/hda/hda_component.h
rename sound/soc/codecs/{cs35l41-tables.c => cs35l41-lib.c} (68%)
--
2.34.0
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 18:02 ` Charles Keepax
2021-11-23 16:31 ` [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code Lucas Tanure
` (10 subsequent siblings)
11 siblings, 1 reply; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
Higher speeds are only supported when PLL is enabled, but
the current driver doesn't enable PLL outside of stream
use cases, so better to set the lowest SPI speed accepted
by the entire device.
Move the current frequency set to the spi sub-driver so
the whole device can benefit from that speed.
spi-max-frequency property could be used, but ACPI systems don't
support it, so by setting it in the spi sub-driver probe
both Device Trees and ACPI systems are supported.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
sound/soc/codecs/cs35l41-spi.c | 32 +++-----------------------------
sound/soc/codecs/cs35l41.c | 7 -------
sound/soc/codecs/cs35l41.h | 4 +---
3 files changed, 4 insertions(+), 39 deletions(-)
diff --git a/sound/soc/codecs/cs35l41-spi.c b/sound/soc/codecs/cs35l41-spi.c
index 90a921f726c3..3fa99741779a 100644
--- a/sound/soc/codecs/cs35l41-spi.c
+++ b/sound/soc/codecs/cs35l41-spi.c
@@ -42,34 +42,6 @@ static const struct spi_device_id cs35l41_id_spi[] = {
MODULE_DEVICE_TABLE(spi, cs35l41_id_spi);
-static void cs35l41_spi_otp_setup(struct cs35l41_private *cs35l41,
- bool is_pre_setup, unsigned int *freq)
-{
- struct spi_device *spi;
- u32 orig_spi_freq;
-
- spi = to_spi_device(cs35l41->dev);
-
- if (!spi) {
- dev_err(cs35l41->dev, "%s: No SPI device\n", __func__);
- return;
- }
-
- if (is_pre_setup) {
- orig_spi_freq = spi->max_speed_hz;
- if (orig_spi_freq > CS35L41_SPI_MAX_FREQ_OTP) {
- spi->max_speed_hz = CS35L41_SPI_MAX_FREQ_OTP;
- spi_setup(spi);
- }
- *freq = orig_spi_freq;
- } else {
- if (spi->max_speed_hz != *freq) {
- spi->max_speed_hz = *freq;
- spi_setup(spi);
- }
- }
-}
-
static int cs35l41_spi_probe(struct spi_device *spi)
{
const struct regmap_config *regmap_config = &cs35l41_regmap_spi;
@@ -81,6 +53,9 @@ static int cs35l41_spi_probe(struct spi_device *spi)
if (!cs35l41)
return -ENOMEM;
+ spi->max_speed_hz = CS35L41_SPI_MAX_FREQ;
+ spi_setup(spi);
+
spi_set_drvdata(spi, cs35l41);
cs35l41->regmap = devm_regmap_init_spi(spi, regmap_config);
if (IS_ERR(cs35l41->regmap)) {
@@ -91,7 +66,6 @@ static int cs35l41_spi_probe(struct spi_device *spi)
cs35l41->dev = &spi->dev;
cs35l41->irq = spi->irq;
- cs35l41->otp_setup = cs35l41_spi_otp_setup;
return cs35l41_probe(cs35l41, pdata);
}
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index afb07d2991ba..e8e997efaa8b 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -438,7 +438,6 @@ static int cs35l41_otp_unpack(void *data)
const struct cs35l41_otp_packed_element_t *otp_map;
struct cs35l41_private *cs35l41 = data;
int bit_offset, word_offset, ret, i;
- unsigned int orig_spi_freq;
unsigned int bit_sum = 8;
u32 otp_val, otp_id_reg;
u32 *otp_mem;
@@ -462,9 +461,6 @@ static int cs35l41_otp_unpack(void *data)
goto err_otp_unpack;
}
- if (cs35l41->otp_setup)
- cs35l41->otp_setup(cs35l41, true, &orig_spi_freq);
-
ret = regmap_bulk_read(cs35l41->regmap, CS35L41_OTP_MEM0, otp_mem,
CS35L41_OTP_SIZE_WORDS);
if (ret < 0) {
@@ -472,9 +468,6 @@ static int cs35l41_otp_unpack(void *data)
goto err_otp_unpack;
}
- if (cs35l41->otp_setup)
- cs35l41->otp_setup(cs35l41, false, &orig_spi_freq);
-
otp_map = otp_map_match->map;
bit_offset = otp_map_match->bit_offset;
diff --git a/sound/soc/codecs/cs35l41.h b/sound/soc/codecs/cs35l41.h
index eea3b14acb0b..a23eabff074f 100644
--- a/sound/soc/codecs/cs35l41.h
+++ b/sound/soc/codecs/cs35l41.h
@@ -729,7 +729,7 @@
#define CS35L41_FS2_WINDOW_MASK 0x00FFF800
#define CS35L41_FS2_WINDOW_SHIFT 12
-#define CS35L41_SPI_MAX_FREQ_OTP 4000000
+#define CS35L41_SPI_MAX_FREQ 4000000
#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
@@ -784,8 +784,6 @@ struct cs35l41_private {
int irq;
/* GPIO for /RST */
struct gpio_desc *reset_gpio;
- void (*otp_setup)(struct cs35l41_private *cs35l41, bool is_pre_setup,
- unsigned int *freq);
};
int cs35l41_probe(struct cs35l41_private *cs35l41,
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
2021-11-23 16:31 ` [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 17:53 ` Mark Brown
2021-11-23 16:31 ` [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code Lucas Tanure
` (9 subsequent siblings)
11 siblings, 1 reply; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
To support CS35L41 in HDA systems the HDA driver
for CS35L41 would have to duplicate some functions
that already exist on ASoC driver
So instead of duplicate the code, use the new lib
source as a shared resource for both ASoC and HDA
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 727 +++++++++++++++++
sound/soc/codecs/Makefile | 4 +-
sound/soc/codecs/cs35l41-i2c.c | 1 -
.../{cs35l41-tables.c => cs35l41-lib.c} | 6 +-
sound/soc/codecs/cs35l41-spi.c | 1 -
sound/soc/codecs/cs35l41.h | 728 ------------------
6 files changed, 733 insertions(+), 734 deletions(-)
rename sound/soc/codecs/{cs35l41-tables.c => cs35l41-lib.c} (99%)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index 1f1e3c6c9be1..4a5679c856a3 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -10,6 +10,719 @@
#ifndef __CS35L41_H
#define __CS35L41_H
+#define CS35L41_FIRSTREG 0x00000000
+#define CS35L41_LASTREG 0x03804FE8
+#define CS35L41_DEVID 0x00000000
+#define CS35L41_REVID 0x00000004
+#define CS35L41_FABID 0x00000008
+#define CS35L41_RELID 0x0000000C
+#define CS35L41_OTPID 0x00000010
+#define CS35L41_SFT_RESET 0x00000020
+#define CS35L41_TEST_KEY_CTL 0x00000040
+#define CS35L41_USER_KEY_CTL 0x00000044
+#define CS35L41_OTP_MEM0 0x00000400
+#define CS35L41_OTP_MEM31 0x0000047C
+#define CS35L41_OTP_CTRL0 0x00000500
+#define CS35L41_OTP_CTRL1 0x00000504
+#define CS35L41_OTP_CTRL3 0x00000508
+#define CS35L41_OTP_CTRL4 0x0000050C
+#define CS35L41_OTP_CTRL5 0x00000510
+#define CS35L41_OTP_CTRL6 0x00000514
+#define CS35L41_OTP_CTRL7 0x00000518
+#define CS35L41_OTP_CTRL8 0x0000051C
+#define CS35L41_PWR_CTRL1 0x00002014
+#define CS35L41_PWR_CTRL2 0x00002018
+#define CS35L41_PWR_CTRL3 0x0000201C
+#define CS35L41_CTRL_OVRRIDE 0x00002020
+#define CS35L41_AMP_OUT_MUTE 0x00002024
+#define CS35L41_PROTECT_REL_ERR_IGN 0x00002034
+#define CS35L41_GPIO_PAD_CONTROL 0x0000242C
+#define CS35L41_JTAG_CONTROL 0x00002438
+#define CS35L41_PLL_CLK_CTRL 0x00002C04
+#define CS35L41_DSP_CLK_CTRL 0x00002C08
+#define CS35L41_GLOBAL_CLK_CTRL 0x00002C0C
+#define CS35L41_DATA_FS_SEL 0x00002C10
+#define CS35L41_TST_FS_MON0 0x00002D10
+#define CS35L41_MDSYNC_EN 0x00003400
+#define CS35L41_MDSYNC_TX_ID 0x00003408
+#define CS35L41_MDSYNC_PWR_CTRL 0x0000340C
+#define CS35L41_MDSYNC_DATA_TX 0x00003410
+#define CS35L41_MDSYNC_TX_STATUS 0x00003414
+#define CS35L41_MDSYNC_DATA_RX 0x0000341C
+#define CS35L41_MDSYNC_RX_STATUS 0x00003420
+#define CS35L41_MDSYNC_ERR_STATUS 0x00003424
+#define CS35L41_MDSYNC_SYNC_PTE2 0x00003528
+#define CS35L41_MDSYNC_SYNC_PTE3 0x0000352C
+#define CS35L41_MDSYNC_SYNC_MSM_STATUS 0x0000353C
+#define CS35L41_BSTCVRT_VCTRL1 0x00003800
+#define CS35L41_BSTCVRT_VCTRL2 0x00003804
+#define CS35L41_BSTCVRT_PEAK_CUR 0x00003808
+#define CS35L41_BSTCVRT_SFT_RAMP 0x0000380C
+#define CS35L41_BSTCVRT_COEFF 0x00003810
+#define CS35L41_BSTCVRT_SLOPE_LBST 0x00003814
+#define CS35L41_BSTCVRT_SW_FREQ 0x00003818
+#define CS35L41_BSTCVRT_DCM_CTRL 0x0000381C
+#define CS35L41_BSTCVRT_DCM_MODE_FORCE 0x00003820
+#define CS35L41_BSTCVRT_OVERVOLT_CTRL 0x00003830
+#define CS35L41_VI_VOL_POL 0x00004000
+#define CS35L41_VIMON_SPKMON_RESYNC 0x00004100
+#define CS35L41_DTEMP_WARN_THLD 0x00004220
+#define CS35L41_DTEMP_CFG 0x00004224
+#define CS35L41_DTEMP_EN 0x00004308
+#define CS35L41_VPVBST_FS_SEL 0x00004400
+#define CS35L41_SP_ENABLES 0x00004800
+#define CS35L41_SP_RATE_CTRL 0x00004804
+#define CS35L41_SP_FORMAT 0x00004808
+#define CS35L41_SP_HIZ_CTRL 0x0000480C
+#define CS35L41_SP_FRAME_TX_SLOT 0x00004810
+#define CS35L41_SP_FRAME_RX_SLOT 0x00004820
+#define CS35L41_SP_TX_WL 0x00004830
+#define CS35L41_SP_RX_WL 0x00004840
+#define CS35L41_ASP_CONTROL4 0x00004854
+#define CS35L41_DAC_PCM1_SRC 0x00004C00
+#define CS35L41_ASP_TX1_SRC 0x00004C20
+#define CS35L41_ASP_TX2_SRC 0x00004C24
+#define CS35L41_ASP_TX3_SRC 0x00004C28
+#define CS35L41_ASP_TX4_SRC 0x00004C2C
+#define CS35L41_DSP1_RX1_SRC 0x00004C40
+#define CS35L41_DSP1_RX2_SRC 0x00004C44
+#define CS35L41_DSP1_RX3_SRC 0x00004C48
+#define CS35L41_DSP1_RX4_SRC 0x00004C4C
+#define CS35L41_DSP1_RX5_SRC 0x00004C50
+#define CS35L41_DSP1_RX6_SRC 0x00004C54
+#define CS35L41_DSP1_RX7_SRC 0x00004C58
+#define CS35L41_DSP1_RX8_SRC 0x00004C5C
+#define CS35L41_NGATE1_SRC 0x00004C60
+#define CS35L41_NGATE2_SRC 0x00004C64
+#define CS35L41_AMP_DIG_VOL_CTRL 0x00006000
+#define CS35L41_VPBR_CFG 0x00006404
+#define CS35L41_VBBR_CFG 0x00006408
+#define CS35L41_VPBR_STATUS 0x0000640C
+#define CS35L41_VBBR_STATUS 0x00006410
+#define CS35L41_OVERTEMP_CFG 0x00006414
+#define CS35L41_AMP_ERR_VOL 0x00006418
+#define CS35L41_VOL_STATUS_TO_DSP 0x00006450
+#define CS35L41_CLASSH_CFG 0x00006800
+#define CS35L41_WKFET_CFG 0x00006804
+#define CS35L41_NG_CFG 0x00006808
+#define CS35L41_AMP_GAIN_CTRL 0x00006C04
+#define CS35L41_DAC_MSM_CFG 0x00007400
+#define CS35L41_IRQ1_CFG 0x00010000
+#define CS35L41_IRQ1_STATUS 0x00010004
+#define CS35L41_IRQ1_STATUS1 0x00010010
+#define CS35L41_IRQ1_STATUS2 0x00010014
+#define CS35L41_IRQ1_STATUS3 0x00010018
+#define CS35L41_IRQ1_STATUS4 0x0001001C
+#define CS35L41_IRQ1_RAW_STATUS1 0x00010090
+#define CS35L41_IRQ1_RAW_STATUS2 0x00010094
+#define CS35L41_IRQ1_RAW_STATUS3 0x00010098
+#define CS35L41_IRQ1_RAW_STATUS4 0x0001009C
+#define CS35L41_IRQ1_MASK1 0x00010110
+#define CS35L41_IRQ1_MASK2 0x00010114
+#define CS35L41_IRQ1_MASK3 0x00010118
+#define CS35L41_IRQ1_MASK4 0x0001011C
+#define CS35L41_IRQ1_FRC1 0x00010190
+#define CS35L41_IRQ1_FRC2 0x00010194
+#define CS35L41_IRQ1_FRC3 0x00010198
+#define CS35L41_IRQ1_FRC4 0x0001019C
+#define CS35L41_IRQ1_EDGE1 0x00010210
+#define CS35L41_IRQ1_EDGE4 0x0001021C
+#define CS35L41_IRQ1_POL1 0x00010290
+#define CS35L41_IRQ1_POL2 0x00010294
+#define CS35L41_IRQ1_POL3 0x00010298
+#define CS35L41_IRQ1_POL4 0x0001029C
+#define CS35L41_IRQ1_DB3 0x00010318
+#define CS35L41_IRQ2_CFG 0x00010800
+#define CS35L41_IRQ2_STATUS 0x00010804
+#define CS35L41_IRQ2_STATUS1 0x00010810
+#define CS35L41_IRQ2_STATUS2 0x00010814
+#define CS35L41_IRQ2_STATUS3 0x00010818
+#define CS35L41_IRQ2_STATUS4 0x0001081C
+#define CS35L41_IRQ2_RAW_STATUS1 0x00010890
+#define CS35L41_IRQ2_RAW_STATUS2 0x00010894
+#define CS35L41_IRQ2_RAW_STATUS3 0x00010898
+#define CS35L41_IRQ2_RAW_STATUS4 0x0001089C
+#define CS35L41_IRQ2_MASK1 0x00010910
+#define CS35L41_IRQ2_MASK2 0x00010914
+#define CS35L41_IRQ2_MASK3 0x00010918
+#define CS35L41_IRQ2_MASK4 0x0001091C
+#define CS35L41_IRQ2_FRC1 0x00010990
+#define CS35L41_IRQ2_FRC2 0x00010994
+#define CS35L41_IRQ2_FRC3 0x00010998
+#define CS35L41_IRQ2_FRC4 0x0001099C
+#define CS35L41_IRQ2_EDGE1 0x00010A10
+#define CS35L41_IRQ2_EDGE4 0x00010A1C
+#define CS35L41_IRQ2_POL1 0x00010A90
+#define CS35L41_IRQ2_POL2 0x00010A94
+#define CS35L41_IRQ2_POL3 0x00010A98
+#define CS35L41_IRQ2_POL4 0x00010A9C
+#define CS35L41_IRQ2_DB3 0x00010B18
+#define CS35L41_GPIO_STATUS1 0x00011000
+#define CS35L41_GPIO1_CTRL1 0x00011008
+#define CS35L41_GPIO2_CTRL1 0x0001100C
+#define CS35L41_MIXER_NGATE_CFG 0x00012000
+#define CS35L41_MIXER_NGATE_CH1_CFG 0x00012004
+#define CS35L41_MIXER_NGATE_CH2_CFG 0x00012008
+#define CS35L41_DSP_MBOX_1 0x00013000
+#define CS35L41_DSP_MBOX_2 0x00013004
+#define CS35L41_DSP_MBOX_3 0x00013008
+#define CS35L41_DSP_MBOX_4 0x0001300C
+#define CS35L41_DSP_MBOX_5 0x00013010
+#define CS35L41_DSP_MBOX_6 0x00013014
+#define CS35L41_DSP_MBOX_7 0x00013018
+#define CS35L41_DSP_MBOX_8 0x0001301C
+#define CS35L41_DSP_VIRT1_MBOX_1 0x00013020
+#define CS35L41_DSP_VIRT1_MBOX_2 0x00013024
+#define CS35L41_DSP_VIRT1_MBOX_3 0x00013028
+#define CS35L41_DSP_VIRT1_MBOX_4 0x0001302C
+#define CS35L41_DSP_VIRT1_MBOX_5 0x00013030
+#define CS35L41_DSP_VIRT1_MBOX_6 0x00013034
+#define CS35L41_DSP_VIRT1_MBOX_7 0x00013038
+#define CS35L41_DSP_VIRT1_MBOX_8 0x0001303C
+#define CS35L41_DSP_VIRT2_MBOX_1 0x00013040
+#define CS35L41_DSP_VIRT2_MBOX_2 0x00013044
+#define CS35L41_DSP_VIRT2_MBOX_3 0x00013048
+#define CS35L41_DSP_VIRT2_MBOX_4 0x0001304C
+#define CS35L41_DSP_VIRT2_MBOX_5 0x00013050
+#define CS35L41_DSP_VIRT2_MBOX_6 0x00013054
+#define CS35L41_DSP_VIRT2_MBOX_7 0x00013058
+#define CS35L41_DSP_VIRT2_MBOX_8 0x0001305C
+#define CS35L41_CLOCK_DETECT_1 0x00014000
+#define CS35L41_TIMER1_CONTROL 0x00015000
+#define CS35L41_TIMER1_COUNT_PRESET 0x00015004
+#define CS35L41_TIMER1_START_STOP 0x0001500C
+#define CS35L41_TIMER1_STATUS 0x00015010
+#define CS35L41_TIMER1_COUNT_READBACK 0x00015014
+#define CS35L41_TIMER1_DSP_CLK_CFG 0x00015018
+#define CS35L41_TIMER1_DSP_CLK_STATUS 0x0001501C
+#define CS35L41_TIMER2_CONTROL 0x00015100
+#define CS35L41_TIMER2_COUNT_PRESET 0x00015104
+#define CS35L41_TIMER2_START_STOP 0x0001510C
+#define CS35L41_TIMER2_STATUS 0x00015110
+#define CS35L41_TIMER2_COUNT_READBACK 0x00015114
+#define CS35L41_TIMER2_DSP_CLK_CFG 0x00015118
+#define CS35L41_TIMER2_DSP_CLK_STATUS 0x0001511C
+#define CS35L41_DFT_JTAG_CONTROL 0x00016000
+#define CS35L41_DIE_STS1 0x00017040
+#define CS35L41_DIE_STS2 0x00017044
+#define CS35L41_TEMP_CAL1 0x00017048
+#define CS35L41_TEMP_CAL2 0x0001704C
+#define CS35L41_DSP1_XMEM_PACK_0 0x02000000
+#define CS35L41_DSP1_XMEM_PACK_3068 0x02002FF0
+#define CS35L41_DSP1_XMEM_UNPACK32_0 0x02400000
+#define CS35L41_DSP1_XMEM_UNPACK32_2046 0x02401FF8
+#define CS35L41_DSP1_TIMESTAMP_COUNT 0x025C0800
+#define CS35L41_DSP1_SYS_ID 0x025E0000
+#define CS35L41_DSP1_SYS_VERSION 0x025E0004
+#define CS35L41_DSP1_SYS_CORE_ID 0x025E0008
+#define CS35L41_DSP1_SYS_AHB_ADDR 0x025E000C
+#define CS35L41_DSP1_SYS_XSRAM_SIZE 0x025E0010
+#define CS35L41_DSP1_SYS_YSRAM_SIZE 0x025E0018
+#define CS35L41_DSP1_SYS_PSRAM_SIZE 0x025E0020
+#define CS35L41_DSP1_SYS_PM_BOOT_SIZE 0x025E0028
+#define CS35L41_DSP1_SYS_FEATURES 0x025E002C
+#define CS35L41_DSP1_SYS_FIR_FILTERS 0x025E0030
+#define CS35L41_DSP1_SYS_LMS_FILTERS 0x025E0034
+#define CS35L41_DSP1_SYS_XM_BANK_SIZE 0x025E0038
+#define CS35L41_DSP1_SYS_YM_BANK_SIZE 0x025E003C
+#define CS35L41_DSP1_SYS_PM_BANK_SIZE 0x025E0040
+#define CS35L41_DSP1_AHBM_WIN0_CTRL0 0x025E2000
+#define CS35L41_DSP1_AHBM_WIN0_CTRL1 0x025E2004
+#define CS35L41_DSP1_AHBM_WIN1_CTRL0 0x025E2008
+#define CS35L41_DSP1_AHBM_WIN1_CTRL1 0x025E200C
+#define CS35L41_DSP1_AHBM_WIN2_CTRL0 0x025E2010
+#define CS35L41_DSP1_AHBM_WIN2_CTRL1 0x025E2014
+#define CS35L41_DSP1_AHBM_WIN3_CTRL0 0x025E2018
+#define CS35L41_DSP1_AHBM_WIN3_CTRL1 0x025E201C
+#define CS35L41_DSP1_AHBM_WIN4_CTRL0 0x025E2020
+#define CS35L41_DSP1_AHBM_WIN4_CTRL1 0x025E2024
+#define CS35L41_DSP1_AHBM_WIN5_CTRL0 0x025E2028
+#define CS35L41_DSP1_AHBM_WIN5_CTRL1 0x025E202C
+#define CS35L41_DSP1_AHBM_WIN6_CTRL0 0x025E2030
+#define CS35L41_DSP1_AHBM_WIN6_CTRL1 0x025E2034
+#define CS35L41_DSP1_AHBM_WIN7_CTRL0 0x025E2038
+#define CS35L41_DSP1_AHBM_WIN7_CTRL1 0x025E203C
+#define CS35L41_DSP1_AHBM_WIN_DBG_CTRL0 0x025E2040
+#define CS35L41_DSP1_AHBM_WIN_DBG_CTRL1 0x025E2044
+#define CS35L41_DSP1_XMEM_UNPACK24_0 0x02800000
+#define CS35L41_DSP1_XMEM_UNPACK24_4093 0x02803FF4
+#define CS35L41_DSP1_CTRL_BASE 0x02B80000
+#define CS35L41_DSP1_CORE_SOFT_RESET 0x02B80010
+#define CS35L41_DSP1_DEBUG 0x02B80040
+#define CS35L41_DSP1_TIMER_CTRL 0x02B80048
+#define CS35L41_DSP1_STREAM_ARB_CTRL 0x02B80050
+#define CS35L41_DSP1_RX1_RATE 0x02B80080
+#define CS35L41_DSP1_RX2_RATE 0x02B80088
+#define CS35L41_DSP1_RX3_RATE 0x02B80090
+#define CS35L41_DSP1_RX4_RATE 0x02B80098
+#define CS35L41_DSP1_RX5_RATE 0x02B800A0
+#define CS35L41_DSP1_RX6_RATE 0x02B800A8
+#define CS35L41_DSP1_RX7_RATE 0x02B800B0
+#define CS35L41_DSP1_RX8_RATE 0x02B800B8
+#define CS35L41_DSP1_TX1_RATE 0x02B80280
+#define CS35L41_DSP1_TX2_RATE 0x02B80288
+#define CS35L41_DSP1_TX3_RATE 0x02B80290
+#define CS35L41_DSP1_TX4_RATE 0x02B80298
+#define CS35L41_DSP1_TX5_RATE 0x02B802A0
+#define CS35L41_DSP1_TX6_RATE 0x02B802A8
+#define CS35L41_DSP1_TX7_RATE 0x02B802B0
+#define CS35L41_DSP1_TX8_RATE 0x02B802B8
+#define CS35L41_DSP1_NMI_CTRL1 0x02B80480
+#define CS35L41_DSP1_NMI_CTRL2 0x02B80488
+#define CS35L41_DSP1_NMI_CTRL3 0x02B80490
+#define CS35L41_DSP1_NMI_CTRL4 0x02B80498
+#define CS35L41_DSP1_NMI_CTRL5 0x02B804A0
+#define CS35L41_DSP1_NMI_CTRL6 0x02B804A8
+#define CS35L41_DSP1_NMI_CTRL7 0x02B804B0
+#define CS35L41_DSP1_NMI_CTRL8 0x02B804B8
+#define CS35L41_DSP1_RESUME_CTRL 0x02B80500
+#define CS35L41_DSP1_IRQ1_CTRL 0x02B80508
+#define CS35L41_DSP1_IRQ2_CTRL 0x02B80510
+#define CS35L41_DSP1_IRQ3_CTRL 0x02B80518
+#define CS35L41_DSP1_IRQ4_CTRL 0x02B80520
+#define CS35L41_DSP1_IRQ5_CTRL 0x02B80528
+#define CS35L41_DSP1_IRQ6_CTRL 0x02B80530
+#define CS35L41_DSP1_IRQ7_CTRL 0x02B80538
+#define CS35L41_DSP1_IRQ8_CTRL 0x02B80540
+#define CS35L41_DSP1_IRQ9_CTRL 0x02B80548
+#define CS35L41_DSP1_IRQ10_CTRL 0x02B80550
+#define CS35L41_DSP1_IRQ11_CTRL 0x02B80558
+#define CS35L41_DSP1_IRQ12_CTRL 0x02B80560
+#define CS35L41_DSP1_IRQ13_CTRL 0x02B80568
+#define CS35L41_DSP1_IRQ14_CTRL 0x02B80570
+#define CS35L41_DSP1_IRQ15_CTRL 0x02B80578
+#define CS35L41_DSP1_IRQ16_CTRL 0x02B80580
+#define CS35L41_DSP1_IRQ17_CTRL 0x02B80588
+#define CS35L41_DSP1_IRQ18_CTRL 0x02B80590
+#define CS35L41_DSP1_IRQ19_CTRL 0x02B80598
+#define CS35L41_DSP1_IRQ20_CTRL 0x02B805A0
+#define CS35L41_DSP1_IRQ21_CTRL 0x02B805A8
+#define CS35L41_DSP1_IRQ22_CTRL 0x02B805B0
+#define CS35L41_DSP1_IRQ23_CTRL 0x02B805B8
+#define CS35L41_DSP1_SCRATCH1 0x02B805C0
+#define CS35L41_DSP1_SCRATCH2 0x02B805C8
+#define CS35L41_DSP1_SCRATCH3 0x02B805D0
+#define CS35L41_DSP1_SCRATCH4 0x02B805D8
+#define CS35L41_DSP1_CCM_CORE_CTRL 0x02BC1000
+#define CS35L41_DSP1_CCM_CLK_OVERRIDE 0x02BC1008
+#define CS35L41_DSP1_XM_MSTR_EN 0x02BC2000
+#define CS35L41_DSP1_XM_CORE_PRI 0x02BC2008
+#define CS35L41_DSP1_XM_AHB_PACK_PL_PRI 0x02BC2010
+#define CS35L41_DSP1_XM_AHB_UP_PL_PRI 0x02BC2018
+#define CS35L41_DSP1_XM_ACCEL_PL0_PRI 0x02BC2020
+#define CS35L41_DSP1_XM_NPL0_PRI 0x02BC2078
+#define CS35L41_DSP1_YM_MSTR_EN 0x02BC20C0
+#define CS35L41_DSP1_YM_CORE_PRI 0x02BC20C8
+#define CS35L41_DSP1_YM_AHB_PACK_PL_PRI 0x02BC20D0
+#define CS35L41_DSP1_YM_AHB_UP_PL_PRI 0x02BC20D8
+#define CS35L41_DSP1_YM_ACCEL_PL0_PRI 0x02BC20E0
+#define CS35L41_DSP1_YM_NPL0_PRI 0x02BC2138
+#define CS35L41_DSP1_PM_MSTR_EN 0x02BC2180
+#define CS35L41_DSP1_PM_PATCH0_ADDR 0x02BC2188
+#define CS35L41_DSP1_PM_PATCH0_EN 0x02BC218C
+#define CS35L41_DSP1_PM_PATCH0_DATA_LO 0x02BC2190
+#define CS35L41_DSP1_PM_PATCH0_DATA_HI 0x02BC2194
+#define CS35L41_DSP1_PM_PATCH1_ADDR 0x02BC2198
+#define CS35L41_DSP1_PM_PATCH1_EN 0x02BC219C
+#define CS35L41_DSP1_PM_PATCH1_DATA_LO 0x02BC21A0
+#define CS35L41_DSP1_PM_PATCH1_DATA_HI 0x02BC21A4
+#define CS35L41_DSP1_PM_PATCH2_ADDR 0x02BC21A8
+#define CS35L41_DSP1_PM_PATCH2_EN 0x02BC21AC
+#define CS35L41_DSP1_PM_PATCH2_DATA_LO 0x02BC21B0
+#define CS35L41_DSP1_PM_PATCH2_DATA_HI 0x02BC21B4
+#define CS35L41_DSP1_PM_PATCH3_ADDR 0x02BC21B8
+#define CS35L41_DSP1_PM_PATCH3_EN 0x02BC21BC
+#define CS35L41_DSP1_PM_PATCH3_DATA_LO 0x02BC21C0
+#define CS35L41_DSP1_PM_PATCH3_DATA_HI 0x02BC21C4
+#define CS35L41_DSP1_PM_PATCH4_ADDR 0x02BC21C8
+#define CS35L41_DSP1_PM_PATCH4_EN 0x02BC21CC
+#define CS35L41_DSP1_PM_PATCH4_DATA_LO 0x02BC21D0
+#define CS35L41_DSP1_PM_PATCH4_DATA_HI 0x02BC21D4
+#define CS35L41_DSP1_PM_PATCH5_ADDR 0x02BC21D8
+#define CS35L41_DSP1_PM_PATCH5_EN 0x02BC21DC
+#define CS35L41_DSP1_PM_PATCH5_DATA_LO 0x02BC21E0
+#define CS35L41_DSP1_PM_PATCH5_DATA_HI 0x02BC21E4
+#define CS35L41_DSP1_PM_PATCH6_ADDR 0x02BC21E8
+#define CS35L41_DSP1_PM_PATCH6_EN 0x02BC21EC
+#define CS35L41_DSP1_PM_PATCH6_DATA_LO 0x02BC21F0
+#define CS35L41_DSP1_PM_PATCH6_DATA_HI 0x02BC21F4
+#define CS35L41_DSP1_PM_PATCH7_ADDR 0x02BC21F8
+#define CS35L41_DSP1_PM_PATCH7_EN 0x02BC21FC
+#define CS35L41_DSP1_PM_PATCH7_DATA_LO 0x02BC2200
+#define CS35L41_DSP1_PM_PATCH7_DATA_HI 0x02BC2204
+#define CS35L41_DSP1_MPU_XM_ACCESS0 0x02BC3000
+#define CS35L41_DSP1_MPU_YM_ACCESS0 0x02BC3004
+#define CS35L41_DSP1_MPU_WNDW_ACCESS0 0x02BC3008
+#define CS35L41_DSP1_MPU_XREG_ACCESS0 0x02BC300C
+#define CS35L41_DSP1_MPU_YREG_ACCESS0 0x02BC3014
+#define CS35L41_DSP1_MPU_XM_ACCESS1 0x02BC3018
+#define CS35L41_DSP1_MPU_YM_ACCESS1 0x02BC301C
+#define CS35L41_DSP1_MPU_WNDW_ACCESS1 0x02BC3020
+#define CS35L41_DSP1_MPU_XREG_ACCESS1 0x02BC3024
+#define CS35L41_DSP1_MPU_YREG_ACCESS1 0x02BC302C
+#define CS35L41_DSP1_MPU_XM_ACCESS2 0x02BC3030
+#define CS35L41_DSP1_MPU_YM_ACCESS2 0x02BC3034
+#define CS35L41_DSP1_MPU_WNDW_ACCESS2 0x02BC3038
+#define CS35L41_DSP1_MPU_XREG_ACCESS2 0x02BC303C
+#define CS35L41_DSP1_MPU_YREG_ACCESS2 0x02BC3044
+#define CS35L41_DSP1_MPU_XM_ACCESS3 0x02BC3048
+#define CS35L41_DSP1_MPU_YM_ACCESS3 0x02BC304C
+#define CS35L41_DSP1_MPU_WNDW_ACCESS3 0x02BC3050
+#define CS35L41_DSP1_MPU_XREG_ACCESS3 0x02BC3054
+#define CS35L41_DSP1_MPU_YREG_ACCESS3 0x02BC305C
+#define CS35L41_DSP1_MPU_XM_VIO_ADDR 0x02BC3100
+#define CS35L41_DSP1_MPU_XM_VIO_STATUS 0x02BC3104
+#define CS35L41_DSP1_MPU_YM_VIO_ADDR 0x02BC3108
+#define CS35L41_DSP1_MPU_YM_VIO_STATUS 0x02BC310C
+#define CS35L41_DSP1_MPU_PM_VIO_ADDR 0x02BC3110
+#define CS35L41_DSP1_MPU_PM_VIO_STATUS 0x02BC3114
+#define CS35L41_DSP1_MPU_LOCK_CONFIG 0x02BC3140
+#define CS35L41_DSP1_MPU_WDT_RST_CTRL 0x02BC3180
+#define CS35L41_DSP1_STRMARB_MSTR0_CFG0 0x02BC5000
+#define CS35L41_DSP1_STRMARB_MSTR0_CFG1 0x02BC5004
+#define CS35L41_DSP1_STRMARB_MSTR0_CFG2 0x02BC5008
+#define CS35L41_DSP1_STRMARB_MSTR1_CFG0 0x02BC5010
+#define CS35L41_DSP1_STRMARB_MSTR1_CFG1 0x02BC5014
+#define CS35L41_DSP1_STRMARB_MSTR1_CFG2 0x02BC5018
+#define CS35L41_DSP1_STRMARB_MSTR2_CFG0 0x02BC5020
+#define CS35L41_DSP1_STRMARB_MSTR2_CFG1 0x02BC5024
+#define CS35L41_DSP1_STRMARB_MSTR2_CFG2 0x02BC5028
+#define CS35L41_DSP1_STRMARB_MSTR3_CFG0 0x02BC5030
+#define CS35L41_DSP1_STRMARB_MSTR3_CFG1 0x02BC5034
+#define CS35L41_DSP1_STRMARB_MSTR3_CFG2 0x02BC5038
+#define CS35L41_DSP1_STRMARB_MSTR4_CFG0 0x02BC5040
+#define CS35L41_DSP1_STRMARB_MSTR4_CFG1 0x02BC5044
+#define CS35L41_DSP1_STRMARB_MSTR4_CFG2 0x02BC5048
+#define CS35L41_DSP1_STRMARB_MSTR5_CFG0 0x02BC5050
+#define CS35L41_DSP1_STRMARB_MSTR5_CFG1 0x02BC5054
+#define CS35L41_DSP1_STRMARB_MSTR5_CFG2 0x02BC5058
+#define CS35L41_DSP1_STRMARB_MSTR6_CFG0 0x02BC5060
+#define CS35L41_DSP1_STRMARB_MSTR6_CFG1 0x02BC5064
+#define CS35L41_DSP1_STRMARB_MSTR6_CFG2 0x02BC5068
+#define CS35L41_DSP1_STRMARB_MSTR7_CFG0 0x02BC5070
+#define CS35L41_DSP1_STRMARB_MSTR7_CFG1 0x02BC5074
+#define CS35L41_DSP1_STRMARB_MSTR7_CFG2 0x02BC5078
+#define CS35L41_DSP1_STRMARB_TX0_CFG0 0x02BC5200
+#define CS35L41_DSP1_STRMARB_TX0_CFG1 0x02BC5204
+#define CS35L41_DSP1_STRMARB_TX1_CFG0 0x02BC5208
+#define CS35L41_DSP1_STRMARB_TX1_CFG1 0x02BC520C
+#define CS35L41_DSP1_STRMARB_TX2_CFG0 0x02BC5210
+#define CS35L41_DSP1_STRMARB_TX2_CFG1 0x02BC5214
+#define CS35L41_DSP1_STRMARB_TX3_CFG0 0x02BC5218
+#define CS35L41_DSP1_STRMARB_TX3_CFG1 0x02BC521C
+#define CS35L41_DSP1_STRMARB_TX4_CFG0 0x02BC5220
+#define CS35L41_DSP1_STRMARB_TX4_CFG1 0x02BC5224
+#define CS35L41_DSP1_STRMARB_TX5_CFG0 0x02BC5228
+#define CS35L41_DSP1_STRMARB_TX5_CFG1 0x02BC522C
+#define CS35L41_DSP1_STRMARB_TX6_CFG0 0x02BC5230
+#define CS35L41_DSP1_STRMARB_TX6_CFG1 0x02BC5234
+#define CS35L41_DSP1_STRMARB_TX7_CFG0 0x02BC5238
+#define CS35L41_DSP1_STRMARB_TX7_CFG1 0x02BC523C
+#define CS35L41_DSP1_STRMARB_RX0_CFG0 0x02BC5400
+#define CS35L41_DSP1_STRMARB_RX0_CFG1 0x02BC5404
+#define CS35L41_DSP1_STRMARB_RX1_CFG0 0x02BC5408
+#define CS35L41_DSP1_STRMARB_RX1_CFG1 0x02BC540C
+#define CS35L41_DSP1_STRMARB_RX2_CFG0 0x02BC5410
+#define CS35L41_DSP1_STRMARB_RX2_CFG1 0x02BC5414
+#define CS35L41_DSP1_STRMARB_RX3_CFG0 0x02BC5418
+#define CS35L41_DSP1_STRMARB_RX3_CFG1 0x02BC541C
+#define CS35L41_DSP1_STRMARB_RX4_CFG0 0x02BC5420
+#define CS35L41_DSP1_STRMARB_RX4_CFG1 0x02BC5424
+#define CS35L41_DSP1_STRMARB_RX5_CFG0 0x02BC5428
+#define CS35L41_DSP1_STRMARB_RX5_CFG1 0x02BC542C
+#define CS35L41_DSP1_STRMARB_RX6_CFG0 0x02BC5430
+#define CS35L41_DSP1_STRMARB_RX6_CFG1 0x02BC5434
+#define CS35L41_DSP1_STRMARB_RX7_CFG0 0x02BC5438
+#define CS35L41_DSP1_STRMARB_RX7_CFG1 0x02BC543C
+#define CS35L41_DSP1_STRMARB_IRQ0_CFG0 0x02BC5600
+#define CS35L41_DSP1_STRMARB_IRQ0_CFG1 0x02BC5604
+#define CS35L41_DSP1_STRMARB_IRQ0_CFG2 0x02BC5608
+#define CS35L41_DSP1_STRMARB_IRQ1_CFG0 0x02BC5610
+#define CS35L41_DSP1_STRMARB_IRQ1_CFG1 0x02BC5614
+#define CS35L41_DSP1_STRMARB_IRQ1_CFG2 0x02BC5618
+#define CS35L41_DSP1_STRMARB_IRQ2_CFG0 0x02BC5620
+#define CS35L41_DSP1_STRMARB_IRQ2_CFG1 0x02BC5624
+#define CS35L41_DSP1_STRMARB_IRQ2_CFG2 0x02BC5628
+#define CS35L41_DSP1_STRMARB_IRQ3_CFG0 0x02BC5630
+#define CS35L41_DSP1_STRMARB_IRQ3_CFG1 0x02BC5634
+#define CS35L41_DSP1_STRMARB_IRQ3_CFG2 0x02BC5638
+#define CS35L41_DSP1_STRMARB_IRQ4_CFG0 0x02BC5640
+#define CS35L41_DSP1_STRMARB_IRQ4_CFG1 0x02BC5644
+#define CS35L41_DSP1_STRMARB_IRQ4_CFG2 0x02BC5648
+#define CS35L41_DSP1_STRMARB_IRQ5_CFG0 0x02BC5650
+#define CS35L41_DSP1_STRMARB_IRQ5_CFG1 0x02BC5654
+#define CS35L41_DSP1_STRMARB_IRQ5_CFG2 0x02BC5658
+#define CS35L41_DSP1_STRMARB_IRQ6_CFG0 0x02BC5660
+#define CS35L41_DSP1_STRMARB_IRQ6_CFG1 0x02BC5664
+#define CS35L41_DSP1_STRMARB_IRQ6_CFG2 0x02BC5668
+#define CS35L41_DSP1_STRMARB_IRQ7_CFG0 0x02BC5670
+#define CS35L41_DSP1_STRMARB_IRQ7_CFG1 0x02BC5674
+#define CS35L41_DSP1_STRMARB_IRQ7_CFG2 0x02BC5678
+#define CS35L41_DSP1_STRMARB_RESYNC_MSK 0x02BC5A00
+#define CS35L41_DSP1_STRMARB_ERR_STATUS 0x02BC5A08
+#define CS35L41_DSP1_INTPCTL_RES_STATIC 0x02BC6000
+#define CS35L41_DSP1_INTPCTL_RES_DYN 0x02BC6004
+#define CS35L41_DSP1_INTPCTL_NMI_CTRL 0x02BC6008
+#define CS35L41_DSP1_INTPCTL_IRQ_INV 0x02BC6010
+#define CS35L41_DSP1_INTPCTL_IRQ_MODE 0x02BC6014
+#define CS35L41_DSP1_INTPCTL_IRQ_EN 0x02BC6018
+#define CS35L41_DSP1_INTPCTL_IRQ_MSK 0x02BC601C
+#define CS35L41_DSP1_INTPCTL_IRQ_FLUSH 0x02BC6020
+#define CS35L41_DSP1_INTPCTL_IRQ_MSKCLR 0x02BC6024
+#define CS35L41_DSP1_INTPCTL_IRQ_FRC 0x02BC6028
+#define CS35L41_DSP1_INTPCTL_IRQ_MSKSET 0x02BC602C
+#define CS35L41_DSP1_INTPCTL_IRQ_ERR 0x02BC6030
+#define CS35L41_DSP1_INTPCTL_IRQ_PEND 0x02BC6034
+#define CS35L41_DSP1_INTPCTL_IRQ_GEN 0x02BC6038
+#define CS35L41_DSP1_INTPCTL_TESTBITS 0x02BC6040
+#define CS35L41_DSP1_WDT_CONTROL 0x02BC7000
+#define CS35L41_DSP1_WDT_STATUS 0x02BC7008
+#define CS35L41_DSP1_YMEM_PACK_0 0x02C00000
+#define CS35L41_DSP1_YMEM_PACK_1532 0x02C017F0
+#define CS35L41_DSP1_YMEM_UNPACK32_0 0x03000000
+#define CS35L41_DSP1_YMEM_UNPACK32_1022 0x03000FF8
+#define CS35L41_DSP1_YMEM_UNPACK24_0 0x03400000
+#define CS35L41_DSP1_YMEM_UNPACK24_2045 0x03401FF4
+#define CS35L41_DSP1_PMEM_0 0x03800000
+#define CS35L41_DSP1_PMEM_5114 0x03804FE8
+
+/*test regs for emulation bringup*/
+#define CS35L41_PLL_OVR 0x00003018
+#define CS35L41_BST_TEST_DUTY 0x00003900
+#define CS35L41_DIGPWM_IOCTRL 0x0000706C
+
+/*registers populated by OTP*/
+#define CS35L41_OTP_TRIM_1 0x0000208c
+#define CS35L41_OTP_TRIM_2 0x00002090
+#define CS35L41_OTP_TRIM_3 0x00003010
+#define CS35L41_OTP_TRIM_4 0x0000300C
+#define CS35L41_OTP_TRIM_5 0x0000394C
+#define CS35L41_OTP_TRIM_6 0x00003950
+#define CS35L41_OTP_TRIM_7 0x00003954
+#define CS35L41_OTP_TRIM_8 0x00003958
+#define CS35L41_OTP_TRIM_9 0x0000395C
+#define CS35L41_OTP_TRIM_10 0x0000416C
+#define CS35L41_OTP_TRIM_11 0x00004160
+#define CS35L41_OTP_TRIM_12 0x00004170
+#define CS35L41_OTP_TRIM_13 0x00004360
+#define CS35L41_OTP_TRIM_14 0x00004448
+#define CS35L41_OTP_TRIM_15 0x0000444C
+#define CS35L41_OTP_TRIM_16 0x00006E30
+#define CS35L41_OTP_TRIM_17 0x00006E34
+#define CS35L41_OTP_TRIM_18 0x00006E38
+#define CS35L41_OTP_TRIM_19 0x00006E3C
+#define CS35L41_OTP_TRIM_20 0x00006E40
+#define CS35L41_OTP_TRIM_21 0x00006E44
+#define CS35L41_OTP_TRIM_22 0x00006E48
+#define CS35L41_OTP_TRIM_23 0x00006E4C
+#define CS35L41_OTP_TRIM_24 0x00006E50
+#define CS35L41_OTP_TRIM_25 0x00006E54
+#define CS35L41_OTP_TRIM_26 0x00006E58
+#define CS35L41_OTP_TRIM_27 0x00006E5C
+#define CS35L41_OTP_TRIM_28 0x00006E60
+#define CS35L41_OTP_TRIM_29 0x00006E64
+#define CS35L41_OTP_TRIM_30 0x00007418
+#define CS35L41_OTP_TRIM_31 0x0000741C
+#define CS35L41_OTP_TRIM_32 0x00007434
+#define CS35L41_OTP_TRIM_33 0x00007068
+#define CS35L41_OTP_TRIM_34 0x0000410C
+#define CS35L41_OTP_TRIM_35 0x0000400C
+#define CS35L41_OTP_TRIM_36 0x00002030
+
+#define CS35L41_MAX_CACHE_REG 36
+#define CS35L41_OTP_SIZE_WORDS 32
+#define CS35L41_NUM_OTP_ELEM 100
+#define CS35L41_NUM_OTP_MAPS 5
+
+#define CS35L41_VALID_PDATA 0x80000000
+#define CS35L41_NUM_SUPPLIES 2
+
+#define CS35L41_SCLK_MSTR_MASK 0x10
+#define CS35L41_SCLK_MSTR_SHIFT 4
+#define CS35L41_LRCLK_MSTR_MASK 0x01
+#define CS35L41_LRCLK_MSTR_SHIFT 0
+#define CS35L41_SCLK_INV_MASK 0x40
+#define CS35L41_SCLK_INV_SHIFT 6
+#define CS35L41_LRCLK_INV_MASK 0x04
+#define CS35L41_LRCLK_INV_SHIFT 2
+#define CS35L41_SCLK_FRC_MASK 0x20
+#define CS35L41_SCLK_FRC_SHIFT 5
+#define CS35L41_LRCLK_FRC_MASK 0x02
+#define CS35L41_LRCLK_FRC_SHIFT 1
+
+#define CS35L41_AMP_GAIN_PCM_MASK 0x3E0
+#define CS35L41_AMP_GAIN_ZC_MASK 0x0400
+#define CS35L41_AMP_GAIN_ZC_SHIFT 10
+
+#define CS35L41_BST_CTL_MASK 0xFF
+#define CS35L41_BST_CTL_SEL_MASK 0x03
+#define CS35L41_BST_CTL_SEL_REG 0x00
+#define CS35L41_BST_CTL_SEL_CLASSH 0x01
+#define CS35L41_BST_IPK_MASK 0x7F
+#define CS35L41_BST_IPK_SHIFT 0
+#define CS35L41_BST_LIM_MASK 0x4
+#define CS35L41_BST_LIM_SHIFT 2
+#define CS35L41_BST_K1_MASK 0x000000FF
+#define CS35L41_BST_K1_SHIFT 0
+#define CS35L41_BST_K2_MASK 0x0000FF00
+#define CS35L41_BST_K2_SHIFT 8
+#define CS35L41_BST_SLOPE_MASK 0x0000FF00
+#define CS35L41_BST_SLOPE_SHIFT 8
+#define CS35L41_BST_LBST_VAL_MASK 0x00000003
+#define CS35L41_BST_LBST_VAL_SHIFT 0
+
+#define CS35L41_TEMP_THLD_MASK 0x03
+#define CS35L41_VMON_IMON_VOL_MASK 0x07FF07FF
+#define CS35L41_PDM_MODE_MASK 0x01
+#define CS35L41_PDM_MODE_SHIFT 0
+
+#define CS35L41_CH_MEM_DEPTH_MASK 0x07
+#define CS35L41_CH_MEM_DEPTH_SHIFT 0
+#define CS35L41_CH_HDRM_CTL_MASK 0x007F0000
+#define CS35L41_CH_HDRM_CTL_SHIFT 16
+#define CS35L41_CH_REL_RATE_MASK 0xFF00
+#define CS35L41_CH_REL_RATE_SHIFT 8
+#define CS35L41_CH_WKFET_DLY_MASK 0x001C
+#define CS35L41_CH_WKFET_DLY_SHIFT 2
+#define CS35L41_CH_WKFET_THLD_MASK 0x0F00
+#define CS35L41_CH_WKFET_THLD_SHIFT 8
+
+#define CS35L41_HW_NG_SEL_MASK 0x3F00
+#define CS35L41_HW_NG_SEL_SHIFT 8
+#define CS35L41_HW_NG_DLY_MASK 0x0070
+#define CS35L41_HW_NG_DLY_SHIFT 4
+#define CS35L41_HW_NG_THLD_MASK 0x0007
+#define CS35L41_HW_NG_THLD_SHIFT 0
+
+#define CS35L41_DSP_NG_ENABLE_MASK 0x00010000
+#define CS35L41_DSP_NG_ENABLE_SHIFT 16
+#define CS35L41_DSP_NG_THLD_MASK 0x7
+#define CS35L41_DSP_NG_THLD_SHIFT 0
+#define CS35L41_DSP_NG_DELAY_MASK 0x0F00
+#define CS35L41_DSP_NG_DELAY_SHIFT 8
+
+#define CS35L41_ASP_FMT_MASK 0x0700
+#define CS35L41_ASP_FMT_SHIFT 8
+#define CS35L41_ASP_DOUT_HIZ_MASK 0x03
+#define CS35L41_ASP_DOUT_HIZ_SHIFT 0
+#define CS35L41_ASP_WIDTH_16 0x10
+#define CS35L41_ASP_WIDTH_24 0x18
+#define CS35L41_ASP_WIDTH_32 0x20
+#define CS35L41_ASP_WIDTH_TX_MASK 0xFF0000
+#define CS35L41_ASP_WIDTH_TX_SHIFT 16
+#define CS35L41_ASP_WIDTH_RX_MASK 0xFF000000
+#define CS35L41_ASP_WIDTH_RX_SHIFT 24
+#define CS35L41_ASP_RX1_SLOT_MASK 0x3F
+#define CS35L41_ASP_RX1_SLOT_SHIFT 0
+#define CS35L41_ASP_RX2_SLOT_MASK 0x3F00
+#define CS35L41_ASP_RX2_SLOT_SHIFT 8
+#define CS35L41_ASP_RX_WL_MASK 0x3F
+#define CS35L41_ASP_TX_WL_MASK 0x3F
+#define CS35L41_ASP_RX_WL_SHIFT 0
+#define CS35L41_ASP_TX_WL_SHIFT 0
+#define CS35L41_ASP_SOURCE_MASK 0x7F
+
+#define CS35L41_INPUT_SRC_ASPRX1 0x08
+#define CS35L41_INPUT_SRC_ASPRX2 0x09
+#define CS35L41_INPUT_SRC_VMON 0x18
+#define CS35L41_INPUT_SRC_IMON 0x19
+#define CS35L41_INPUT_SRC_CLASSH 0x21
+#define CS35L41_INPUT_SRC_VPMON 0x28
+#define CS35L41_INPUT_SRC_VBSTMON 0x29
+#define CS35L41_INPUT_SRC_TEMPMON 0x3A
+#define CS35L41_INPUT_SRC_RSVD 0x3B
+#define CS35L41_INPUT_DSP_TX1 0x32
+#define CS35L41_INPUT_DSP_TX2 0x33
+
+#define CS35L41_PLL_CLK_SEL_MASK 0x07
+#define CS35L41_PLL_CLK_SEL_SHIFT 0
+#define CS35L41_PLL_CLK_EN_MASK 0x10
+#define CS35L41_PLL_CLK_EN_SHIFT 4
+#define CS35L41_PLL_OPENLOOP_MASK 0x0800
+#define CS35L41_PLL_OPENLOOP_SHIFT 11
+#define CS35L41_PLLSRC_SCLK 0
+#define CS35L41_PLLSRC_LRCLK 1
+#define CS35L41_PLLSRC_SELF 3
+#define CS35L41_PLLSRC_PDMCLK 4
+#define CS35L41_PLLSRC_MCLK 5
+#define CS35L41_PLLSRC_SWIRE 7
+#define CS35L41_REFCLK_FREQ_MASK 0x7E0
+#define CS35L41_REFCLK_FREQ_SHIFT 5
+
+#define CS35L41_GLOBAL_FS_MASK 0x1F
+#define CS35L41_GLOBAL_FS_SHIFT 0
+
+#define CS35L41_GLOBAL_EN_MASK 0x01
+#define CS35L41_GLOBAL_EN_SHIFT 0
+#define CS35L41_BST_EN_MASK 0x0030
+#define CS35L41_BST_EN_SHIFT 4
+#define CS35L41_BST_EN_DEFAULT 0x2
+#define CS35L41_AMP_EN_SHIFT 0
+#define CS35L41_AMP_EN_MASK 1
+
+#define CS35L41_PDN_DONE_MASK 0x00800000
+#define CS35L41_PDN_DONE_SHIFT 23
+#define CS35L41_PUP_DONE_MASK 0x01000000
+#define CS35L41_PUP_DONE_SHIFT 24
+
+#define CS35L36_PUP_DONE_IRQ_UNMASK 0x5F
+#define CS35L36_PUP_DONE_IRQ_MASK 0xBF
+
+#define CS35L41_AMP_SHORT_ERR 0x80000000
+#define CS35L41_BST_SHORT_ERR 0x0100
+#define CS35L41_TEMP_WARN 0x8000
+#define CS35L41_TEMP_ERR 0x00020000
+#define CS35L41_BST_OVP_ERR 0x40
+#define CS35L41_BST_DCM_UVP_ERR 0x80
+#define CS35L41_OTP_BOOT_DONE 0x02
+#define CS35L41_PLL_UNLOCK 0x10
+#define CS35L41_OTP_BOOT_ERR 0x80000000
+
+#define CS35L41_AMP_SHORT_ERR_RLS 0x02
+#define CS35L41_BST_SHORT_ERR_RLS 0x04
+#define CS35L41_BST_OVP_ERR_RLS 0x08
+#define CS35L41_BST_UVP_ERR_RLS 0x10
+#define CS35L41_TEMP_WARN_ERR_RLS 0x20
+#define CS35L41_TEMP_ERR_RLS 0x40
+
+#define CS35L41_INT1_MASK_DEFAULT 0x7FFCFE3F
+#define CS35L41_INT1_UNMASK_PUP 0xFEFFFFFF
+#define CS35L41_INT1_UNMASK_PDN 0xFF7FFFFF
+
+#define CS35L41_GPIO_DIR_MASK 0x80000000
+#define CS35L41_GPIO_DIR_SHIFT 31
+#define CS35L41_GPIO1_CTRL_MASK 0x00030000
+#define CS35L41_GPIO1_CTRL_SHIFT 16
+#define CS35L41_GPIO2_CTRL_MASK 0x07000000
+#define CS35L41_GPIO2_CTRL_SHIFT 24
+#define CS35L41_GPIO_CTRL_OPEN_INT 2
+#define CS35L41_GPIO_CTRL_ACTV_LO 4
+#define CS35L41_GPIO_CTRL_ACTV_HI 5
+#define CS35L41_GPIO_POL_MASK 0x1000
+#define CS35L41_GPIO_POL_SHIFT 12
+
+#define CS35L41_AMP_INV_PCM_SHIFT 14
+#define CS35L41_AMP_INV_PCM_MASK BIT(CS35L41_AMP_INV_PCM_SHIFT)
+#define CS35L41_AMP_PCM_VOL_SHIFT 3
+#define CS35L41_AMP_PCM_VOL_MASK (0x7FF << 3)
+#define CS35L41_AMP_PCM_VOL_MUTE 0x4CF
+
+#define CS35L41_CHIP_ID 0x35a40
+#define CS35L41R_CHIP_ID 0x35b40
+#define CS35L41_MTLREVID_MASK 0x0F
+#define CS35L41_REVID_A0 0xA0
+#define CS35L41_REVID_B0 0xB0
+#define CS35L41_REVID_B2 0xB2
+
+#define CS35L41_HALO_CORE_RESET 0x00000200
+
+#define CS35L41_FS1_WINDOW_MASK 0x000007FF
+#define CS35L41_FS2_WINDOW_MASK 0x00FFF800
+#define CS35L41_FS2_WINDOW_SHIFT 12
+
+#define CS35L41_SPI_MAX_FREQ 4000000
+#define CS35L41_REGSTRIDE 4
+
enum cs35l41_clk_ids {
CS35L41_CLKID_SCLK = 0,
CS35L41_CLKID_LRCLK = 1,
@@ -31,4 +744,18 @@ struct cs35l41_platform_data {
struct cs35l41_irq_cfg irq_config2;
};
+struct cs35l41_otp_packed_element_t {
+ u32 reg;
+ u8 shift;
+ u8 size;
+};
+
+struct cs35l41_otp_map_element_t {
+ u32 id;
+ u32 num_elements;
+ const struct cs35l41_otp_packed_element_t *map;
+ u32 bit_offset;
+ u32 word_offset;
+};
+
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 9acfbcbfc46d..d182d2b3db5f 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -54,8 +54,8 @@ snd-soc-cs35l33-objs := cs35l33.o
snd-soc-cs35l34-objs := cs35l34.o
snd-soc-cs35l35-objs := cs35l35.o
snd-soc-cs35l36-objs := cs35l36.o
-snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-tables.o
-snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-tables.o
+snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-lib.o
+snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-lib.o
snd-soc-cs42l42-objs := cs42l42.o
snd-soc-cs42l51-objs := cs42l51.o
snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o
diff --git a/sound/soc/codecs/cs35l41-i2c.c b/sound/soc/codecs/cs35l41-i2c.c
index d5fa8d2c4a70..db03fe519e2f 100644
--- a/sound/soc/codecs/cs35l41-i2c.c
+++ b/sound/soc/codecs/cs35l41-i2c.c
@@ -17,7 +17,6 @@
#include <linux/platform_device.h>
#include <linux/slab.h>
-#include <sound/cs35l41.h>
#include "cs35l41.h"
static struct regmap_config cs35l41_regmap_i2c = {
diff --git a/sound/soc/codecs/cs35l41-tables.c b/sound/soc/codecs/cs35l41-lib.c
similarity index 99%
rename from sound/soc/codecs/cs35l41-tables.c
rename to sound/soc/codecs/cs35l41-lib.c
index 9d1a7d7dd24d..f3071f235f7d 100644
--- a/sound/soc/codecs/cs35l41-tables.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -1,12 +1,14 @@
// SPDX-License-Identifier: GPL-2.0
//
-// cs35l41-tables.c -- CS35L41 ALSA SoC audio driver
+// cs35l41-lib.c -- CS35L41 Common functions for HDA and ASoC Audio drivers
//
// Copyright 2017-2021 Cirrus Logic, Inc.
//
// Author: David Rhodes <david.rhodes@cirrus.com>
+// Author: Lucas Tanure <lucas.tanure@cirrus.com>
-#include "cs35l41.h"
+#include <linux/regmap.h>
+#include <sound/cs35l41.h>
const struct reg_default cs35l41_reg[CS35L41_MAX_CACHE_REG] = {
{ CS35L41_PWR_CTRL1, 0x00000000 },
diff --git a/sound/soc/codecs/cs35l41-spi.c b/sound/soc/codecs/cs35l41-spi.c
index 3fa99741779a..60639edcfc5d 100644
--- a/sound/soc/codecs/cs35l41-spi.c
+++ b/sound/soc/codecs/cs35l41-spi.c
@@ -15,7 +15,6 @@
#include <linux/platform_device.h>
#include <linux/spi/spi.h>
-#include <sound/cs35l41.h>
#include "cs35l41.h"
static struct regmap_config cs35l41_regmap_spi = {
diff --git a/sound/soc/codecs/cs35l41.h b/sound/soc/codecs/cs35l41.h
index a23eabff074f..74ef72d01190 100644
--- a/sound/soc/codecs/cs35l41.h
+++ b/sound/soc/codecs/cs35l41.h
@@ -19,718 +19,6 @@
#include "wm_adsp.h"
-#define CS35L41_FIRSTREG 0x00000000
-#define CS35L41_LASTREG 0x03804FE8
-#define CS35L41_DEVID 0x00000000
-#define CS35L41_REVID 0x00000004
-#define CS35L41_FABID 0x00000008
-#define CS35L41_RELID 0x0000000C
-#define CS35L41_OTPID 0x00000010
-#define CS35L41_SFT_RESET 0x00000020
-#define CS35L41_TEST_KEY_CTL 0x00000040
-#define CS35L41_USER_KEY_CTL 0x00000044
-#define CS35L41_OTP_MEM0 0x00000400
-#define CS35L41_OTP_MEM31 0x0000047C
-#define CS35L41_OTP_CTRL0 0x00000500
-#define CS35L41_OTP_CTRL1 0x00000504
-#define CS35L41_OTP_CTRL3 0x00000508
-#define CS35L41_OTP_CTRL4 0x0000050C
-#define CS35L41_OTP_CTRL5 0x00000510
-#define CS35L41_OTP_CTRL6 0x00000514
-#define CS35L41_OTP_CTRL7 0x00000518
-#define CS35L41_OTP_CTRL8 0x0000051C
-#define CS35L41_PWR_CTRL1 0x00002014
-#define CS35L41_PWR_CTRL2 0x00002018
-#define CS35L41_PWR_CTRL3 0x0000201C
-#define CS35L41_CTRL_OVRRIDE 0x00002020
-#define CS35L41_AMP_OUT_MUTE 0x00002024
-#define CS35L41_PROTECT_REL_ERR_IGN 0x00002034
-#define CS35L41_GPIO_PAD_CONTROL 0x0000242C
-#define CS35L41_JTAG_CONTROL 0x00002438
-#define CS35L41_PLL_CLK_CTRL 0x00002C04
-#define CS35L41_DSP_CLK_CTRL 0x00002C08
-#define CS35L41_GLOBAL_CLK_CTRL 0x00002C0C
-#define CS35L41_DATA_FS_SEL 0x00002C10
-#define CS35L41_TST_FS_MON0 0x00002D10
-#define CS35L41_MDSYNC_EN 0x00003400
-#define CS35L41_MDSYNC_TX_ID 0x00003408
-#define CS35L41_MDSYNC_PWR_CTRL 0x0000340C
-#define CS35L41_MDSYNC_DATA_TX 0x00003410
-#define CS35L41_MDSYNC_TX_STATUS 0x00003414
-#define CS35L41_MDSYNC_DATA_RX 0x0000341C
-#define CS35L41_MDSYNC_RX_STATUS 0x00003420
-#define CS35L41_MDSYNC_ERR_STATUS 0x00003424
-#define CS35L41_MDSYNC_SYNC_PTE2 0x00003528
-#define CS35L41_MDSYNC_SYNC_PTE3 0x0000352C
-#define CS35L41_MDSYNC_SYNC_MSM_STATUS 0x0000353C
-#define CS35L41_BSTCVRT_VCTRL1 0x00003800
-#define CS35L41_BSTCVRT_VCTRL2 0x00003804
-#define CS35L41_BSTCVRT_PEAK_CUR 0x00003808
-#define CS35L41_BSTCVRT_SFT_RAMP 0x0000380C
-#define CS35L41_BSTCVRT_COEFF 0x00003810
-#define CS35L41_BSTCVRT_SLOPE_LBST 0x00003814
-#define CS35L41_BSTCVRT_SW_FREQ 0x00003818
-#define CS35L41_BSTCVRT_DCM_CTRL 0x0000381C
-#define CS35L41_BSTCVRT_DCM_MODE_FORCE 0x00003820
-#define CS35L41_BSTCVRT_OVERVOLT_CTRL 0x00003830
-#define CS35L41_VI_VOL_POL 0x00004000
-#define CS35L41_VIMON_SPKMON_RESYNC 0x00004100
-#define CS35L41_DTEMP_WARN_THLD 0x00004220
-#define CS35L41_DTEMP_CFG 0x00004224
-#define CS35L41_DTEMP_EN 0x00004308
-#define CS35L41_VPVBST_FS_SEL 0x00004400
-#define CS35L41_SP_ENABLES 0x00004800
-#define CS35L41_SP_RATE_CTRL 0x00004804
-#define CS35L41_SP_FORMAT 0x00004808
-#define CS35L41_SP_HIZ_CTRL 0x0000480C
-#define CS35L41_SP_FRAME_TX_SLOT 0x00004810
-#define CS35L41_SP_FRAME_RX_SLOT 0x00004820
-#define CS35L41_SP_TX_WL 0x00004830
-#define CS35L41_SP_RX_WL 0x00004840
-#define CS35L41_ASP_CONTROL4 0x00004854
-#define CS35L41_DAC_PCM1_SRC 0x00004C00
-#define CS35L41_ASP_TX1_SRC 0x00004C20
-#define CS35L41_ASP_TX2_SRC 0x00004C24
-#define CS35L41_ASP_TX3_SRC 0x00004C28
-#define CS35L41_ASP_TX4_SRC 0x00004C2C
-#define CS35L41_DSP1_RX1_SRC 0x00004C40
-#define CS35L41_DSP1_RX2_SRC 0x00004C44
-#define CS35L41_DSP1_RX3_SRC 0x00004C48
-#define CS35L41_DSP1_RX4_SRC 0x00004C4C
-#define CS35L41_DSP1_RX5_SRC 0x00004C50
-#define CS35L41_DSP1_RX6_SRC 0x00004C54
-#define CS35L41_DSP1_RX7_SRC 0x00004C58
-#define CS35L41_DSP1_RX8_SRC 0x00004C5C
-#define CS35L41_NGATE1_SRC 0x00004C60
-#define CS35L41_NGATE2_SRC 0x00004C64
-#define CS35L41_AMP_DIG_VOL_CTRL 0x00006000
-#define CS35L41_VPBR_CFG 0x00006404
-#define CS35L41_VBBR_CFG 0x00006408
-#define CS35L41_VPBR_STATUS 0x0000640C
-#define CS35L41_VBBR_STATUS 0x00006410
-#define CS35L41_OVERTEMP_CFG 0x00006414
-#define CS35L41_AMP_ERR_VOL 0x00006418
-#define CS35L41_VOL_STATUS_TO_DSP 0x00006450
-#define CS35L41_CLASSH_CFG 0x00006800
-#define CS35L41_WKFET_CFG 0x00006804
-#define CS35L41_NG_CFG 0x00006808
-#define CS35L41_AMP_GAIN_CTRL 0x00006C04
-#define CS35L41_DAC_MSM_CFG 0x00007400
-#define CS35L41_IRQ1_CFG 0x00010000
-#define CS35L41_IRQ1_STATUS 0x00010004
-#define CS35L41_IRQ1_STATUS1 0x00010010
-#define CS35L41_IRQ1_STATUS2 0x00010014
-#define CS35L41_IRQ1_STATUS3 0x00010018
-#define CS35L41_IRQ1_STATUS4 0x0001001C
-#define CS35L41_IRQ1_RAW_STATUS1 0x00010090
-#define CS35L41_IRQ1_RAW_STATUS2 0x00010094
-#define CS35L41_IRQ1_RAW_STATUS3 0x00010098
-#define CS35L41_IRQ1_RAW_STATUS4 0x0001009C
-#define CS35L41_IRQ1_MASK1 0x00010110
-#define CS35L41_IRQ1_MASK2 0x00010114
-#define CS35L41_IRQ1_MASK3 0x00010118
-#define CS35L41_IRQ1_MASK4 0x0001011C
-#define CS35L41_IRQ1_FRC1 0x00010190
-#define CS35L41_IRQ1_FRC2 0x00010194
-#define CS35L41_IRQ1_FRC3 0x00010198
-#define CS35L41_IRQ1_FRC4 0x0001019C
-#define CS35L41_IRQ1_EDGE1 0x00010210
-#define CS35L41_IRQ1_EDGE4 0x0001021C
-#define CS35L41_IRQ1_POL1 0x00010290
-#define CS35L41_IRQ1_POL2 0x00010294
-#define CS35L41_IRQ1_POL3 0x00010298
-#define CS35L41_IRQ1_POL4 0x0001029C
-#define CS35L41_IRQ1_DB3 0x00010318
-#define CS35L41_IRQ2_CFG 0x00010800
-#define CS35L41_IRQ2_STATUS 0x00010804
-#define CS35L41_IRQ2_STATUS1 0x00010810
-#define CS35L41_IRQ2_STATUS2 0x00010814
-#define CS35L41_IRQ2_STATUS3 0x00010818
-#define CS35L41_IRQ2_STATUS4 0x0001081C
-#define CS35L41_IRQ2_RAW_STATUS1 0x00010890
-#define CS35L41_IRQ2_RAW_STATUS2 0x00010894
-#define CS35L41_IRQ2_RAW_STATUS3 0x00010898
-#define CS35L41_IRQ2_RAW_STATUS4 0x0001089C
-#define CS35L41_IRQ2_MASK1 0x00010910
-#define CS35L41_IRQ2_MASK2 0x00010914
-#define CS35L41_IRQ2_MASK3 0x00010918
-#define CS35L41_IRQ2_MASK4 0x0001091C
-#define CS35L41_IRQ2_FRC1 0x00010990
-#define CS35L41_IRQ2_FRC2 0x00010994
-#define CS35L41_IRQ2_FRC3 0x00010998
-#define CS35L41_IRQ2_FRC4 0x0001099C
-#define CS35L41_IRQ2_EDGE1 0x00010A10
-#define CS35L41_IRQ2_EDGE4 0x00010A1C
-#define CS35L41_IRQ2_POL1 0x00010A90
-#define CS35L41_IRQ2_POL2 0x00010A94
-#define CS35L41_IRQ2_POL3 0x00010A98
-#define CS35L41_IRQ2_POL4 0x00010A9C
-#define CS35L41_IRQ2_DB3 0x00010B18
-#define CS35L41_GPIO_STATUS1 0x00011000
-#define CS35L41_GPIO1_CTRL1 0x00011008
-#define CS35L41_GPIO2_CTRL1 0x0001100C
-#define CS35L41_MIXER_NGATE_CFG 0x00012000
-#define CS35L41_MIXER_NGATE_CH1_CFG 0x00012004
-#define CS35L41_MIXER_NGATE_CH2_CFG 0x00012008
-#define CS35L41_DSP_MBOX_1 0x00013000
-#define CS35L41_DSP_MBOX_2 0x00013004
-#define CS35L41_DSP_MBOX_3 0x00013008
-#define CS35L41_DSP_MBOX_4 0x0001300C
-#define CS35L41_DSP_MBOX_5 0x00013010
-#define CS35L41_DSP_MBOX_6 0x00013014
-#define CS35L41_DSP_MBOX_7 0x00013018
-#define CS35L41_DSP_MBOX_8 0x0001301C
-#define CS35L41_DSP_VIRT1_MBOX_1 0x00013020
-#define CS35L41_DSP_VIRT1_MBOX_2 0x00013024
-#define CS35L41_DSP_VIRT1_MBOX_3 0x00013028
-#define CS35L41_DSP_VIRT1_MBOX_4 0x0001302C
-#define CS35L41_DSP_VIRT1_MBOX_5 0x00013030
-#define CS35L41_DSP_VIRT1_MBOX_6 0x00013034
-#define CS35L41_DSP_VIRT1_MBOX_7 0x00013038
-#define CS35L41_DSP_VIRT1_MBOX_8 0x0001303C
-#define CS35L41_DSP_VIRT2_MBOX_1 0x00013040
-#define CS35L41_DSP_VIRT2_MBOX_2 0x00013044
-#define CS35L41_DSP_VIRT2_MBOX_3 0x00013048
-#define CS35L41_DSP_VIRT2_MBOX_4 0x0001304C
-#define CS35L41_DSP_VIRT2_MBOX_5 0x00013050
-#define CS35L41_DSP_VIRT2_MBOX_6 0x00013054
-#define CS35L41_DSP_VIRT2_MBOX_7 0x00013058
-#define CS35L41_DSP_VIRT2_MBOX_8 0x0001305C
-#define CS35L41_CLOCK_DETECT_1 0x00014000
-#define CS35L41_TIMER1_CONTROL 0x00015000
-#define CS35L41_TIMER1_COUNT_PRESET 0x00015004
-#define CS35L41_TIMER1_START_STOP 0x0001500C
-#define CS35L41_TIMER1_STATUS 0x00015010
-#define CS35L41_TIMER1_COUNT_READBACK 0x00015014
-#define CS35L41_TIMER1_DSP_CLK_CFG 0x00015018
-#define CS35L41_TIMER1_DSP_CLK_STATUS 0x0001501C
-#define CS35L41_TIMER2_CONTROL 0x00015100
-#define CS35L41_TIMER2_COUNT_PRESET 0x00015104
-#define CS35L41_TIMER2_START_STOP 0x0001510C
-#define CS35L41_TIMER2_STATUS 0x00015110
-#define CS35L41_TIMER2_COUNT_READBACK 0x00015114
-#define CS35L41_TIMER2_DSP_CLK_CFG 0x00015118
-#define CS35L41_TIMER2_DSP_CLK_STATUS 0x0001511C
-#define CS35L41_DFT_JTAG_CONTROL 0x00016000
-#define CS35L41_DIE_STS1 0x00017040
-#define CS35L41_DIE_STS2 0x00017044
-#define CS35L41_TEMP_CAL1 0x00017048
-#define CS35L41_TEMP_CAL2 0x0001704C
-#define CS35L41_DSP1_XMEM_PACK_0 0x02000000
-#define CS35L41_DSP1_XMEM_PACK_3068 0x02002FF0
-#define CS35L41_DSP1_XMEM_UNPACK32_0 0x02400000
-#define CS35L41_DSP1_XMEM_UNPACK32_2046 0x02401FF8
-#define CS35L41_DSP1_TIMESTAMP_COUNT 0x025C0800
-#define CS35L41_DSP1_SYS_ID 0x025E0000
-#define CS35L41_DSP1_SYS_VERSION 0x025E0004
-#define CS35L41_DSP1_SYS_CORE_ID 0x025E0008
-#define CS35L41_DSP1_SYS_AHB_ADDR 0x025E000C
-#define CS35L41_DSP1_SYS_XSRAM_SIZE 0x025E0010
-#define CS35L41_DSP1_SYS_YSRAM_SIZE 0x025E0018
-#define CS35L41_DSP1_SYS_PSRAM_SIZE 0x025E0020
-#define CS35L41_DSP1_SYS_PM_BOOT_SIZE 0x025E0028
-#define CS35L41_DSP1_SYS_FEATURES 0x025E002C
-#define CS35L41_DSP1_SYS_FIR_FILTERS 0x025E0030
-#define CS35L41_DSP1_SYS_LMS_FILTERS 0x025E0034
-#define CS35L41_DSP1_SYS_XM_BANK_SIZE 0x025E0038
-#define CS35L41_DSP1_SYS_YM_BANK_SIZE 0x025E003C
-#define CS35L41_DSP1_SYS_PM_BANK_SIZE 0x025E0040
-#define CS35L41_DSP1_AHBM_WIN0_CTRL0 0x025E2000
-#define CS35L41_DSP1_AHBM_WIN0_CTRL1 0x025E2004
-#define CS35L41_DSP1_AHBM_WIN1_CTRL0 0x025E2008
-#define CS35L41_DSP1_AHBM_WIN1_CTRL1 0x025E200C
-#define CS35L41_DSP1_AHBM_WIN2_CTRL0 0x025E2010
-#define CS35L41_DSP1_AHBM_WIN2_CTRL1 0x025E2014
-#define CS35L41_DSP1_AHBM_WIN3_CTRL0 0x025E2018
-#define CS35L41_DSP1_AHBM_WIN3_CTRL1 0x025E201C
-#define CS35L41_DSP1_AHBM_WIN4_CTRL0 0x025E2020
-#define CS35L41_DSP1_AHBM_WIN4_CTRL1 0x025E2024
-#define CS35L41_DSP1_AHBM_WIN5_CTRL0 0x025E2028
-#define CS35L41_DSP1_AHBM_WIN5_CTRL1 0x025E202C
-#define CS35L41_DSP1_AHBM_WIN6_CTRL0 0x025E2030
-#define CS35L41_DSP1_AHBM_WIN6_CTRL1 0x025E2034
-#define CS35L41_DSP1_AHBM_WIN7_CTRL0 0x025E2038
-#define CS35L41_DSP1_AHBM_WIN7_CTRL1 0x025E203C
-#define CS35L41_DSP1_AHBM_WIN_DBG_CTRL0 0x025E2040
-#define CS35L41_DSP1_AHBM_WIN_DBG_CTRL1 0x025E2044
-#define CS35L41_DSP1_XMEM_UNPACK24_0 0x02800000
-#define CS35L41_DSP1_XMEM_UNPACK24_4093 0x02803FF4
-#define CS35L41_DSP1_CTRL_BASE 0x02B80000
-#define CS35L41_DSP1_CORE_SOFT_RESET 0x02B80010
-#define CS35L41_DSP1_DEBUG 0x02B80040
-#define CS35L41_DSP1_TIMER_CTRL 0x02B80048
-#define CS35L41_DSP1_STREAM_ARB_CTRL 0x02B80050
-#define CS35L41_DSP1_RX1_RATE 0x02B80080
-#define CS35L41_DSP1_RX2_RATE 0x02B80088
-#define CS35L41_DSP1_RX3_RATE 0x02B80090
-#define CS35L41_DSP1_RX4_RATE 0x02B80098
-#define CS35L41_DSP1_RX5_RATE 0x02B800A0
-#define CS35L41_DSP1_RX6_RATE 0x02B800A8
-#define CS35L41_DSP1_RX7_RATE 0x02B800B0
-#define CS35L41_DSP1_RX8_RATE 0x02B800B8
-#define CS35L41_DSP1_TX1_RATE 0x02B80280
-#define CS35L41_DSP1_TX2_RATE 0x02B80288
-#define CS35L41_DSP1_TX3_RATE 0x02B80290
-#define CS35L41_DSP1_TX4_RATE 0x02B80298
-#define CS35L41_DSP1_TX5_RATE 0x02B802A0
-#define CS35L41_DSP1_TX6_RATE 0x02B802A8
-#define CS35L41_DSP1_TX7_RATE 0x02B802B0
-#define CS35L41_DSP1_TX8_RATE 0x02B802B8
-#define CS35L41_DSP1_NMI_CTRL1 0x02B80480
-#define CS35L41_DSP1_NMI_CTRL2 0x02B80488
-#define CS35L41_DSP1_NMI_CTRL3 0x02B80490
-#define CS35L41_DSP1_NMI_CTRL4 0x02B80498
-#define CS35L41_DSP1_NMI_CTRL5 0x02B804A0
-#define CS35L41_DSP1_NMI_CTRL6 0x02B804A8
-#define CS35L41_DSP1_NMI_CTRL7 0x02B804B0
-#define CS35L41_DSP1_NMI_CTRL8 0x02B804B8
-#define CS35L41_DSP1_RESUME_CTRL 0x02B80500
-#define CS35L41_DSP1_IRQ1_CTRL 0x02B80508
-#define CS35L41_DSP1_IRQ2_CTRL 0x02B80510
-#define CS35L41_DSP1_IRQ3_CTRL 0x02B80518
-#define CS35L41_DSP1_IRQ4_CTRL 0x02B80520
-#define CS35L41_DSP1_IRQ5_CTRL 0x02B80528
-#define CS35L41_DSP1_IRQ6_CTRL 0x02B80530
-#define CS35L41_DSP1_IRQ7_CTRL 0x02B80538
-#define CS35L41_DSP1_IRQ8_CTRL 0x02B80540
-#define CS35L41_DSP1_IRQ9_CTRL 0x02B80548
-#define CS35L41_DSP1_IRQ10_CTRL 0x02B80550
-#define CS35L41_DSP1_IRQ11_CTRL 0x02B80558
-#define CS35L41_DSP1_IRQ12_CTRL 0x02B80560
-#define CS35L41_DSP1_IRQ13_CTRL 0x02B80568
-#define CS35L41_DSP1_IRQ14_CTRL 0x02B80570
-#define CS35L41_DSP1_IRQ15_CTRL 0x02B80578
-#define CS35L41_DSP1_IRQ16_CTRL 0x02B80580
-#define CS35L41_DSP1_IRQ17_CTRL 0x02B80588
-#define CS35L41_DSP1_IRQ18_CTRL 0x02B80590
-#define CS35L41_DSP1_IRQ19_CTRL 0x02B80598
-#define CS35L41_DSP1_IRQ20_CTRL 0x02B805A0
-#define CS35L41_DSP1_IRQ21_CTRL 0x02B805A8
-#define CS35L41_DSP1_IRQ22_CTRL 0x02B805B0
-#define CS35L41_DSP1_IRQ23_CTRL 0x02B805B8
-#define CS35L41_DSP1_SCRATCH1 0x02B805C0
-#define CS35L41_DSP1_SCRATCH2 0x02B805C8
-#define CS35L41_DSP1_SCRATCH3 0x02B805D0
-#define CS35L41_DSP1_SCRATCH4 0x02B805D8
-#define CS35L41_DSP1_CCM_CORE_CTRL 0x02BC1000
-#define CS35L41_DSP1_CCM_CLK_OVERRIDE 0x02BC1008
-#define CS35L41_DSP1_XM_MSTR_EN 0x02BC2000
-#define CS35L41_DSP1_XM_CORE_PRI 0x02BC2008
-#define CS35L41_DSP1_XM_AHB_PACK_PL_PRI 0x02BC2010
-#define CS35L41_DSP1_XM_AHB_UP_PL_PRI 0x02BC2018
-#define CS35L41_DSP1_XM_ACCEL_PL0_PRI 0x02BC2020
-#define CS35L41_DSP1_XM_NPL0_PRI 0x02BC2078
-#define CS35L41_DSP1_YM_MSTR_EN 0x02BC20C0
-#define CS35L41_DSP1_YM_CORE_PRI 0x02BC20C8
-#define CS35L41_DSP1_YM_AHB_PACK_PL_PRI 0x02BC20D0
-#define CS35L41_DSP1_YM_AHB_UP_PL_PRI 0x02BC20D8
-#define CS35L41_DSP1_YM_ACCEL_PL0_PRI 0x02BC20E0
-#define CS35L41_DSP1_YM_NPL0_PRI 0x02BC2138
-#define CS35L41_DSP1_PM_MSTR_EN 0x02BC2180
-#define CS35L41_DSP1_PM_PATCH0_ADDR 0x02BC2188
-#define CS35L41_DSP1_PM_PATCH0_EN 0x02BC218C
-#define CS35L41_DSP1_PM_PATCH0_DATA_LO 0x02BC2190
-#define CS35L41_DSP1_PM_PATCH0_DATA_HI 0x02BC2194
-#define CS35L41_DSP1_PM_PATCH1_ADDR 0x02BC2198
-#define CS35L41_DSP1_PM_PATCH1_EN 0x02BC219C
-#define CS35L41_DSP1_PM_PATCH1_DATA_LO 0x02BC21A0
-#define CS35L41_DSP1_PM_PATCH1_DATA_HI 0x02BC21A4
-#define CS35L41_DSP1_PM_PATCH2_ADDR 0x02BC21A8
-#define CS35L41_DSP1_PM_PATCH2_EN 0x02BC21AC
-#define CS35L41_DSP1_PM_PATCH2_DATA_LO 0x02BC21B0
-#define CS35L41_DSP1_PM_PATCH2_DATA_HI 0x02BC21B4
-#define CS35L41_DSP1_PM_PATCH3_ADDR 0x02BC21B8
-#define CS35L41_DSP1_PM_PATCH3_EN 0x02BC21BC
-#define CS35L41_DSP1_PM_PATCH3_DATA_LO 0x02BC21C0
-#define CS35L41_DSP1_PM_PATCH3_DATA_HI 0x02BC21C4
-#define CS35L41_DSP1_PM_PATCH4_ADDR 0x02BC21C8
-#define CS35L41_DSP1_PM_PATCH4_EN 0x02BC21CC
-#define CS35L41_DSP1_PM_PATCH4_DATA_LO 0x02BC21D0
-#define CS35L41_DSP1_PM_PATCH4_DATA_HI 0x02BC21D4
-#define CS35L41_DSP1_PM_PATCH5_ADDR 0x02BC21D8
-#define CS35L41_DSP1_PM_PATCH5_EN 0x02BC21DC
-#define CS35L41_DSP1_PM_PATCH5_DATA_LO 0x02BC21E0
-#define CS35L41_DSP1_PM_PATCH5_DATA_HI 0x02BC21E4
-#define CS35L41_DSP1_PM_PATCH6_ADDR 0x02BC21E8
-#define CS35L41_DSP1_PM_PATCH6_EN 0x02BC21EC
-#define CS35L41_DSP1_PM_PATCH6_DATA_LO 0x02BC21F0
-#define CS35L41_DSP1_PM_PATCH6_DATA_HI 0x02BC21F4
-#define CS35L41_DSP1_PM_PATCH7_ADDR 0x02BC21F8
-#define CS35L41_DSP1_PM_PATCH7_EN 0x02BC21FC
-#define CS35L41_DSP1_PM_PATCH7_DATA_LO 0x02BC2200
-#define CS35L41_DSP1_PM_PATCH7_DATA_HI 0x02BC2204
-#define CS35L41_DSP1_MPU_XM_ACCESS0 0x02BC3000
-#define CS35L41_DSP1_MPU_YM_ACCESS0 0x02BC3004
-#define CS35L41_DSP1_MPU_WNDW_ACCESS0 0x02BC3008
-#define CS35L41_DSP1_MPU_XREG_ACCESS0 0x02BC300C
-#define CS35L41_DSP1_MPU_YREG_ACCESS0 0x02BC3014
-#define CS35L41_DSP1_MPU_XM_ACCESS1 0x02BC3018
-#define CS35L41_DSP1_MPU_YM_ACCESS1 0x02BC301C
-#define CS35L41_DSP1_MPU_WNDW_ACCESS1 0x02BC3020
-#define CS35L41_DSP1_MPU_XREG_ACCESS1 0x02BC3024
-#define CS35L41_DSP1_MPU_YREG_ACCESS1 0x02BC302C
-#define CS35L41_DSP1_MPU_XM_ACCESS2 0x02BC3030
-#define CS35L41_DSP1_MPU_YM_ACCESS2 0x02BC3034
-#define CS35L41_DSP1_MPU_WNDW_ACCESS2 0x02BC3038
-#define CS35L41_DSP1_MPU_XREG_ACCESS2 0x02BC303C
-#define CS35L41_DSP1_MPU_YREG_ACCESS2 0x02BC3044
-#define CS35L41_DSP1_MPU_XM_ACCESS3 0x02BC3048
-#define CS35L41_DSP1_MPU_YM_ACCESS3 0x02BC304C
-#define CS35L41_DSP1_MPU_WNDW_ACCESS3 0x02BC3050
-#define CS35L41_DSP1_MPU_XREG_ACCESS3 0x02BC3054
-#define CS35L41_DSP1_MPU_YREG_ACCESS3 0x02BC305C
-#define CS35L41_DSP1_MPU_XM_VIO_ADDR 0x02BC3100
-#define CS35L41_DSP1_MPU_XM_VIO_STATUS 0x02BC3104
-#define CS35L41_DSP1_MPU_YM_VIO_ADDR 0x02BC3108
-#define CS35L41_DSP1_MPU_YM_VIO_STATUS 0x02BC310C
-#define CS35L41_DSP1_MPU_PM_VIO_ADDR 0x02BC3110
-#define CS35L41_DSP1_MPU_PM_VIO_STATUS 0x02BC3114
-#define CS35L41_DSP1_MPU_LOCK_CONFIG 0x02BC3140
-#define CS35L41_DSP1_MPU_WDT_RST_CTRL 0x02BC3180
-#define CS35L41_DSP1_STRMARB_MSTR0_CFG0 0x02BC5000
-#define CS35L41_DSP1_STRMARB_MSTR0_CFG1 0x02BC5004
-#define CS35L41_DSP1_STRMARB_MSTR0_CFG2 0x02BC5008
-#define CS35L41_DSP1_STRMARB_MSTR1_CFG0 0x02BC5010
-#define CS35L41_DSP1_STRMARB_MSTR1_CFG1 0x02BC5014
-#define CS35L41_DSP1_STRMARB_MSTR1_CFG2 0x02BC5018
-#define CS35L41_DSP1_STRMARB_MSTR2_CFG0 0x02BC5020
-#define CS35L41_DSP1_STRMARB_MSTR2_CFG1 0x02BC5024
-#define CS35L41_DSP1_STRMARB_MSTR2_CFG2 0x02BC5028
-#define CS35L41_DSP1_STRMARB_MSTR3_CFG0 0x02BC5030
-#define CS35L41_DSP1_STRMARB_MSTR3_CFG1 0x02BC5034
-#define CS35L41_DSP1_STRMARB_MSTR3_CFG2 0x02BC5038
-#define CS35L41_DSP1_STRMARB_MSTR4_CFG0 0x02BC5040
-#define CS35L41_DSP1_STRMARB_MSTR4_CFG1 0x02BC5044
-#define CS35L41_DSP1_STRMARB_MSTR4_CFG2 0x02BC5048
-#define CS35L41_DSP1_STRMARB_MSTR5_CFG0 0x02BC5050
-#define CS35L41_DSP1_STRMARB_MSTR5_CFG1 0x02BC5054
-#define CS35L41_DSP1_STRMARB_MSTR5_CFG2 0x02BC5058
-#define CS35L41_DSP1_STRMARB_MSTR6_CFG0 0x02BC5060
-#define CS35L41_DSP1_STRMARB_MSTR6_CFG1 0x02BC5064
-#define CS35L41_DSP1_STRMARB_MSTR6_CFG2 0x02BC5068
-#define CS35L41_DSP1_STRMARB_MSTR7_CFG0 0x02BC5070
-#define CS35L41_DSP1_STRMARB_MSTR7_CFG1 0x02BC5074
-#define CS35L41_DSP1_STRMARB_MSTR7_CFG2 0x02BC5078
-#define CS35L41_DSP1_STRMARB_TX0_CFG0 0x02BC5200
-#define CS35L41_DSP1_STRMARB_TX0_CFG1 0x02BC5204
-#define CS35L41_DSP1_STRMARB_TX1_CFG0 0x02BC5208
-#define CS35L41_DSP1_STRMARB_TX1_CFG1 0x02BC520C
-#define CS35L41_DSP1_STRMARB_TX2_CFG0 0x02BC5210
-#define CS35L41_DSP1_STRMARB_TX2_CFG1 0x02BC5214
-#define CS35L41_DSP1_STRMARB_TX3_CFG0 0x02BC5218
-#define CS35L41_DSP1_STRMARB_TX3_CFG1 0x02BC521C
-#define CS35L41_DSP1_STRMARB_TX4_CFG0 0x02BC5220
-#define CS35L41_DSP1_STRMARB_TX4_CFG1 0x02BC5224
-#define CS35L41_DSP1_STRMARB_TX5_CFG0 0x02BC5228
-#define CS35L41_DSP1_STRMARB_TX5_CFG1 0x02BC522C
-#define CS35L41_DSP1_STRMARB_TX6_CFG0 0x02BC5230
-#define CS35L41_DSP1_STRMARB_TX6_CFG1 0x02BC5234
-#define CS35L41_DSP1_STRMARB_TX7_CFG0 0x02BC5238
-#define CS35L41_DSP1_STRMARB_TX7_CFG1 0x02BC523C
-#define CS35L41_DSP1_STRMARB_RX0_CFG0 0x02BC5400
-#define CS35L41_DSP1_STRMARB_RX0_CFG1 0x02BC5404
-#define CS35L41_DSP1_STRMARB_RX1_CFG0 0x02BC5408
-#define CS35L41_DSP1_STRMARB_RX1_CFG1 0x02BC540C
-#define CS35L41_DSP1_STRMARB_RX2_CFG0 0x02BC5410
-#define CS35L41_DSP1_STRMARB_RX2_CFG1 0x02BC5414
-#define CS35L41_DSP1_STRMARB_RX3_CFG0 0x02BC5418
-#define CS35L41_DSP1_STRMARB_RX3_CFG1 0x02BC541C
-#define CS35L41_DSP1_STRMARB_RX4_CFG0 0x02BC5420
-#define CS35L41_DSP1_STRMARB_RX4_CFG1 0x02BC5424
-#define CS35L41_DSP1_STRMARB_RX5_CFG0 0x02BC5428
-#define CS35L41_DSP1_STRMARB_RX5_CFG1 0x02BC542C
-#define CS35L41_DSP1_STRMARB_RX6_CFG0 0x02BC5430
-#define CS35L41_DSP1_STRMARB_RX6_CFG1 0x02BC5434
-#define CS35L41_DSP1_STRMARB_RX7_CFG0 0x02BC5438
-#define CS35L41_DSP1_STRMARB_RX7_CFG1 0x02BC543C
-#define CS35L41_DSP1_STRMARB_IRQ0_CFG0 0x02BC5600
-#define CS35L41_DSP1_STRMARB_IRQ0_CFG1 0x02BC5604
-#define CS35L41_DSP1_STRMARB_IRQ0_CFG2 0x02BC5608
-#define CS35L41_DSP1_STRMARB_IRQ1_CFG0 0x02BC5610
-#define CS35L41_DSP1_STRMARB_IRQ1_CFG1 0x02BC5614
-#define CS35L41_DSP1_STRMARB_IRQ1_CFG2 0x02BC5618
-#define CS35L41_DSP1_STRMARB_IRQ2_CFG0 0x02BC5620
-#define CS35L41_DSP1_STRMARB_IRQ2_CFG1 0x02BC5624
-#define CS35L41_DSP1_STRMARB_IRQ2_CFG2 0x02BC5628
-#define CS35L41_DSP1_STRMARB_IRQ3_CFG0 0x02BC5630
-#define CS35L41_DSP1_STRMARB_IRQ3_CFG1 0x02BC5634
-#define CS35L41_DSP1_STRMARB_IRQ3_CFG2 0x02BC5638
-#define CS35L41_DSP1_STRMARB_IRQ4_CFG0 0x02BC5640
-#define CS35L41_DSP1_STRMARB_IRQ4_CFG1 0x02BC5644
-#define CS35L41_DSP1_STRMARB_IRQ4_CFG2 0x02BC5648
-#define CS35L41_DSP1_STRMARB_IRQ5_CFG0 0x02BC5650
-#define CS35L41_DSP1_STRMARB_IRQ5_CFG1 0x02BC5654
-#define CS35L41_DSP1_STRMARB_IRQ5_CFG2 0x02BC5658
-#define CS35L41_DSP1_STRMARB_IRQ6_CFG0 0x02BC5660
-#define CS35L41_DSP1_STRMARB_IRQ6_CFG1 0x02BC5664
-#define CS35L41_DSP1_STRMARB_IRQ6_CFG2 0x02BC5668
-#define CS35L41_DSP1_STRMARB_IRQ7_CFG0 0x02BC5670
-#define CS35L41_DSP1_STRMARB_IRQ7_CFG1 0x02BC5674
-#define CS35L41_DSP1_STRMARB_IRQ7_CFG2 0x02BC5678
-#define CS35L41_DSP1_STRMARB_RESYNC_MSK 0x02BC5A00
-#define CS35L41_DSP1_STRMARB_ERR_STATUS 0x02BC5A08
-#define CS35L41_DSP1_INTPCTL_RES_STATIC 0x02BC6000
-#define CS35L41_DSP1_INTPCTL_RES_DYN 0x02BC6004
-#define CS35L41_DSP1_INTPCTL_NMI_CTRL 0x02BC6008
-#define CS35L41_DSP1_INTPCTL_IRQ_INV 0x02BC6010
-#define CS35L41_DSP1_INTPCTL_IRQ_MODE 0x02BC6014
-#define CS35L41_DSP1_INTPCTL_IRQ_EN 0x02BC6018
-#define CS35L41_DSP1_INTPCTL_IRQ_MSK 0x02BC601C
-#define CS35L41_DSP1_INTPCTL_IRQ_FLUSH 0x02BC6020
-#define CS35L41_DSP1_INTPCTL_IRQ_MSKCLR 0x02BC6024
-#define CS35L41_DSP1_INTPCTL_IRQ_FRC 0x02BC6028
-#define CS35L41_DSP1_INTPCTL_IRQ_MSKSET 0x02BC602C
-#define CS35L41_DSP1_INTPCTL_IRQ_ERR 0x02BC6030
-#define CS35L41_DSP1_INTPCTL_IRQ_PEND 0x02BC6034
-#define CS35L41_DSP1_INTPCTL_IRQ_GEN 0x02BC6038
-#define CS35L41_DSP1_INTPCTL_TESTBITS 0x02BC6040
-#define CS35L41_DSP1_WDT_CONTROL 0x02BC7000
-#define CS35L41_DSP1_WDT_STATUS 0x02BC7008
-#define CS35L41_DSP1_YMEM_PACK_0 0x02C00000
-#define CS35L41_DSP1_YMEM_PACK_1532 0x02C017F0
-#define CS35L41_DSP1_YMEM_UNPACK32_0 0x03000000
-#define CS35L41_DSP1_YMEM_UNPACK32_1022 0x03000FF8
-#define CS35L41_DSP1_YMEM_UNPACK24_0 0x03400000
-#define CS35L41_DSP1_YMEM_UNPACK24_2045 0x03401FF4
-#define CS35L41_DSP1_PMEM_0 0x03800000
-#define CS35L41_DSP1_PMEM_5114 0x03804FE8
-
-/*test regs for emulation bringup*/
-#define CS35L41_PLL_OVR 0x00003018
-#define CS35L41_BST_TEST_DUTY 0x00003900
-#define CS35L41_DIGPWM_IOCTRL 0x0000706C
-
-/*registers populated by OTP*/
-#define CS35L41_OTP_TRIM_1 0x0000208c
-#define CS35L41_OTP_TRIM_2 0x00002090
-#define CS35L41_OTP_TRIM_3 0x00003010
-#define CS35L41_OTP_TRIM_4 0x0000300C
-#define CS35L41_OTP_TRIM_5 0x0000394C
-#define CS35L41_OTP_TRIM_6 0x00003950
-#define CS35L41_OTP_TRIM_7 0x00003954
-#define CS35L41_OTP_TRIM_8 0x00003958
-#define CS35L41_OTP_TRIM_9 0x0000395C
-#define CS35L41_OTP_TRIM_10 0x0000416C
-#define CS35L41_OTP_TRIM_11 0x00004160
-#define CS35L41_OTP_TRIM_12 0x00004170
-#define CS35L41_OTP_TRIM_13 0x00004360
-#define CS35L41_OTP_TRIM_14 0x00004448
-#define CS35L41_OTP_TRIM_15 0x0000444C
-#define CS35L41_OTP_TRIM_16 0x00006E30
-#define CS35L41_OTP_TRIM_17 0x00006E34
-#define CS35L41_OTP_TRIM_18 0x00006E38
-#define CS35L41_OTP_TRIM_19 0x00006E3C
-#define CS35L41_OTP_TRIM_20 0x00006E40
-#define CS35L41_OTP_TRIM_21 0x00006E44
-#define CS35L41_OTP_TRIM_22 0x00006E48
-#define CS35L41_OTP_TRIM_23 0x00006E4C
-#define CS35L41_OTP_TRIM_24 0x00006E50
-#define CS35L41_OTP_TRIM_25 0x00006E54
-#define CS35L41_OTP_TRIM_26 0x00006E58
-#define CS35L41_OTP_TRIM_27 0x00006E5C
-#define CS35L41_OTP_TRIM_28 0x00006E60
-#define CS35L41_OTP_TRIM_29 0x00006E64
-#define CS35L41_OTP_TRIM_30 0x00007418
-#define CS35L41_OTP_TRIM_31 0x0000741C
-#define CS35L41_OTP_TRIM_32 0x00007434
-#define CS35L41_OTP_TRIM_33 0x00007068
-#define CS35L41_OTP_TRIM_34 0x0000410C
-#define CS35L41_OTP_TRIM_35 0x0000400C
-#define CS35L41_OTP_TRIM_36 0x00002030
-
-#define CS35L41_MAX_CACHE_REG 36
-#define CS35L41_OTP_SIZE_WORDS 32
-#define CS35L41_NUM_OTP_ELEM 100
-#define CS35L41_NUM_OTP_MAPS 5
-
-#define CS35L41_VALID_PDATA 0x80000000
-#define CS35L41_NUM_SUPPLIES 2
-
-#define CS35L41_SCLK_MSTR_MASK 0x10
-#define CS35L41_SCLK_MSTR_SHIFT 4
-#define CS35L41_LRCLK_MSTR_MASK 0x01
-#define CS35L41_LRCLK_MSTR_SHIFT 0
-#define CS35L41_SCLK_INV_MASK 0x40
-#define CS35L41_SCLK_INV_SHIFT 6
-#define CS35L41_LRCLK_INV_MASK 0x04
-#define CS35L41_LRCLK_INV_SHIFT 2
-#define CS35L41_SCLK_FRC_MASK 0x20
-#define CS35L41_SCLK_FRC_SHIFT 5
-#define CS35L41_LRCLK_FRC_MASK 0x02
-#define CS35L41_LRCLK_FRC_SHIFT 1
-
-#define CS35L41_AMP_GAIN_PCM_MASK 0x3E0
-#define CS35L41_AMP_GAIN_ZC_MASK 0x0400
-#define CS35L41_AMP_GAIN_ZC_SHIFT 10
-
-#define CS35L41_BST_CTL_MASK 0xFF
-#define CS35L41_BST_CTL_SEL_MASK 0x03
-#define CS35L41_BST_CTL_SEL_REG 0x00
-#define CS35L41_BST_CTL_SEL_CLASSH 0x01
-#define CS35L41_BST_IPK_MASK 0x7F
-#define CS35L41_BST_IPK_SHIFT 0
-#define CS35L41_BST_LIM_MASK 0x4
-#define CS35L41_BST_LIM_SHIFT 2
-#define CS35L41_BST_K1_MASK 0x000000FF
-#define CS35L41_BST_K1_SHIFT 0
-#define CS35L41_BST_K2_MASK 0x0000FF00
-#define CS35L41_BST_K2_SHIFT 8
-#define CS35L41_BST_SLOPE_MASK 0x0000FF00
-#define CS35L41_BST_SLOPE_SHIFT 8
-#define CS35L41_BST_LBST_VAL_MASK 0x00000003
-#define CS35L41_BST_LBST_VAL_SHIFT 0
-
-#define CS35L41_TEMP_THLD_MASK 0x03
-#define CS35L41_VMON_IMON_VOL_MASK 0x07FF07FF
-#define CS35L41_PDM_MODE_MASK 0x01
-#define CS35L41_PDM_MODE_SHIFT 0
-
-#define CS35L41_CH_MEM_DEPTH_MASK 0x07
-#define CS35L41_CH_MEM_DEPTH_SHIFT 0
-#define CS35L41_CH_HDRM_CTL_MASK 0x007F0000
-#define CS35L41_CH_HDRM_CTL_SHIFT 16
-#define CS35L41_CH_REL_RATE_MASK 0xFF00
-#define CS35L41_CH_REL_RATE_SHIFT 8
-#define CS35L41_CH_WKFET_DLY_MASK 0x001C
-#define CS35L41_CH_WKFET_DLY_SHIFT 2
-#define CS35L41_CH_WKFET_THLD_MASK 0x0F00
-#define CS35L41_CH_WKFET_THLD_SHIFT 8
-
-#define CS35L41_HW_NG_SEL_MASK 0x3F00
-#define CS35L41_HW_NG_SEL_SHIFT 8
-#define CS35L41_HW_NG_DLY_MASK 0x0070
-#define CS35L41_HW_NG_DLY_SHIFT 4
-#define CS35L41_HW_NG_THLD_MASK 0x0007
-#define CS35L41_HW_NG_THLD_SHIFT 0
-
-#define CS35L41_DSP_NG_ENABLE_MASK 0x00010000
-#define CS35L41_DSP_NG_ENABLE_SHIFT 16
-#define CS35L41_DSP_NG_THLD_MASK 0x7
-#define CS35L41_DSP_NG_THLD_SHIFT 0
-#define CS35L41_DSP_NG_DELAY_MASK 0x0F00
-#define CS35L41_DSP_NG_DELAY_SHIFT 8
-
-#define CS35L41_ASP_FMT_MASK 0x0700
-#define CS35L41_ASP_FMT_SHIFT 8
-#define CS35L41_ASP_DOUT_HIZ_MASK 0x03
-#define CS35L41_ASP_DOUT_HIZ_SHIFT 0
-#define CS35L41_ASP_WIDTH_16 0x10
-#define CS35L41_ASP_WIDTH_24 0x18
-#define CS35L41_ASP_WIDTH_32 0x20
-#define CS35L41_ASP_WIDTH_TX_MASK 0xFF0000
-#define CS35L41_ASP_WIDTH_TX_SHIFT 16
-#define CS35L41_ASP_WIDTH_RX_MASK 0xFF000000
-#define CS35L41_ASP_WIDTH_RX_SHIFT 24
-#define CS35L41_ASP_RX1_SLOT_MASK 0x3F
-#define CS35L41_ASP_RX1_SLOT_SHIFT 0
-#define CS35L41_ASP_RX2_SLOT_MASK 0x3F00
-#define CS35L41_ASP_RX2_SLOT_SHIFT 8
-#define CS35L41_ASP_RX_WL_MASK 0x3F
-#define CS35L41_ASP_TX_WL_MASK 0x3F
-#define CS35L41_ASP_RX_WL_SHIFT 0
-#define CS35L41_ASP_TX_WL_SHIFT 0
-#define CS35L41_ASP_SOURCE_MASK 0x7F
-
-#define CS35L41_INPUT_SRC_ASPRX1 0x08
-#define CS35L41_INPUT_SRC_ASPRX2 0x09
-#define CS35L41_INPUT_SRC_VMON 0x18
-#define CS35L41_INPUT_SRC_IMON 0x19
-#define CS35L41_INPUT_SRC_CLASSH 0x21
-#define CS35L41_INPUT_SRC_VPMON 0x28
-#define CS35L41_INPUT_SRC_VBSTMON 0x29
-#define CS35L41_INPUT_SRC_TEMPMON 0x3A
-#define CS35L41_INPUT_SRC_RSVD 0x3B
-#define CS35L41_INPUT_DSP_TX1 0x32
-#define CS35L41_INPUT_DSP_TX2 0x33
-
-#define CS35L41_PLL_CLK_SEL_MASK 0x07
-#define CS35L41_PLL_CLK_SEL_SHIFT 0
-#define CS35L41_PLL_CLK_EN_MASK 0x10
-#define CS35L41_PLL_CLK_EN_SHIFT 4
-#define CS35L41_PLL_OPENLOOP_MASK 0x0800
-#define CS35L41_PLL_OPENLOOP_SHIFT 11
-#define CS35L41_PLLSRC_SCLK 0
-#define CS35L41_PLLSRC_LRCLK 1
-#define CS35L41_PLLSRC_SELF 3
-#define CS35L41_PLLSRC_PDMCLK 4
-#define CS35L41_PLLSRC_MCLK 5
-#define CS35L41_PLLSRC_SWIRE 7
-#define CS35L41_REFCLK_FREQ_MASK 0x7E0
-#define CS35L41_REFCLK_FREQ_SHIFT 5
-
-#define CS35L41_GLOBAL_FS_MASK 0x1F
-#define CS35L41_GLOBAL_FS_SHIFT 0
-
-#define CS35L41_GLOBAL_EN_MASK 0x01
-#define CS35L41_GLOBAL_EN_SHIFT 0
-#define CS35L41_BST_EN_MASK 0x0030
-#define CS35L41_BST_EN_SHIFT 4
-#define CS35L41_BST_EN_DEFAULT 0x2
-#define CS35L41_AMP_EN_SHIFT 0
-#define CS35L41_AMP_EN_MASK 1
-
-#define CS35L41_PDN_DONE_MASK 0x00800000
-#define CS35L41_PDN_DONE_SHIFT 23
-#define CS35L41_PUP_DONE_MASK 0x01000000
-#define CS35L41_PUP_DONE_SHIFT 24
-
-#define CS35L36_PUP_DONE_IRQ_UNMASK 0x5F
-#define CS35L36_PUP_DONE_IRQ_MASK 0xBF
-
-#define CS35L41_AMP_SHORT_ERR 0x80000000
-#define CS35L41_BST_SHORT_ERR 0x0100
-#define CS35L41_TEMP_WARN 0x8000
-#define CS35L41_TEMP_ERR 0x00020000
-#define CS35L41_BST_OVP_ERR 0x40
-#define CS35L41_BST_DCM_UVP_ERR 0x80
-#define CS35L41_OTP_BOOT_DONE 0x02
-#define CS35L41_PLL_UNLOCK 0x10
-#define CS35L41_OTP_BOOT_ERR 0x80000000
-
-#define CS35L41_AMP_SHORT_ERR_RLS 0x02
-#define CS35L41_BST_SHORT_ERR_RLS 0x04
-#define CS35L41_BST_OVP_ERR_RLS 0x08
-#define CS35L41_BST_UVP_ERR_RLS 0x10
-#define CS35L41_TEMP_WARN_ERR_RLS 0x20
-#define CS35L41_TEMP_ERR_RLS 0x40
-
-#define CS35L41_INT1_MASK_DEFAULT 0x7FFCFE3F
-#define CS35L41_INT1_UNMASK_PUP 0xFEFFFFFF
-#define CS35L41_INT1_UNMASK_PDN 0xFF7FFFFF
-
-#define CS35L41_GPIO_DIR_MASK 0x80000000
-#define CS35L41_GPIO_DIR_SHIFT 31
-#define CS35L41_GPIO1_CTRL_MASK 0x00030000
-#define CS35L41_GPIO1_CTRL_SHIFT 16
-#define CS35L41_GPIO2_CTRL_MASK 0x07000000
-#define CS35L41_GPIO2_CTRL_SHIFT 24
-#define CS35L41_GPIO_CTRL_OPEN_INT 2
-#define CS35L41_GPIO_CTRL_ACTV_LO 4
-#define CS35L41_GPIO_CTRL_ACTV_HI 5
-#define CS35L41_GPIO_POL_MASK 0x1000
-#define CS35L41_GPIO_POL_SHIFT 12
-
-#define CS35L41_AMP_INV_PCM_SHIFT 14
-#define CS35L41_AMP_INV_PCM_MASK BIT(CS35L41_AMP_INV_PCM_SHIFT)
-#define CS35L41_AMP_PCM_VOL_SHIFT 3
-#define CS35L41_AMP_PCM_VOL_MASK (0x7FF << 3)
-#define CS35L41_AMP_PCM_VOL_MUTE 0x4CF
-
-#define CS35L41_CHIP_ID 0x35a40
-#define CS35L41R_CHIP_ID 0x35b40
-#define CS35L41_MTLREVID_MASK 0x0F
-#define CS35L41_REVID_A0 0xA0
-#define CS35L41_REVID_B0 0xB0
-#define CS35L41_REVID_B2 0xB2
-
-#define CS35L41_HALO_CORE_RESET 0x00000200
-
-#define CS35L41_FS1_WINDOW_MASK 0x000007FF
-#define CS35L41_FS2_WINDOW_MASK 0x00FFF800
-#define CS35L41_FS2_WINDOW_SHIFT 12
-
-#define CS35L41_SPI_MAX_FREQ 4000000
-
#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
@@ -738,26 +26,10 @@ bool cs35l41_readable_reg(struct device *dev, unsigned int reg);
bool cs35l41_precious_reg(struct device *dev, unsigned int reg);
bool cs35l41_volatile_reg(struct device *dev, unsigned int reg);
-struct cs35l41_otp_packed_element_t {
- u32 reg;
- u8 shift;
- u8 size;
-};
-
-struct cs35l41_otp_map_element_t {
- u32 id;
- u32 num_elements;
- const struct cs35l41_otp_packed_element_t *map;
- u32 bit_offset;
- u32 word_offset;
-};
-
extern const struct reg_default cs35l41_reg[CS35L41_MAX_CACHE_REG];
extern const struct cs35l41_otp_map_element_t
cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS];
-#define CS35L41_REGSTRIDE 4
-
enum cs35l41_cspl_mbox_status {
CSPL_MBOX_STS_RUNNING = 0,
CSPL_MBOX_STS_PAUSED = 1,
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
2021-11-23 16:31 ` [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device Lucas Tanure
2021-11-23 16:31 ` [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 17:20 ` Mark Brown
2021-11-23 16:31 ` [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies Lucas Tanure
` (8 subsequent siblings)
11 siblings, 1 reply; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
Move regmap configs to external include so CS35L41 HDA
driver can re-use it.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 6 +++++-
sound/soc/codecs/cs35l41-i2c.c | 15 ---------------
sound/soc/codecs/cs35l41-lib.c | 34 ++++++++++++++++++++++++++++++++--
sound/soc/codecs/cs35l41-spi.c | 16 ----------------
sound/soc/codecs/cs35l41.h | 6 ------
5 files changed, 37 insertions(+), 40 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index 4a5679c856a3..ced80ede1def 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -10,6 +10,8 @@
#ifndef __CS35L41_H
#define __CS35L41_H
+#include <linux/regmap.h>
+
#define CS35L41_FIRSTREG 0x00000000
#define CS35L41_LASTREG 0x03804FE8
#define CS35L41_DEVID 0x00000000
@@ -529,7 +531,6 @@
#define CS35L41_OTP_TRIM_35 0x0000400C
#define CS35L41_OTP_TRIM_36 0x00002030
-#define CS35L41_MAX_CACHE_REG 36
#define CS35L41_OTP_SIZE_WORDS 32
#define CS35L41_NUM_OTP_ELEM 100
#define CS35L41_NUM_OTP_MAPS 5
@@ -758,4 +759,7 @@ struct cs35l41_otp_map_element_t {
u32 word_offset;
};
+extern struct regmap_config cs35l41_regmap_i2c;
+extern struct regmap_config cs35l41_regmap_spi;
+
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-i2c.c b/sound/soc/codecs/cs35l41-i2c.c
index db03fe519e2f..de5c8612f030 100644
--- a/sound/soc/codecs/cs35l41-i2c.c
+++ b/sound/soc/codecs/cs35l41-i2c.c
@@ -19,21 +19,6 @@
#include "cs35l41.h"
-static struct regmap_config cs35l41_regmap_i2c = {
- .reg_bits = 32,
- .val_bits = 32,
- .reg_stride = CS35L41_REGSTRIDE,
- .reg_format_endian = REGMAP_ENDIAN_BIG,
- .val_format_endian = REGMAP_ENDIAN_BIG,
- .max_register = CS35L41_LASTREG,
- .reg_defaults = cs35l41_reg,
- .num_reg_defaults = ARRAY_SIZE(cs35l41_reg),
- .volatile_reg = cs35l41_volatile_reg,
- .readable_reg = cs35l41_readable_reg,
- .precious_reg = cs35l41_precious_reg,
- .cache_type = REGCACHE_RBTREE,
-};
-
static const struct i2c_device_id cs35l41_id_i2c[] = {
{ "cs35l40", 0 },
{ "cs35l41", 0 },
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index f3071f235f7d..04f59cda5126 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -7,10 +7,9 @@
// Author: David Rhodes <david.rhodes@cirrus.com>
// Author: Lucas Tanure <lucas.tanure@cirrus.com>
-#include <linux/regmap.h>
#include <sound/cs35l41.h>
-const struct reg_default cs35l41_reg[CS35L41_MAX_CACHE_REG] = {
+const struct reg_default cs35l41_reg[] = {
{ CS35L41_PWR_CTRL1, 0x00000000 },
{ CS35L41_PWR_CTRL3, 0x01000010 },
{ CS35L41_GPIO_PAD_CONTROL, 0x00000000 },
@@ -690,3 +689,34 @@ const struct cs35l41_otp_map_element_t cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS]
.word_offset = 2,
},
};
+
+struct regmap_config cs35l41_regmap_i2c = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_stride = CS35L41_REGSTRIDE,
+ .reg_format_endian = REGMAP_ENDIAN_BIG,
+ .val_format_endian = REGMAP_ENDIAN_BIG,
+ .max_register = CS35L41_LASTREG,
+ .reg_defaults = cs35l41_reg,
+ .num_reg_defaults = ARRAY_SIZE(cs35l41_reg),
+ .volatile_reg = cs35l41_volatile_reg,
+ .readable_reg = cs35l41_readable_reg,
+ .precious_reg = cs35l41_precious_reg,
+ .cache_type = REGCACHE_RBTREE,
+};
+
+struct regmap_config cs35l41_regmap_spi = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .pad_bits = 16,
+ .reg_stride = CS35L41_REGSTRIDE,
+ .reg_format_endian = REGMAP_ENDIAN_BIG,
+ .val_format_endian = REGMAP_ENDIAN_BIG,
+ .max_register = CS35L41_LASTREG,
+ .reg_defaults = cs35l41_reg,
+ .num_reg_defaults = ARRAY_SIZE(cs35l41_reg),
+ .volatile_reg = cs35l41_volatile_reg,
+ .readable_reg = cs35l41_readable_reg,
+ .precious_reg = cs35l41_precious_reg,
+ .cache_type = REGCACHE_RBTREE,
+};
diff --git a/sound/soc/codecs/cs35l41-spi.c b/sound/soc/codecs/cs35l41-spi.c
index 60639edcfc5d..c157153f28d8 100644
--- a/sound/soc/codecs/cs35l41-spi.c
+++ b/sound/soc/codecs/cs35l41-spi.c
@@ -17,22 +17,6 @@
#include "cs35l41.h"
-static struct regmap_config cs35l41_regmap_spi = {
- .reg_bits = 32,
- .val_bits = 32,
- .pad_bits = 16,
- .reg_stride = CS35L41_REGSTRIDE,
- .reg_format_endian = REGMAP_ENDIAN_BIG,
- .val_format_endian = REGMAP_ENDIAN_BIG,
- .max_register = CS35L41_LASTREG,
- .reg_defaults = cs35l41_reg,
- .num_reg_defaults = ARRAY_SIZE(cs35l41_reg),
- .volatile_reg = cs35l41_volatile_reg,
- .readable_reg = cs35l41_readable_reg,
- .precious_reg = cs35l41_precious_reg,
- .cache_type = REGCACHE_RBTREE,
-};
-
static const struct spi_device_id cs35l41_id_spi[] = {
{ "cs35l40", 0 },
{ "cs35l41", 0 },
diff --git a/sound/soc/codecs/cs35l41.h b/sound/soc/codecs/cs35l41.h
index 74ef72d01190..453ece8889e0 100644
--- a/sound/soc/codecs/cs35l41.h
+++ b/sound/soc/codecs/cs35l41.h
@@ -11,7 +11,6 @@
#define __CS35L41_H__
#include <linux/gpio/consumer.h>
-#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/firmware.h>
#include <sound/core.h>
@@ -22,11 +21,6 @@
#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
-bool cs35l41_readable_reg(struct device *dev, unsigned int reg);
-bool cs35l41_precious_reg(struct device *dev, unsigned int reg);
-bool cs35l41_volatile_reg(struct device *dev, unsigned int reg);
-
-extern const struct reg_default cs35l41_reg[CS35L41_MAX_CACHE_REG];
extern const struct cs35l41_otp_map_element_t
cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS];
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (2 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 17:58 ` Mark Brown
2021-11-23 16:31 ` [PATCH 05/11] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code Lucas Tanure
` (7 subsequent siblings)
11 siblings, 1 reply; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
Both ASoC and HDA system have to initialize the arrays of supplies
in the same way, so create a function for that in shared code
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 5 ++++-
sound/soc/codecs/cs35l41-lib.c | 29 +++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 23 +++--------------------
3 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index ced80ede1def..5039e876bad1 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -536,7 +536,6 @@
#define CS35L41_NUM_OTP_MAPS 5
#define CS35L41_VALID_PDATA 0x80000000
-#define CS35L41_NUM_SUPPLIES 2
#define CS35L41_SCLK_MSTR_MASK 0x10
#define CS35L41_SCLK_MSTR_SHIFT 4
@@ -724,6 +723,8 @@
#define CS35L41_SPI_MAX_FREQ 4000000
#define CS35L41_REGSTRIDE 4
+#define CS35L41_NUM_SUPPLIES 2
+
enum cs35l41_clk_ids {
CS35L41_CLKID_SCLK = 0,
CS35L41_CLKID_LRCLK = 1,
@@ -762,4 +763,6 @@ struct cs35l41_otp_map_element_t {
extern struct regmap_config cs35l41_regmap_i2c;
extern struct regmap_config cs35l41_regmap_spi;
+int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies);
+
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index 04f59cda5126..4aba0f90b876 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -7,6 +7,7 @@
// Author: David Rhodes <david.rhodes@cirrus.com>
// Author: Lucas Tanure <lucas.tanure@cirrus.com>
+#include <linux/regulator/consumer.h>
#include <sound/cs35l41.h>
const struct reg_default cs35l41_reg[] = {
@@ -690,6 +691,11 @@ const struct cs35l41_otp_map_element_t cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS]
},
};
+static const char * const cs35l41_supplies[CS35L41_NUM_SUPPLIES] = {
+ "VA",
+ "VP",
+};
+
struct regmap_config cs35l41_regmap_i2c = {
.reg_bits = 32,
.val_bits = 32,
@@ -720,3 +726,26 @@ struct regmap_config cs35l41_regmap_spi = {
.precious_reg = cs35l41_precious_reg,
.cache_type = REGCACHE_RBTREE,
};
+
+int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies)
+{
+ int i, ret;
+
+ for (i = 0; i < CS35L41_NUM_SUPPLIES; i++)
+ supplies[i].supply = cs35l41_supplies[i];
+
+ ret = devm_regulator_bulk_get(dev, CS35L41_NUM_SUPPLIES, supplies);
+ if (ret != 0) {
+ dev_err(dev, "Failed to request core supplies: %d\n", ret);
+ return ret;
+ }
+
+ ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, supplies);
+ if (ret != 0) {
+ dev_err(dev, "Failed to enable core supplies: %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index e8e997efaa8b..c8709de41aaf 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -24,11 +24,6 @@
#include "cs35l41.h"
-static const char * const cs35l41_supplies[CS35L41_NUM_SUPPLIES] = {
- "VA",
- "VP",
-};
-
struct cs35l41_pll_sysclk_config {
int freq;
int clk_cfg;
@@ -1526,7 +1521,7 @@ static int cs35l41_dsp_init(struct cs35l41_private *cs35l41)
int cs35l41_probe(struct cs35l41_private *cs35l41,
struct cs35l41_platform_data *pdata)
{
- u32 regid, reg_revid, i, mtl_revid, int_status, chipid_match;
+ u32 regid, reg_revid, mtl_revid, int_status, chipid_match;
int irq_pol = 0;
int ret;
@@ -1538,21 +1533,9 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
return ret;
}
- for (i = 0; i < CS35L41_NUM_SUPPLIES; i++)
- cs35l41->supplies[i].supply = cs35l41_supplies[i];
-
- ret = devm_regulator_bulk_get(cs35l41->dev, CS35L41_NUM_SUPPLIES,
- cs35l41->supplies);
- if (ret != 0) {
- dev_err(cs35l41->dev, "Failed to request core supplies: %d\n", ret);
+ ret = cs35l41_init_supplies(cs35l41->dev, cs35l41->supplies);
+ if (ret)
return ret;
- }
-
- ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, cs35l41->supplies);
- if (ret != 0) {
- dev_err(cs35l41->dev, "Failed to enable core supplies: %d\n", ret);
- return ret;
- }
/* returning NULL can be an option if in stereo mode */
cs35l41->reset_gpio = devm_gpiod_get_optional(cs35l41->dev, "reset",
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 05/11] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (3 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:31 ` [PATCH 06/11] ASoC: cs35l41: Move power initializations to reg_sequence Lucas Tanure
` (6 subsequent siblings)
11 siblings, 0 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
ASoC and HDA will do the same cs35l41_otp_unpack, so move it
to shared code
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 1 +
sound/soc/codecs/cs35l41-lib.c | 116 ++++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 125 +--------------------------------
sound/soc/codecs/cs35l41.h | 3 -
4 files changed, 118 insertions(+), 127 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index 5039e876bad1..9241173740cc 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -764,5 +764,6 @@ extern struct regmap_config cs35l41_regmap_i2c;
extern struct regmap_config cs35l41_regmap_spi;
int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies);
+int cs35l41_otp_unpack(struct device *dev, struct regmap *regmap);
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index 4aba0f90b876..a13c5313f4e5 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -7,6 +7,8 @@
// Author: David Rhodes <david.rhodes@cirrus.com>
// Author: Lucas Tanure <lucas.tanure@cirrus.com>
+#include <linux/slab.h>
+#include <linux/dev_printk.h>
#include <linux/regulator/consumer.h>
#include <sound/cs35l41.h>
@@ -749,3 +751,117 @@ int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *suppli
return 0;
}
+static const struct cs35l41_otp_map_element_t *cs35l41_find_otp_map(u32 otp_id)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(cs35l41_otp_map_map); i++) {
+ if (cs35l41_otp_map_map[i].id == otp_id)
+ return &cs35l41_otp_map_map[i];
+ }
+
+ return NULL;
+}
+
+int cs35l41_otp_unpack(struct device *dev, struct regmap *regmap)
+{
+ const struct cs35l41_otp_map_element_t *otp_map_match;
+ const struct cs35l41_otp_packed_element_t *otp_map;
+ int bit_offset, word_offset, ret, i;
+ unsigned int bit_sum = 8;
+ u32 otp_val, otp_id_reg;
+ u32 *otp_mem;
+
+ otp_mem = kmalloc_array(CS35L41_OTP_SIZE_WORDS, sizeof(*otp_mem), GFP_KERNEL);
+ if (!otp_mem)
+ return -ENOMEM;
+
+ ret = regmap_read(regmap, CS35L41_OTPID, &otp_id_reg);
+ if (ret) {
+ dev_err(dev, "Read OTP ID failed: %d\n", ret);
+ goto err_otp_unpack;
+ }
+
+ otp_map_match = cs35l41_find_otp_map(otp_id_reg);
+
+ if (!otp_map_match) {
+ dev_err(dev, "OTP Map matching ID %d not found\n", otp_id_reg);
+ ret = -EINVAL;
+ goto err_otp_unpack;
+ }
+
+ ret = regmap_bulk_read(regmap, CS35L41_OTP_MEM0, otp_mem, CS35L41_OTP_SIZE_WORDS);
+ if (ret) {
+ dev_err(dev, "Read OTP Mem failed: %d\n", ret);
+ goto err_otp_unpack;
+ }
+
+ otp_map = otp_map_match->map;
+
+ bit_offset = otp_map_match->bit_offset;
+ word_offset = otp_map_match->word_offset;
+
+ ret = regmap_write(regmap, CS35L41_TEST_KEY_CTL, 0x00000055);
+ if (ret) {
+ dev_err(dev, "Write Unlock key failed 1/2: %d\n", ret);
+ goto err_otp_unpack;
+ }
+ ret = regmap_write(regmap, CS35L41_TEST_KEY_CTL, 0x000000AA);
+ if (ret) {
+ dev_err(dev, "Write Unlock key failed 2/2: %d\n", ret);
+ goto err_otp_unpack;
+ }
+
+ for (i = 0; i < otp_map_match->num_elements; i++) {
+ dev_dbg(dev, "bitoffset= %d, word_offset=%d, bit_sum mod 32=%d\n",
+ bit_offset, word_offset, bit_sum % 32);
+ if (bit_offset + otp_map[i].size - 1 >= 32) {
+ otp_val = (otp_mem[word_offset] &
+ GENMASK(31, bit_offset)) >> bit_offset;
+ otp_val |= (otp_mem[++word_offset] &
+ GENMASK(bit_offset + otp_map[i].size - 33, 0)) <<
+ (32 - bit_offset);
+ bit_offset += otp_map[i].size - 32;
+ } else {
+ otp_val = (otp_mem[word_offset] &
+ GENMASK(bit_offset + otp_map[i].size - 1, bit_offset)
+ ) >> bit_offset;
+ bit_offset += otp_map[i].size;
+ }
+ bit_sum += otp_map[i].size;
+
+ if (bit_offset == 32) {
+ bit_offset = 0;
+ word_offset++;
+ }
+
+ if (otp_map[i].reg != 0) {
+ ret = regmap_update_bits(regmap, otp_map[i].reg,
+ GENMASK(otp_map[i].shift + otp_map[i].size - 1,
+ otp_map[i].shift),
+ otp_val << otp_map[i].shift);
+ if (ret < 0) {
+ dev_err(dev, "Write OTP val failed: %d\n", ret);
+ goto err_otp_unpack;
+ }
+ }
+ }
+
+ ret = regmap_write(regmap, CS35L41_TEST_KEY_CTL, 0x000000CC);
+ if (ret) {
+ dev_err(dev, "Write Lock key failed 1/2: %d\n", ret);
+ goto err_otp_unpack;
+ }
+ ret = regmap_write(regmap, CS35L41_TEST_KEY_CTL, 0x00000033);
+ if (ret) {
+ dev_err(dev, "Write Lock key failed 2/2: %d\n", ret);
+ goto err_otp_unpack;
+ }
+ ret = 0;
+
+err_otp_unpack:
+ kfree(otp_mem);
+
+ return ret;
+}
+
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index c8709de41aaf..0a88c2f164d1 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -14,7 +14,6 @@
#include <linux/moduleparam.h>
#include <linux/of_device.h>
#include <linux/property.h>
-#include <linux/slab.h>
#include <sound/initval.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
@@ -415,128 +414,6 @@ static const struct snd_kcontrol_new cs35l41_aud_controls[] = {
WM_ADSP_FW_CONTROL("DSP1", 0),
};
-static const struct cs35l41_otp_map_element_t *cs35l41_find_otp_map(u32 otp_id)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(cs35l41_otp_map_map); i++) {
- if (cs35l41_otp_map_map[i].id == otp_id)
- return &cs35l41_otp_map_map[i];
- }
-
- return NULL;
-}
-
-static int cs35l41_otp_unpack(void *data)
-{
- const struct cs35l41_otp_map_element_t *otp_map_match;
- const struct cs35l41_otp_packed_element_t *otp_map;
- struct cs35l41_private *cs35l41 = data;
- int bit_offset, word_offset, ret, i;
- unsigned int bit_sum = 8;
- u32 otp_val, otp_id_reg;
- u32 *otp_mem;
-
- otp_mem = kmalloc_array(CS35L41_OTP_SIZE_WORDS, sizeof(*otp_mem), GFP_KERNEL);
- if (!otp_mem)
- return -ENOMEM;
-
- ret = regmap_read(cs35l41->regmap, CS35L41_OTPID, &otp_id_reg);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Read OTP ID failed: %d\n", ret);
- goto err_otp_unpack;
- }
-
- otp_map_match = cs35l41_find_otp_map(otp_id_reg);
-
- if (!otp_map_match) {
- dev_err(cs35l41->dev, "OTP Map matching ID %d not found\n",
- otp_id_reg);
- ret = -EINVAL;
- goto err_otp_unpack;
- }
-
- ret = regmap_bulk_read(cs35l41->regmap, CS35L41_OTP_MEM0, otp_mem,
- CS35L41_OTP_SIZE_WORDS);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Read OTP Mem failed: %d\n", ret);
- goto err_otp_unpack;
- }
-
- otp_map = otp_map_match->map;
-
- bit_offset = otp_map_match->bit_offset;
- word_offset = otp_map_match->word_offset;
-
- ret = regmap_write(cs35l41->regmap, CS35L41_TEST_KEY_CTL, 0x00000055);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write Unlock key failed 1/2: %d\n", ret);
- goto err_otp_unpack;
- }
- ret = regmap_write(cs35l41->regmap, CS35L41_TEST_KEY_CTL, 0x000000AA);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write Unlock key failed 2/2: %d\n", ret);
- goto err_otp_unpack;
- }
-
- for (i = 0; i < otp_map_match->num_elements; i++) {
- dev_dbg(cs35l41->dev,
- "bitoffset= %d, word_offset=%d, bit_sum mod 32=%d\n",
- bit_offset, word_offset, bit_sum % 32);
- if (bit_offset + otp_map[i].size - 1 >= 32) {
- otp_val = (otp_mem[word_offset] &
- GENMASK(31, bit_offset)) >>
- bit_offset;
- otp_val |= (otp_mem[++word_offset] &
- GENMASK(bit_offset +
- otp_map[i].size - 33, 0)) <<
- (32 - bit_offset);
- bit_offset += otp_map[i].size - 32;
- } else {
- otp_val = (otp_mem[word_offset] &
- GENMASK(bit_offset + otp_map[i].size - 1,
- bit_offset)) >> bit_offset;
- bit_offset += otp_map[i].size;
- }
- bit_sum += otp_map[i].size;
-
- if (bit_offset == 32) {
- bit_offset = 0;
- word_offset++;
- }
-
- if (otp_map[i].reg != 0) {
- ret = regmap_update_bits(cs35l41->regmap,
- otp_map[i].reg,
- GENMASK(otp_map[i].shift +
- otp_map[i].size - 1,
- otp_map[i].shift),
- otp_val << otp_map[i].shift);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write OTP val failed: %d\n",
- ret);
- goto err_otp_unpack;
- }
- }
- }
-
- ret = regmap_write(cs35l41->regmap, CS35L41_TEST_KEY_CTL, 0x000000CC);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write Lock key failed 1/2: %d\n", ret);
- goto err_otp_unpack;
- }
- ret = regmap_write(cs35l41->regmap, CS35L41_TEST_KEY_CTL, 0x00000033);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write Lock key failed 2/2: %d\n", ret);
- goto err_otp_unpack;
- }
- ret = 0;
-
-err_otp_unpack:
- kfree(otp_mem);
- return ret;
-}
-
static irqreturn_t cs35l41_irq(int irq, void *data)
{
struct cs35l41_private *cs35l41 = data;
@@ -1650,7 +1527,7 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
goto err;
}
- ret = cs35l41_otp_unpack(cs35l41);
+ ret = cs35l41_otp_unpack(cs35l41->dev, cs35l41->regmap);
if (ret < 0) {
dev_err(cs35l41->dev, "OTP Unpack failed: %d\n", ret);
goto err;
diff --git a/sound/soc/codecs/cs35l41.h b/sound/soc/codecs/cs35l41.h
index 453ece8889e0..26a08d58a8c3 100644
--- a/sound/soc/codecs/cs35l41.h
+++ b/sound/soc/codecs/cs35l41.h
@@ -21,9 +21,6 @@
#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
-extern const struct cs35l41_otp_map_element_t
- cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS];
-
enum cs35l41_cspl_mbox_status {
CSPL_MBOX_STS_RUNNING = 0,
CSPL_MBOX_STS_PAUSED = 1,
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 06/11] ASoC: cs35l41: Move power initializations to reg_sequence
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (4 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 05/11] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:31 ` [PATCH 07/11] ASoC: cs35l41: Create shared function for errata patches Lucas Tanure
` (5 subsequent siblings)
11 siblings, 0 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
ASoC and HDA systems for all revisions of CS35L41 will benefit
from having this initialization, so add it to reg_sequence of
each revision
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
sound/soc/codecs/cs35l41-lib.c | 2 +-
sound/soc/codecs/cs35l41.c | 29 +++++++++--------------------
2 files changed, 10 insertions(+), 21 deletions(-)
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index a13c5313f4e5..cd9be6fbf910 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -43,7 +43,7 @@ const struct reg_default cs35l41_reg[] = {
{ CS35L41_CLASSH_CFG, 0x000B0405 },
{ CS35L41_WKFET_CFG, 0x00000111 },
{ CS35L41_NG_CFG, 0x00000033 },
- { CS35L41_AMP_GAIN_CTRL, 0x00000273 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
{ CS35L41_GPIO1_CTRL1, 0xE1000001 },
{ CS35L41_GPIO2_CTRL1, 0xE1000001 },
{ CS35L41_MIXER_NGATE_CFG, 0x00000000 },
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index 0a88c2f164d1..20edc40b2fab 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -1267,6 +1267,9 @@ static int cs35l41_handle_pdata(struct device *dev,
}
static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
{ 0x00000040, 0x00005555 },
{ 0x00000040, 0x0000AAAA },
{ 0x00003854, 0x05180240 },
@@ -1286,6 +1289,9 @@ static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
};
static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
{ 0x00000040, 0x00005555 },
{ 0x00000040, 0x0000AAAA },
{ CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
@@ -1299,6 +1305,9 @@ static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
};
static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
{ 0x00000040, 0x00005555 },
{ 0x00000040, 0x0000AAAA },
{ CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
@@ -1533,26 +1542,6 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
goto err;
}
- ret = regmap_write(cs35l41->regmap, CS35L41_DSP1_CCM_CORE_CTRL, 0);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write CCM_CORE_CTRL failed: %d\n", ret);
- goto err;
- }
-
- ret = regmap_update_bits(cs35l41->regmap, CS35L41_PWR_CTRL2,
- CS35L41_AMP_EN_MASK, 0);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write CS35L41_PWR_CTRL2 failed: %d\n", ret);
- goto err;
- }
-
- ret = regmap_update_bits(cs35l41->regmap, CS35L41_AMP_GAIN_CTRL,
- CS35L41_AMP_GAIN_PCM_MASK, 0);
- if (ret < 0) {
- dev_err(cs35l41->dev, "Write CS35L41_AMP_GAIN_CTRL failed: %d\n", ret);
- goto err;
- }
-
ret = cs35l41_set_pdata(cs35l41);
if (ret < 0) {
dev_err(cs35l41->dev, "Set pdata failed: %d\n", ret);
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 07/11] ASoC: cs35l41: Create shared function for errata patches
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (5 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 06/11] ASoC: cs35l41: Move power initializations to reg_sequence Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:31 ` [PATCH 08/11] ASoC: cs35l41: Create shared function for setting channels Lucas Tanure
` (4 subsequent siblings)
11 siblings, 0 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
ASoC and HDA systems require the same errata patches, so
move it to the shared code using a function the correctly
applies the patches by revision
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 1 +
sound/soc/codecs/cs35l41-lib.c | 86 ++++++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 89 ++--------------------------------
3 files changed, 90 insertions(+), 86 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index 9241173740cc..e33bc0ed502d 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -765,5 +765,6 @@ extern struct regmap_config cs35l41_regmap_spi;
int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies);
int cs35l41_otp_unpack(struct device *dev, struct regmap *regmap);
+int cs35l41_register_errata_patch(struct device *dev, struct regmap *reg, unsigned int reg_revid);
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index cd9be6fbf910..b7a6dbf7fb8b 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -655,6 +655,60 @@ static const struct cs35l41_otp_packed_element_t otp_map_2[CS35L41_NUM_OTP_ELEM]
{ 0x00017044, 0, 24 }, /*LOT_NUMBER*/
};
+static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
+ { 0x00000040, 0x00005555 },
+ { 0x00000040, 0x0000AAAA },
+ { 0x00003854, 0x05180240 },
+ { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
+ { 0x00004310, 0x00000000 },
+ { CS35L41_VPVBST_FS_SEL, 0x00000000 },
+ { CS35L41_OTP_TRIM_30, 0x9091A1C8 },
+ { 0x00003014, 0x0200EE0E },
+ { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
+ { 0x00000054, 0x00000004 },
+ { CS35L41_IRQ1_DB3, 0x00000000 },
+ { CS35L41_IRQ2_DB3, 0x00000000 },
+ { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
+ { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
+ { 0x00000040, 0x0000CCCC },
+ { 0x00000040, 0x00003333 },
+};
+
+static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
+ { 0x00000040, 0x00005555 },
+ { 0x00000040, 0x0000AAAA },
+ { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
+ { 0x00004310, 0x00000000 },
+ { CS35L41_VPVBST_FS_SEL, 0x00000000 },
+ { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
+ { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
+ { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
+ { 0x00000040, 0x0000CCCC },
+ { 0x00000040, 0x00003333 },
+};
+
+static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
+ { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
+ { CS35L41_PWR_CTRL2, 0x00000000 },
+ { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
+ { 0x00000040, 0x00005555 },
+ { 0x00000040, 0x0000AAAA },
+ { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
+ { 0x00004310, 0x00000000 },
+ { CS35L41_VPVBST_FS_SEL, 0x00000000 },
+ { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
+ { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
+ { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
+ { 0x00000040, 0x0000CCCC },
+ { 0x00000040, 0x00003333 },
+};
+
const struct cs35l41_otp_map_element_t cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS] = {
{
.id = 0x01,
@@ -865,3 +919,35 @@ int cs35l41_otp_unpack(struct device *dev, struct regmap *regmap)
return ret;
}
+int cs35l41_register_errata_patch(struct device *dev, struct regmap *reg, unsigned int reg_revid)
+{
+ int ret = 0;
+ char *rev;
+
+ switch (reg_revid) {
+ case CS35L41_REVID_A0:
+ ret = regmap_register_patch(reg, cs35l41_reva0_errata_patch,
+ ARRAY_SIZE(cs35l41_reva0_errata_patch));
+ rev = "A0";
+ break;
+ case CS35L41_REVID_B0:
+ ret = regmap_register_patch(reg, cs35l41_revb0_errata_patch,
+ ARRAY_SIZE(cs35l41_revb0_errata_patch));
+ rev = "B0";
+ break;
+ case CS35L41_REVID_B2:
+ ret = regmap_register_patch(reg, cs35l41_revb2_errata_patch,
+ ARRAY_SIZE(cs35l41_revb2_errata_patch));
+ rev = "B2";
+ break;
+ default:
+ ret = -EINVAL;
+ rev = "XX";
+ break;
+ }
+
+ if (ret)
+ dev_err(dev, "Failed to apply %s errata patch: %d\n", rev, ret);
+
+ return ret;
+}
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index 20edc40b2fab..b1202ac9f264 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -1266,60 +1266,6 @@ static int cs35l41_handle_pdata(struct device *dev,
return 0;
}
-static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
- { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
- { CS35L41_PWR_CTRL2, 0x00000000 },
- { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
- { 0x00000040, 0x00005555 },
- { 0x00000040, 0x0000AAAA },
- { 0x00003854, 0x05180240 },
- { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
- { 0x00004310, 0x00000000 },
- { CS35L41_VPVBST_FS_SEL, 0x00000000 },
- { CS35L41_OTP_TRIM_30, 0x9091A1C8 },
- { 0x00003014, 0x0200EE0E },
- { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
- { 0x00000054, 0x00000004 },
- { CS35L41_IRQ1_DB3, 0x00000000 },
- { CS35L41_IRQ2_DB3, 0x00000000 },
- { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
- { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
- { 0x00000040, 0x0000CCCC },
- { 0x00000040, 0x00003333 },
-};
-
-static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
- { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
- { CS35L41_PWR_CTRL2, 0x00000000 },
- { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
- { 0x00000040, 0x00005555 },
- { 0x00000040, 0x0000AAAA },
- { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
- { 0x00004310, 0x00000000 },
- { CS35L41_VPVBST_FS_SEL, 0x00000000 },
- { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
- { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
- { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
- { 0x00000040, 0x0000CCCC },
- { 0x00000040, 0x00003333 },
-};
-
-static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
- { CS35L41_DSP1_CCM_CORE_CTRL, 0x00000000 },
- { CS35L41_PWR_CTRL2, 0x00000000 },
- { CS35L41_AMP_GAIN_CTRL, 0x00000000 },
- { 0x00000040, 0x00005555 },
- { 0x00000040, 0x0000AAAA },
- { CS35L41_VIMON_SPKMON_RESYNC, 0x00000000 },
- { 0x00004310, 0x00000000 },
- { CS35L41_VPVBST_FS_SEL, 0x00000000 },
- { CS35L41_BSTCVRT_DCM_CTRL, 0x00000051 },
- { CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000 },
- { CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
- { 0x00000040, 0x0000CCCC },
- { 0x00000040, 0x00003333 },
-};
-
static const struct reg_sequence cs35l41_fs_errata_patch[] = {
{ CS35L41_DSP1_RX1_RATE, 0x00000001 },
{ CS35L41_DSP1_RX2_RATE, 0x00000001 },
@@ -1487,38 +1433,9 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
goto err;
}
- switch (reg_revid) {
- case CS35L41_REVID_A0:
- ret = regmap_register_patch(cs35l41->regmap,
- cs35l41_reva0_errata_patch,
- ARRAY_SIZE(cs35l41_reva0_errata_patch));
- if (ret < 0) {
- dev_err(cs35l41->dev,
- "Failed to apply A0 errata patch: %d\n", ret);
- goto err;
- }
- break;
- case CS35L41_REVID_B0:
- ret = regmap_register_patch(cs35l41->regmap,
- cs35l41_revb0_errata_patch,
- ARRAY_SIZE(cs35l41_revb0_errata_patch));
- if (ret < 0) {
- dev_err(cs35l41->dev,
- "Failed to apply B0 errata patch: %d\n", ret);
- goto err;
- }
- break;
- case CS35L41_REVID_B2:
- ret = regmap_register_patch(cs35l41->regmap,
- cs35l41_revb2_errata_patch,
- ARRAY_SIZE(cs35l41_revb2_errata_patch));
- if (ret < 0) {
- dev_err(cs35l41->dev,
- "Failed to apply B2 errata patch: %d\n", ret);
- goto err;
- }
- break;
- }
+ ret = cs35l41_register_errata_patch(cs35l41->dev, cs35l41->regmap, reg_revid);
+ if (ret)
+ goto err;
irq_pol = cs35l41_irq_gpio_config(cs35l41);
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 08/11] ASoC: cs35l41: Create shared function for setting channels
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (6 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 07/11] ASoC: cs35l41: Create shared function for errata patches Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:31 ` [PATCH 09/11] ASoC: cs35l41: Create shared function for boost configuration Lucas Tanure
` (3 subsequent siblings)
11 siblings, 0 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
ASoC and HDA will use the same register to set channels
for the device
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 3 +++
sound/soc/codecs/cs35l41-lib.c | 32 ++++++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 30 +++---------------------------
3 files changed, 38 insertions(+), 27 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index e33bc0ed502d..219f23f643a6 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -766,5 +766,8 @@ extern struct regmap_config cs35l41_regmap_spi;
int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies);
int cs35l41_otp_unpack(struct device *dev, struct regmap *regmap);
int cs35l41_register_errata_patch(struct device *dev, struct regmap *reg, unsigned int reg_revid);
+int cs35l41_set_channels(struct device *dev, struct regmap *reg,
+ unsigned int tx_num, unsigned int *tx_slot,
+ unsigned int rx_num, unsigned int *rx_slot);
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index b7a6dbf7fb8b..5bb733bb02a0 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -951,3 +951,35 @@ int cs35l41_register_errata_patch(struct device *dev, struct regmap *reg, unsign
return ret;
}
+
+int cs35l41_set_channels(struct device *dev, struct regmap *reg,
+ unsigned int tx_num, unsigned int *tx_slot,
+ unsigned int rx_num, unsigned int *rx_slot)
+{
+ unsigned int val, mask;
+ int i;
+
+ if (tx_num > 4 || rx_num > 2)
+ return -EINVAL;
+
+ val = 0;
+ mask = 0;
+ for (i = 0; i < rx_num; i++) {
+ dev_dbg(dev, "rx slot %d position = %d\n", i, rx_slot[i]);
+ val |= rx_slot[i] << (i * 8);
+ mask |= 0x3F << (i * 8);
+ }
+ regmap_update_bits(reg, CS35L41_SP_FRAME_RX_SLOT, mask, val);
+
+ val = 0;
+ mask = 0;
+ for (i = 0; i < tx_num; i++) {
+ dev_dbg(dev, "tx slot %d position = %d\n", i, tx_slot[i]);
+ val |= tx_slot[i] << (i * 8);
+ mask |= 0x3F << (i * 8);
+ }
+ regmap_update_bits(reg, CS35L41_SP_FRAME_TX_SLOT, mask, val);
+
+ return 0;
+}
+
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index b1202ac9f264..e61736daef62 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -746,36 +746,12 @@ static const struct cs_dsp_region cs35l41_dsp1_regions[] = {
{. type = WMFW_ADSP2_YM, .base = CS35L41_DSP1_YMEM_UNPACK24_0},
};
-static int cs35l41_set_channel_map(struct snd_soc_dai *dai, unsigned int tx_num,
- unsigned int *tx_slot, unsigned int rx_num,
- unsigned int *rx_slot)
+static int cs35l41_set_channel_map(struct snd_soc_dai *dai, unsigned int tx_n,
+ unsigned int *tx_slot, unsigned int rx_n, unsigned int *rx_slot)
{
struct cs35l41_private *cs35l41 = snd_soc_component_get_drvdata(dai->component);
- unsigned int val, mask;
- int i;
-
- if (tx_num > 4 || rx_num > 2)
- return -EINVAL;
- val = 0;
- mask = 0;
- for (i = 0; i < rx_num; i++) {
- dev_dbg(cs35l41->dev, "rx slot %d position = %d\n", i, rx_slot[i]);
- val |= rx_slot[i] << (i * 8);
- mask |= 0x3F << (i * 8);
- }
- regmap_update_bits(cs35l41->regmap, CS35L41_SP_FRAME_RX_SLOT, mask, val);
-
- val = 0;
- mask = 0;
- for (i = 0; i < tx_num; i++) {
- dev_dbg(cs35l41->dev, "tx slot %d position = %d\n", i, tx_slot[i]);
- val |= tx_slot[i] << (i * 8);
- mask |= 0x3F << (i * 8);
- }
- regmap_update_bits(cs35l41->regmap, CS35L41_SP_FRAME_TX_SLOT, mask, val);
-
- return 0;
+ return cs35l41_set_channels(cs35l41->dev, cs35l41->regmap, tx_n, tx_slot, rx_n, rx_slot);
}
static int cs35l41_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 09/11] ASoC: cs35l41: Create shared function for boost configuration
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (7 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 08/11] ASoC: cs35l41: Create shared function for setting channels Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
` (2 subsequent siblings)
11 siblings, 0 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
ASoC and HDA will use the same registers to configure
internal boost for the device
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
include/sound/cs35l41.h | 2 +
sound/soc/codecs/cs35l41-lib.c | 97 ++++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 105 +--------------------------------
3 files changed, 101 insertions(+), 103 deletions(-)
diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index 219f23f643a6..c80ede66f297 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -769,5 +769,7 @@ int cs35l41_register_errata_patch(struct device *dev, struct regmap *reg, unsign
int cs35l41_set_channels(struct device *dev, struct regmap *reg,
unsigned int tx_num, unsigned int *tx_slot,
unsigned int rx_num, unsigned int *rx_slot);
+int cs35l41_boost_config(struct device *dev, struct regmap *regmap, int boost_ind, int boost_cap,
+ int boost_ipk);
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index 5bb733bb02a0..b582e8214c86 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -983,3 +983,100 @@ int cs35l41_set_channels(struct device *dev, struct regmap *reg,
return 0;
}
+static const unsigned char cs35l41_bst_k1_table[4][5] = {
+ { 0x24, 0x32, 0x32, 0x4F, 0x57 },
+ { 0x24, 0x32, 0x32, 0x4F, 0x57 },
+ { 0x40, 0x32, 0x32, 0x4F, 0x57 },
+ { 0x40, 0x32, 0x32, 0x4F, 0x57 }
+};
+
+static const unsigned char cs35l41_bst_k2_table[4][5] = {
+ { 0x24, 0x49, 0x66, 0xA3, 0xEA },
+ { 0x24, 0x49, 0x66, 0xA3, 0xEA },
+ { 0x48, 0x49, 0x66, 0xA3, 0xEA },
+ { 0x48, 0x49, 0x66, 0xA3, 0xEA }
+};
+
+static const unsigned char cs35l41_bst_slope_table[4] = {
+ 0x75, 0x6B, 0x3B, 0x28
+};
+
+
+int cs35l41_boost_config(struct device *dev, struct regmap *regmap, int boost_ind, int boost_cap,
+ int boost_ipk)
+{
+ unsigned char bst_lbst_val, bst_cbst_range, bst_ipk_scaled;
+ int ret;
+
+ switch (boost_ind) {
+ case 1000: /* 1.0 uH */
+ bst_lbst_val = 0;
+ break;
+ case 1200: /* 1.2 uH */
+ bst_lbst_val = 1;
+ break;
+ case 1500: /* 1.5 uH */
+ bst_lbst_val = 2;
+ break;
+ case 2200: /* 2.2 uH */
+ bst_lbst_val = 3;
+ break;
+ default:
+ dev_err(dev, "Invalid boost inductor value: %d nH\n", boost_ind);
+ return -EINVAL;
+ }
+
+ switch (boost_cap) {
+ case 0 ... 19:
+ bst_cbst_range = 0;
+ break;
+ case 20 ... 50:
+ bst_cbst_range = 1;
+ break;
+ case 51 ... 100:
+ bst_cbst_range = 2;
+ break;
+ case 101 ... 200:
+ bst_cbst_range = 3;
+ break;
+ default: /* 201 uF and greater */
+ bst_cbst_range = 4;
+ }
+
+ ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_COEFF,
+ CS35L41_BST_K1_MASK | CS35L41_BST_K2_MASK,
+ cs35l41_bst_k1_table[bst_lbst_val][bst_cbst_range]
+ << CS35L41_BST_K1_SHIFT |
+ cs35l41_bst_k2_table[bst_lbst_val][bst_cbst_range]
+ << CS35L41_BST_K2_SHIFT);
+ if (ret) {
+ dev_err(dev, "Failed to write boost coefficients: %d\n", ret);
+ return ret;
+ }
+
+ ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_SLOPE_LBST,
+ CS35L41_BST_SLOPE_MASK | CS35L41_BST_LBST_VAL_MASK,
+ cs35l41_bst_slope_table[bst_lbst_val]
+ << CS35L41_BST_SLOPE_SHIFT |
+ bst_lbst_val << CS35L41_BST_LBST_VAL_SHIFT);
+ if (ret) {
+ dev_err(dev, "Failed to write boost slope/inductor value: %d\n", ret);
+ return ret;
+ }
+
+ if (boost_ipk < 1600 || boost_ipk > 4500) {
+ dev_err(dev, "Invalid boost inductor peak current: %d mA\n", boost_ipk);
+ return -EINVAL;
+ }
+ bst_ipk_scaled = ((boost_ipk - 1600) / 50) + 0x10;
+
+ ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_PEAK_CUR, CS35L41_BST_IPK_MASK,
+ bst_ipk_scaled << CS35L41_BST_IPK_SHIFT);
+ if (ret) {
+ dev_err(dev, "Failed to write boost inductor peak current: %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index e61736daef62..99a70e9bb8e8 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -145,24 +145,6 @@ static const struct cs35l41_fs_mon_config cs35l41_fs_mon[] = {
{ 6144000, 16, 24 },
};
-static const unsigned char cs35l41_bst_k1_table[4][5] = {
- { 0x24, 0x32, 0x32, 0x4F, 0x57 },
- { 0x24, 0x32, 0x32, 0x4F, 0x57 },
- { 0x40, 0x32, 0x32, 0x4F, 0x57 },
- { 0x40, 0x32, 0x32, 0x4F, 0x57 }
-};
-
-static const unsigned char cs35l41_bst_k2_table[4][5] = {
- { 0x24, 0x49, 0x66, 0xA3, 0xEA },
- { 0x24, 0x49, 0x66, 0xA3, 0xEA },
- { 0x48, 0x49, 0x66, 0xA3, 0xEA },
- { 0x48, 0x49, 0x66, 0xA3, 0xEA }
-};
-
-static const unsigned char cs35l41_bst_slope_table[4] = {
- 0x75, 0x6B, 0x3B, 0x28
-};
-
static int cs35l41_get_fs_mon_config_index(int freq)
{
int i;
@@ -987,88 +969,6 @@ static int cs35l41_dai_set_sysclk(struct snd_soc_dai *dai,
return 0;
}
-static int cs35l41_boost_config(struct cs35l41_private *cs35l41,
- int boost_ind, int boost_cap, int boost_ipk)
-{
- unsigned char bst_lbst_val, bst_cbst_range, bst_ipk_scaled;
- struct regmap *regmap = cs35l41->regmap;
- struct device *dev = cs35l41->dev;
- int ret;
-
- switch (boost_ind) {
- case 1000: /* 1.0 uH */
- bst_lbst_val = 0;
- break;
- case 1200: /* 1.2 uH */
- bst_lbst_val = 1;
- break;
- case 1500: /* 1.5 uH */
- bst_lbst_val = 2;
- break;
- case 2200: /* 2.2 uH */
- bst_lbst_val = 3;
- break;
- default:
- dev_err(dev, "Invalid boost inductor value: %d nH\n", boost_ind);
- return -EINVAL;
- }
-
- switch (boost_cap) {
- case 0 ... 19:
- bst_cbst_range = 0;
- break;
- case 20 ... 50:
- bst_cbst_range = 1;
- break;
- case 51 ... 100:
- bst_cbst_range = 2;
- break;
- case 101 ... 200:
- bst_cbst_range = 3;
- break;
- default: /* 201 uF and greater */
- bst_cbst_range = 4;
- }
-
- ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_COEFF,
- CS35L41_BST_K1_MASK | CS35L41_BST_K2_MASK,
- cs35l41_bst_k1_table[bst_lbst_val][bst_cbst_range]
- << CS35L41_BST_K1_SHIFT |
- cs35l41_bst_k2_table[bst_lbst_val][bst_cbst_range]
- << CS35L41_BST_K2_SHIFT);
- if (ret) {
- dev_err(dev, "Failed to write boost coefficients: %d\n", ret);
- return ret;
- }
-
- ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_SLOPE_LBST,
- CS35L41_BST_SLOPE_MASK | CS35L41_BST_LBST_VAL_MASK,
- cs35l41_bst_slope_table[bst_lbst_val]
- << CS35L41_BST_SLOPE_SHIFT |
- bst_lbst_val << CS35L41_BST_LBST_VAL_SHIFT);
- if (ret) {
- dev_err(dev, "Failed to write boost slope/inductor value: %d\n", ret);
- return ret;
- }
-
- if (boost_ipk < 1600 || boost_ipk > 4500) {
- dev_err(dev, "Invalid boost inductor peak current: %d mA\n",
- boost_ipk);
- return -EINVAL;
- }
- bst_ipk_scaled = ((boost_ipk - 1600) / 50) + 0x10;
-
- ret = regmap_update_bits(regmap, CS35L41_BSTCVRT_PEAK_CUR,
- CS35L41_BST_IPK_MASK,
- bst_ipk_scaled << CS35L41_BST_IPK_SHIFT);
- if (ret) {
- dev_err(dev, "Failed to write boost inductor peak current: %d\n", ret);
- return ret;
- }
-
- return 0;
-}
-
static int cs35l41_set_pdata(struct cs35l41_private *cs35l41)
{
int ret;
@@ -1077,9 +977,8 @@ static int cs35l41_set_pdata(struct cs35l41_private *cs35l41)
/* Required */
if (cs35l41->pdata.bst_ipk &&
cs35l41->pdata.bst_ind && cs35l41->pdata.bst_cap) {
- ret = cs35l41_boost_config(cs35l41, cs35l41->pdata.bst_ind,
- cs35l41->pdata.bst_cap,
- cs35l41->pdata.bst_ipk);
+ ret = cs35l41_boost_config(cs35l41->dev, cs35l41->regmap, cs35l41->pdata.bst_ind,
+ cs35l41->pdata.bst_cap, cs35l41->pdata.bst_ipk);
if (ret) {
dev_err(cs35l41->dev, "Error in Boost DT config: %d\n", ret);
return ret;
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (8 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 09/11] ASoC: cs35l41: Create shared function for boost configuration Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 16:52 ` Takashi Iwai
` (2 more replies)
2021-11-23 16:31 ` [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes Lucas Tanure
2021-11-24 17:36 ` (subset) [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Mark Brown
11 siblings, 3 replies; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
Add support for CS35L41 using a new separated driver
that can be used in all upcoming designs
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
MAINTAINERS | 2 +
sound/pci/hda/Kconfig | 10 +
sound/pci/hda/Makefile | 28 +-
sound/pci/hda/cs35l41_hda.c | 522 ++++++++++++++++++++++++++++++++
sound/pci/hda/cs35l41_hda.h | 69 +++++
sound/pci/hda/cs35l41_hda_i2c.c | 61 ++++
sound/pci/hda/hda_component.h | 20 ++
sound/pci/hda/patch_realtek.c | 103 +++++++
8 files changed, 802 insertions(+), 13 deletions(-)
create mode 100644 sound/pci/hda/cs35l41_hda.c
create mode 100644 sound/pci/hda/cs35l41_hda.h
create mode 100644 sound/pci/hda/cs35l41_hda_i2c.c
create mode 100644 sound/pci/hda/hda_component.h
diff --git a/MAINTAINERS b/MAINTAINERS
index f32c7d733255..32f4587864b1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4513,10 +4513,12 @@ F: drivers/media/cec/i2c/ch7322.c
CIRRUS LOGIC AUDIO CODEC DRIVERS
M: James Schulman <james.schulman@cirrus.com>
M: David Rhodes <david.rhodes@cirrus.com>
+M: Lucas Tanure <tanureal@opensource.cirrus.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
L: patches@opensource.cirrus.com
S: Maintained
F: Documentation/devicetree/bindings/sound/cirrus,cs*
+F: sound/pci/hda/cs35l41*
F: sound/soc/codecs/cs*
CIRRUS LOGIC DSP FIRMWARE DRIVER
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig
index ab9d2746e804..2b091819d885 100644
--- a/sound/pci/hda/Kconfig
+++ b/sound/pci/hda/Kconfig
@@ -91,6 +91,16 @@ config SND_HDA_PATCH_LOADER
start up. The "patch" file can be specified via patch module
option, such as patch=hda-init.
+config SND_HDA_CODEC_CS35L41_I2C
+ tristate "Build CS35L41 HD-audio codec support for I2C Bus"
+ select SND_HDA_GENERIC
+ help
+ Say Y or M here to include CS35L41 I2C HD-audio codec support in
+ snd-hda-intel driver, such as ALC287.
+
+comment "Set to Y if you want auto-loading the codec driver"
+ depends on SND_HDA=y && SND_HDA_CODEC_CS35L41_I2C=m
+
config SND_HDA_CODEC_REALTEK
tristate "Build Realtek HD-audio codec support"
select SND_HDA_GENERIC
diff --git a/sound/pci/hda/Makefile b/sound/pci/hda/Makefile
index b8fa682ce66a..baa096107e28 100644
--- a/sound/pci/hda/Makefile
+++ b/sound/pci/hda/Makefile
@@ -13,25 +13,27 @@ snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += hda_beep.o
CFLAGS_hda_controller.o := -I$(src)
CFLAGS_hda_intel.o := -I$(src)
-snd-hda-codec-generic-objs := hda_generic.o
-snd-hda-codec-realtek-objs := patch_realtek.o
-snd-hda-codec-cmedia-objs := patch_cmedia.o
-snd-hda-codec-analog-objs := patch_analog.o
-snd-hda-codec-idt-objs := patch_sigmatel.o
-snd-hda-codec-si3054-objs := patch_si3054.o
-snd-hda-codec-cirrus-objs := patch_cirrus.o
-snd-hda-codec-cs8409-objs := patch_cs8409.o patch_cs8409-tables.o
-snd-hda-codec-ca0110-objs := patch_ca0110.o
-snd-hda-codec-ca0132-objs := patch_ca0132.o
-snd-hda-codec-conexant-objs := patch_conexant.o
-snd-hda-codec-via-objs := patch_via.o
-snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
+snd-hda-codec-generic-objs := hda_generic.o
+snd-hda-codec-cs35l41-i2c-objs := cs35l41_hda_i2c.o cs35l41_hda.o ../../soc/codecs/cs35l41-lib.o
+snd-hda-codec-realtek-objs := patch_realtek.o
+snd-hda-codec-cmedia-objs := patch_cmedia.o
+snd-hda-codec-analog-objs := patch_analog.o
+snd-hda-codec-idt-objs := patch_sigmatel.o
+snd-hda-codec-si3054-objs := patch_si3054.o
+snd-hda-codec-cirrus-objs := patch_cirrus.o
+snd-hda-codec-cs8409-objs := patch_cs8409.o patch_cs8409-tables.o
+snd-hda-codec-ca0110-objs := patch_ca0110.o
+snd-hda-codec-ca0132-objs := patch_ca0132.o
+snd-hda-codec-conexant-objs := patch_conexant.o
+snd-hda-codec-via-objs := patch_via.o
+snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
# common driver
obj-$(CONFIG_SND_HDA) := snd-hda-codec.o
# codec drivers
obj-$(CONFIG_SND_HDA_GENERIC) += snd-hda-codec-generic.o
+obj-$(CONFIG_SND_HDA_CODEC_CS35L41_I2C) += snd-hda-codec-cs35l41-i2c.o
obj-$(CONFIG_SND_HDA_CODEC_REALTEK) += snd-hda-codec-realtek.o
obj-$(CONFIG_SND_HDA_CODEC_CMEDIA) += snd-hda-codec-cmedia.o
obj-$(CONFIG_SND_HDA_CODEC_ANALOG) += snd-hda-codec-analog.o
diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
new file mode 100644
index 000000000000..5710780db8c6
--- /dev/null
+++ b/sound/pci/hda/cs35l41_hda.c
@@ -0,0 +1,522 @@
+// SPDX-License-Identifier: GPL-2.0
+//
+// cs35l41.c -- CS35l41 ALSA HDA audio driver
+//
+// Copyright 2021 Cirrus Logic, Inc.
+//
+// Author: Lucas Tanure <tanureal@opensource.cirrus.com>
+
+#include <linux/acpi.h>
+#include <sound/hda_codec.h>
+#include "hda_local.h"
+#include "hda_auto_parser.h"
+#include "hda_jack.h"
+#include "hda_generic.h"
+#include "hda_component.h"
+#include "cs35l41_hda.h"
+
+static const struct reg_sequence cs35l41_hda_config[] = {
+ { CS35L41_PLL_CLK_CTRL, 0x00000430 }, //3200000Hz, BCLK Input, PLL_REFCLK_EN = 1
+ { CS35L41_GLOBAL_CLK_CTRL, 0x00000003 }, //GLOBAL_FS = 48 kHz
+ { CS35L41_SP_ENABLES, 0x00010000 }, //ASP_RX1_EN = 1
+ { CS35L41_SP_RATE_CTRL, 0x00000021 }, //ASP_BCLK_FREQ = 3.072 MHz
+ { CS35L41_SP_FORMAT, 0x20200200 }, //24 bits, I2S, BCLK Slave, FSYNC Slave
+ { CS35L41_DAC_PCM1_SRC, 0x00000008 }, //DACPCM1_SRC = ASPRX1
+ { CS35L41_AMP_DIG_VOL_CTRL, 0x00000000 }, //AMP_VOL_PCM 0.0 dB
+ { CS35L41_AMP_GAIN_CTRL, 0x00000260 }, //AMP_GAIN_PCM 19.5 dB
+ { CS35L41_PWR_CTRL2, 0x00000001 }, //AMP_EN = 1
+};
+
+static const struct reg_sequence cs35l41_hda_start_bst[] = {
+ { CS35L41_PWR_CTRL2, 0x00000021 }, //BST_EN = 10, AMP_EN = 1
+ { CS35L41_PWR_CTRL1, 0x00000001, 3000}, // set GLOBAL_EN = 1
+};
+
+static const struct reg_sequence cs35l41_hda_stop_bst[] = {
+ { CS35L41_PWR_CTRL1, 0x00000000, 3000}, // set GLOBAL_EN = 0
+};
+
+// only on amps where GPIO1 is used to control ext. VSPK switch
+static const struct reg_sequence cs35l41_start_ext_vspk[] = {
+ { 0x00000040, 0x00000055 },
+ { 0x00000040, 0x000000AA },
+ { 0x00007438, 0x00585941 },
+ { 0x00007414, 0x08C82222 },
+ { 0x0000742C, 0x00000009 },
+ { 0x00011008, 0x00008001 },
+ { 0x0000742C, 0x0000000F },
+ { 0x0000742C, 0x00000079 },
+ { 0x00007438, 0x00585941 },
+ { CS35L41_PWR_CTRL1, 0x00000001, 3000}, // set GLOBAL_EN = 1
+ { 0x0000742C, 0x000000F9 },
+ { 0x00007438, 0x00580941 },
+ { 0x00000040, 0x000000CC },
+ { 0x00000040, 0x00000033 },
+};
+
+//only on amps where GPIO1 is used to control ext. VSPK switch
+static const struct reg_sequence cs35l41_stop_ext_vspk[] = {
+ { 0x00000040, 0x00000055 },
+ { 0x00000040, 0x000000AA },
+ { 0x00007438, 0x00585941 },
+ { 0x00002014, 0x00000000, 3000}, //set GLOBAL_EN = 0
+ { 0x0000742C, 0x00000009 },
+ { 0x00007438, 0x00580941 },
+ { 0x00011008, 0x00000001 },
+ { 0x0000393C, 0x000000C0, 6000},
+ { 0x0000393C, 0x00000000 },
+ { 0x00007414, 0x00C82222 },
+ { 0x0000742C, 0x00000000 },
+ { 0x00000040, 0x000000CC },
+ { 0x00000040, 0x00000033 },
+};
+
+static const struct reg_sequence cs35l41_safe_to_active[] = {
+ { 0x00000040, 0x00000055 },
+ { 0x00000040, 0x000000AA },
+ { 0x0000742C, 0x0000000F },
+ { 0x0000742C, 0x00000079 },
+ { 0x00007438, 0x00585941 },
+ { CS35L41_PWR_CTRL1, 0x00000001, 2000 }, //GLOBAL_EN = 1
+ { 0x0000742C, 0x000000F9 },
+ { 0x00007438, 0x00580941 },
+ { 0x00000040, 0x000000CC },
+ { 0x00000040, 0x00000033 },
+};
+
+static const struct reg_sequence cs35l41_active_to_safe[] = {
+ { 0x00000040, 0x00000055 },
+ { 0x00000040, 0x000000AA },
+ { 0x00007438, 0x00585941 },
+ { CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, //AMP_VOL_PCM Mute
+ { CS35L41_PWR_CTRL2, 0x00000000 }, //AMP_EN = 0
+ { CS35L41_PWR_CTRL1, 0x00000000 },
+ { 0x0000742C, 0x00000009, 2000 },
+ { 0x00007438, 0x00580941 },
+ { 0x00000040, 0x000000CC },
+ { 0x00000040, 0x00000033 },
+};
+
+static const struct reg_sequence cs35l41_reset_to_safe[] = {
+ { 0x00000040, 0x00000055 },
+ { 0x00000040, 0x000000AA },
+ { 0x00007438, 0x00585941 },
+ { 0x00007414, 0x08C82222 },
+ { 0x0000742C, 0x00000009 },
+ { 0x00000040, 0x000000CC },
+ { 0x00000040, 0x00000033 },
+};
+
+static const struct cs35l41_hda_reg_sequence cs35l41_hda_reg_seq_no_bst = {
+ .probe = cs35l41_reset_to_safe,
+ .num_probe = ARRAY_SIZE(cs35l41_reset_to_safe),
+ .open = cs35l41_hda_config,
+ .num_open = ARRAY_SIZE(cs35l41_hda_config),
+ .prepare = cs35l41_safe_to_active,
+ .num_prepare = ARRAY_SIZE(cs35l41_safe_to_active),
+ .cleanup = cs35l41_active_to_safe,
+ .num_cleanup = ARRAY_SIZE(cs35l41_active_to_safe),
+};
+
+static const struct cs35l41_hda_reg_sequence cs35l41_hda_reg_seq_ext_bst = {
+ .open = cs35l41_hda_config,
+ .num_open = ARRAY_SIZE(cs35l41_hda_config),
+ .prepare = cs35l41_start_ext_vspk,
+ .num_prepare = ARRAY_SIZE(cs35l41_start_ext_vspk),
+ .cleanup = cs35l41_stop_ext_vspk,
+ .num_cleanup = ARRAY_SIZE(cs35l41_stop_ext_vspk),
+};
+
+static const struct cs35l41_hda_reg_sequence cs35l41_hda_reg_seq_int_bst = {
+ .open = cs35l41_hda_config,
+ .num_open = ARRAY_SIZE(cs35l41_hda_config),
+ .prepare = cs35l41_hda_start_bst,
+ .num_prepare = ARRAY_SIZE(cs35l41_hda_start_bst),
+ .cleanup = cs35l41_hda_stop_bst,
+ .num_cleanup = ARRAY_SIZE(cs35l41_hda_stop_bst),
+};
+
+static void cs35l41_hda_playback_hook(struct device *dev, int action)
+{
+ struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev);
+ const struct cs35l41_hda_reg_sequence *reg_seq = cs35l41->reg_seq;
+ struct regmap *reg = cs35l41->regmap;
+ int ret = 0;
+
+ switch (action) {
+ case HDA_GEN_PCM_ACT_OPEN:
+ if (reg_seq->open)
+ ret = regmap_multi_reg_write(reg, reg_seq->open, reg_seq->num_open);
+ break;
+ case HDA_GEN_PCM_ACT_PREPARE:
+ if (reg_seq->prepare)
+ ret = regmap_multi_reg_write(reg, reg_seq->prepare, reg_seq->num_prepare);
+ break;
+ case HDA_GEN_PCM_ACT_CLEANUP:
+ if (reg_seq->cleanup)
+ ret = regmap_multi_reg_write(reg, reg_seq->cleanup, reg_seq->num_cleanup);
+ break;
+ case HDA_GEN_PCM_ACT_CLOSE:
+ if (reg_seq->close)
+ ret = regmap_multi_reg_write(reg, reg_seq->close, reg_seq->num_close);
+ break;
+ }
+
+ if (ret)
+ dev_warn(cs35l41->dev, "Failed to apply multi reg write: %d\n", ret);
+
+}
+
+static int cs35l41_hda_channel_map(struct device *dev, unsigned int tx_num, unsigned int *tx_slot,
+ unsigned int rx_num, unsigned int *rx_slot)
+{
+ struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev);
+
+ return cs35l41_set_channels(cs35l41->dev, cs35l41->regmap, tx_num, tx_slot, rx_num,
+ rx_slot);
+}
+
+int cs35l41_hda_bind(struct device *dev, struct device *master, void *master_data)
+{
+ struct hda_component *comps = master_data;
+ int i;
+
+ for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
+ if (!comps[i].dev) {
+ comps[i].dev = dev;
+ strscpy(comps[i].name, dev_name(dev), sizeof(comps[i].name));
+ comps[i].playback_hook = cs35l41_hda_playback_hook;
+ comps[i].set_channel_map = cs35l41_hda_channel_map;
+ return 0;
+ }
+ }
+
+ return -EBUSY;
+}
+
+static void cs35l41_hda_unbind(struct device *dev, struct device *master, void *master_data)
+{
+ struct hda_component *comps = master_data;
+ int i;
+
+ for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
+ if (comps[i].dev == dev) {
+ memset(&comps[i], 0, sizeof(*comps));
+ return;
+ }
+ }
+}
+
+static const struct component_ops cs35l41_hda_comp_ops = {
+ .bind = cs35l41_hda_bind,
+ .unbind = cs35l41_hda_unbind,
+};
+
+static int cs35l41_hda_apply_properties(struct cs35l41_hda *cs35l41,
+ const struct cs35l41_hda_hw_config *hw_cfg)
+{
+ bool internal_boost = false;
+ int ret;
+
+ if (!hw_cfg) {
+ cs35l41->reg_seq = &cs35l41_hda_reg_seq_no_bst;
+ return 0;
+ }
+
+ if (hw_cfg->bst_ind || hw_cfg->bst_cap || hw_cfg->bst_ipk)
+ internal_boost = true;
+
+ switch (hw_cfg->gpio1_func) {
+ case CS35l41_VSPK_SWITCH:
+ regmap_update_bits(cs35l41->regmap, CS35L41_GPIO_PAD_CONTROL,
+ CS35L41_GPIO1_CTRL_MASK, 1 << CS35L41_GPIO1_CTRL_SHIFT);
+ break;
+ case CS35l41_SYNC:
+ regmap_update_bits(cs35l41->regmap, CS35L41_GPIO_PAD_CONTROL,
+ CS35L41_GPIO1_CTRL_MASK, 2 << CS35L41_GPIO1_CTRL_SHIFT);
+ break;
+ }
+
+ switch (hw_cfg->gpio2_func) {
+ case CS35L41_INTERRUPT:
+ regmap_update_bits(cs35l41->regmap, CS35L41_GPIO_PAD_CONTROL,
+ CS35L41_GPIO2_CTRL_MASK, 2 << CS35L41_GPIO2_CTRL_SHIFT);
+ break;
+ }
+
+ if (internal_boost) {
+ cs35l41->reg_seq = &cs35l41_hda_reg_seq_int_bst;
+ if (!(hw_cfg->bst_ind && hw_cfg->bst_cap && hw_cfg->bst_ipk))
+ return -EINVAL;
+ ret = cs35l41_boost_config(cs35l41->dev, cs35l41->regmap,
+ hw_cfg->bst_ind, hw_cfg->bst_cap, hw_cfg->bst_ipk);
+ if (ret)
+ return ret;
+ } else {
+ cs35l41->reg_seq = &cs35l41_hda_reg_seq_ext_bst;
+ }
+
+ ret = cs35l41_hda_channel_map(cs35l41->dev, 0, NULL, 1, (unsigned int *)&hw_cfg->spk_pos);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static struct cs35l41_hda_hw_config *cs35l41_hda_read_acpi(struct cs35l41_hda *cs35l41,
+ const char *hid, int id)
+{
+ struct cs35l41_hda_hw_config *hw_cfg;
+ u32 values[HDA_MAX_COMPONENTS];
+ struct acpi_device *adev;
+ struct device *acpi_dev;
+ int i, ret, index = -1;
+ char *property;
+ size_t nval;
+
+ adev = acpi_dev_get_first_match_dev(hid, NULL, -1);
+ if (!adev) {
+ dev_err(cs35l41->dev, "Failed to find an ACPI device for %s\n", hid);
+ return ERR_PTR(-ENODEV);
+ }
+
+ acpi_dev = get_device(acpi_get_first_physical_node(adev));
+ acpi_dev_put(adev);
+
+ property = "cirrus,dev-index";
+ ret = device_property_count_u32(acpi_dev, property);
+ if (ret <= 0)
+ goto no_acpi_dsd;
+
+ if (ret > ARRAY_SIZE(values)) {
+ ret = -EINVAL;
+ goto err;
+ }
+ nval = ret;
+
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret)
+ goto err;
+
+ for (i = 0; i < nval; i++) {
+ if (values[i] == id) {
+ index = i;
+ break;
+ }
+ }
+ if (index == -1) {
+ dev_err(cs35l41->dev, "No index found in %s\n", property);
+ ret = -ENODEV;
+ goto err;
+ }
+
+ /* No devm_ version as CLSA0100, in no_acpi_dsd case, can't use devm version */
+ cs35l41->reset_gpio = fwnode_gpiod_get_index(&adev->fwnode, "reset", index, GPIOD_OUT_LOW,
+ "cs35l41-reset");
+
+ hw_cfg = kzalloc(sizeof(*hw_cfg), GFP_KERNEL);
+ if (!hw_cfg) {
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ property = "cirrus,speaker-position";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret)
+ goto err_free;
+ hw_cfg->spk_pos = values[index];
+
+ property = "cirrus,gpio1-func";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret)
+ goto err_free;
+ hw_cfg->gpio1_func = values[index];
+
+ property = "cirrus,gpio2-func";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret)
+ goto err_free;
+ hw_cfg->gpio2_func = values[index];
+
+ property = "cirrus,boost-peak-milliamp";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret == 0)
+ hw_cfg->bst_ipk = values[index];
+
+ property = "cirrus,boost-ind-nanohenry";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret == 0)
+ hw_cfg->bst_ind = values[index];
+
+ property = "cirrus,boost-cap-microfarad";
+ ret = device_property_read_u32_array(acpi_dev, property, values, nval);
+ if (ret == 0)
+ hw_cfg->bst_cap = values[index];
+
+ put_device(acpi_dev);
+
+ return hw_cfg;
+
+err_free:
+ kfree(hw_cfg);
+err:
+ put_device(acpi_dev);
+ dev_err(cs35l41->dev, "Failed property %s: %d\n", property, ret);
+
+ return ERR_PTR(ret);
+
+no_acpi_dsd:
+ /*
+ * Device CLSA0100 doesn't have _DSD so a gpiod_get by the label reset won't work.
+ * And devices created by i2c-multi-instantiate don't have their device struct pointing to
+ * the correct fwnode, so acpi_dev must be used here
+ * And devm functions expect that the device requesting the resource has the correct
+ * fwnode
+ */
+ cs35l41->reset_gpio = gpiod_get_index(acpi_dev, NULL, 0, GPIOD_OUT_HIGH);
+ cs35l41->vspk_always_on = true;
+ put_device(acpi_dev);
+
+ return NULL;
+}
+
+int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int irq,
+ struct regmap *regmap)
+{
+ unsigned int int_sts, regid, reg_revid, mtl_revid, chipid, int_status;
+ struct cs35l41_hda_hw_config *acpi_hw_cfg;
+ struct cs35l41_hda *cs35l41;
+ int ret;
+
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ cs35l41 = devm_kzalloc(dev, sizeof(*cs35l41), GFP_KERNEL);
+ if (!cs35l41)
+ return -ENOMEM;
+
+ cs35l41->dev = dev;
+ cs35l41->irq = irq;
+ cs35l41->regmap = regmap;
+ dev_set_drvdata(dev, cs35l41);
+
+ acpi_hw_cfg = cs35l41_hda_read_acpi(cs35l41, device_name, id);
+ if (IS_ERR(acpi_hw_cfg))
+ return PTR_ERR(acpi_hw_cfg);
+
+ ret = cs35l41_init_supplies(cs35l41->dev, cs35l41->supplies);
+ if (ret) {
+ kfree(acpi_hw_cfg);
+ return ret;
+ }
+
+ if (IS_ERR(cs35l41->reset_gpio)) {
+ ret = PTR_ERR(cs35l41->reset_gpio);
+ cs35l41->reset_gpio = NULL;
+ if (ret == -EBUSY) {
+ dev_info(cs35l41->dev, "Reset line busy, assuming shared reset\n");
+ } else {
+ if (ret != -EPROBE_DEFER)
+ dev_err(cs35l41->dev, "Failed to get reset GPIO: %d\n", ret);
+ goto err;
+ }
+ }
+ if (cs35l41->reset_gpio) {
+ usleep_range(2000, 2100);
+ gpiod_set_value_cansleep(cs35l41->reset_gpio, 1);
+ }
+
+ usleep_range(2000, 2100);
+
+ ret = regmap_read_poll_timeout(cs35l41->regmap, CS35L41_IRQ1_STATUS4, int_status,
+ int_status & CS35L41_OTP_BOOT_DONE, 1000, 100000);
+ if (ret) {
+ dev_err(cs35l41->dev, "Failed waiting for OTP_BOOT_DONE: %d\n", ret);
+ goto err;
+ }
+
+ ret = regmap_read(cs35l41->regmap, CS35L41_IRQ1_STATUS3, &int_sts);
+ if (ret || (int_sts & CS35L41_OTP_BOOT_ERR)) {
+ dev_err(cs35l41->dev, "OTP Boot error\n");
+ ret = -EIO;
+ goto err;
+ }
+
+ ret = regmap_read(cs35l41->regmap, CS35L41_DEVID, ®id);
+ if (ret) {
+ dev_err(cs35l41->dev, "Get Device ID failed: %d\n", ret);
+ goto err;
+ }
+
+ ret = regmap_read(cs35l41->regmap, CS35L41_REVID, ®_revid);
+ if (ret) {
+ dev_err(cs35l41->dev, "Get Revision ID failed: %d\n", ret);
+ goto err;
+ }
+
+ mtl_revid = reg_revid & CS35L41_MTLREVID_MASK;
+
+ chipid = (mtl_revid % 2) ? CS35L41R_CHIP_ID : CS35L41_CHIP_ID;
+ if (regid != chipid) {
+ dev_err(cs35l41->dev, "CS35L41 Device ID (%X). Expected ID %X\n", regid, chipid);
+ ret = -ENODEV;
+ goto err;
+ }
+
+ ret = cs35l41_register_errata_patch(cs35l41->dev, cs35l41->regmap, reg_revid);
+ if (ret)
+ goto err;
+
+ ret = cs35l41_otp_unpack(cs35l41->dev, cs35l41->regmap);
+ if (ret) {
+ dev_err(cs35l41->dev, "OTP Unpack failed: %d\n", ret);
+ goto err;
+ }
+
+ ret = cs35l41_hda_apply_properties(cs35l41, acpi_hw_cfg);
+ if (ret)
+ goto err;
+ kfree(acpi_hw_cfg);
+
+ if (cs35l41->reg_seq->probe) {
+ ret = regmap_register_patch(cs35l41->regmap, cs35l41->reg_seq->probe,
+ cs35l41->reg_seq->num_probe);
+ if (ret) {
+ dev_err(cs35l41->dev, "Fail to apply probe reg patch: %d\n", ret);
+ goto err;
+ }
+ }
+
+ ret = component_add(cs35l41->dev, &cs35l41_hda_comp_ops);
+ if (ret) {
+ dev_err(cs35l41->dev, "Register component failed: %d\n", ret);
+ goto err;
+ }
+
+ dev_info(cs35l41->dev, "Cirrus Logic CS35L41 (%x), Revision: %02X\n", regid, reg_revid);
+
+ return 0;
+
+err:
+ kfree(acpi_hw_cfg);
+ regulator_bulk_disable(CS35L41_NUM_SUPPLIES, cs35l41->supplies);
+ if (!cs35l41->vspk_always_on)
+ gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
+ gpiod_put(cs35l41->reset_gpio);
+
+ return ret;
+}
+
+int cs35l41_hda_remove(struct device *dev)
+{
+ struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev);
+
+ component_del(cs35l41->dev, &cs35l41_hda_comp_ops);
+
+ regulator_bulk_disable(CS35L41_NUM_SUPPLIES, cs35l41->supplies);
+ if (!cs35l41->vspk_always_on)
+ gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
+ gpiod_put(cs35l41->reset_gpio);
+
+ return 0;
+}
diff --git a/sound/pci/hda/cs35l41_hda.h b/sound/pci/hda/cs35l41_hda.h
new file mode 100644
index 000000000000..a3b471c727ce
--- /dev/null
+++ b/sound/pci/hda/cs35l41_hda.h
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * cs35l41_hda.h -- CS35L41 ALSA HDA audio driver
+ *
+ * Copyright 2021 Cirrus Logic, Inc.
+ *
+ * Author: Lucas Tanure <tanureal@opensource.cirrus.com>
+ */
+
+#ifndef __CS35L41_HDA_H__
+#define __CS35L41_HDA_H__
+
+#include <linux/regulator/consumer.h>
+#include <linux/gpio/consumer.h>
+#include <linux/device.h>
+#include <sound/cs35l41.h>
+
+enum cs35l41_hda_spk_pos {
+ CS35l41_LEFT,
+ CS35l41_RIGHT,
+};
+
+enum cs35l41_hda_gpio_function {
+ CS35L41_NOT_USED,
+ CS35l41_VSPK_SWITCH,
+ CS35L41_INTERRUPT,
+ CS35l41_SYNC,
+};
+
+struct cs35l41_hda_reg_sequence {
+ const struct reg_sequence *probe;
+ unsigned int num_probe;
+ const struct reg_sequence *open;
+ unsigned int num_open;
+ const struct reg_sequence *prepare;
+ unsigned int num_prepare;
+ const struct reg_sequence *cleanup;
+ unsigned int num_cleanup;
+ const struct reg_sequence *close;
+ unsigned int num_close;
+};
+
+struct cs35l41_hda_hw_config {
+ unsigned int spk_pos;
+ unsigned int gpio1_func;
+ unsigned int gpio2_func;
+ int bst_ind;
+ int bst_ipk;
+ int bst_cap;
+};
+
+struct cs35l41_hda {
+ struct device *dev;
+ struct regmap *regmap;
+ struct gpio_desc *reset_gpio;
+ struct regulator_bulk_data supplies[CS35L41_NUM_SUPPLIES];
+ const struct cs35l41_hda_reg_sequence *reg_seq;
+
+ int irq;
+
+ /* Don't put the AMP in reset of VSPK can not be turned off */
+ bool vspk_always_on;
+};
+
+int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int irq,
+ struct regmap *regmap);
+int cs35l41_hda_remove(struct device *dev);
+
+#endif /*__CS35L41_HDA_H__*/
diff --git a/sound/pci/hda/cs35l41_hda_i2c.c b/sound/pci/hda/cs35l41_hda_i2c.c
new file mode 100644
index 000000000000..201930d35486
--- /dev/null
+++ b/sound/pci/hda/cs35l41_hda_i2c.c
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0
+//
+// cs35l41.c -- CS35l41 HDA I2C driver
+//
+// Copyright 2021 Cirrus Logic, Inc.
+//
+// Author: Lucas Tanure <tanureal@opensource.cirrus.com>
+
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/acpi.h>
+
+#include "cs35l41_hda.h"
+
+static int cs35l41_hda_i2c_probe(struct i2c_client *clt, const struct i2c_device_id *id)
+{
+ const char *device_name;
+
+ /* Compare against the device name so it works for I2C, normal ACPI
+ * and for ACPI by i2c-multi-instantiate matching cases
+ */
+ if (memcmp(dev_name(&clt->dev), "i2c-CLSA0100", 12) == 0)
+ device_name = "CLSA0100";
+
+ return cs35l41_hda_probe(&clt->dev, device_name, clt->addr, clt->irq,
+ devm_regmap_init_i2c(clt, &cs35l41_regmap_i2c));
+}
+
+static int cs35l41_hda_i2c_remove(struct i2c_client *clt)
+{
+ return cs35l41_hda_remove(&clt->dev);
+}
+
+static const struct i2c_device_id cs35l41_hda_i2c_id[] = {
+ { "cs35l41-hda", 0 },
+ {}
+};
+
+#ifdef CONFIG_ACPI
+static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
+ {"CLSA0100", 0 },
+ { },
+};
+MODULE_DEVICE_TABLE(acpi, cs35l41_acpi_hda_match);
+#endif
+
+static struct i2c_driver cs35l41_i2c_driver = {
+ .driver = {
+ .name = "cs35l41-hda",
+ .acpi_match_table = ACPI_PTR(cs35l41_acpi_hda_match),
+ },
+ .id_table = cs35l41_hda_i2c_id,
+ .probe = cs35l41_hda_i2c_probe,
+ .remove = cs35l41_hda_i2c_remove,
+};
+
+module_i2c_driver(cs35l41_i2c_driver);
+
+MODULE_DESCRIPTION("HDA CS35L41 driver");
+MODULE_AUTHOR("Lucas Tanure <tanureal@opensource.cirrus.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/pci/hda/hda_component.h b/sound/pci/hda/hda_component.h
new file mode 100644
index 000000000000..2e52be6db9c2
--- /dev/null
+++ b/sound/pci/hda/hda_component.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * HD audio Component Binding Interface
+ *
+ * Copyright (C) 2021 Cirrus Logic, Inc. and
+ * Cirrus Logic International Semiconductor Ltd.
+ */
+
+#include <linux/component.h>
+
+#define HDA_MAX_COMPONENTS 4
+#define HDA_MAX_NAME_SIZE 50
+
+struct hda_component {
+ struct device *dev;
+ char name[HDA_MAX_NAME_SIZE];
+ void (*playback_hook)(struct device *dev, int action);
+ int (*set_channel_map)(struct device *dev, unsigned int rx_num, unsigned int *rx_slot,
+ unsigned int tx_num, unsigned int *tx_slot);
+};
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 701c80ed83dc..fb2910530079 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -25,6 +25,7 @@
#include "hda_auto_parser.h"
#include "hda_jack.h"
#include "hda_generic.h"
+#include "hda_component.h"
/* keep halting ALC5505 DSP, for power saving */
#define HALT_REALTEK_ALC5505
@@ -126,6 +127,10 @@ struct alc_spec {
unsigned int coef0;
struct input_dev *kb_dev;
u8 alc_mute_keycode_map[1];
+
+ /* component binding */
+ struct component_match *match;
+ struct hda_component comps[HDA_MAX_COMPONENTS];
};
/*
@@ -6497,6 +6502,98 @@ static void alc287_fixup_legion_15imhg05_speakers(struct hda_codec *codec,
}
}
+static int comp_match_dev_name(struct device *dev, void *data)
+{
+ if (strcmp(dev_name(dev), data) == 0)
+ return 1;
+
+ return 0;
+}
+
+static int find_comp_by_dev_name(struct alc_spec *spec, const char *name)
+{
+ int i;
+
+ for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
+ if (strcmp(spec->comps[i].name, name) == 0)
+ return i;
+ }
+
+ return -ENODEV;
+}
+
+static int comp_bind(struct device *dev)
+{
+ struct hda_codec *codec = dev_to_hda_codec(dev);
+ struct alc_spec *spec = codec->spec;
+
+ return component_bind_all(dev, spec->comps);
+}
+
+static void comp_unbind(struct device *dev)
+{
+ struct hda_codec *codec = dev_to_hda_codec(dev);
+ struct alc_spec *spec = codec->spec;
+
+ component_unbind_all(dev, spec->comps);
+}
+
+static const struct component_master_ops comp_master_ops = {
+ .bind = comp_bind,
+ .unbind = comp_unbind,
+};
+
+void alc287_legion_16achg6_playback_hook(struct hda_pcm_stream *hinfo, struct hda_codec *codec,
+ struct snd_pcm_substream *sub, int action)
+{
+ struct alc_spec *spec = codec->spec;
+ unsigned int rx_slot;
+ int i = 0;
+
+ switch (action) {
+ case HDA_GEN_PCM_ACT_PREPARE:
+ rx_slot = 0;
+ i = find_comp_by_dev_name(spec, "i2c-CLSA0100:00-cs35l41-hda.0");
+ if (i >= 0)
+ spec->comps[i].set_channel_map(spec->comps[i].dev, 0, NULL, 1, &rx_slot);
+
+ rx_slot = 1;
+ i = find_comp_by_dev_name(spec, "i2c-CLSA0100:00-cs35l41-hda.1");
+ if (i >= 0)
+ spec->comps[i].set_channel_map(spec->comps[i].dev, 0, NULL, 1, &rx_slot);
+ break;
+ }
+
+ for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
+ if (spec->comps[i].dev)
+ spec->comps[i].playback_hook(spec->comps[i].dev, action);
+ }
+
+
+}
+
+static void alc287_fixup_legion_16achg6_speakers(struct hda_codec *codec,
+ const struct hda_fixup *fix, int action)
+{
+ struct device *dev = hda_codec_dev(codec);
+ struct alc_spec *spec = codec->spec;
+ int ret;
+
+ switch (action) {
+ case HDA_FIXUP_ACT_PRE_PROBE:
+ component_match_add(dev, &spec->match, comp_match_dev_name,
+ "i2c-CLSA0100:00-cs35l41-hda.0");
+ component_match_add(dev, &spec->match, comp_match_dev_name,
+ "i2c-CLSA0100:00-cs35l41-hda.1");
+ ret = component_master_add_with_match(dev, &comp_master_ops, spec->match);
+ if (ret)
+ codec_err(codec, "Fail to register component aggregator %d\n", ret);
+ else
+ spec->gen.pcm_playback_hook = alc287_legion_16achg6_playback_hook;
+ break;
+ }
+}
+
/* for alc295_fixup_hp_top_speakers */
#include "hp_x360_helper.c"
@@ -6762,6 +6859,7 @@ enum {
ALC256_FIXUP_TONGFANG_RESET_PERSISTENT_SETTINGS,
ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE,
ALC233_FIXUP_NO_AUDIO_JACK,
+ ALC287_FIXUP_LEGION_16ACHG6,
};
static const struct hda_fixup alc269_fixups[] = {
@@ -8486,6 +8584,10 @@ static const struct hda_fixup alc269_fixups[] = {
.type = HDA_FIXUP_FUNC,
.v.func = alc233_fixup_no_audio_jack,
},
+ [ALC287_FIXUP_LEGION_16ACHG6] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = alc287_fixup_legion_16achg6_speakers,
+ },
};
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -8894,6 +8996,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x3827, "Ideapad S740", ALC285_FIXUP_IDEAPAD_S740_COEF),
SND_PCI_QUIRK(0x17aa, 0x3843, "Yoga 9i", ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP),
SND_PCI_QUIRK(0x17aa, 0x3813, "Legion 7i 15IMHG05", ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS),
+ SND_PCI_QUIRK(0x17aa, 0x3847, "Legion 7 16ACHG6", ALC287_FIXUP_LEGION_16ACHG6),
SND_PCI_QUIRK(0x17aa, 0x3852, "Lenovo Yoga 7 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS),
SND_PCI_QUIRK(0x17aa, 0x3853, "Lenovo Yoga 7 15ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS),
SND_PCI_QUIRK(0x17aa, 0x3819, "Lenovo 13s Gen2 ITL", ALC287_FIXUP_13S_GEN2_SPEAKERS),
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (9 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
@ 2021-11-23 16:31 ` Lucas Tanure
2021-11-23 17:05 ` Hans de Goede
2021-11-24 17:36 ` (subset) [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Mark Brown
11 siblings, 1 reply; 28+ messages in thread
From: Lucas Tanure @ 2021-11-23 16:31 UTC (permalink / raw)
To: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel, Lucas Tanure
The ACPI device with CLSA0100 is a sound card with multiple
instances of CS35L41.
We add an ID to the I2C multi instantiate list to enumerate
all I2C slaves correctly.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
drivers/acpi/scan.c | 1 +
drivers/platform/x86/i2c-multi-instantiate.c | 7 +++++++
2 files changed, 8 insertions(+)
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 2c80765670bc..16827a33e93b 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1708,6 +1708,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
{"BSG2150", },
{"INT33FE", },
{"INT3515", },
+ {"CLSA0100", },
{}
};
diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
index 4956a1df5b90..ed25a0adc656 100644
--- a/drivers/platform/x86/i2c-multi-instantiate.c
+++ b/drivers/platform/x86/i2c-multi-instantiate.c
@@ -147,6 +147,12 @@ static const struct i2c_inst_data int3515_data[] = {
{}
};
+static const struct i2c_inst_data clsa0100_data[] = {
+ { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
+ { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
+ {}
+};
+
/*
* Note new device-ids must also be added to i2c_multi_instantiate_ids in
* drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
@@ -155,6 +161,7 @@ static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
{ "BSG1160", (unsigned long)bsg1160_data },
{ "BSG2150", (unsigned long)bsg2150_data },
{ "INT3515", (unsigned long)int3515_data },
+ { "CLSA0100", (unsigned long)clsa0100_data },
{ }
};
MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
--
2.34.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
@ 2021-11-23 16:52 ` Takashi Iwai
2021-11-23 16:59 ` Pierre-Louis Bossart
2021-11-23 17:15 ` Mark Brown
2 siblings, 0 replies; 28+ messages in thread
From: Takashi Iwai @ 2021-11-23 16:52 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov, Jeremy Szu, Hui Wang, Werner Sembach,
Chris Chiu, Cameron Berkenpas, Sami Loone, Elia Devito,
Srinivas Kandagatla, Jack Yu, Arnd Bergmann, Lars-Peter Clausen,
Alexandre Belloni, alsa-devel, linux-acpi, patches,
platform-driver-x86, linux-kernel
On Tue, 23 Nov 2021 17:31:48 +0100,
Lucas Tanure wrote:
>
> --- a/sound/pci/hda/Makefile
> +++ b/sound/pci/hda/Makefile
> @@ -13,25 +13,27 @@ snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += hda_beep.o
> CFLAGS_hda_controller.o := -I$(src)
> CFLAGS_hda_intel.o := -I$(src)
>
> -snd-hda-codec-generic-objs := hda_generic.o
> -snd-hda-codec-realtek-objs := patch_realtek.o
> -snd-hda-codec-cmedia-objs := patch_cmedia.o
> -snd-hda-codec-analog-objs := patch_analog.o
> -snd-hda-codec-idt-objs := patch_sigmatel.o
> -snd-hda-codec-si3054-objs := patch_si3054.o
> -snd-hda-codec-cirrus-objs := patch_cirrus.o
> -snd-hda-codec-cs8409-objs := patch_cs8409.o patch_cs8409-tables.o
> -snd-hda-codec-ca0110-objs := patch_ca0110.o
> -snd-hda-codec-ca0132-objs := patch_ca0132.o
> -snd-hda-codec-conexant-objs := patch_conexant.o
> -snd-hda-codec-via-objs := patch_via.o
> -snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
> +snd-hda-codec-generic-objs := hda_generic.o
You don't need to change other lines because of the newly added driver
below...
> +snd-hda-codec-cs35l41-i2c-objs := cs35l41_hda_i2c.o cs35l41_hda.o ../../soc/codecs/cs35l41-lib.o
Linking the object in a different level of directory is too ugly and
would be problematic if multiple drivers want the cs35l41-lib stuff.
IMO, it's better to make symbols in cs35l41-lib exported and select
the corresponding Kconfig from HD-audio driver.
And, snd-hda-codec-cs35l41-i2c is not really a codec driver. It's
rather some bridge for i2c over HD-audio. So, better to avoid
snd-hda-codec-* but have some different name. Otherwise people may
misunderstand.
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
(snip)
> @@ -6497,6 +6502,98 @@ static void alc287_fixup_legion_15imhg05_speakers(struct hda_codec *codec,
> }
> }
>
> +static int comp_match_dev_name(struct device *dev, void *data)
> +{
> + if (strcmp(dev_name(dev), data) == 0)
> + return 1;
> +
> + return 0;
> +}
> +
> +static int find_comp_by_dev_name(struct alc_spec *spec, const char *name)
> +{
> + int i;
> +
> + for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
> + if (strcmp(spec->comps[i].name, name) == 0)
> + return i;
> + }
> +
> + return -ENODEV;
> +}
> +
> +static int comp_bind(struct device *dev)
> +{
> + struct hda_codec *codec = dev_to_hda_codec(dev);
> + struct alc_spec *spec = codec->spec;
> +
> + return component_bind_all(dev, spec->comps);
> +}
> +
> +static void comp_unbind(struct device *dev)
> +{
> + struct hda_codec *codec = dev_to_hda_codec(dev);
> + struct alc_spec *spec = codec->spec;
> +
> + component_unbind_all(dev, spec->comps);
> +}
> +
> +static const struct component_master_ops comp_master_ops = {
> + .bind = comp_bind,
> + .unbind = comp_unbind,
> +};
> +
> +void alc287_legion_16achg6_playback_hook(struct hda_pcm_stream *hinfo, struct hda_codec *codec,
> + struct snd_pcm_substream *sub, int action)
> +{
> + struct alc_spec *spec = codec->spec;
> + unsigned int rx_slot;
> + int i = 0;
> +
> + switch (action) {
> + case HDA_GEN_PCM_ACT_PREPARE:
> + rx_slot = 0;
> + i = find_comp_by_dev_name(spec, "i2c-CLSA0100:00-cs35l41-hda.0");
> + if (i >= 0)
> + spec->comps[i].set_channel_map(spec->comps[i].dev, 0, NULL, 1, &rx_slot);
> +
> + rx_slot = 1;
> + i = find_comp_by_dev_name(spec, "i2c-CLSA0100:00-cs35l41-hda.1");
> + if (i >= 0)
> + spec->comps[i].set_channel_map(spec->comps[i].dev, 0, NULL, 1, &rx_slot);
> + break;
> + }
> +
> + for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
> + if (spec->comps[i].dev)
> + spec->comps[i].playback_hook(spec->comps[i].dev, action);
> + }
> +
> +
> +}
> +
> +static void alc287_fixup_legion_16achg6_speakers(struct hda_codec *codec,
> + const struct hda_fixup *fix, int action)
> +{
> + struct device *dev = hda_codec_dev(codec);
> + struct alc_spec *spec = codec->spec;
> + int ret;
> +
> + switch (action) {
> + case HDA_FIXUP_ACT_PRE_PROBE:
> + component_match_add(dev, &spec->match, comp_match_dev_name,
> + "i2c-CLSA0100:00-cs35l41-hda.0");
> + component_match_add(dev, &spec->match, comp_match_dev_name,
> + "i2c-CLSA0100:00-cs35l41-hda.1");
> + ret = component_master_add_with_match(dev, &comp_master_ops, spec->match);
> + if (ret)
> + codec_err(codec, "Fail to register component aggregator %d\n", ret);
> + else
> + spec->gen.pcm_playback_hook = alc287_legion_16achg6_playback_hook;
> + break;
> + }
> +}
> +
Those are needed only if the new cs35l41 stuff is enabled, so they can
be wrapped with #if IS_REACHABLE(xxx).
thanks,
Takashi
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
2021-11-23 16:52 ` Takashi Iwai
@ 2021-11-23 16:59 ` Pierre-Louis Bossart
2021-11-23 17:06 ` tanureal
2021-11-23 17:15 ` Mark Brown
2 siblings, 1 reply; 28+ messages in thread
From: Pierre-Louis Bossart @ 2021-11-23 16:59 UTC (permalink / raw)
To: Lucas Tanure, Rafael J . Wysocki, Len Brown, Hans de Goede,
Mark Gross, Liam Girdwood, Jaroslav Kysela, Mark Brown,
Takashi Iwai, Kailang Yang, Shuming Fan, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
> +#ifdef CONFIG_ACPI
> +static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
> + {"CLSA0100", 0 },
I could be wrong but this doesn't look like a legit ACPI _HID?
Cirrus Logic can use 'CIR', "CLI", or 'CSC' PNP ID, or an PCI ID.
in the past you used
+#ifdef CONFIG_ACPI
+static const struct acpi_device_id cs35l41_acpi_match[] = {
+ { "CSC3541", 0 }, /* Cirrus Logic PnP ID + part ID */
+ {},
+};
+MODULE_DEVICE_TABLE(acpi, cs35l41_acpi_match);
+#endif
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes
2021-11-23 16:31 ` [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes Lucas Tanure
@ 2021-11-23 17:05 ` Hans de Goede
2021-11-23 17:11 ` Lucas tanure
0 siblings, 1 reply; 28+ messages in thread
From: Hans de Goede @ 2021-11-23 17:05 UTC (permalink / raw)
To: Lucas Tanure, Rafael J . Wysocki, Len Brown, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
Hi Lucas,
On 11/23/21 17:31, Lucas Tanure wrote:
> The ACPI device with CLSA0100 is a sound card with multiple
> instances of CS35L41.
>
> We add an ID to the I2C multi instantiate list to enumerate
> all I2C slaves correctly.
>
> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
> ---
> drivers/acpi/scan.c | 1 +
> drivers/platform/x86/i2c-multi-instantiate.c | 7 +++++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 2c80765670bc..16827a33e93b 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -1708,6 +1708,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
> {"BSG2150", },
> {"INT33FE", },
> {"INT3515", },
> + {"CLSA0100", },
> {}
> };
>
> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
> index 4956a1df5b90..ed25a0adc656 100644
> --- a/drivers/platform/x86/i2c-multi-instantiate.c
> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
> @@ -147,6 +147,12 @@ static const struct i2c_inst_data int3515_data[] = {
> {}
> };
>
> +static const struct i2c_inst_data clsa0100_data[] = {
> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
This suggests that both amplifiers are using the same GPIO pin as shared
IRQ, is that correct ? Can you share an acpidump of the laptop's DSDT tables ?
Regards,
Hans
> + {}
> +};
> +
> /*
> * Note new device-ids must also be added to i2c_multi_instantiate_ids in
> * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
> @@ -155,6 +161,7 @@ static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
> { "BSG1160", (unsigned long)bsg1160_data },
> { "BSG2150", (unsigned long)bsg2150_data },
> { "INT3515", (unsigned long)int3515_data },
> + { "CLSA0100", (unsigned long)clsa0100_data },
> { }
> };
> MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 16:59 ` Pierre-Louis Bossart
@ 2021-11-23 17:06 ` tanureal
2021-11-23 17:16 ` Pierre-Louis Bossart
0 siblings, 1 reply; 28+ messages in thread
From: tanureal @ 2021-11-23 17:06 UTC (permalink / raw)
To: Pierre-Louis Bossart, Rafael J.Wysocki, Len Brown, Hans de Goede,
Mark Gross, Liam Girdwood, Jaroslav Kysela, Mark Brown,
Takashi Iwai, Kailang Yang, Shuming Fan, David Rhodes,
Vitaly Rodionov, Jeremy Szu, Hui Wang, Werner Sembach,
Chris Chiu, Cameron Berkenpas, Sami Loone, Elia Devito,
Srinivas Kandagatla, Jack Yu, Arnd Bergmann, Lars-Peter Clausen,
Alexandre Belloni, alsa-devel, linux-acpi, patches,
platform-driver-x86, linux-kernel
On 11/23/21 4:59 PM, Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> wrote:
>
> > +#ifdef CONFIG_ACPI
> > +static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
> > + {"CLSA0100", 0 },
>
> I could be wrong but this doesn't look like a legit ACPI _HID?
>
> Cirrus Logic can use 'CIR', "CLI", or 'CSC' PNP ID, or an PCI ID.
>
> in the past you used
>
> +#ifdef CONFIG_ACPI
> +static const struct acpi_device_id cs35l41_acpi_match[] = {
> + { "CSC3541", 0 }, /* Cirrus Logic PnP ID + part ID */
> + {},
> +};
> +MODULE_DEVICE_TABLE(acpi, cs35l41_acpi_match);
> +#endif
>
>
>
This ACPI _HID is already released, there is nothing I can do about it.
Future devices will use 'CSC' PnP ID.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes
2021-11-23 17:05 ` Hans de Goede
@ 2021-11-23 17:11 ` Lucas tanure
2021-11-23 18:35 ` Hans de Goede
0 siblings, 1 reply; 28+ messages in thread
From: Lucas tanure @ 2021-11-23 17:11 UTC (permalink / raw)
To: Hans de Goede, Rafael J . Wysocki, Len Brown, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2189 bytes --]
On 11/23/21 17:05, Hans de Goede wrote:
> Hi Lucas,
>
> On 11/23/21 17:31, Lucas Tanure wrote:
>> The ACPI device with CLSA0100 is a sound card with multiple
>> instances of CS35L41.
>>
>> We add an ID to the I2C multi instantiate list to enumerate
>> all I2C slaves correctly.
>>
>> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
>> ---
>> drivers/acpi/scan.c | 1 +
>> drivers/platform/x86/i2c-multi-instantiate.c | 7 +++++++
>> 2 files changed, 8 insertions(+)
>>
>> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
>> index 2c80765670bc..16827a33e93b 100644
>> --- a/drivers/acpi/scan.c
>> +++ b/drivers/acpi/scan.c
>> @@ -1708,6 +1708,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
>> {"BSG2150", },
>> {"INT33FE", },
>> {"INT3515", },
>> + {"CLSA0100", },
>> {}
>> };
>>
>> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
>> index 4956a1df5b90..ed25a0adc656 100644
>> --- a/drivers/platform/x86/i2c-multi-instantiate.c
>> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
>> @@ -147,6 +147,12 @@ static const struct i2c_inst_data int3515_data[] = {
>> {}
>> };
>>
>> +static const struct i2c_inst_data clsa0100_data[] = {
>> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>
> This suggests that both amplifiers are using the same GPIO pin as shared
> IRQ, is that correct ? Can you share an acpidump of the laptop's DSDT tables ?
>
> Regards,
>
> Hans
>
DSDT attached.
Yes, both amps share the same IRQ gpio.
>
>
>
>> + {}
>> +};
>> +
>> /*
>> * Note new device-ids must also be added to i2c_multi_instantiate_ids in
>> * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
>> @@ -155,6 +161,7 @@ static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
>> { "BSG1160", (unsigned long)bsg1160_data },
>> { "BSG2150", (unsigned long)bsg2150_data },
>> { "INT3515", (unsigned long)int3515_data },
>> + { "CLSA0100", (unsigned long)clsa0100_data },
>> { }
>> };
>> MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
>>
>
[-- Attachment #2: dsdt.dsl --]
[-- Type: text/x-dsl, Size: 1156776 bytes --]
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20210930 (64-bit version)
* Copyright (c) 2000 - 2021 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of dsdt.dat, Wed Nov 17 12:32:31 2021
*
* Original Table Header:
* Signature "DSDT"
* Length 0x0001901B (102427)
* Revision 0x01 **** 32-bit table (V1), no 64-bit math support
* Checksum 0x05
* OEM ID "LENOVO"
* OEM Table ID "CB-01 "
* OEM Revision 0x00000001 (1)
* Compiler ID "ACPI"
* Compiler Version 0x00040000 (262144)
*/
DefinitionBlock ("", "DSDT", 1, "LENOVO", "CB-01 ", 0x00000001)
{
/*
* iASL Warning: There were 10 external control methods found during
* disassembly, but only 0 were resolved (10 unresolved). Additional
* ACPI tables may be required to properly disassemble the code. This
* resulting disassembler output file may not compile because the
* disassembler did not know how many arguments to assign to the
* unresolved methods. Note: SSDTs can be dynamically loaded at
* runtime and may or may not be available via the host OS.
*
* To specify the tables needed to resolve external control method
* references, the -e option can be used to specify the filenames.
* Example iASL invocations:
* iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
* iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
* iasl -e ssdt*.aml -d dsdt.aml
*
* In addition, the -fe option can be used to specify a file containing
* control method external declarations with the associated method
* argument counts. Each line of the file must be of the form:
* External (<method pathname>, MethodObj, <argument count>)
* Invocation:
* iasl -fe refs.txt -d dsdt.aml
*
* The following methods were unresolved and many not compile properly
* because the disassembler had to guess at the number of arguments
* required for each:
*/
External (_SB_.ALIB, MethodObj) // Warning: Unknown method, guessing 2 arguments
External (_SB_.APTS, MethodObj) // Warning: Unknown method, guessing 3 arguments
External (_SB_.AWAK, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (_SB_.NPCF, UnknownObj)
External (_SB_.PCI0.GPP0.PEGP, UnknownObj)
External (_SB_.PCI0.GPP0.PEGP.EDP0, UnknownObj)
External (_SB_.TPM2.PTS_, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (AFN4, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (AFN7, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (ALIB, MethodObj) // Warning: Unknown method, guessing 2 arguments
External (M009, UnknownObj)
External (M010, MethodObj) // Warning: Unknown method, guessing 2 arguments
External (MPTS, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (MWAK, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (NPCF, UnknownObj)
OperationRegion (DBG0, SystemIO, 0x80, One)
Field (DBG0, ByteAcc, NoLock, Preserve)
{
IO80, 8
}
OperationRegion (DBG1, SystemIO, 0x80, 0x02)
Field (DBG1, WordAcc, NoLock, Preserve)
{
P80H, 16
}
OperationRegion (ACMS, SystemIO, 0x72, 0x02)
Field (ACMS, ByteAcc, NoLock, Preserve)
{
ACMX, 8,
ACMA, 8
}
IndexField (ACMX, ACMA, ByteAcc, NoLock, Preserve)
{
Offset (0xB9),
IMEN, 8
}
OperationRegion (PSMI, SystemIO, 0xB0, 0x02)
Field (PSMI, ByteAcc, NoLock, Preserve)
{
APMC, 8,
APMD, 8
}
OperationRegion (PMRG, SystemMemory, 0xFED80300, 0x0100)
Field (PMRG, AnyAcc, NoLock, Preserve)
{
, 6,
HPEN, 1,
Offset (0x60),
P1EB, 16,
Offset (0xF0),
, 3,
RSTU, 1
}
OperationRegion (GSMG, SystemMemory, 0xFED81500, 0x03FF)
Field (GSMG, AnyAcc, NoLock, Preserve)
{
Offset (0x5C),
Offset (0x5E),
GS23, 1,
, 5,
GV23, 1,
GE23, 1,
Offset (0xA0),
Offset (0xA2),
GS40, 1,
, 5,
GV40, 1,
GE40, 1
}
OperationRegion (GSMM, SystemMemory, 0xFED80000, 0x1000)
Field (GSMM, AnyAcc, NoLock, Preserve)
{
Offset (0x288),
, 1,
CLPS, 1,
Offset (0x2B0),
, 2,
SLPS, 2
}
OperationRegion (PMI2, SystemMemory, 0xFED80300, 0x0100)
Field (PMI2, AnyAcc, NoLock, Preserve)
{
Offset (0xBB),
, 6,
PWDE, 1,
Offset (0xBC)
}
OperationRegion (P1E0, SystemIO, P1EB, 0x04)
Field (P1E0, ByteAcc, NoLock, Preserve)
{
, 14,
PEWS, 1,
WSTA, 1,
, 14,
PEWD, 1
}
OperationRegion (IOCC, SystemIO, 0x0400, 0x80)
Field (IOCC, ByteAcc, NoLock, Preserve)
{
Offset (0x01),
, 2,
RTCS, 1
}
Name (PRWP, Package (0x02)
{
Zero,
Zero
})
Method (GPRW, 2, NotSerialized)
{
PRWP [Zero] = Arg0
PRWP [One] = Arg1
If ((DAS3 == Zero))
{
If ((Arg1 <= 0x03))
{
PRWP [One] = Zero
}
}
Return (PRWP) /* \PRWP */
}
Method (SPTS, 1, NotSerialized)
{
If ((Arg0 == 0x03))
{
RSTU = Zero
}
CLPS = One
SLPS = One
PEWS = PEWS /* \PEWS */
}
Method (SWAK, 1, NotSerialized)
{
If ((Arg0 == 0x03))
{
RSTU = One
}
PEWS = PEWS /* \PEWS */
PEWD = Zero
}
Method (TPST, 1, Serialized)
{
Local0 = (Arg0 + 0xB0000000)
OperationRegion (VARM, SystemIO, 0x80, 0x04)
Field (VARM, DWordAcc, NoLock, Preserve)
{
VARR, 32
}
VARR = Local0
}
OperationRegion (GNVS, SystemMemory, 0xCDF3BA98, 0x0000018B)
Field (GNVS, AnyAcc, NoLock, Preserve)
{
SMIF, 8,
PRM0, 8,
PRM1, 8,
BRTL, 8,
TLST, 8,
IGDS, 8,
LCDA, 16,
CSTE, 16,
NSTE, 16,
CADL, 16,
PADL, 16,
LIDS, 8,
PWRS, 8,
BVAL, 32,
ADDL, 16,
BCMD, 8,
SBFN, 8,
DID, 32,
INFO, 2048,
TOML, 8,
TOMH, 8,
CEBP, 8,
C0LS, 8,
C1LS, 8,
C0HS, 8,
C1HS, 8,
ROMS, 32,
MUXF, 8,
PDDN, 8,
CNSB, 8,
RDHW, 8,
DAS3, 8,
TNBH, 8,
TCP0, 8,
TCP1, 8,
ATNB, 8,
PCP0, 8,
PCP1, 8,
PWMN, 8,
LPTY, 8,
M92D, 8,
WKPM, 8,
ALST, 8,
AFUC, 8,
EXUS, 8,
GV0E, 8,
WLSH, 8,
TSSS, 8,
AOZP, 8,
TZFG, 8,
BPS0, 8,
NAPC, 8,
PCBA, 32,
PCBL, 32,
WLAN, 8,
BLTH, 8,
GPSS, 8,
NFCS, 8,
SBTY, 8,
BDID, 16,
MWTT, 8,
ACPM, 8,
KBCS, 8,
ACEC, 8,
DPTC, 8,
ECTL, 8,
MM64, 8,
HMB1, 64,
HMB2, 64,
HMM1, 64,
HMM2, 64,
HML1, 64,
HML2, 64,
WOVS, 8,
TCNT, 8,
NPWD, 8
}
OperationRegion (OGNS, SystemMemory, 0xCDF3BF18, 0x0000000C)
Field (OGNS, AnyAcc, Lock, Preserve)
{
OG00, 8,
OG01, 8,
M2WL, 8,
THPN, 8,
PBAR, 8,
THPD, 8,
DTEN, 8,
SDMO, 8,
TBEN, 8,
TBNH, 8,
RV2I, 8,
ISDS, 8
}
Method (SCMP, 2, NotSerialized)
{
Name (STG1, Buffer (0x50){})
Name (STG2, Buffer (0x50){})
STG1 = Arg0
STG2 = Arg1
If ((SizeOf (Arg0) != SizeOf (Arg1)))
{
Return (Zero)
}
Local0 = Zero
While ((Local0 < SizeOf (Arg0)))
{
If ((DerefOf (STG1 [Local0]) != DerefOf (STG2 [Local0]
)))
{
Return (Zero)
}
Local0++
}
Return (One)
}
Name (WNOS, Zero)
Name (MYOS, Zero)
Name (HTTS, Zero)
Name (OSTB, Ones)
Name (TPOS, Zero)
Name (LINX, Zero)
Name (OSSP, Zero)
Method (SEQL, 2, Serialized)
{
Local0 = SizeOf (Arg0)
Local1 = SizeOf (Arg1)
If ((Local0 != Local1))
{
Return (Zero)
}
Name (BUF0, Buffer (Local0){})
BUF0 = Arg0
Name (BUF1, Buffer (Local0){})
BUF1 = Arg1
Local2 = Zero
While ((Local2 < Local0))
{
Local3 = DerefOf (BUF0 [Local2])
Local4 = DerefOf (BUF1 [Local2])
If ((Local3 != Local4))
{
Return (Zero)
}
Local2++
}
Return (One)
}
Method (OSTP, 0, NotSerialized)
{
If ((OSTB == Ones))
{
If (CondRefOf (\_OSI, Local0))
{
OSTB = Zero
TPOS = Zero
If (_OSI ("Windows 2001"))
{
OSTB = 0x08
TPOS = 0x08
}
If (_OSI ("Windows 2001.1"))
{
OSTB = 0x20
TPOS = 0x20
}
If (_OSI ("Windows 2001 SP1"))
{
OSTB = 0x10
TPOS = 0x10
}
If (_OSI ("Windows 2001 SP2"))
{
OSTB = 0x11
TPOS = 0x11
}
If (_OSI ("Windows 2001 SP3"))
{
OSTB = 0x12
TPOS = 0x12
}
If (_OSI ("Windows 2006"))
{
OSTB = 0x40
TPOS = 0x40
}
If (_OSI ("Windows 2006 SP1"))
{
OSTB = 0x41
TPOS = 0x41
OSSP = One
}
If (_OSI ("Windows 2009"))
{
OSSP = One
OSTB = 0x50
TPOS = 0x50
}
If (_OSI ("Windows 2012"))
{
OSSP = One
OSTB = 0x60
TPOS = 0x60
}
If (_OSI ("Windows 2013"))
{
OSSP = One
OSTB = 0x61
TPOS = 0x61
}
If (_OSI ("Windows 2015"))
{
OSSP = One
OSTB = 0x70
TPOS = 0x70
}
If (_OSI ("Linux"))
{
LINX = One
OSTB = 0x80
TPOS = 0x80
}
}
ElseIf (CondRefOf (\_OS, Local0))
{
If (SEQL (_OS, "Microsoft Windows"))
{
OSTB = One
TPOS = One
}
ElseIf (SEQL (_OS, "Microsoft WindowsME: Millennium Edition"))
{
OSTB = 0x02
TPOS = 0x02
}
ElseIf (SEQL (_OS, "Microsoft Windows NT"))
{
OSTB = 0x04
TPOS = 0x04
}
Else
{
OSTB = Zero
TPOS = Zero
}
}
Else
{
OSTB = Zero
TPOS = Zero
}
}
Return (OSTB) /* \OSTB */
}
Name (BUFN, Zero)
Name (MBUF, Buffer (0x1000){})
OperationRegion (MDBG, SystemMemory, 0xCDEB3018, 0x00001004)
Field (MDBG, AnyAcc, Lock, Preserve)
{
MDG0, 32768
}
Method (DB2H, 1, Serialized)
{
SHOW (Arg0)
MDGC (0x20)
MDG0 = MBUF /* \MBUF */
}
Method (DW2H, 1, Serialized)
{
Local0 = Arg0
Local1 = (Arg0 >> 0x08)
Local0 &= 0xFF
Local1 &= 0xFF
DB2H (Local1)
BUFN--
DB2H (Local0)
}
Method (DD2H, 1, Serialized)
{
Local0 = Arg0
Local1 = (Arg0 >> 0x10)
Local0 &= 0xFFFF
Local1 &= 0xFFFF
DW2H (Local1)
BUFN--
DW2H (Local0)
}
Method (MBGS, 1, Serialized)
{
Local0 = SizeOf (Arg0)
Name (BUFS, Buffer (Local0){})
BUFS = Arg0
MDGC (0x20)
While (Local0)
{
MDGC (DerefOf (BUFS [(SizeOf (Arg0) - Local0)]))
Local0--
}
MDG0 = MBUF /* \MBUF */
}
Method (MBGH, 1, Serialized)
{
ToHexString (Arg0, Local1)
Local0 = SizeOf (Local1)
Name (BUFS, Buffer (Local0){})
BUFS = Local1
MDGC (0x20)
While (Local0)
{
MDGC (DerefOf (BUFS [(SizeOf (Local1) - Local0)]))
Local0--
}
MDG0 = MBUF /* \MBUF */
}
Method (SHOW, 1, Serialized)
{
MDGC (NTOC ((Arg0 >> 0x04)))
MDGC (NTOC (Arg0))
}
Method (LINE, 0, Serialized)
{
Local0 = BUFN /* \BUFN */
Local0 &= 0x0F
While (Local0)
{
MDGC (Zero)
Local0++
Local0 &= 0x0F
}
}
Method (MDGC, 1, Serialized)
{
MBUF [BUFN] = Arg0
BUFN += One
If ((BUFN > 0x0FFF))
{
BUFN &= 0x0FFF
UP_L (One)
}
}
Method (UP_L, 1, Serialized)
{
Local2 = Arg0
Local2 <<= 0x04
MOVE (Local2)
Local3 = (0x1000 - Local2)
While (Local2)
{
MBUF [Local3] = Zero
Local3++
Local2--
}
}
Method (MOVE, 1, Serialized)
{
Local4 = Arg0
BUFN = Zero
Local5 = (0x1000 - Local4)
While (Local5)
{
Local5--
MBUF [BUFN] = DerefOf (MBUF [Local4])
BUFN++
Local4++
}
}
Method (NTOC, 1, Serialized)
{
Local0 = (Arg0 & 0x0F)
If ((Local0 < 0x0A))
{
Local0 += 0x30
}
Else
{
Local0 += 0x37
}
Return (Local0)
}
Scope (_SB)
{
Device (PLTF)
{
Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Device (C000)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
}
Device (C001)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
}
Device (C002)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
}
Device (C003)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
}
Device (C004)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
}
Device (C005)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x05) // _UID: Unique ID
}
Device (C006)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x06) // _UID: Unique ID
}
Device (C007)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x07) // _UID: Unique ID
}
Device (C008)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x08) // _UID: Unique ID
}
Device (C009)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x09) // _UID: Unique ID
}
Device (C00A)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0A) // _UID: Unique ID
}
Device (C00B)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0B) // _UID: Unique ID
}
Device (C00C)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0C) // _UID: Unique ID
}
Device (C00D)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0D) // _UID: Unique ID
}
Device (C00E)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0E) // _UID: Unique ID
}
Device (C00F)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, 0x0F) // _UID: Unique ID
}
}
}
Name (_S0, Package (0x04) // _S0_: S0 System State
{
Zero,
Zero,
Zero,
Zero
})
If ((DAS3 == One))
{
Name (_S3, Package (0x04) // _S3_: S3 System State
{
0x03,
0x03,
Zero,
Zero
})
}
Name (_S4, Package (0x04) // _S4_: S4 System State
{
0x04,
0x04,
Zero,
Zero
})
Name (_S5, Package (0x04) // _S5_: S5 System State
{
0x05,
0x05,
Zero,
Zero
})
Scope (_GPE)
{
Method (_L08, 0, NotSerialized) // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
{
TPST (0x3908)
If ((TBEN == Zero))
{
Notify (\_SB.PCI0.GPP0, 0x02) // Device Wake
Notify (\_SB.PCI0.GPP1, 0x02) // Device Wake
}
Notify (\_SB.PCI0.GPP5, 0x02) // Device Wake
Notify (\_SB.PCI0.GP17, 0x02) // Device Wake
Notify (\_SB.PCI0.GP18, 0x02) // Device Wake
Notify (\_SB.PWRB, 0x02) // Device Wake
}
Method (_E0B, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF
{
Sleep (0x64)
P80H = 0x0B
Notify (\_SB.PCI0.GPP0.PEGP, 0x81) // Information Change
}
Method (_E0C, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF
{
Sleep (0x64)
P80H = 0x0C
Notify (\_SB.PCI0.GPP0.PEGP, 0x81) // Information Change
}
Method (_E17, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF
{
Sleep (0x64)
P80H = 0x17
Notify (\_SB.PCI0.GPP0.PEGP, 0x81) // Information Change
}
Method (_L19, 0, NotSerialized) // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
{
TPST (0x3919)
Notify (\_SB.PCI0.GP17.XHC0, 0x02) // Device Wake
Notify (\_SB.PCI0.GP17.XHC1, 0x02) // Device Wake
Notify (\_SB.PWRB, 0x02) // Device Wake
}
}
Name (PICM, Zero)
Name (GPIC, Zero)
Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model
{
PICM = Arg0
GPIC = Arg0
If (PICM)
{
\_SB.DSPI ()
If (NAPC)
{
\_SB.PCI0.NAPE ()
}
}
}
Method (_PTS, 1, NotSerialized) // _PTS: Prepare To Sleep
{
SPTS (Arg0)
If ((Arg0 == One))
{
\_SB.S80H (0x51)
}
If ((Arg0 == 0x03))
{
\_SB.S80H (0x53)
SLPS = One
Local1 = 0x40
}
If ((Arg0 == 0x04))
{
\_SB.S80H (0x54)
SLPS = One
RSTU = One
Local1 = 0x80
}
If ((Arg0 == 0x05))
{
\_SB.S80H (0x55)
If ((WKPM == One))
{
PWDE = One
}
BCMD = 0x90
\_SB.BSMI (Zero)
\_SB.GSMI (0x03)
Local1 = 0xC0
}
If (CondRefOf (\_SB.TPM2.PTS))
{
\_SB.TPM2.PTS (Arg0)
}
\_SB.APTS (Arg0, MPTS (Arg0), If ((Arg0 == 0x03))
{
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPC0.EC0.ES3F = One
Release (\_SB.PCI0.LPC0.EC0.LFCM)
}
})
}
Name (FNQ0, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ1, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ2, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x000124F8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ3, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ4, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ6, Package (0x09)
{
Package (0x0D)
{
0x2E,
0x07,
0x06,
0x08,
0x20,
0x22,
0x24,
0x25,
0x26,
0x27,
0x28,
0x2C,
0x03
},
Package (0x0D)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2D00,
0x21,
0x2666,
0xFE8A,
0xFEEC,
0x03C4,
0x4FAD,
0x64
},
Package (0x0D)
{
0xAFC8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2800,
0x21,
0x2666,
0xFE88,
0x040E,
0x0339,
0x000FBE25,
0x64
},
Package (0x0D)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
},
Package (0x0D)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x64
},
Package (0x0D)
{
0x61A8,
0xAFC8,
0xBB80,
0x05,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x60
},
Package (0x0D)
{
0x61A8,
0x927C,
0xBB80,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0x4E20,
0x88B8,
0x9C40,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0xC350,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
}
})
Name (FNQ7, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ8, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ9, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQA, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
Field (ECMS, ByteAcc, Lock, Preserve)
{
INDX, 8,
DATA, 8
}
Method (RECM, 1, Serialized)
{
INDX = Arg0
Return (DATA) /* \DATA */
}
Method (WECM, 2, Serialized)
{
INDX = Arg0
DATA = Arg1
}
Method (FNQR, 1, NotSerialized)
{
Name (XX11, Buffer (0x07){})
CreateWordField (XX11, Zero, SSZE)
CreateByteField (XX11, 0x02, SMUF)
CreateDWordField (XX11, 0x03, SMUD)
SSZE = 0x07
Local0 = 0x08
If ((MCSK == 0x04))
{
If ((GTYP == 0x02))
{
Local6 = FNQ4 /* \FNQ4 */
}
Else
{
Local6 = FNQ3 /* \FNQ3 */
}
}
ElseIf ((MCSK == 0x02))
{
If (((((0x04 == GTYP) || (0x05 == GTYP)) || (0x06 ==
GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ2 /* \FNQ2 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ8 /* \FNQ8 */
}
Else
{
Local6 = FNQ7 /* \FNQ7 */
}
}
ElseIf (((((0x04 == GTYP) || (0x05 == GTYP)) || (
0x06 == GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ1 /* \FNQ1 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ9 /* \FNQ9 */
}
Else
{
Local6 = FNQA /* \FNQA */
}
Local1 = ((Local1 = (Local0 * 0x05)) + 0x02)
Name (BUFF, Buffer (Local1){})
BUFF [Zero] = Local1
BUFF [One] = Zero
Local2 = One
Local3 = Zero
While ((Local3 < Local0))
{
BUFF [Local2 += One] = DerefOf (DerefOf (Local6 [
Zero]) [Local3])
BUFF [Local2 += One] = (DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF00) >> 0x08)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0x00FF0000) >> 0x10)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF000000) >> 0x18)
Local3 += One
}
\_SB.ALIB (0x0C, BUFF)
OperationRegion (CPUP, SystemMemory, 0xFE00D6B0, 0x10)
Field (CPUP, ByteAcc, NoLock, Preserve)
{
CPP1, 16,
CPP2, 16
}
If ((\_SB.PCI0.LPC0.EC0.CAC1 == One))
{
If (((CPP2 != Zero) && (CPP1 != Zero)))
{
SMUF = 0x07
SMUD = CPP2 /* \FNQR.CPP2 */
\_SB.ALIB (0x0C, XX11)
SMUF = 0x05
SMUD = CPP1 /* \FNQR.CPP1 */
\_SB.ALIB (0x0C, XX11)
}
}
}
Method (FNQS, 1, NotSerialized)
{
Local0 = Arg0
Local1 = ((One == Local0) || (0x02 == Local0))
Local2 = ((0x03 == Local0) || (0x04 == Local0))
Local3 = (Local1 || Local2)
If (((0x02 == \_SB.PCI0.LPC0.EC0.ACTY ()) || (0x03 == \_SB.PCI0.LPC0.EC0.ACTY ())))
{
If (Local3)
{
Local0 = 0x05
}
If ((0x06 == Local0))
{
Local0 = 0x07
}
}
If ((LCK0 == Zero))
{
FNQR (Local0)
}
}
Scope (\)
{
Name (S4FG, Zero)
}
Method (_WAK, 1, NotSerialized) // _WAK: Wake
{
SWAK (Arg0)
\_SB.AWAK (Arg0)
If (((Arg0 == 0x03) || (Arg0 == 0x04)))
{
If ((GPIC != Zero))
{
\_SB.DSPI ()
If (NAPC)
{
\_SB.PCI0.NAPE ()
}
}
}
If ((Arg0 == 0x03))
{
\_SB.S80H (0xE3)
}
If ((Arg0 == 0x04))
{
If ((DSMF == 0x02))
{
S4FG = One
}
Else
{
S4FG = Zero
}
\_SB.S80H (0xE4)
}
\_SB.ADP0.ACDC = 0xFF
If ((Arg0 != 0x03))
{
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((\_SB.PCI0.LPC0.EC0.SPMO == 0x02))
{
If ((\_SB.PCI0.LPC0.EC0.ADPT == Zero))
{
FNQS (0x07)
}
Else
{
FNQS (0x06)
}
LTGP = Zero
DTGP = Zero
}
ElseIf ((\_SB.PCI0.LPC0.EC0.SPMO == One))
{
FNQS (One)
LTGP = One
DTGP = One
}
Else
{
If ((\_SB.PCI0.LPC0.EC0.ADPT == Zero))
{
FNQS (0x05)
}
Else
{
FNQS (0x03)
}
LTGP = Zero
DTGP = Zero
}
Release (\_SB.PCI0.LPC0.EC0.LFCM)
}
Notify (\_SB.NPCF, 0xC0) // Hardware-Specific
}
If ((Arg0 == 0x03))
{
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPC0.EC0.ES3F = Zero
Release (\_SB.PCI0.LPC0.EC0.LFCM)
}
}
If ((TPOS == 0x40))
{
Local0 = One
}
If ((TPOS == 0x80))
{
Local0 = 0x02
}
If ((TPOS == 0x50))
{
Local0 = 0x03
}
If ((TPOS == 0x60))
{
Local0 = 0x04
}
If ((TPOS == 0x61))
{
Local0 = 0x05
}
If ((TPOS == 0x70))
{
Local0 = 0x06
}
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPC0.EC0.OSTY = Local0
Release (\_SB.PCI0.LPC0.EC0.LFCM)
}
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((RGBD == One))
{
\_SB.PCI0.LPC0.EC0.RGBS = One
}
Else
{
\_SB.PCI0.LPC0.EC0.RGBS = Zero
}
Release (\_SB.PCI0.LPC0.EC0.LFCM)
}
MWAK (Arg0)
Return (Zero)
}
Scope (_SB)
{
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_BBN, Zero) // _BBN: BIOS Bus Number
Name (_ADR, Zero) // _ADR: Address
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
If ((GPIC != Zero))
{
DSPI ()
If (NAPC)
{
NAPE ()
}
}
OSTP ()
}
Name (SUPP, Zero)
Name (CTRL, Zero)
Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
CreateDWordField (Arg3, 0x04, CDW2)
CreateDWordField (Arg3, 0x08, CDW3)
If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
{
SUPP = CDW2 /* \_SB_.PCI0._OSC.CDW2 */
CTRL = CDW3 /* \_SB_.PCI0._OSC.CDW3 */
If ((TBEN == One))
{
If ((TBNH != Zero))
{
CTRL &= 0xFFFFFFF5
}
Else
{
CTRL &= 0xFFFFFFF4
}
}
If (((SUPP & 0x16) != 0x16))
{
CTRL &= 0x1E
}
CTRL &= 0x1D
If (~(CDW1 & One))
{
If ((CTRL & One)){}
If ((CTRL & 0x04)){}
If ((CTRL & 0x10)){}
}
If ((Arg1 != One))
{
CDW1 |= 0x08
}
If ((CDW3 != CTRL))
{
CDW1 |= 0x10
}
CDW3 = CTRL /* \_SB_.PCI0.CTRL */
Return (Arg3)
}
Else
{
CDW1 |= 0x04
Return (Arg3)
}
}
Method (TOM, 0, NotSerialized)
{
Local0 = (TOML * 0x00010000)
Local1 = (TOMH * 0x01000000)
Local0 += Local1
Return (Local0)
}
Name (CRES, ResourceTemplate ()
{
WordBusNumber (ResourceProducer, MinFixed, MaxFixed, SubDecode,
0x0000, // Granularity
0x0000, // Range Minimum
0x00FF, // Range Maximum
0x0000, // Translation Offset
0x0100, // Length
0x00,, )
WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x0000, // Granularity
0x0000, // Range Minimum
0x0CF7, // Range Maximum
0x0000, // Translation Offset
0x0CF8, // Length
0x00,, , TypeStatic, DenseTranslation)
WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x0000, // Granularity
0x0D00, // Range Minimum
0xFFFF, // Range Maximum
0x0000, // Translation Offset
0xF300, // Length
,, , TypeStatic, DenseTranslation)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x000A0000, // Range Minimum
0x000BFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00020000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadOnly,
0x00000000, // Granularity
0x000C0000, // Range Minimum
0x000C3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadOnly,
0x00000000, // Granularity
0x000C4000, // Range Minimum
0x000C7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadOnly,
0x00000000, // Granularity
0x000C8000, // Range Minimum
0x000CBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadOnly,
0x00000000, // Granularity
0x000CC000, // Range Minimum
0x000CFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x000D0000, // Range Minimum
0x000D3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x000D4000, // Range Minimum
0x000D7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x000D8000, // Range Minimum
0x000DBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x000DC000, // Range Minimum
0x000DFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E0000, // Range Minimum
0x000E3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E4000, // Range Minimum
0x000E7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E8000, // Range Minimum
0x000EBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000EC000, // Range Minimum
0x000EFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0x80000000, // Range Minimum
0xF7FFFFFF, // Range Maximum
0x00000000, // Translation Offset
0x78000000, // Length
0x00,, _Y00, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0xFC000000, // Range Minimum
0xFEAFFFFF, // Range Maximum
0x00000000, // Translation Offset
0x02B00000, // Length
0x00,, _Y01, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0xFED45000, // Range Minimum
0xFED811FF, // Range Maximum
0x00000000, // Translation Offset
0x0003C200, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0xFED81900, // Range Minimum
0xFED81FFF, // Range Maximum
0x00000000, // Translation Offset
0x00000700, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0xFEDC0000, // Range Minimum
0xFEDC0FFF, // Range Maximum
0x00000000, // Translation Offset
0x00001000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, SubDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x00000000, // Granularity
0xFEDC6000, // Range Minimum
0xFEDC6FFF, // Range Maximum
0x00000000, // Translation Offset
0x00001000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
IO (Decode16,
0x0CF8, // Range Minimum
0x0CF8, // Range Maximum
0x01, // Alignment
0x08, // Length
)
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x0000000000000000, // Granularity
0x0000000000000000, // Range Minimum
0x0000000000000000, // Range Maximum
0x0000000000000000, // Translation Offset
0x0000000000000000, // Length
,, _Y02, AddressRangeMemory, TypeStatic)
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x0000000000000000, // Granularity
0x0000000000000000, // Range Minimum
0x0000000000000000, // Range Maximum
0x0000000000000000, // Translation Offset
0x0000000000000000, // Length
,, _Y03, AddressRangeMemory, TypeStatic)
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateDWordField (CRES, \_SB.PCI0._Y00._MIN, BTMN) // _MIN: Minimum Base Address
CreateDWordField (CRES, \_SB.PCI0._Y00._MAX, BTMX) // _MAX: Maximum Base Address
CreateDWordField (CRES, \_SB.PCI0._Y00._LEN, BTLN) // _LEN: Length
CreateDWordField (CRES, \_SB.PCI0._Y01._MIN, BTN1) // _MIN: Minimum Base Address
CreateDWordField (CRES, \_SB.PCI0._Y01._MAX, BTX1) // _MAX: Maximum Base Address
CreateDWordField (CRES, \_SB.PCI0._Y01._LEN, BTL1) // _LEN: Length
BTMN = TOM ()
BTMX = (PCBA - One)
BTLN = (PCBA - BTMN) /* \_SB_.PCI0._CRS.BTMN */
BTN1 = (PCBL + One)
BTL1 = (BTX1 - BTN1) /* \_SB_.PCI0._CRS.BTN1 */
BTL1 += One
If ((MM64 == One))
{
CreateQWordField (CRES, \_SB.PCI0._Y02._MIN, M1MN) // _MIN: Minimum Base Address
CreateQWordField (CRES, \_SB.PCI0._Y02._MAX, M1MX) // _MAX: Maximum Base Address
CreateQWordField (CRES, \_SB.PCI0._Y02._LEN, M1LN) // _LEN: Length
M1MN = HMB1 /* \HMB1 */
M1MX = HMM1 /* \HMM1 */
M1LN = HML1 /* \HML1 */
CreateQWordField (CRES, \_SB.PCI0._Y03._MIN, M2MN) // _MIN: Minimum Base Address
CreateQWordField (CRES, \_SB.PCI0._Y03._MAX, M2MX) // _MAX: Maximum Base Address
CreateQWordField (CRES, \_SB.PCI0._Y03._LEN, M2LN) // _LEN: Length
M2MN = HMB2 /* \HMB2 */
M2MX = HMM2 /* \HMM2 */
M2LN = HML2 /* \HML2 */
}
Return (CRES) /* \_SB_.PCI0.CRES */
}
Device (MEMR)
{
Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */) // _HID: Hardware ID
Name (BAR3, 0xFDE00000)
Name (MEM1, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00000000, // Address Length
_Y04)
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00000000, // Address Length
_Y05)
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00000000, // Address Length
_Y06)
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y04._BAS, MB01) // _BAS: Base Address
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y04._LEN, ML01) // _LEN: Length
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y05._BAS, MB02) // _BAS: Base Address
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y05._LEN, ML02) // _LEN: Length
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y06._BAS, MB03) // _BAS: Base Address
CreateDWordField (MEM1, \_SB.PCI0.MEMR._Y06._LEN, ML03) // _LEN: Length
If (GPIC)
{
MB01 = 0xFEC00000
MB02 = 0xFEE00000
ML01 = 0x1000
If (NAPC)
{
ML01 += 0x1000
}
ML02 = 0x1000
}
If ((BAR3 != 0xFFF00000))
{
MB03 = BAR3 /* \_SB_.PCI0.MEMR.BAR3 */
ML03 = 0x00100000
}
Return (MEM1) /* \_SB_.PCI0.MEMR.MEM1 */
}
}
Mutex (NAPM, 0x00)
Method (NAPE, 0, NotSerialized)
{
Acquire (NAPM, 0xFFFF)
Local0 = (PCBA + 0xB8)
OperationRegion (VARM, SystemMemory, Local0, 0x08)
Field (VARM, DWordAcc, NoLock, Preserve)
{
NAPX, 32,
NAPD, 32
}
Local1 = NAPX /* \_SB_.PCI0.NAPE.NAPX */
NAPX = 0x14300000
Local0 = NAPD /* \_SB_.PCI0.NAPE.NAPD */
Local0 &= 0xFFFFFFEF
NAPD = Local0
NAPX = Local1
Release (NAPM)
}
Name (PR00, Package (0x0E)
{
Package (0x04)
{
0x0001FFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0x0001FFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0x0001FFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0x0002FFFF,
Zero,
LNKE,
Zero
},
Package (0x04)
{
0x0002FFFF,
One,
LNKF,
Zero
},
Package (0x04)
{
0x0002FFFF,
0x02,
LNKG,
Zero
},
Package (0x04)
{
0x0002FFFF,
0x03,
LNKH,
Zero
},
Package (0x04)
{
0x0008FFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0x0008FFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0x0008FFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0x0014FFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0x0014FFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0x0014FFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0x0014FFFF,
0x03,
LNKD,
Zero
}
})
Name (AR00, Package (0x0E)
{
Package (0x04)
{
0x0001FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0001FFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x0001FFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x14
},
Package (0x04)
{
0x0002FFFF,
One,
Zero,
0x15
},
Package (0x04)
{
0x0002FFFF,
0x02,
Zero,
0x16
},
Package (0x04)
{
0x0002FFFF,
0x03,
Zero,
0x17
},
Package (0x04)
{
0x0008FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0008FFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x0008FFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x0014FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0014FFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x0014FFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x0014FFFF,
0x03,
Zero,
0x13
}
})
Name (NR00, Package (0x0E)
{
Package (0x04)
{
0x0001FFFF,
Zero,
Zero,
0x28
},
Package (0x04)
{
0x0001FFFF,
One,
Zero,
0x29
},
Package (0x04)
{
0x0001FFFF,
0x02,
Zero,
0x2A
},
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x24
},
Package (0x04)
{
0x0002FFFF,
One,
Zero,
0x25
},
Package (0x04)
{
0x0002FFFF,
0x02,
Zero,
0x26
},
Package (0x04)
{
0x0002FFFF,
0x03,
Zero,
0x27
},
Package (0x04)
{
0x0008FFFF,
Zero,
Zero,
0x20
},
Package (0x04)
{
0x0008FFFF,
One,
Zero,
0x21
},
Package (0x04)
{
0x0008FFFF,
One,
Zero,
0x22
},
Package (0x04)
{
0x0014FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0014FFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x0014FFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x0014FFFF,
0x03,
Zero,
0x13
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR00) /* \_SB_.PCI0.NR00 */
}
Else
{
Return (AR00) /* \_SB_.PCI0.AR00 */
}
}
Else
{
Return (PR00) /* \_SB_.PCI0.PR00 */
}
}
Device (GPP0)
{
Name (_ADR, 0x00010001) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x08, 0x03))
}
Else
{
Return (GPRW (0x08, Zero))
}
}
Name (PR01, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR01, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Name (NR01, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x18
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x19
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x1A
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x1B
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR01) /* \_SB_.PCI0.GPP0.NR01 */
}
Else
{
Return (AR01) /* \_SB_.PCI0.GPP0.AR01 */
}
}
Else
{
Return (PR01) /* \_SB_.PCI0.GPP0.PR01 */
}
}
}
Device (GPP1)
{
Name (_ADR, 0x00010002) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x08, 0x03))
}
Else
{
Return (GPRW (0x08, Zero))
}
}
Name (PR02, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKE,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKF,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKG,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKH,
Zero
}
})
Name (AR02, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x14
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x15
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x16
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x17
}
})
Name (NR02, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x1C
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x1D
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x1E
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x1F
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR02) /* \_SB_.PCI0.GPP1.NR02 */
}
Else
{
Return (AR02) /* \_SB_.PCI0.GPP1.AR02 */
}
}
Else
{
Return (PR02) /* \_SB_.PCI0.GPP1.PR02 */
}
}
Device (DEV0)
{
Name (_ADR, Zero) // _ADR: Address
Method (_RMV, 0, NotSerialized) // _RMV: Removal Status
{
Return (Zero)
}
}
Device (DEV1)
{
Name (_ADR, One) // _ADR: Address
Method (_RMV, 0, NotSerialized) // _RMV: Removal Status
{
Return (Zero)
}
}
}
Device (GPP2)
{
Name (_ADR, 0x00010003) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x0D, 0x03))
}
Else
{
Return (GPRW (0x0D, Zero))
}
}
Name (PR03, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR03, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Name (NR03, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x20
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x21
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x22
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x23
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR03) /* \_SB_.PCI0.GPP2.NR03 */
}
Else
{
Return (AR03) /* \_SB_.PCI0.GPP2.AR03 */
}
}
Else
{
Return (PR03) /* \_SB_.PCI0.GPP2.PR03 */
}
}
Device (WWAN)
{
Name (_ADR, Zero) // _ADR: Address
}
}
Device (GPP3)
{
Name (_ADR, 0x00020001) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x0F, 0x03))
}
Else
{
Return (GPRW (0x0F, Zero))
}
}
Name (PR04, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKE,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKF,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKG,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKH,
Zero
}
})
Name (AR04, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x14
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x15
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x16
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x17
}
})
Name (NR04, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x24
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x25
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x26
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x27
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR04) /* \_SB_.PCI0.GPP3.NR04 */
}
Else
{
Return (AR04) /* \_SB_.PCI0.GPP3.AR04 */
}
}
Else
{
Return (PR04) /* \_SB_.PCI0.GPP3.PR04 */
}
}
Device (RTL8)
{
Name (_ADR, Zero) // _ADR: Address
}
}
Device (GPP4)
{
Name (_ADR, 0x00020002) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x0E, 0x03))
}
Else
{
Return (GPRW (0x0E, Zero))
}
}
Name (PR05, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR05, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Name (NR05, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x28
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x29
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x2A
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x2B
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR05) /* \_SB_.PCI0.GPP4.NR05 */
}
Else
{
Return (AR05) /* \_SB_.PCI0.GPP4.AR05 */
}
}
Else
{
Return (PR05) /* \_SB_.PCI0.GPP4.PR05 */
}
}
Device (WL00)
{
Name (_ADR, Zero) // _ADR: Address
Method (MTDS, 0, Serialized)
{
Name (MTDS, Package (0x12)
{
0x4D,
0x54,
0x44,
0x53,
One,
0x02,
One,
0x24,
0x16,
0x16,
0x20,
0x20,
0x02,
0x24,
0x16,
0x16,
0x20,
0x20
})
Return (MTDS) /* \_SB_.PCI0.GPP4.WL00.MTDS.MTDS */
}
Method (MTGS, 0, Serialized)
{
Name (MTGS, Package (0x15)
{
0x4D,
0x54,
0x47,
0x53,
One,
0x03,
One,
0xFF,
Zero,
0xFF,
Zero,
0x02,
0xFF,
Zero,
0xFF,
Zero,
0x03,
0xFF,
Zero,
0xFF,
Zero
})
Return (MTGS) /* \_SB_.PCI0.GPP4.WL00.MTGS.MTGS */
}
Method (MTCC, 0, Serialized)
{
Name (MTCC, Package (0x07)
{
0x4D,
0x54,
0x43,
0x43,
Zero,
0x55,
0x53
})
Return (MTCC) /* \_SB_.PCI0.GPP4.WL00.MTCC.MTCC */
}
OperationRegion (WLPC, PCI_Config, Zero, 0x90)
Field (WLPC, ByteAcc, NoLock, Preserve)
{
WVID, 16,
Offset (0x44),
ICAP, 32,
ICTR, 16,
Offset (0x84),
MCAP, 32,
MCTR, 16
}
PowerResource (WRST, 0x05, 0x0000)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (One)
}
Method (_ON, 0, NotSerialized) // _ON_: Power On
{
}
Method (_OFF, 0, NotSerialized) // _OFF: Power Off
{
}
Method (_RST, 0, NotSerialized) // _RST: Device Reset
{
If ((WVID == 0x14C3))
{
If ((MCAP & 0x10000000))
{
Local0 = MCTR /* \_SB_.PCI0.GPP4.WL00.MCTR */
Local0 |= 0x8000
MCTR = Local0
}
}
ElseIf ((ICAP & 0x10000000))
{
Local0 = ICTR /* \_SB_.PCI0.GPP4.WL00.ICTR */
Local0 |= 0x8000
ICTR = Local0
}
}
}
Method (_PRR, 0, NotSerialized) // _PRR: Power Resource for Reset
{
Return (Package (0x01)
{
WRST
})
}
}
}
Device (GPP5)
{
Name (_ADR, 0x00020003) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x08, 0x03))
}
Else
{
Return (GPRW (0x08, Zero))
}
}
Name (PR06, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKE,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKF,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKG,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKH,
Zero
}
})
Name (AR06, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x14
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x15
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x16
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x17
}
})
Name (NR06, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x2C
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x2D
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x2E
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x2F
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR06) /* \_SB_.PCI0.GPP5.NR06 */
}
Else
{
Return (AR06) /* \_SB_.PCI0.GPP5.AR06 */
}
}
Else
{
Return (PR06) /* \_SB_.PCI0.GPP5.PR06 */
}
}
Device (DEV0)
{
Name (_ADR, Zero) // _ADR: Address
}
}
Device (GPP6)
{
Name (_ADR, 0x00020004) // _ADR: Address
Name (PR07, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR07, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Name (NR07, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x30
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x31
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x32
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x33
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR07) /* \_SB_.PCI0.GPP6.NR07 */
}
Else
{
Return (AR07) /* \_SB_.PCI0.GPP6.AR07 */
}
}
Else
{
Return (PR07) /* \_SB_.PCI0.GPP6.PR07 */
}
}
}
Device (GP17)
{
Name (_ADR, 0x00080001) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x19, 0x03))
}
Else
{
Return (GPRW (0x19, Zero))
}
}
Name (PR17, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKG,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKH,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKE,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKF,
Zero
}
})
Name (AR17, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x17
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x14
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x15
}
})
Name (NR17, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x26
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x27
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x24
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x25
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR17) /* \_SB_.PCI0.GP17.NR17 */
}
Else
{
Return (AR17) /* \_SB_.PCI0.GP17.AR17 */
}
}
Else
{
Return (PR17) /* \_SB_.PCI0.GP17.PR17 */
}
}
Device (VGA)
{
Name (_ADR, Zero) // _ADR: Address
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
Name (DOSA, Zero)
Method (_DOS, 1, NotSerialized) // _DOS: Disable Output Switching
{
DOSA = Arg0
}
Method (_DOD, 0, NotSerialized) // _DOD: Display Output Devices
{
Return (Package (0x07)
{
0x00010110,
0x00010210,
0x00010220,
0x00010230,
0x00010240,
0x00031000,
0x00032000
})
}
Device (LCD)
{
Name (_ADR, 0x0110) // _ADR: Address
Name (BCLB, Package (0x34)
{
0x5A,
0x3C,
0x02,
0x04,
0x06,
0x08,
0x0A,
0x0C,
0x0E,
0x10,
0x12,
0x14,
0x16,
0x18,
0x1A,
0x1C,
0x1E,
0x20,
0x22,
0x24,
0x26,
0x28,
0x2A,
0x2C,
0x2E,
0x30,
0x32,
0x34,
0x36,
0x38,
0x3A,
0x3C,
0x3E,
0x40,
0x42,
0x44,
0x46,
0x48,
0x4A,
0x4C,
0x4E,
0x50,
0x52,
0x54,
0x56,
0x58,
0x5A,
0x5C,
0x5E,
0x60,
0x62,
0x64
})
Method (_BCL, 0, NotSerialized) // _BCL: Brightness Control Levels
{
Return (BCLB) /* \_SB_.PCI0.GP17.VGA_.LCD_.BCLB */
}
Method (_BCM, 1, NotSerialized) // _BCM: Brightness Control Method
{
Divide ((Arg0 * 0xFF), 0x64, Local1, Local0)
AFN7 (Local0)
BRTL = Arg0
}
}
Method (_DDC, 1, NotSerialized) // _DDC: Display Data Current
{
If (((MCSK == One) || (MCSK == 0x03)))
{
If (((PMID == 0xE509) && (PPID == 0x0A2D)))
{
Return (Zero)
}
ElseIf (((PMID == 0x6F0E) && (PPID == 0x1507)))
{
Return (Zero)
}
ElseIf (((PMID == 0xE430) && (PPID == 0x06DE)))
{
Return (Zero)
}
ElseIf ((Arg0 == One))
{
Return (BDDN) /* \BDDN */
}
ElseIf ((Arg0 == 0x02))
{
Return (BDDN) /* \BDDN */
}
}
Return (Zero)
}
}
Device (PSP)
{
Name (_ADR, 0x02) // _ADR: Address
}
Device (ACP)
{
Name (_ADR, 0x05) // _ADR: Address
Method (_WOV, 0, NotSerialized)
{
Return (WOVS) /* \WOVS */
}
}
Device (AZAL)
{
Name (_ADR, 0x06) // _ADR: Address
}
Device (HDAU)
{
Name (_ADR, One) // _ADR: Address
}
Device (XHC0)
{
Name (_ADR, 0x03) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (GPRW (0x19, 0x03))
}
Device (RHUB)
{
Name (_ADR, Zero) // _ADR: Address
Device (HSP1)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x09,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x5,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (HSP2)
{
Name (_ADR, 0x02) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x1,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Device (HS01)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (HS02)
{
Name (_ADR, 0x02) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (HS03)
{
Name (_ADR, 0x03) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
}
Device (HSP3)
{
Name (_ADR, 0x03) // _ADR: Address
Name (UPC, Package (0x04)
{
0xFF,
0xFF,
Zero,
Zero
})
Name (UPCN, Package (0x04)
{
Zero,
Zero,
Zero,
Zero
})
Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
{
If (CAMS)
{
Return (UPC) /* \_SB_.PCI0.GP17.XHC0.RHUB.HSP3.UPC_ */
}
Else
{
Return (UPCN) /* \_SB_.PCI0.GP17.XHC0.RHUB.HSP3.UPCN */
}
}
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x1,
PLD_Panel = "FRONT",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "ROUND",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x4,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0,
PLD_VerticalOffset = 0xC3,
PLD_HorizontalOffset = 0xC3)
})
Device (CAMA)
{
Name (_ADR, 0x03) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x1,
PLD_Panel = "FRONT",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "ROUND",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x4,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0,
PLD_VerticalOffset = 0xC3,
PLD_HorizontalOffset = 0xC3)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (CAMS)
{
Return (0x0F)
}
Return (Zero)
}
}
}
Device (HSP4)
{
Name (_ADR, 0x04) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "RIGHT",
PLD_VerticalPosition = "CENTER",
PLD_HorizontalPosition = "RIGHT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x0,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (SSP5)
{
Name (_ADR, 0x05) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x09,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x5,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (SSP6)
{
Name (_ADR, 0x06) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x1,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Device (SS01)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (SS02)
{
Name (_ADR, 0x02) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (SS03)
{
Name (_ADR, 0x03) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0x9,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
}
}
}
Device (XHC1)
{
Name (_ADR, 0x04) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (GPRW (0x19, 0x03))
}
Device (RHUB)
{
Name (_ADR, Zero) // _ADR: Address
Device (HSP1)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x09,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x3,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (HSP2)
{
Name (_ADR, 0x02) // _ADR: Address
Name (UPCE, Package (0x04)
{
0xFF,
Zero,
Zero,
Zero
})
Name (UPCD, Package (0x04)
{
0xFF,
0x09,
Zero,
Zero
})
Name (UPCF, Package (0x04)
{
0xFF,
0xFF,
Zero,
Zero
})
Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
{
If ((MCSK == 0x04))
{
Return (UPCD) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP2.UPCD */
}
If ((MCSK == 0x03))
{
Return (UPCF) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP2.UPCF */
}
Return (UPCE) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP2.UPCE */
}
Name (APLD, Package (0x01)
{
Buffer (0x10)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x30, 0x1C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 // 0.......
}
})
Name (BPLD, Package (0x01)
{
Buffer (0x10)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x31, 0x1C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 // 1.......
}
})
Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device
{
If ((MCSK == 0x03))
{
Return (APLD) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP2.APLD */
}
Else
{
Return (BPLD) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP2.BPLD */
}
}
Device (HS01)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0xB,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MCSK == 0x03))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (HS02)
{
Name (_ADR, 0x02) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0xD,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MCSK == 0x03))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Device (HSP3)
{
Name (_ADR, 0x03) // _ADR: Address
Name (UPC, Package (0x04)
{
0xFF,
0xFF,
Zero,
Zero
})
Name (UPCN, Package (0x04)
{
Zero,
Zero,
Zero,
Zero
})
Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
{
If (RGBD)
{
Return (UPC) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP3.UPC_ */
}
Else
{
Return (UPCN) /* \_SB_.PCI0.GP17.XHC1.RHUB.HSP3.UPCN */
}
}
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x1,
PLD_Panel = "FRONT",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "ROUND",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x6,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (HSP4)
{
Name (_ADR, 0x04) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "RIGHT",
PLD_VerticalPosition = "CENTER",
PLD_HorizontalPosition = "RIGHT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x8,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
OperationRegion (BTGP, SystemMemory, 0xFED8156E, One)
Field (BTGP, AnyAcc, NoLock, Preserve)
{
, 6,
BTPP, 1
}
PowerResource (BTPR, 0x00, 0x0000)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((BTPP == One))
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_ON, 0, Serialized) // _ON_: Power On
{
}
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
}
Method (_RST, 0, Serialized) // _RST: Device Reset
{
BTPP = Zero
Sleep (0x012C)
BTPP = One
Sleep (0x012C)
}
}
Name (_PRR, Package (0x01) // _PRR: Power Resource for Reset
{
BTPR
})
Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State
{
Return (0x03)
}
Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State
{
Return (0x03)
}
}
Device (SSP5)
{
Name (_ADR, 0x05) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x09,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x3,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
}
Device (SSP6)
{
Name (_ADR, 0x06) // _ADR: Address
Name (UPCE, Package (0x04)
{
0xFF,
0x03,
Zero,
Zero
})
Name (UPCD, Package (0x04)
{
0xFF,
0x09,
Zero,
Zero
})
Name (UPCF, Package (0x04)
{
0xFF,
0xFF,
Zero,
Zero
})
Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
{
If ((MCSK == 0x04))
{
Return (UPCD) /* \_SB_.PCI0.GP17.XHC1.RHUB.SSP6.UPCD */
}
If ((MCSK == 0x03))
{
Return (UPCF) /* \_SB_.PCI0.GP17.XHC1.RHUB.SSP6.UPCF */
}
Return (UPCE) /* \_SB_.PCI0.GP17.XHC1.RHUB.SSP6.UPCE */
}
Name (APLD, Package (0x01)
{
Buffer (0x10)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x30, 0x1C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 // 0.......
}
})
Name (BPLD, Package (0x01)
{
Buffer (0x10)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x31, 0x1C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 // 1.......
}
})
Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device
{
If ((MCSK == 0x03))
{
Return (APLD) /* \_SB_.PCI0.GP17.XHC1.RHUB.SSP6.APLD */
}
Else
{
Return (BPLD) /* \_SB_.PCI0.GP17.XHC1.RHUB.SSP6.BPLD */
}
}
Device (SS01)
{
Name (_ADR, One) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0x03,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "CENTER",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0xB,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MCSK == 0x03))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (SS02)
{
Name (_ADR, 0x02) // _ADR: Address
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
{
0xFF,
0xFF,
Zero,
Zero
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x0,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "UNKNOWN",
PLD_VerticalPosition = "UPPER",
PLD_HorizontalPosition = "LEFT",
PLD_Shape = "UNKNOWN",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x10,
PLD_GroupPosition = 0xD,
PLD_Bay = 0x0,
PLD_Ejectable = 0x0,
PLD_EjectRequired = 0x0,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MCSK == 0x03))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
}
}
Device (MP2C)
{
Name (_ADR, 0x07) // _ADR: Address
}
}
Device (GP18)
{
Name (_ADR, 0x00080002) // _ADR: Address
Name (PR18, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKD,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKB,
Zero
}
})
Name (AR18, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x13
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x11
}
})
Name (NR18, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x22
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x23
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x20
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x21
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR18) /* \_SB_.PCI0.GP18.NR18 */
}
Else
{
Return (AR18) /* \_SB_.PCI0.GP18.AR18 */
}
}
Else
{
Return (PR18) /* \_SB_.PCI0.GP18.PR18 */
}
}
Device (SATA)
{
Name (_ADR, Zero) // _ADR: Address
}
Device (SAT1)
{
Name (_ADR, One) // _ADR: Address
}
}
Device (GP19)
{
Name (_ADR, 0x00080003) // _ADR: Address
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
If ((WKPM == One))
{
Return (GPRW (0x08, 0x03))
}
Else
{
Return (GPRW (0x08, Zero))
}
}
Name (PR19, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKG,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKH,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKE,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKF,
Zero
}
})
Name (AR19, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x17
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x14
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x15
}
})
Name (NR19, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x1E
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x1F
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x1C
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x1D
}
})
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
If (NAPC)
{
Return (NR19) /* \_SB_.PCI0.GP19.NR19 */
}
Else
{
Return (AR19) /* \_SB_.PCI0.GP19.AR19 */
}
}
Else
{
Return (PR19) /* \_SB_.PCI0.GP19.PR19 */
}
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((HPEN == One))
{
If ((OSTB >= 0x40))
{
Return (0x0F)
}
HPEN = Zero
Return (One)
}
Return (One)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (BUF0, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y07)
})
CreateDWordField (BUF0, \_SB.PCI0.HPET._CRS._Y07._BAS, HPEB) // _BAS: Base Address
Local0 = 0xFED00000
HPEB = (Local0 & 0xFFFFFC00)
Return (BUF0) /* \_SB_.PCI0.HPET._CRS.BUF0 */
}
}
Device (SMBS)
{
Name (_ADR, 0x00140000) // _ADR: Address
}
Device (LPC0)
{
Name (_ADR, 0x00140003) // _ADR: Address
Device (DMAC)
{
Name (_HID, EisaId ("PNP0200") /* PC-class DMA Controller */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0000, // Range Minimum
0x0000, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x0081, // Range Minimum
0x0081, // Range Maximum
0x01, // Alignment
0x0F, // Length
)
IO (Decode16,
0x00C0, // Range Minimum
0x00C0, // Range Maximum
0x01, // Alignment
0x20, // Length
)
DMA (Compatibility, NotBusMaster, Transfer8_16, )
{4}
})
}
Device (COPR)
{
Name (_HID, EisaId ("PNP0C04") /* x87-compatible Floating Point Processing Unit */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x00F0, // Range Minimum
0x00F0, // Range Maximum
0x01, // Alignment
0x0F, // Length
)
IRQNoFlags ()
{13}
})
}
Device (PIC)
{
Name (_HID, EisaId ("PNP0000") /* 8259-compatible Programmable Interrupt Controller */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0020, // Range Minimum
0x0020, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A0, // Range Minimum
0x00A0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IRQNoFlags ()
{2}
})
}
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x02, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IRQNoFlags ()
{8}
})
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
If ((HPEN == One))
{
Return (BUF0) /* \_SB_.PCI0.LPC0.RTC_.BUF0 */
}
Return (BUF1) /* \_SB_.PCI0.LPC0.RTC_.BUF1 */
}
}
Device (SPKR)
{
Name (_HID, EisaId ("PNP0800") /* Microsoft Sound System Compatible Device */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0061, // Range Minimum
0x0061, // Range Maximum
0x01, // Alignment
0x01, // Length
)
})
}
Device (TMR)
{
Name (_HID, EisaId ("PNP0100") /* PC-class System Timer */) // _HID: Hardware ID
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
If ((HPEN == One))
{
Return (BUF0) /* \_SB_.PCI0.LPC0.TMR_.BUF0 */
}
Return (BUF1) /* \_SB_.PCI0.LPC0.TMR_.BUF1 */
}
}
Device (KBC0)
{
Name (_HID, EisaId ("FUJ7401")) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _CID: Compatible ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0060, // Range Minimum
0x0060, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0064, // Range Minimum
0x0064, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQNoFlags ()
{1}
})
}
Device (SYSR)
{
Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0010, // Range Minimum
0x0010, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x0072, // Range Minimum
0x0072, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0080, // Range Minimum
0x0080, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x00B0, // Range Minimum
0x00B0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0092, // Range Minimum
0x0092, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0400, // Range Minimum
0x0400, // Range Maximum
0x01, // Alignment
0xD0, // Length
)
IO (Decode16,
0x04D0, // Range Minimum
0x04D0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x04D6, // Range Minimum
0x04D6, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0C00, // Range Minimum
0x0C00, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0C14, // Range Minimum
0x0C14, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0C50, // Range Minimum
0x0C50, // Range Maximum
0x01, // Alignment
0x03, // Length
)
IO (Decode16,
0x0C6C, // Range Minimum
0x0C6C, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0C6F, // Range Minimum
0x0C6F, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0CD0, // Range Minimum
0x0CD0, // Range Maximum
0x01, // Alignment
0x0C, // Length
)
})
}
Device (MEM)
{
Name (_HID, EisaId ("PNP0C01") /* System Board */) // _HID: Hardware ID
Name (MSRC, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0xFFF00000, // Address Base
0x00100000, // Address Length
_Y08)
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateDWordField (MSRC, \_SB.PCI0.LPC0.MEM._Y08._LEN, PSIZ) // _LEN: Length
CreateDWordField (MSRC, \_SB.PCI0.LPC0.MEM._Y08._BAS, PBAS) // _BAS: Base Address
PSIZ = ROMS /* \ROMS */
Local0 = (ROMS - One)
PBAS = (Ones - Local0)
Return (MSRC) /* \_SB_.PCI0.LPC0.MEM_.MSRC */
}
}
Name (FNQ0, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ1, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ2, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x000124F8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ3, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ4, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ6, Package (0x09)
{
Package (0x0D)
{
0x2E,
0x07,
0x06,
0x08,
0x20,
0x22,
0x24,
0x25,
0x26,
0x27,
0x28,
0x2C,
0x03
},
Package (0x0D)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2D00,
0x21,
0x2666,
0xFE8A,
0xFEEC,
0x03C4,
0x4FAD,
0x64
},
Package (0x0D)
{
0xAFC8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2800,
0x21,
0x2666,
0xFE88,
0x040E,
0x0339,
0x000FBE25,
0x64
},
Package (0x0D)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
},
Package (0x0D)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x64
},
Package (0x0D)
{
0x61A8,
0xAFC8,
0xBB80,
0x05,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x60
},
Package (0x0D)
{
0x61A8,
0x927C,
0xBB80,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0x4E20,
0x88B8,
0x9C40,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0xC350,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
}
})
Name (FNQ7, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ8, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ9, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQA, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
Field (ECMS, ByteAcc, Lock, Preserve)
{
INDX, 8,
DATA, 8
}
Method (RECM, 1, Serialized)
{
INDX = Arg0
Return (DATA) /* \_SB_.PCI0.LPC0.DATA */
}
Method (WECM, 2, Serialized)
{
INDX = Arg0
DATA = Arg1
}
Method (FNQR, 1, NotSerialized)
{
Name (XX11, Buffer (0x07){})
CreateWordField (XX11, Zero, SSZE)
CreateByteField (XX11, 0x02, SMUF)
CreateDWordField (XX11, 0x03, SMUD)
SSZE = 0x07
Local0 = 0x08
If ((MCSK == 0x04))
{
If ((GTYP == 0x02))
{
Local6 = FNQ4 /* \_SB_.PCI0.LPC0.FNQ4 */
}
Else
{
Local6 = FNQ3 /* \_SB_.PCI0.LPC0.FNQ3 */
}
}
ElseIf ((MCSK == 0x02))
{
If (((((0x04 == GTYP) || (0x05 == GTYP)) || (0x06 ==
GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ2 /* \_SB_.PCI0.LPC0.FNQ2 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ8 /* \_SB_.PCI0.LPC0.FNQ8 */
}
Else
{
Local6 = FNQ7 /* \_SB_.PCI0.LPC0.FNQ7 */
}
}
ElseIf (((((0x04 == GTYP) || (0x05 == GTYP)) || (
0x06 == GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ1 /* \_SB_.PCI0.LPC0.FNQ1 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ9 /* \_SB_.PCI0.LPC0.FNQ9 */
}
Else
{
Local6 = FNQA /* \_SB_.PCI0.LPC0.FNQA */
}
Local1 = ((Local1 = (Local0 * 0x05)) + 0x02)
Name (BUFF, Buffer (Local1){})
BUFF [Zero] = Local1
BUFF [One] = Zero
Local2 = One
Local3 = Zero
While ((Local3 < Local0))
{
BUFF [Local2 += One] = DerefOf (DerefOf (Local6 [
Zero]) [Local3])
BUFF [Local2 += One] = (DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF00) >> 0x08)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0x00FF0000) >> 0x10)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF000000) >> 0x18)
Local3 += One
}
ALIB (0x0C, BUFF)
OperationRegion (CPUP, SystemMemory, 0xFE00D6B0, 0x10)
Field (CPUP, ByteAcc, NoLock, Preserve)
{
CPP1, 16,
CPP2, 16
}
If ((^EC0.CAC1 == One))
{
If (((CPP2 != Zero) && (CPP1 != Zero)))
{
SMUF = 0x07
SMUD = CPP2 /* \_SB_.PCI0.LPC0.FNQR.CPP2 */
ALIB (0x0C, XX11)
SMUF = 0x05
SMUD = CPP1 /* \_SB_.PCI0.LPC0.FNQR.CPP1 */
ALIB (0x0C, XX11)
}
}
}
Method (FNQS, 1, NotSerialized)
{
Local0 = Arg0
Local1 = ((One == Local0) || (0x02 == Local0))
Local2 = ((0x03 == Local0) || (0x04 == Local0))
Local3 = (Local1 || Local2)
If (((0x02 == ^EC0.ACTY ()) || (0x03 == ^EC0.ACTY ())))
{
If (Local3)
{
Local0 = 0x05
}
If ((0x06 == Local0))
{
Local0 = 0x07
}
}
If ((LCK0 == Zero))
{
FNQR (Local0)
}
}
Scope (\)
{
Name (ECON, One)
}
Device (EC0)
{
Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (ECAV, Zero)
Mutex (LFCM, 0x00)
Name (_GPE, 0x03) // _GPE: General Purpose Events
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (BFFR, ResourceTemplate ()
{
IO (Decode16,
0x0062, // Range Minimum
0x0062, // Range Maximum
0x00, // Alignment
0x01, // Length
)
IO (Decode16,
0x0066, // Range Minimum
0x0066, // Range Maximum
0x00, // Alignment
0x01, // Length
)
IO (Decode16,
0x0480, // Range Minimum
0x0480, // Range Maximum
0x00, // Alignment
0x10, // Length
)
})
Return (BFFR) /* \_SB_.PCI0.LPC0.EC0_._CRS.BFFR */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ECON == One))
{
Return (0x0F)
}
Return (Zero)
}
OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
Field (ERAM, ByteAcc, Lock, Preserve)
{
VCMD, 8
}
OperationRegion (ECB2, SystemMemory, 0xFF00D520, 0xFF)
Field (ECB2, AnyAcc, Lock, Preserve)
{
BAR1, 184,
BAR2, 80
}
OperationRegion (ERAX, SystemMemory, 0xFE00D400, 0xFF)
Field (ERAX, ByteAcc, Lock, Preserve)
{
Offset (0x01),
VDAT, 8,
VSTA, 8,
Offset (0x06),
FANS, 8,
BUSG, 1,
BLEG, 1,
BATF, 1,
BNSM, 1,
BTST, 1,
BBAD, 1,
AUTO, 1,
FCHG, 1,
Offset (0x0A),
EDCC, 1,
, 1,
CDMB, 1,
CCSB, 1,
BTSM, 1,
BTCM, 1,
, 1,
Offset (0x0B),
SGST, 1,
HDMI, 1,
, 1,
, 1,
, 1,
, 1,
, 1,
Offset (0x0C),
ODPO, 1,
EODD, 1,
ODPK, 1,
CMEX, 1,
CMON, 1,
SODD, 1,
ODFB, 1,
EODS, 1,
RTMP, 8,
MBTS, 8,
MPTS, 8,
PINF, 3,
SUPR, 1,
GTMP, 1,
QUIT, 1,
LS35, 1,
Offset (0x11),
RMBT, 1,
RSBT, 1,
, 2,
Offset (0x12),
FUSL, 8,
FUSH, 8,
FWBT, 64,
Offset (0x1D),
Offset (0x1E),
SSFM, 1,
BLCF, 1,
PABD, 1,
ES3F, 1,
, 3,
RS8F, 1,
LSKV, 8,
SPMO, 4,
MSMF, 1,
GSFS, 1,
MACF, 1,
MCUD, 1,
BTFW, 8,
Offset (0x23),
RGBS, 1,
KBLT, 1,
, 5,
LCON, 1,
BACT, 16,
KBGS, 32,
FEPL, 8,
FEPH, 8,
KBSS, 32,
Offset (0x31),
GIRT, 8,
PIRT, 8,
KIRT, 8,
IRTI, 8,
Offset (0x36),
DGPU, 8,
GUST, 8,
GDST, 8,
FCST, 8,
CTMD, 1,
CAC1, 1,
STYP, 2,
ICST, 1,
ICBL, 3,
KBST, 1,
KBBL, 3,
YLST, 1,
YLBL, 3,
Offset (0x3F),
PRRO, 1,
PRWO, 1,
, 5,
SPBL, 1,
PCBV, 16,
PCBS, 8,
ECTP, 8,
Offset (0x45),
KBGC, 32,
Offset (0x4A),
ESMC, 1,
Offset (0x4B),
EMOD, 8,
BFUD, 16,
Offset (0x54),
, 3,
PDMD, 1,
Offset (0x55),
, 1,
TPMD, 1,
Offset (0x56),
Offset (0x57),
, 5,
BTSB, 2,
Offset (0x58),
, 4,
BTTP, 4,
BTLF, 4,
Offset (0x5A),
Offset (0x5B),
PATY, 8,
BACA, 8,
EXSI, 8,
EXSB, 8,
EXND, 8,
SMPR, 8,
SMST, 8,
SMAD, 8,
SMCM, 8,
SMDA, 256,
BCNT, 8,
SMAA, 8,
SAD0, 8,
SAD1, 8,
, 1,
, 1,
, 1,
, 1,
FBDC, 1,
FBFG, 1,
Offset (0x8A),
KBLO, 1,
UCHE, 1,
KLCH, 1,
, 1,
KLFS, 1,
KLOR, 1,
CIBM, 1,
UCER, 1,
TPDV, 3,
Offset (0x8C),
QCHO, 1,
BKLT, 1,
BSFU, 1,
, 1,
, 1,
OKBS, 1,
, 1,
QCBX, 1,
FLBT, 1,
, 2,
LESR, 1,
Offset (0x8E),
Offset (0x8F),
BMN0, 72,
BDN0, 64,
IBTL, 1,
IBCL, 1,
ISS0, 1,
IRTC, 1,
ISUP, 1,
ISC2, 1,
IWAK, 1,
Offset (0xA1),
FPFC, 1,
VOUT, 1,
TPAD, 1,
HKDB, 1,
NUML, 1,
CALK, 1,
CCPW, 1,
EECP, 1,
Offset (0xA3),
OSTY, 3,
ACMO, 1,
ADPI, 2,
, 1,
ADPT, 1,
PMEW, 1,
MODW, 1,
LANW, 1,
RTCW, 1,
WLAW, 1,
USBW, 1,
KEYW, 1,
TPWK, 1,
CHCR, 1,
ADPP, 1,
LERN, 1,
ACMD, 1,
BOVP, 1,
LEAK, 1,
AIRP, 1,
ACOF, 1,
Offset (0xA7),
Offset (0xA8),
Offset (0xA9),
THRT, 8,
Offset (0xAB),
Offset (0xAC),
Offset (0xAD),
Offset (0xAE),
TLVL, 4,
, 2,
THSW, 1,
TPIN, 1,
Offset (0xB0),
CPUT, 8,
CPUS, 8,
PCHS, 8,
GPUS, 8,
GPUT, 8,
SSDS, 8,
PCHT, 8,
CHIS, 8,
, 1,
LSTE, 1,
PMEE, 1,
PWBE, 1,
RNGE, 1,
BTWE, 1,
Offset (0xB9),
LCBV, 8,
DGDF, 8,
WLAN, 1,
BLUE, 1,
WEXT, 1,
BEXT, 1,
KILL, 1,
WLOK, 1,
EN3G, 1,
EX3G, 1,
Offset (0xBD),
CTYP, 3,
CORE, 3,
GATY, 2,
BA1P, 1,
BA2P, 1,
, 2,
B1CH, 1,
B2CH, 1,
Offset (0xBF),
PBY1, 1,
PBY2, 1,
, 2,
SMB1, 1,
SMB2, 1,
Offset (0xC0),
B1TY, 1,
B1MD, 1,
B1LW, 1,
, 1,
B1MF, 3,
Offset (0xC1),
B1ST, 8,
B1RC, 16,
B1SN, 16,
B1FV, 16,
B1DV, 16,
B1DC, 16,
B1FC, 16,
B1GS, 8,
Offset (0xD0),
B1CR, 16,
B1AC, 16,
B1PC, 8,
B1VL, 8,
B1TM, 8,
B1AT, 8,
B1CC, 16,
B1TC, 8,
B1CI, 8,
B1CU, 8,
B1CA, 8,
B1SM, 16,
B1VC, 8,
B1FA, 8,
B1VA, 8,
B1C1, 16,
B1C2, 16,
B1C3, 16,
B1C4, 16,
Offset (0xEC),
MAXE, 16,
B1CT, 16,
B1EX, 1,
B1FL, 1,
B1EP, 1,
B1FI, 1,
, 2,
B1RE, 1,
Offset (0xF1),
B1LL, 1,
B1CE, 1,
B1SE, 1,
B1S5, 1,
B1SR, 1,
B1SC, 1,
Offset (0xF2),
B1TO, 1,
B1BC, 1,
B1CF, 1,
B1CS, 1,
B1SG, 1,
B1SU, 1,
B1OV, 1,
B1OT, 1,
B1TT, 1,
B1SA, 1,
B1SS, 1,
, 1,
B1SF, 1,
B1WN, 1,
Offset (0xF4),
B1DA, 16,
Offset (0xF8),
B1CN, 8,
ITMD, 1,
Offset (0xFA),
Offset (0xFB),
Offset (0xFE),
FA2S, 8
}
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
Field (ECMS, ByteAcc, Lock, Preserve)
{
INDX, 8,
DATA, 8
}
Method (RECM, 1, Serialized)
{
INDX = Arg0
Return (DATA) /* \_SB_.PCI0.LPC0.EC0_.DATA */
}
Method (WECM, 2, Serialized)
{
INDX = Arg0
DATA = Arg1
}
Method (ACTY, 0, NotSerialized)
{
If ((One == ADPT))
{
If ((One == ACMO))
{
Return (One)
}
Else
{
Return (0x02)
}
}
Else
{
Return (0x03)
}
}
OperationRegion (CMDE, SystemIO, 0x62, 0x0B)
Field (CMDE, ByteAcc, Lock, Preserve)
{
EC62, 8,
Offset (0x02),
Offset (0x03),
Offset (0x04),
EC66, 8,
Offset (0x06),
EC68, 8,
Offset (0x08),
Offset (0x09),
Offset (0x0A),
EC6C, 8
}
Method (WIBE, 1, Serialized)
{
Local0 = 0x00010000
While (Local0)
{
If ((Arg0 == One))
{
Local1 = EC66 /* \_SB_.PCI0.LPC0.EC0_.EC66 */
}
ElseIf ((Arg0 == 0x02))
{
Local1 = EC6C /* \_SB_.PCI0.LPC0.EC0_.EC6C */
}
Else
{
Return (0x02)
}
If (((Local1 & 0x02) == Zero))
{
Return (Zero)
}
Stall (0x0A)
Local0--
}
Return (One)
}
Method (WOBF, 1, Serialized)
{
Local0 = 0x00010000
While (Local0)
{
If ((Arg0 == One))
{
Local1 = EC66 /* \_SB_.PCI0.LPC0.EC0_.EC66 */
}
ElseIf ((Arg0 == 0x02))
{
Local1 = EC6C /* \_SB_.PCI0.LPC0.EC0_.EC6C */
}
Else
{
Return (0x02)
}
If (((Local1 & One) == One))
{
Return (Zero)
}
Stall (0x0A)
Local0--
}
Return (One)
}
Method (WOBE, 1, Serialized)
{
Local0 = 0x00010000
While (Local0)
{
If ((Arg0 == One))
{
Local1 = EC66 /* \_SB_.PCI0.LPC0.EC0_.EC66 */
}
ElseIf ((Arg0 == 0x02))
{
Local1 = EC6C /* \_SB_.PCI0.LPC0.EC0_.EC6C */
}
Else
{
Return (0x02)
}
If (((Local1 & One) == One))
{
If ((Arg0 == One))
{
Local2 = EC62 /* \_SB_.PCI0.LPC0.EC0_.EC62 */
}
ElseIf ((Arg0 == 0x02))
{
Local2 = EC68 /* \_SB_.PCI0.LPC0.EC0_.EC68 */
}
Else
{
Return (0x02)
}
}
Else
{
Return (Zero)
}
Stall (0x0A)
Local0--
}
Return (One)
}
Method (LCMD, 2, Serialized)
{
Name (LBUF, Buffer (0x1E)
{
0x00 // .
})
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If ((WOBE (0x02) != Zero))
{
Return (One)
}
EC6C = Arg0
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If (((Arg1 != Zero) && (Arg1 != 0xFF)))
{
EC68 = Arg1
If ((WIBE (0x02) != Zero))
{
Return (One)
}
}
If ((WOBF (0x02) != Zero))
{
Return (One)
}
Local0 = EC68 /* \_SB_.PCI0.LPC0.EC0_.EC68 */
Local1 = Zero
While (Local0)
{
If ((WOBF (0x02) != Zero))
{
Return (One)
}
LBUF [Local1] = EC68 /* \_SB_.PCI0.LPC0.EC0_.EC68 */
Local1++
Local0--
}
Return (LBUF) /* \_SB_.PCI0.LPC0.EC0_.LCMD.LBUF */
}
Method (NCMD, 2, Serialized)
{
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If ((WOBE (0x02) != Zero))
{
Return (One)
}
EC6C = Arg0
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If (((Arg1 != Zero) && (Arg1 != 0xFF)))
{
EC68 = Arg1
If ((WIBE (0x02) != Zero))
{
Return (One)
}
}
Return (Zero)
}
Method (SCMD, 2, Serialized)
{
Name (LBUF, Buffer (0x1E)
{
0x00 // .
})
If ((WIBE (One) != Zero))
{
Return (One)
}
If ((WOBE (One) != Zero))
{
Return (One)
}
EC66 = Arg0
If ((WIBE (One) != Zero))
{
Return (One)
}
If (((Arg1 != Zero) && (Arg1 != 0xFF)))
{
EC62 = Arg1
If ((WIBE (One) != Zero))
{
Return (One)
}
}
If ((WOBF (One) != Zero))
{
Return (One)
}
Local0 = EC62 /* \_SB_.PCI0.LPC0.EC0_.EC62 */
Local1 = Zero
While (Local0)
{
If ((WOBF (One) != Zero))
{
Return (One)
}
LBUF [Local1] = EC62 /* \_SB_.PCI0.LPC0.EC0_.EC62 */
Local1++
Local0--
}
Return (LBUF) /* \_SB_.PCI0.LPC0.EC0_.SCMD.LBUF */
}
Method (TCMD, 2, Serialized)
{
If ((WIBE (One) != Zero))
{
Return (One)
}
If ((WOBE (One) != Zero))
{
Return (One)
}
EC66 = Arg0
If ((WIBE (One) != Zero))
{
Return (One)
}
If (((Arg1 != Zero) && (Arg1 != 0xFF)))
{
EC62 = Arg1
If ((WIBE (One) != Zero))
{
Return (One)
}
}
Return (Zero)
}
Method (LRAM, 2, Serialized)
{
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If ((WOBE (0x02) != Zero))
{
Return (One)
}
EC6C = 0x7E
If ((WIBE (0x02) != Zero))
{
Return (One)
}
EC68 = Arg0
If ((WIBE (0x02) != Zero))
{
Return (One)
}
EC68 = Arg1
If ((WIBE (0x02) != Zero))
{
Return (One)
}
If ((WOBF (0x02) != Zero))
{
Return (One)
}
Return (EC68) /* \_SB_.PCI0.LPC0.EC0_.EC68 */
}
Method (SRAM, 2, Serialized)
{
If ((WIBE (One) != Zero))
{
Return (One)
}
If ((WOBE (One) != Zero))
{
Return (One)
}
EC66 = 0x7E
If ((WIBE (One) != Zero))
{
Return (One)
}
EC62 = Arg0
If ((WIBE (One) != Zero))
{
Return (One)
}
EC62 = Arg1
If ((WIBE (One) != Zero))
{
Return (One)
}
If ((WOBF (One) != Zero))
{
Return (One)
}
Return (EC62) /* \_SB_.PCI0.LPC0.EC0_.EC62 */
}
Device (BAT0)
{
Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (_PCL, Package (0x01) // _PCL: Power Consumer List
{
_SB
})
Name (PBIF, Package (0x0D)
{
Zero,
Ones,
Ones,
One,
Ones,
Zero,
Zero,
0x64,
Zero,
"LCFC",
"BAT20101001",
"LiP",
"LENOVO"
})
Name (XBIF, Package (0x15)
{
One,
Zero,
Ones,
Ones,
One,
Ones,
Zero,
Zero,
Zero,
0x00017318,
Ones,
Ones,
0x03E8,
0x03E8,
0x64,
Zero,
"LCFC",
"BAT20101001",
"LiP",
"LENOVO",
One
})
Name (PBST, Package (0x04)
{
One,
0x0A90,
0x1000,
0x2A30
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ECON == One))
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 = BA1P /* \_SB_.PCI0.LPC0.EC0_.BA1P */
Release (LFCM)
}
}
If ((Local0 & One))
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Else
{
Return (Zero)
}
}
Method (_BIF, 0, NotSerialized) // _BIF: Battery Information
{
If ((ECAV == One))
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 = B1DC /* \_SB_.PCI0.LPC0.EC0_.B1DC */
Local0 *= 0x0A
PBIF [One] = Local0
Local0 = B1FC /* \_SB_.PCI0.LPC0.EC0_.B1FC */
Local0 *= 0x0A
PBIF [0x02] = Local0
PBIF [0x04] = B1DV /* \_SB_.PCI0.LPC0.EC0_.B1DV */
If (B1FC)
{
PBIF [0x05] = ((B1FC * 0x0A) / 0x0A)
PBIF [0x07] = ((B1DC * 0x0A) / 0x64)
}
PBIF [0x09] = ""
PBIF [0x0A] = ""
PBIF [0x0B] = ""
PBIF [0x0C] = ""
Name (BDNT, Buffer (0x09)
{
0x00 // .
})
BDNT = BDN0 /* \_SB_.PCI0.LPC0.EC0_.BDN0 */
PBIF [0x09] = ToString (BDNT, Ones)
Local0 = B1SN /* \_SB_.PCI0.LPC0.EC0_.B1SN */
Name (SERN, Buffer (0x06)
{
" "
})
Local2 = 0x04
While (Local0)
{
Divide (Local0, 0x0A, Local1, Local0)
SERN [Local2] = (Local1 + 0x30)
Local2--
}
PBIF [0x0A] = SERN /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIF.SERN */
Name (DCH0, Buffer (0x0A)
{
0x00 // .
})
Name (DCH1, "LION")
Name (DCH2, "LiP")
If ((B1TY == One))
{
DCH0 = DCH1 /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIF.DCH1 */
PBIF [0x0B] = ToString (DCH0, Ones)
}
Else
{
DCH0 = DCH2 /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIF.DCH2 */
PBIF [0x0B] = ToString (DCH0, Ones)
}
Name (BMNT, Buffer (0x0A)
{
0x00 // .
})
BMNT = BMN0 /* \_SB_.PCI0.LPC0.EC0_.BMN0 */
PBIF [0x0C] = ToString (BMNT, Ones)
Release (LFCM)
}
}
Return (PBIF) /* \_SB_.PCI0.LPC0.EC0_.BAT0.PBIF */
}
Method (_BIX, 0, NotSerialized) // _BIX: Battery Information Extended
{
If ((ECAV == One))
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 = B1DC /* \_SB_.PCI0.LPC0.EC0_.B1DC */
Local0 *= 0x0A
XBIF [0x02] = Local0
Local0 = B1FC /* \_SB_.PCI0.LPC0.EC0_.B1FC */
Local0 *= 0x0A
XBIF [0x03] = Local0
XBIF [0x05] = B1DV /* \_SB_.PCI0.LPC0.EC0_.B1DV */
If (B1FC)
{
XBIF [0x06] = ((B1FC * 0x0A) / 0x0A)
XBIF [0x0E] = ((B1DC * 0x0A) / 0x64)
}
XBIF [0x08] = B1CT /* \_SB_.PCI0.LPC0.EC0_.B1CT */
XBIF [0x10] = ""
XBIF [0x11] = ""
XBIF [0x12] = ""
XBIF [0x13] = ""
Name (BDNT, Buffer (0x09)
{
0x00 // .
})
BDNT = BDN0 /* \_SB_.PCI0.LPC0.EC0_.BDN0 */
XBIF [0x10] = ToString (BDNT, Ones)
Local0 = B1SN /* \_SB_.PCI0.LPC0.EC0_.B1SN */
Name (SERN, Buffer (0x06)
{
" "
})
Local2 = 0x04
While (Local0)
{
Divide (Local0, 0x0A, Local1, Local0)
SERN [Local2] = (Local1 + 0x30)
Local2--
}
XBIF [0x11] = SERN /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIX.SERN */
Name (DCH0, Buffer (0x0A)
{
0x00 // .
})
Name (DCH1, "LION")
Name (DCH2, "LiP")
If ((B1TY == One))
{
DCH0 = DCH1 /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIX.DCH1 */
XBIF [0x12] = ToString (DCH0, Ones)
}
Else
{
DCH0 = DCH2 /* \_SB_.PCI0.LPC0.EC0_.BAT0._BIX.DCH2 */
XBIF [0x12] = ToString (DCH0, Ones)
}
Name (BMNT, Buffer (0x0A)
{
0x00 // .
})
BMNT = BMN0 /* \_SB_.PCI0.LPC0.EC0_.BMN0 */
XBIF [0x13] = ToString (BMNT, Ones)
Release (LFCM)
}
}
Return (XBIF) /* \_SB_.PCI0.LPC0.EC0_.BAT0.XBIF */
}
Name (OBST, Zero)
Name (OBAC, Zero)
Name (OBPR, Zero)
Name (OBRC, Zero)
Name (OBPV, Zero)
Method (_BST, 0, Serialized) // _BST: Battery Status
{
If ((ECAV == One))
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Sleep (0x10)
Local0 = B1ST /* \_SB_.PCI0.LPC0.EC0_.B1ST */
Local1 = DerefOf (PBST [Zero])
Switch ((Local0 & 0x07))
{
Case (Zero)
{
OBST = (Local1 & 0xF8)
}
Case (One)
{
OBST = (One | (Local1 & 0xF8))
}
Case (0x02)
{
OBST = (0x02 | (Local1 & 0xF8))
}
Case (0x04)
{
OBST = (0x04 | (Local1 & 0xF8))
}
}
Sleep (0x10)
OBAC = B1AC /* \_SB_.PCI0.LPC0.EC0_.B1AC */
If ((OBST & One))
{
If ((OBAC != Zero))
{
OBAC = (~OBAC & 0x7FFF)
}
}
ElseIf ((FBFG != One))
{
If ((OBAC & 0x8000))
{
OBAC = Zero
}
}
Sleep (0x10)
OBRC = B1RC /* \_SB_.PCI0.LPC0.EC0_.B1RC */
Sleep (0x10)
OBPV = B1FV /* \_SB_.PCI0.LPC0.EC0_.B1FV */
OBRC *= 0x0A
OBPR = ((OBAC * OBPV) / 0x03E8)
PBST [Zero] = OBST /* \_SB_.PCI0.LPC0.EC0_.BAT0.OBST */
PBST [One] = OBPR /* \_SB_.PCI0.LPC0.EC0_.BAT0.OBPR */
PBST [0x02] = OBRC /* \_SB_.PCI0.LPC0.EC0_.BAT0.OBRC */
PBST [0x03] = OBPV /* \_SB_.PCI0.LPC0.EC0_.BAT0.OBPV */
Release (LFCM)
}
}
Return (PBST) /* \_SB_.PCI0.LPC0.EC0_.BAT0.PBST */
}
}
Scope (\_SB.PCI0.LPC0.EC0)
{
Device (VPC0)
{
Name (_HID, "VPC2004") // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
Name (_VPC, 0x7C0DF50A)
Name (VPCD, Zero)
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
Method (_CFG, 0, NotSerialized)
{
Return (_VPC) /* \_SB_.PCI0.LPC0.EC0_.VPC0._VPC */
}
Method (VPCR, 1, Serialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == One))
{
VPCD = VCMD /* \_SB_.PCI0.LPC0.EC0_.VCMD */
}
Else
{
VPCD = VDAT /* \_SB_.PCI0.LPC0.EC0_.VDAT */
}
Release (LFCM)
}
}
Return (VPCD) /* \_SB_.PCI0.LPC0.EC0_.VPC0.VPCD */
}
Method (VPCW, 2, Serialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == One))
{
VCMD = Arg1
}
Else
{
VDAT = Arg1
}
Release (LFCM)
}
}
Return (Zero)
}
Method (SVCR, 1, Serialized)
{
}
Method (HALS, 0, NotSerialized)
{
Local0 = Zero
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 |= 0x08
Local0 |= 0x40
If ((One == UCHE))
{
Local0 |= 0x80
}
Local0 |= 0x0200
If ((Zero == HKDB))
{
Local0 |= 0x0400
}
Local0 |= Zero
If (ITMD)
{
Local0 |= 0x2000
}
Local0 |= 0x4000
If ((One == CIBM))
{
Local0 |= 0x8000
}
Release (LFCM)
}
}
Return (Local0)
}
Method (SALS, 1, Serialized)
{
Local0 = ToInteger (Arg0)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Local0 == 0x0A))
{
UCHE = One
SMBB = 0x32
SMBA = 0xCA
Release (LFCM)
Return (Zero)
}
If ((Local0 == 0x0B))
{
UCHE = Zero
SMBB = 0x33
SMBA = 0xCA
Release (LFCM)
Return (Zero)
}
If ((Local0 == 0x0E))
{
HKDB = Zero
SMBB = 0x30
SMBA = 0xCA
Release (LFCM)
M010 (0x8C, One)
Return (Zero)
}
If ((Local0 == 0x0F))
{
HKDB = One
SMBB = 0x31
SMBA = 0xCA
Release (LFCM)
M010 (0x8C, Zero)
Return (Zero)
}
If ((Local0 == 0x12))
{
CIBM = Zero
SMBB = 0x34
SMBA = 0xCA
Release (LFCM)
Return (Zero)
}
If ((Local0 == 0x13))
{
CIBM = One
SMBB = 0x35
SMBA = 0xCA
Release (LFCM)
Return (Zero)
}
Release (LFCM)
}
}
Return (Zero)
}
Method (GBMD, 0, NotSerialized)
{
Local0 = 0x10000000
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((One == CDMB))
{
Local0 |= One
}
If ((One == QCBX))
{
If ((One == QCHO))
{
Local0 |= 0x04
}
}
If ((One == BBAD))
{
Local0 |= 0x08
}
If ((One == BTSM))
{
Local0 |= 0x20
}
If ((One == BLEG))
{
Local0 |= 0x80
}
If ((One == BATF))
{
Local0 |= 0x0100
}
If ((Zero == BTSM))
{
Local0 |= 0x0200
}
If ((One == BUSG))
{
Local0 |= 0x0800
}
If ((Zero == ADPI))
{
Local0 &= 0xFFFE7FFF
}
If ((One == ADPI))
{
Local0 |= 0x8000
}
If ((0x02 == ADPI))
{
Local0 |= 0x00010000
}
If ((One == QCBX))
{
Local0 |= 0x00020000
}
Local0 |= 0x00040000
If ((One == ESMC))
{
Local0 |= 0x00400000
}
Release (LFCM)
}
}
Return (Local0)
}
Name (VBST, Zero)
Name (VBAC, Zero)
Name (VBPR, Zero)
Name (VBRC, Zero)
Name (VBPV, Zero)
Name (VBFC, Zero)
Name (VBCT, Zero)
Method (SMTF, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == Zero))
{
If ((B1FV == Zero))
{
Release (LFCM)
Return (0xFFFF)
}
If ((B1AC == Zero))
{
Release (LFCM)
Return (0xFFFF)
}
Local0 = B1FC /* \_SB_.PCI0.LPC0.EC0_.B1FC */
Local0 *= 0x0A
VBFC = Local0
Local1 = B1RC /* \_SB_.PCI0.LPC0.EC0_.B1RC */
Local1 *= 0x0A
VBRC = Local1
If ((VBFC > VBRC))
{
VBPV = B1FV /* \_SB_.PCI0.LPC0.EC0_.B1FV */
VBAC = B1AC /* \_SB_.PCI0.LPC0.EC0_.B1AC */
Local0 -= Local1
Local1 = (VBAC * VBPV)
Local3 = (Local0 * 0x03E8)
Local3 = (Local3 * 0x3C)
VBCT = (Local3 / Local1)
Release (LFCM)
Return (VBCT) /* \_SB_.PCI0.LPC0.EC0_.VPC0.VBCT */
}
Else
{
Release (LFCM)
Return (0xFFFF)
}
}
If ((Arg0 == One))
{
Release (LFCM)
Return (0xFFFF)
}
Release (LFCM)
}
}
Return (0xFFFF)
}
Name (QBST, Zero)
Name (QBAC, Zero)
Name (QBPR, Zero)
Name (QBRC, Zero)
Name (QBPV, Zero)
Name (QBFC, Zero)
Name (QBCT, Zero)
Method (SMTE, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == Zero))
{
If ((B1FV == Zero))
{
Release (LFCM)
Return (0xFFFF)
}
If ((B1AC == Zero))
{
Release (LFCM)
Return (0xFFFF)
}
Local0 = B1RC /* \_SB_.PCI0.LPC0.EC0_.B1RC */
Local0 *= 0x0A
QBRC = Local0
Local1 = B1FC /* \_SB_.PCI0.LPC0.EC0_.B1FC */
Local1 *= 0x0A
QBFC = Local1
If ((QBFC > QBRC))
{
QBPV = B1FV /* \_SB_.PCI0.LPC0.EC0_.B1FV */
If (((B1AC & 0x8000) == Zero))
{
QBAC = B1AC /* \_SB_.PCI0.LPC0.EC0_.B1AC */
}
Else
{
QBAC = (0xFFFF - B1AC)
}
Local1 = (QBAC * QBPV)
Local3 = (Local0 * 0x03E8)
Local3 = (Local3 * 0x3C)
QBCT = (Local3 / Local1)
Release (LFCM)
Return (QBCT) /* \_SB_.PCI0.LPC0.EC0_.VPC0.QBCT */
}
Else
{
Release (LFCM)
Return (0xFFFF)
}
}
If ((Arg0 == One))
{
Release (LFCM)
Return (0xFFFF)
}
Release (LFCM)
}
}
Return (0xFFFF)
}
Method (SBMC, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == Zero))
{
CDMB = Zero
EDCC = One
Release (LFCM)
Return (Zero)
}
If ((Arg0 == One))
{
CDMB = One
Release (LFCM)
Return (Zero)
}
If ((Arg0 == 0x03))
{
BTSM = One
Release (LFCM)
Return (Zero)
}
If ((Arg0 == 0x05))
{
BTSM = Zero
Release (LFCM)
Return (Zero)
}
If ((One == QCBX))
{
If ((Arg0 == 0x07))
{
QCHO = One
BTSM = Zero
Release (LFCM)
Return (Zero)
}
}
If ((One == QCBX))
{
If ((Arg0 == 0x08))
{
QCHO = Zero
Release (LFCM)
Return (Zero)
}
}
If ((Arg0 == 0x09))
{
ESMC = One
Release (LFCM)
Return (Zero)
}
If ((Arg0 == 0x10))
{
ESMC = Zero
Release (LFCM)
Return (Zero)
}
Release (LFCM)
}
}
Return (Zero)
}
Method (MHCF, 1, NotSerialized)
{
P80H = 0x78
Local0 = Arg0
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 &= 0x20
Local0 >>= 0x05
RMBT = Local0
Sleep (0x14)
Release (LFCM)
}
}
Return (Local0)
}
Method (MHPF, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Name (BFWB, Buffer (0x25){})
CreateByteField (BFWB, Zero, FB0)
CreateByteField (BFWB, One, FB1)
CreateByteField (BFWB, 0x02, FB2)
CreateByteField (BFWB, 0x03, FB3)
CreateField (BFWB, 0x20, 0x0100, FB4)
CreateByteField (BFWB, 0x24, FB5)
If ((SizeOf (Arg0) <= 0x25))
{
If ((SMPR != Zero))
{
FB1 = SMST /* \_SB_.PCI0.LPC0.EC0_.SMST */
}
Else
{
BFWB = Arg0
SMAD = FB2 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB2_ */
SMCM = FB3 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB3_ */
BCNT = FB5 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB5_ */
Local0 = FB0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB0_ */
If (((Local0 & One) == Zero))
{
SMDA = FB4 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB4_ */
}
SMST = Zero
SMPR = FB0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB0_ */
BTFW = 0x80
Local1 = 0x03E8
While (Local1)
{
Sleep (One)
Local1--
If (((SMST && 0x80) || (SMPR == Zero)))
{
Break
}
}
Local0 = FB0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.FB0_ */
If (((Local0 & One) != Zero))
{
FB4 = SMDA /* \_SB_.PCI0.LPC0.EC0_.SMDA */
}
FB1 = SMST /* \_SB_.PCI0.LPC0.EC0_.SMST */
If (((Local1 == Zero) || !(SMST && 0x80)))
{
SMPR = Zero
FB1 = 0x92
}
}
Release (LFCM)
Return (BFWB) /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHPF.BFWB */
}
Release (LFCM)
}
}
}
Method (MHIF, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
P80H = 0x50
If ((Arg0 == Zero))
{
Name (RETB, Buffer (0x0A){})
Name (BUF1, Buffer (0x08){})
BUF1 = FWBT /* \_SB_.PCI0.LPC0.EC0_.FWBT */
CreateByteField (BUF1, Zero, FW0)
CreateByteField (BUF1, One, FW1)
CreateByteField (BUF1, 0x02, FW2)
CreateByteField (BUF1, 0x03, FW3)
CreateByteField (BUF1, 0x04, FW4)
CreateByteField (BUF1, 0x05, FW5)
CreateByteField (BUF1, 0x06, FW6)
CreateByteField (BUF1, 0x07, FW7)
RETB [Zero] = FUSL /* \_SB_.PCI0.LPC0.EC0_.FUSL */
RETB [One] = FUSH /* \_SB_.PCI0.LPC0.EC0_.FUSH */
RETB [0x02] = FW0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW0_ */
RETB [0x03] = FW1 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW1_ */
RETB [0x04] = FW2 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW2_ */
RETB [0x05] = FW3 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW3_ */
RETB [0x06] = FW4 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW4_ */
RETB [0x07] = FW5 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW5_ */
RETB [0x08] = FW6 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW6_ */
RETB [0x09] = FW7 /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.FW7_ */
Release (LFCM)
Return (RETB) /* \_SB_.PCI0.LPC0.EC0_.VPC0.MHIF.RETB */
}
Release (LFCM)
}
}
}
Method (GSBI, 1, NotSerialized)
{
Name (BIFB, Buffer (0x53)
{
/* 0000 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0008 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0018 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0020 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0028 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0030 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0038 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0048 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........
/* 0050 */ 0xFF, 0xFF, 0xFF // ...
})
CreateWordField (BIFB, Zero, DCAP)
CreateWordField (BIFB, 0x02, FCAP)
CreateWordField (BIFB, 0x04, RCAP)
CreateWordField (BIFB, 0x06, ATTE)
CreateWordField (BIFB, 0x08, ATTF)
CreateWordField (BIFB, 0x0A, BTVT)
CreateWordField (BIFB, 0x0C, BTCT)
CreateWordField (BIFB, 0x0E, BTMP)
CreateWordField (BIFB, 0x10, MDAT)
CreateWordField (BIFB, 0x12, FUDT)
CreateWordField (BIFB, 0x14, DVLT)
CreateField (BIFB, 0xB0, 0x50, DCHE)
CreateField (BIFB, 0x0100, 0x40, DNAM)
CreateField (BIFB, 0x0140, 0x60, MNAM)
CreateField (BIFB, 0x01A0, 0xB8, BRNB)
CreateQWordField (BIFB, 0x4B, BFW0)
If (((Arg0 == Zero) || (Arg0 == One)))
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 = B1DC /* \_SB_.PCI0.LPC0.EC0_.B1DC */
Local0 *= 0x0A
DCAP = Local0
Local0 = B1FC /* \_SB_.PCI0.LPC0.EC0_.B1FC */
Local0 *= 0x0A
FCAP = Local0
Local0 = B1RC /* \_SB_.PCI0.LPC0.EC0_.B1RC */
Local0 *= 0x0A
RCAP = Local0
ATTE = SMTE (Zero)
ATTF = SMTF (Zero)
BTVT = B1FV /* \_SB_.PCI0.LPC0.EC0_.B1FV */
BTCT = B1AC /* \_SB_.PCI0.LPC0.EC0_.B1AC */
Local0 = B1AT /* \_SB_.PCI0.LPC0.EC0_.B1AT */
Local0 += 0x0111
Local0 *= 0x0A
BTMP = Local0
MDAT = B1DA /* \_SB_.PCI0.LPC0.EC0_.B1DA */
If ((BFUD != Zero))
{
FUDT = BFUD /* \_SB_.PCI0.LPC0.EC0_.BFUD */
}
DVLT = B1DV /* \_SB_.PCI0.LPC0.EC0_.B1DV */
Name (DCH0, Buffer (0x0A)
{
0x00 // .
})
Name (DCH1, "LION")
Name (DCH2, "LiP")
If ((B1TY == One))
{
DCH0 = DCH1 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.DCH1 */
DCHE = DCH0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.DCH0 */
}
Else
{
DCH0 = DCH2 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.DCH2 */
DCHE = DCH0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.DCH0 */
}
Name (BDNT, Buffer (0x08)
{
0x00 // .
})
BDNT = BDN0 /* \_SB_.PCI0.LPC0.EC0_.BDN0 */
DNAM = BDNT /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.BDNT */
Name (BMNT, Buffer (0x0C)
{
0x00 // .
})
BMNT = BMN0 /* \_SB_.PCI0.LPC0.EC0_.BMN0 */
MNAM = BMNT /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.BMNT */
Name (BRN0, Buffer (0x17)
{
0x00 // .
})
BRN0 = BAR1 /* \_SB_.PCI0.LPC0.EC0_.BAR1 */
BRNB = BRN0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.BRN0 */
BFW0 = FWBT /* \_SB_.PCI0.LPC0.EC0_.FWBT */
Release (LFCM)
}
}
Return (BIFB) /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.BIFB */
}
If ((Arg0 == 0x02))
{
Return (BIFB) /* \_SB_.PCI0.LPC0.EC0_.VPC0.GSBI.BIFB */
}
Return (Zero)
}
Method (HODD, 0, NotSerialized)
{
}
Method (SODD, 1, Serialized)
{
}
Method (GBID, 0, Serialized)
{
Name (GBUF, Package (0x04)
{
Buffer (0x02)
{
0x00, 0x00 // ..
},
Buffer (0x02)
{
0x00, 0x00 // ..
},
Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ........
},
Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ........
}
})
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
DerefOf (GBUF [Zero]) [Zero] = B1CT /* \_SB_.PCI0.LPC0.EC0_.B1CT */
DerefOf (GBUF [One]) [Zero] = Zero
Name (BUF1, Buffer (0x08){})
BUF1 = FWBT /* \_SB_.PCI0.LPC0.EC0_.FWBT */
CreateByteField (BUF1, Zero, FW0)
CreateByteField (BUF1, One, FW1)
CreateByteField (BUF1, 0x02, FW2)
CreateByteField (BUF1, 0x03, FW3)
CreateByteField (BUF1, 0x04, FW4)
CreateByteField (BUF1, 0x05, FW5)
CreateByteField (BUF1, 0x06, FW6)
CreateByteField (BUF1, 0x07, FW7)
DerefOf (GBUF [0x02]) [Zero] = FW0 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW0_ */
DerefOf (GBUF [0x02]) [One] = FW1 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW1_ */
DerefOf (GBUF [0x02]) [0x02] = FW2 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW2_ */
DerefOf (GBUF [0x02]) [0x03] = FW3 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW3_ */
DerefOf (GBUF [0x02]) [0x04] = FW4 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW4_ */
DerefOf (GBUF [0x02]) [0x05] = FW5 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW5_ */
DerefOf (GBUF [0x02]) [0x06] = FW6 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW6_ */
DerefOf (GBUF [0x02]) [0x07] = FW7 /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.FW7_ */
DerefOf (GBUF [0x03]) [Zero] = Zero
Release (LFCM)
}
}
Return (GBUF) /* \_SB_.PCI0.LPC0.EC0_.VPC0.GBID.GBUF */
}
Name (APDT, Zero)
Method (APPC, 1, Serialized)
{
APDT = Arg0
Return (Zero)
}
Method (DBSL, 0, NotSerialized)
{
Return (Package (0x10)
{
0xC9,
0xAE,
0x95,
0x7E,
0x69,
0x56,
0x45,
0x36,
0x29,
0x1E,
0x15,
0x0E,
0x09,
0x06,
0x05,
Zero
})
}
Method (SBSL, 1, Serialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
Local0 = Arg0
If ((Local0 == One))
{
LCBV = 0x0E
}
If ((Local0 == 0x02))
{
LCBV = 0x07
}
Release (LFCM)
}
}
Return (Zero)
}
Method (KBLC, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((Arg0 == One))
{
Local0 = KBGC /* \_SB_.PCI0.LPC0.EC0_.KBGC */
Release (LFCM)
Return ((Local0 | One))
}
ElseIf (((Arg0 & 0x0F) == 0x02))
{
Local0 = KBGC /* \_SB_.PCI0.LPC0.EC0_.KBGC */
Local0 &= 0xFFFFFFFE
Local1 = (Arg0 & 0xFFF0)
Local1 >>= 0x03
If ((Local0 != Local1))
{
Release (LFCM)
Return (Zero)
}
Else
{
Local3 = KBGS /* \_SB_.PCI0.LPC0.EC0_.KBGS */
Release (LFCM)
Return ((Local3 | One))
}
}
ElseIf (((Arg0 & 0x0F) == 0x03))
{
Local0 = KBGC /* \_SB_.PCI0.LPC0.EC0_.KBGC */
Local0 &= 0xFFFFFFFE
Local1 = (Arg0 & 0xFFF0)
Local1 >>= 0x03
If ((Local0 != Local1))
{
Release (LFCM)
Return (Zero)
}
Else
{
Local3 = (Arg0 & Ones)
KBSS = Local3
Sleep (0x012C)
Local3 = KBGS /* \_SB_.PCI0.LPC0.EC0_.KBGS */
Release (LFCM)
Return ((Local3 | One))
}
}
Release (LFCM)
}
}
Return (Zero)
}
Method (BSIF, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If (((Arg0 & 0x0F) == One))
{
Local0 = Arg0
Local0 >>= 0x04
Local1 = Zero
If ((Local0 == One))
{
Local1 |= 0x0B70
Return ((Local1 | One))
}
}
Release (LFCM)
}
}
Return (Zero)
}
Method (BTMC, 1, NotSerialized)
{
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If (((Arg0 & 0x0F) == One))
{
Local0 = Arg0
Local0 >>= 0x04
Local1 = Zero
If ((Local0 == One))
{
If ((TPMD == Zero))
{
Local1 = Zero
}
ElseIf ((TPMD == One))
{
If ((PDMD == One))
{
Local1 = One
}
ElseIf ((PDMD == Zero))
{
Local1 = 0x02
}
}
Local1 <<= 0x04
Release (LFCM)
Return ((Local1 | One))
}
ElseIf ((Local0 == 0x02))
{
Local1 = BTLF /* \_SB_.PCI0.LPC0.EC0_.BTLF */
Local1 <<= 0x04
Release (LFCM)
Return ((Local1 | One))
}
ElseIf ((Local0 == 0x03))
{
Local1 = BTTP /* \_SB_.PCI0.LPC0.EC0_.BTTP */
Local1 <<= 0x04
Release (LFCM)
Return ((Local1 | One))
}
ElseIf ((Local0 == 0x04))
{
Local1 = BTLF /* \_SB_.PCI0.LPC0.EC0_.BTLF */
Local1 <<= 0x04
Release (LFCM)
Return ((Local1 | One))
}
Else
{
Release (LFCM)
Return (Local1)
}
}
ElseIf (((Arg0 & 0x0F) == 0x02))
{
Local0 = One
Local0 <<= One
Release (LFCM)
Return (Local0)
}
ElseIf (((Arg0 & 0x0F) == 0x03))
{
Local0 = Arg0
Local0 >>= 0x04
Local1 = Zero
Local2 = Zero
If ((Local0 == One))
{
If ((TPMD == One))
{
Local1 = One
If ((BTSB == 0x03))
{
Local2 = 0x03
}
}
Local1 <<= One
Local2 <<= 0x02
Local1 |= Local2
Release (LFCM)
Return ((Local1 | One))
}
ElseIf ((Local0 == 0x02))
{
If ((BTSB == 0x03))
{
Local1 = One
}
Else
{
Local1 = Zero
}
Local1 <<= One
Release (LFCM)
Return ((Local1 | One))
}
}
Release (LFCM)
}
}
Return (Zero)
}
Method (STHT, 1, Serialized)
{
Return (Zero)
}
}
}
Scope (\)
{
OperationRegion (LFCN, SystemMemory, 0xCCF7D798, 0x01FD)
Field (LFCN, AnyAcc, Lock, Preserve)
{
PS2V, 8,
KBID, 8,
MCSZ, 8,
OKRB, 8,
EDID, 1024,
TPTY, 8,
TPTP, 16,
TPNY, 8,
TPNP, 16,
UMAB, 8,
ENQT, 8,
DYTP, 32,
FCAP, 16,
VSTD, 1,
, 1,
VFBC, 1,
VMYH, 1,
VSTP, 1,
VAPM, 1,
VAQM, 1,
VIEP, 1,
VIBS, 1,
VCQL, 1,
VAAA, 1,
VMMC, 1,
, 1,
, 1,
, 1,
Offset (0x94),
MYHC, 8,
MMCC, 8,
SMYH, 8,
SMMC, 8,
CICF, 4,
CICM, 4,
BDDN, 2048,
PBID, 8,
CAMS, 8,
PANT, 8,
DSMF, 8,
RDOC, 8,
TRLV, 8,
GTYP, 8,
RGBD, 8,
MCSK, 8,
OCCS, 8,
COCC, 8,
GOCC, 8,
GCCO, 16,
GCOP, 8,
GVCO, 16,
GVOP, 8,
GSYN, 8,
CMSP, 16,
PVSD, 8,
PMID, 16,
PPID, 16,
GSNM, 8,
CNFG, 8,
RSVD, 576
}
OperationRegion (SMIO, SystemIO, 0xB0, 0x02)
Field (SMIO, ByteAcc, NoLock, Preserve)
{
SMBA, 8,
SMBB, 8
}
}
Method (_REG, 2, NotSerialized) // _REG: Region Availability
{
If ((Arg0 == 0x03))
{
ECAV = Arg1
}
If (((Arg0 == 0x03) && (Arg1 == One)))
{
If ((TPOS == 0x40))
{
Local0 = One
}
If ((TPOS == 0x80))
{
Local0 = 0x02
}
If ((TPOS == 0x50))
{
Local0 = 0x03
}
If ((TPOS == 0x60))
{
Local0 = 0x04
}
If ((TPOS == 0x61))
{
Local0 = 0x05
}
If ((TPOS == 0x70))
{
Local0 = 0x06
}
If ((Acquire (LFCM, 0xA000) == Zero))
{
OSTY = Local0
LIDS = LSTE /* \_SB_.PCI0.LPC0.EC0_.LSTE */
If ((RGBD == One))
{
RGBS = One
}
Else
{
RGBS = Zero
}
Release (LFCM)
}
}
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((SPMO == 0x02))
{
If ((ADPT == Zero))
{
FNQS (0x07)
}
Else
{
FNQS (0x06)
}
LTGP = Zero
DTGP = Zero
}
ElseIf ((SPMO == One))
{
FNQS (One)
LTGP = One
DTGP = One
}
Else
{
If ((MCSK == 0x04))
{
NCMD (0x8B, Zero)
}
If ((ADPT == Zero))
{
FNQS (0x05)
}
Else
{
FNQS (0x03)
}
LTGP = Zero
DTGP = Zero
}
Release (LFCM)
}
}
Notify (NPCF, 0xC0) // Hardware-Specific
}
Method (CMFC, 0, Serialized)
{
Return (EDID) /* \EDID */
}
Method (LFCI, 2, Serialized)
{
Switch (ToInteger (Arg0))
{
Case (One)
{
Return (OKRB) /* \OKRB */
}
Case (0x02)
{
Local0 = RECM (0x78)
P80H = Local0
Return (Local0)
}
}
}
Scope (\)
{
Name (LTGP, Zero)
Name (FMOD, Zero)
Name (DBFS, Zero)
Name (DTGP, Zero)
Name (LCK0, Zero)
}
Method (_Q11, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (IGDS)
{
P80H = 0x11
Notify (^^^GP17.VGA.LCD, 0x87) // Device-Specific
}
Else
{
P80H = 0x11
Notify (^^^GPP0.PEGP.EDP0, 0x87) // Device-Specific
}
Notify (VPC0, 0x80) // Status Change
}
Method (_Q12, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (IGDS)
{
P80H = 0x12
Notify (^^^GP17.VGA.LCD, 0x86) // Device-Specific
}
Else
{
P80H = 0x12
Notify (^^^GPP0.PEGP.EDP0, 0x86) // Device-Specific
}
Notify (VPC0, 0x80) // Status Change
}
Method (_Q13, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x13
Sleep (0x05)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((SPMO == 0x02))
{
If ((ADPT == Zero))
{
FNQS (0x07)
}
Else
{
FNQS (0x06)
}
LTGP = Zero
DTGP = Zero
}
ElseIf ((SPMO == One))
{
If ((DBFS == One))
{
FNQS (0x02)
}
Else
{
FNQS (One)
}
LTGP = One
DTGP = One
}
Else
{
If ((ADPT == Zero))
{
FNQS (0x05)
}
ElseIf ((DBFS == One))
{
FNQS (0x04)
}
Else
{
FNQS (0x03)
}
LTGP = Zero
DTGP = Zero
}
Release (LFCM)
}
}
INSM = Zero
PABD = Zero
BCTP = Zero
Notify (GZFD, 0xE3) // Hardware-Specific
Notify (GZFD, 0xE7) // Hardware-Specific
Sleep (0x05)
Notify (NPCF, 0xC0) // Hardware-Specific
}
Method (_Q30, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x30
Sleep (0x05)
DBFS = One
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((SPMO == One))
{
FNQS (0x02)
}
ElseIf ((SPMO == Zero))
{
If ((INSM == Zero))
{
FNQS (0x04)
}
}
Release (LFCM)
}
}
Method (_Q31, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x31
Sleep (0x05)
DBFS = Zero
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((SPMO == One))
{
FNQS (One)
}
ElseIf ((SPMO == Zero))
{
If ((INSM == Zero))
{
FNQS (0x03)
}
}
Release (LFCM)
}
}
Method (_Q72, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x72
Sleep (0x05)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((SPMO == 0x02))
{
If ((ADPT == Zero))
{
FNQS (0x07)
}
Else
{
FNQS (0x06)
}
LTGP = Zero
DTGP = Zero
}
ElseIf ((SPMO == One))
{
FNQS (One)
LTGP = One
DTGP = One
}
Else
{
If ((ADPT == Zero))
{
FNQS (0x05)
}
Else
{
FNQS (0x03)
}
LTGP = Zero
DTGP = Zero
}
Release (LFCM)
}
}
Notify (NPCF, 0xC0) // Hardware-Specific
}
Method (_Q15, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x15
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
LIDS = LSTE /* \_SB_.PCI0.LPC0.EC0_.LSTE */
Release (LFCM)
}
}
Notify (LID0, 0x80) // Status Change
}
Method (_Q16, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x16
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
LIDS = LSTE /* \_SB_.PCI0.LPC0.EC0_.LSTE */
Release (LFCM)
}
}
Notify (LID0, 0x80) // Status Change
}
Scope (\)
{
Name (GPSF, Zero)
Name (DCPS, Zero)
}
Name (DGST, 0xD1)
Method (_Q1E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x1E
If (((GATY == 0x02) || (MSMF == One)))
{
P80H = 0x91
If ((DGDF <= 0x04))
{
P80H = 0x92
Local0 = 0xD1
Local0 += DGDF /* \_SB_.PCI0.LPC0.EC0_.DGDF */
If ((Local0 == 0xD1))
{
DCPS = Zero
P80H = 0xD1
If ((DGST != Local0))
{
DGST = Local0
Notify (^^^GPP0.PEGP, Local0)
}
Sleep (0x0A)
If ((GPSF == Zero))
{
GPSF = One
Notify (NPCF, 0xC0) // Hardware-Specific
}
}
Else
{
DCPS = One
P80H = 0xD2
If ((DGST != Local0))
{
DGST = Local0
Notify (^^^GPP0.PEGP, Local0)
}
Sleep (0x0A)
If ((GPSF == One))
{
GPSF = Zero
Notify (NPCF, 0xC0) // Hardware-Specific
}
}
}
}
}
Method (_Q25, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x25
Notify (ADP0, 0x80) // Status Change
Notify (BAT0, 0x80) // Status Change
Notify (BAT0, 0x81) // Information Change
}
Method (_Q37, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x37
Sleep (0x012C)
If ((ACTY () == One))
{
LCK0 = Zero
}
Notify (GZFD, 0xE5) // Hardware-Specific
Sleep (0x05)
Notify (GZFD, 0xE7) // Hardware-Specific
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((CTMD == One))
{
SPMO = One
CAC1 = One
}
If ((((SPMO == Zero) && (PABD == One)) && (ACTY () == One)))
{
SSFM = One
SPMO = One
If ((DBFS == One))
{
FNQS (0x02)
}
Else
{
FNQS (One)
}
LTGP = One
DTGP = One
PABD = Zero
Sleep (0x05)
Notify (NPCF, 0xC0) // Hardware-Specific
}
ElseIf (((SPMO == Zero) && (PABD == Zero)))
{
If ((INSM == Zero))
{
If ((DBFS == One))
{
FNQS (0x04)
}
Else
{
FNQS (0x03)
}
}
}
ElseIf ((SPMO == 0x02))
{
FNQS (0x06)
}
Release (LFCM)
}
}
PWRS = One
Notify (ADP0, 0x80) // Status Change
Notify (BAT0, 0x80) // Status Change
}
Method (_Q38, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x38
Sleep (0x012C)
Notify (GZFD, 0xE5) // Hardware-Specific
Sleep (0x05)
Notify (GZFD, 0xE7) // Hardware-Specific
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If ((CTMD == One))
{
SPMO = Zero
CAC1 = Zero
}
If (((SPMO == One) && ((ACTY () == 0x02) || (ACTY () == 0x03))))
{
SSFM = One
SPMO = Zero
FNQS (0x05)
LTGP = Zero
DTGP = Zero
PABD = One
Sleep (0x05)
Notify (NPCF, 0xC0) // Hardware-Specific
}
ElseIf ((SPMO == Zero))
{
FNQS (0x05)
}
ElseIf ((SPMO == 0x02))
{
FNQS (0x07)
}
Release (LFCM)
}
}
PWRS = Zero
Notify (ADP0, 0x80) // Status Change
Notify (BAT0, 0x80) // Status Change
}
Method (_Q32, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x32
Notify (PWRB, 0x80) // Status Change
}
Method (_Q3E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x3E
}
Method (_Q3F, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x3F
}
Method (_Q44, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x44
Notify (VPC0, 0x80) // Status Change
}
Method (_Q70, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x70
Sleep (0x05)
}
Method (_Q74, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x74
Sleep (0x05)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
LCK0 = Zero
If (((ADPT == Zero) || (ACTY () == 0x02)))
{
If ((SPMO == 0x02))
{
FNQS (0x0A)
}
Else
{
FNQS (0x0C)
}
LCK0 = One
}
}
}
}
Method (_Q75, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x75
Sleep (0x05)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
LCK0 = Zero
If (((ADPT == Zero) || (ACTY () == 0x02)))
{
If ((SPMO == 0x02))
{
FNQS (0x09)
}
Else
{
FNQS (0x0B)
}
LCK0 = One
}
}
}
}
Method (_Q76, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x76
Sleep (0x05)
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
If (((ADPT == Zero) || (ACTY () == 0x02)))
{
LCK0 = Zero
If ((SPMO == 0x02))
{
FNQS (0x07)
}
Else
{
FNQS (0x05)
}
}
}
}
}
Method (_Q86, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x86
Sleep (0x05)
}
Method (_Q87, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x87
Sleep (0x05)
}
Method (_Q62, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x62
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = 0x03
Notify (GZFD, 0xD0) // Hardware-Specific
Release (LFCM)
}
}
}
Method (_Q63, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x63
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = One
Notify (GZFD, 0xD0) // Hardware-Specific
Release (LFCM)
}
}
}
Method (_Q66, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x66
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = 0x02
Notify (GZFD, 0xD0) // Hardware-Specific
Release (LFCM)
}
}
}
Method (_Q67, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x67
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (GZFD, 0xD0) // Hardware-Specific
Release (LFCM)
}
}
}
Method (_Q68, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x68
Notify (GZFD, 0xD1) // Hardware-Specific
}
Method (_Q69, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x69
Notify (GZFD, 0xE0) // Hardware-Specific
}
Method (_Q6A, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x6A
Notify (GZFD, 0xE1) // Hardware-Specific
}
Method (_Q6B, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0x6B
Notify (GZFD, 0xE2) // Hardware-Specific
}
Method (_QDE, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xDE
Notify (GZFD, 0xE6) // Hardware-Specific
}
Method (_QDD, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xDD
Name (NMLK, 0x0C)
Name (CPLK, 0x46)
If ((NUML == One))
{
M010 (NMLK, One)
}
Else
{
M010 (NMLK, Zero)
}
If ((CALK == One))
{
M010 (CPLK, One)
}
Else
{
M010 (CPLK, Zero)
}
}
Method (_QD1, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xD1
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (^^^GPP0.PEGP, 0xD1) // Hardware-Specific
Release (LFCM)
}
}
Sleep (0x0A)
}
Method (_QD2, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xD2
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (^^^GPP0.PEGP, 0xD2) // Hardware-Specific
Release (LFCM)
}
}
Sleep (0x0A)
}
Method (_QD3, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xD3
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (^^^GPP0.PEGP, 0xD3) // Hardware-Specific
Release (LFCM)
}
}
Sleep (0x0A)
}
Method (_QD4, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xD4
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (^^^GPP0.PEGP, 0xD4) // Hardware-Specific
Release (LFCM)
}
}
Sleep (0x0A)
}
Method (_QD5, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xD5
If (ECAV)
{
If ((Acquire (LFCM, 0xA000) == Zero))
{
GUST = Zero
Notify (^^^GPP0.PEGP, 0xD5) // Hardware-Specific
Release (LFCM)
}
}
Sleep (0x0A)
}
Method (_Q6C, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
SMBA = 0xCE
}
Scope (\)
{
Name (LSKD, Zero)
}
Method (_QDF, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P80H = 0xDF
If ((LSKV != Zero))
{
If ((LSKV < 0x27))
{
LSKD = LSKV /* \_SB_.PCI0.LPC0.EC0_.LSKV */
}
If ((LSKD == 0x04))
{
If ((HKDB == Zero))
{
M010 (0x8C, One)
}
Else
{
M010 (0x8C, Zero)
}
}
LSKV = Zero
}
Notify (WMIU, 0xD0) // Hardware-Specific
Notify (GZFD, 0xE8) // Hardware-Specific
}
}
Scope (\_SB)
{
Device (ADP0)
{
Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID
Name (XX00, Buffer (0x03){})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ECON == One))
{
Return (0x0F)
}
Return (Zero)
}
Name (ACDC, 0xFF)
Method (_PSR, 0, NotSerialized) // _PSR: Power Source
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local0 = One
Local0 = ^^PCI0.LPC0.EC0.ADPT /* \_SB_.PCI0.LPC0.EC0_.ADPT */
CreateWordField (XX00, Zero, SSZE)
CreateByteField (XX00, 0x02, ACST)
SSZE = 0x03
If ((Local0 != ACDC))
{
If (Local0)
{
P80H = 0xECAC
If (IGDS)
{
AFN4 (One)
}
ACST = Zero
}
Else
{
P80H = 0xECDC
If (IGDS)
{
AFN4 (0x02)
}
ACST = One
}
ALIB (One, XX00)
ACDC = Local0
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local0)
}
}
}
Method (_PCL, 0, NotSerialized) // _PCL: Power Consumer List
{
Return (Package (0x01)
{
_SB
})
}
}
Device (LID0)
{
Name (_HID, EisaId ("PNP0C0D") /* Lid Device */) // _HID: Hardware ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
^PCI0.LPC0.EC0
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ECON == One))
{
Return (0x0F)
}
Return (Zero)
}
Method (_LID, 0, NotSerialized) // _LID: Lid Status
{
Local0 = Zero
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local0 = ^^PCI0.LPC0.EC0.LSTE /* \_SB_.PCI0.LPC0.EC0_.LSTE */
Release (^^PCI0.LPC0.EC0.LFCM)
}
Return (Local0)
}
}
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C") /* Power Button Device */) // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ECON == One))
{
Return (0x0F)
}
Return (Zero)
}
}
Device (WMI4)
{
Name (_HID, EisaId ("PNP0C14") /* Windows Management Instrumentation Device */) // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
Mutex (MWMI, 0x00)
Name (_WDG, Buffer (0x28)
{
/* 0000 */ 0x76, 0x37, 0xA0, 0xC3, 0xAC, 0x51, 0xAA, 0x49, // v7...Q.I
/* 0008 */ 0xAD, 0x0F, 0xF2, 0xF7, 0xD6, 0x2C, 0x3F, 0x3C, // .....,?<
/* 0010 */ 0x41, 0x44, 0x03, 0x05, 0x21, 0x12, 0x90, 0x05, // AD..!...
/* 0018 */ 0x66, 0xD5, 0xD1, 0x11, 0xB2, 0xF0, 0x00, 0xA0, // f.......
/* 0020 */ 0xC9, 0x06, 0x29, 0x10, 0x42, 0x44, 0x01, 0x00 // ..).BD..
})
Name (ITEM, Package (0x03)
{
Package (0x03)
{
Zero,
Zero,
"BAT0 BatMaker"
},
Package (0x03)
{
Zero,
One,
"BAT0 HwId "
},
Package (0x03)
{
Zero,
0x02,
"BAT0 MfgDate "
}
})
Method (WQAD, 1, NotSerialized)
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local0 = PSAG (Arg0)
Local1 = DerefOf (ITEM [Local0])
Local2 = DerefOf (Local1 [Zero])
Local3 = DerefOf (Local1 [One])
Local4 = DerefOf (Local1 [0x02])
Local5 = BATD (Local2, Local3)
Concatenate (Local4, ",", Local6)
Concatenate (Local6, Local5, Local7)
Release (^^PCI0.LPC0.EC0.LFCM)
}
}
Return (Local7)
}
Method (PSAG, 1, NotSerialized)
{
Return (Arg0)
}
Method (BATD, 2, NotSerialized)
{
Name (STRB, Buffer (0x0A)
{
0x00 // .
})
Name (BUFR, Buffer (0x08){})
BUFR = ^^PCI0.LPC0.EC0.FWBT /* \_SB_.PCI0.LPC0.EC0_.FWBT */
CreateWordField (BUFR, Zero, MID0)
CreateWordField (BUFR, 0x02, HID0)
CreateWordField (BUFR, 0x04, FIR0)
CreateWordField (BUFR, 0x06, DAT0)
If ((Arg0 == Zero))
{
If ((Arg1 == Zero))
{
STRB = ToHexString (MID0)
}
If ((Arg1 == One))
{
STRB = ToHexString (HID0)
}
If ((Arg1 == 0x02))
{
Local0 = ^^PCI0.LPC0.EC0.B1DA /* \_SB_.PCI0.LPC0.EC0_.B1DA */
Name (DATB, Buffer (0x09)
{
"00000000"
})
Local3 = 0x07
Local1 = (Local0 & 0x1F)
While (Local1)
{
Divide (Local1, 0x0A, Local2, Local1)
DATB [Local3] = (Local2 + 0x30)
Local3--
}
Local3 = 0x05
Local1 = ((Local0 & 0x01E0) >> 0x05)
While (Local1)
{
Divide (Local1, 0x0A, Local2, Local1)
DATB [Local3] = (Local2 + 0x30)
Local3--
}
Local3 = 0x03
Local1 = (((Local0 & 0xFE00) >> 0x09) + 0x07BC)
While (Local1)
{
Divide (Local1, 0x0A, Local2, Local1)
DATB [Local3] = (Local2 + 0x30)
Local3--
}
STRB = DATB /* \_SB_.WMI4.BATD.DATB */
}
}
Return (ToString (STRB, Ones))
}
Name (WQBD, Buffer (0x0275)
{
/* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, // FOMB....
/* 0008 */ 0x65, 0x02, 0x00, 0x00, 0xF8, 0x05, 0x00, 0x00, // e.......
/* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, // DS...}.T
/* 0018 */ 0x18, 0xD1, 0x82, 0x00, 0x01, 0x06, 0x18, 0x42, // .......B
/* 0020 */ 0x10, 0x05, 0x10, 0x8A, 0x0D, 0x21, 0x02, 0x0B, // .....!..
/* 0028 */ 0x83, 0x50, 0x50, 0x18, 0x14, 0xA0, 0x45, 0x41, // .PP...EA
/* 0030 */ 0xC8, 0x05, 0x14, 0x95, 0x02, 0x21, 0xC3, 0x02, // .....!..
/* 0038 */ 0x14, 0x0B, 0x70, 0x2E, 0x40, 0xBA, 0x00, 0xE5, // ..p.@...
/* 0040 */ 0x28, 0x72, 0x0C, 0x22, 0x02, 0xF7, 0xEF, 0x0F, // (r."....
/* 0048 */ 0x31, 0xD0, 0x18, 0xA8, 0x50, 0x08, 0x89, 0x00, // 1...P...
/* 0050 */ 0xA6, 0x42, 0xE0, 0x08, 0x41, 0xBF, 0x02, 0x10, // .B..A...
/* 0058 */ 0x3A, 0x14, 0x20, 0x53, 0x80, 0x41, 0x01, 0x4E, // :. S.A.N
/* 0060 */ 0x11, 0x44, 0x10, 0xA5, 0x65, 0x01, 0xBA, 0x05, // .D..e...
/* 0068 */ 0xF8, 0x16, 0xA0, 0x1D, 0x42, 0x68, 0x91, 0x9A, // ....Bh..
/* 0070 */ 0x9F, 0x04, 0x81, 0x6A, 0x5B, 0x80, 0x45, 0x01, // ...j[.E.
/* 0078 */ 0xB2, 0x41, 0x08, 0xA0, 0xC7, 0xC1, 0x44, 0x0E, // .A....D.
/* 0080 */ 0x02, 0x25, 0x66, 0x10, 0x28, 0x9D, 0x73, 0x90, // .%f.(.s.
/* 0088 */ 0x4D, 0x60, 0xE1, 0x9F, 0x4C, 0x94, 0xF3, 0x88, // M`..L...
/* 0090 */ 0x92, 0xE0, 0xA8, 0x0E, 0x22, 0x42, 0xF0, 0x72, // ...."B.r
/* 0098 */ 0x05, 0x48, 0x9E, 0x80, 0x34, 0x4F, 0x4C, 0xD6, // .H..4OL.
/* 00A0 */ 0x07, 0xA1, 0x21, 0xB0, 0x11, 0xF0, 0x88, 0x12, // ..!.....
/* 00A8 */ 0x40, 0x58, 0xA0, 0x75, 0x2A, 0x14, 0x0C, 0xCA, // @X.u*...
/* 00B0 */ 0x03, 0x88, 0xE4, 0x8C, 0x15, 0x05, 0x6C, 0xAF, // ......l.
/* 00B8 */ 0x13, 0x91, 0xC9, 0x81, 0x52, 0x49, 0x70, 0xA8, // ....RIp.
/* 00C0 */ 0x61, 0x5A, 0xE2, 0xEC, 0x34, 0xB2, 0x13, 0x39, // aZ..4..9
/* 00C8 */ 0xB6, 0xA6, 0x87, 0x2C, 0x48, 0x26, 0x6D, 0x28, // ...,H&m(
/* 00D0 */ 0xA8, 0xB1, 0x7B, 0x5A, 0x27, 0xE5, 0x99, 0x46, // ..{Z'..F
/* 00D8 */ 0x3C, 0x28, 0xC3, 0x24, 0xF0, 0x28, 0x18, 0x1A, // <(.$.(..
/* 00E0 */ 0x27, 0x28, 0x0B, 0x42, 0x0E, 0x06, 0x8A, 0x02, // '(.B....
/* 00E8 */ 0x3C, 0x09, 0xCF, 0xB1, 0x78, 0x01, 0xC2, 0x67, // <...x..g
/* 00F0 */ 0x4C, 0xA6, 0x1D, 0x23, 0x81, 0xCF, 0x04, 0x1E, // L..#....
/* 00F8 */ 0xE6, 0x31, 0x63, 0x47, 0x14, 0x2E, 0xE0, 0xF9, // .1cG....
/* 0100 */ 0x1C, 0x43, 0xE4, 0xB8, 0x87, 0x1A, 0xE3, 0x28, // .C.....(
/* 0108 */ 0x22, 0x3F, 0x08, 0x60, 0x05, 0x1D, 0x04, 0x90, // "?.`....
/* 0110 */ 0x38, 0xFF, 0xFF, 0xE3, 0x89, 0x76, 0xDA, 0xC1, // 8....v..
/* 0118 */ 0x42, 0xC7, 0x39, 0xBF, 0xD0, 0x18, 0xD1, 0xE3, // B.9.....
/* 0120 */ 0x40, 0xC9, 0x80, 0x90, 0x47, 0x01, 0x56, 0x61, // @...G.Va
/* 0128 */ 0x35, 0x91, 0x04, 0xBE, 0x07, 0x74, 0x76, 0x12, // 5....tv.
/* 0130 */ 0xD0, 0xA5, 0x21, 0x46, 0x6F, 0x08, 0xD2, 0x26, // ..!Fo..&
/* 0138 */ 0xC0, 0x96, 0x00, 0x6B, 0x02, 0x8C, 0xDD, 0x06, // ...k....
/* 0140 */ 0x08, 0xCA, 0xD1, 0x36, 0x87, 0x22, 0x84, 0x28, // ...6.".(
/* 0148 */ 0x21, 0xE2, 0x86, 0xAC, 0x11, 0x45, 0x10, 0x95, // !....E..
/* 0150 */ 0x41, 0x08, 0x35, 0x50, 0xD8, 0x28, 0xF1, 0x8D, // A.5P.(..
/* 0158 */ 0x13, 0x22, 0x48, 0x02, 0x8F, 0x1C, 0x77, 0x04, // ."H...w.
/* 0160 */ 0xF0, 0xD8, 0x0E, 0xE8, 0x04, 0x4F, 0xE9, 0x71, // .....O.q
/* 0168 */ 0xC1, 0x04, 0x9E, 0xF7, 0xC1, 0x1D, 0xEA, 0x21, // .......!
/* 0170 */ 0x1C, 0x70, 0xD4, 0x18, 0xC7, 0xF1, 0x4C, 0x40, // .p....L@
/* 0178 */ 0x16, 0x2E, 0x0D, 0x20, 0x8A, 0x04, 0x8F, 0x3A, // ... ...:
/* 0180 */ 0x32, 0xF8, 0x70, 0xE0, 0x41, 0x7A, 0x9E, 0x9E, // 2.p.Az..
/* 0188 */ 0x40, 0x90, 0x43, 0x38, 0x82, 0xC7, 0x86, 0xA7, // @.C8....
/* 0190 */ 0x02, 0x8F, 0x81, 0x5D, 0x17, 0x7C, 0x0E, 0xF0, // ...].|..
/* 0198 */ 0x31, 0x01, 0xEF, 0x1A, 0x50, 0xA3, 0x7E, 0x3A, // 1...P.~:
/* 01A0 */ 0x60, 0x93, 0x0E, 0x87, 0x19, 0xAE, 0x87, 0x1D, // `.......
/* 01A8 */ 0xEE, 0x04, 0x1E, 0x0E, 0x1E, 0x33, 0xF8, 0x91, // .....3..
/* 01B0 */ 0xC3, 0x83, 0xC3, 0xCD, 0xF0, 0x64, 0x8E, 0xAC, // .....d..
/* 01B8 */ 0x54, 0x01, 0x66, 0x4F, 0x08, 0x3A, 0x4D, 0xF8, // T.fO.:M.
/* 01C0 */ 0xCC, 0xC1, 0x6E, 0x00, 0xE7, 0xD3, 0x33, 0x24, // ..n...3$
/* 01C8 */ 0x91, 0x3F, 0x08, 0xD4, 0xC8, 0x0C, 0xED, 0x69, // .?.....i
/* 01D0 */ 0xBF, 0x7A, 0x18, 0xF2, 0xA1, 0xE0, 0xB0, 0x98, // .z......
/* 01D8 */ 0xD8, 0xB3, 0x07, 0x1D, 0x0F, 0xF8, 0xAF, 0x24, // .......$
/* 01E0 */ 0x0F, 0x1B, 0x9E, 0xBE, 0xE7, 0x6B, 0x82, 0x91, // .....k..
/* 01E8 */ 0x07, 0x8E, 0x1E, 0x88, 0xA1, 0x9F, 0x38, 0x0E, // ......8.
/* 01F0 */ 0xE3, 0x34, 0x7C, 0x09, 0xF1, 0x39, 0xE0, 0xFF, // .4|..9..
/* 01F8 */ 0x1F, 0x24, 0xC6, 0x31, 0x79, 0x70, 0x3C, 0xD8, // .$.1yp<.
/* 0200 */ 0xC8, 0xE9, 0x51, 0xC5, 0x47, 0x0A, 0x7E, 0xBE, // ..Q.G.~.
/* 0208 */ 0xF0, 0x91, 0x82, 0x5D, 0x10, 0x9E, 0x1C, 0x0C, // ...]....
/* 0210 */ 0x71, 0x38, 0x67, 0xE5, 0x13, 0x85, 0x0F, 0x2A, // q8g....*
/* 0218 */ 0xB8, 0x13, 0x05, 0x5C, 0x85, 0xE8, 0xE4, 0x36, // ...\...6
/* 0220 */ 0x61, 0xB4, 0x67, 0x81, 0xC7, 0x09, 0x98, 0x07, // a.g.....
/* 0228 */ 0x01, 0xF0, 0x8D, 0xDF, 0x07, 0x19, 0xB0, 0x4D, // .......M
/* 0230 */ 0x09, 0x3B, 0x24, 0x78, 0x47, 0x19, 0xE0, 0x71, // .;$xG..q
/* 0238 */ 0x32, 0xC1, 0x1D, 0x27, 0x3C, 0x04, 0x3E, 0x80, // 2..'<.>.
/* 0240 */ 0x87, 0x90, 0x93, 0xB4, 0xD2, 0xA9, 0x21, 0xCF, // ......!.
/* 0248 */ 0x3C, 0x60, 0x1B, 0x06, 0x57, 0x68, 0xD3, 0xA7, // <`..Wh..
/* 0250 */ 0x46, 0xA3, 0x56, 0x0D, 0xCA, 0xD4, 0x28, 0xD3, // F.V...(.
/* 0258 */ 0xA0, 0x56, 0x9F, 0x4A, 0x8D, 0x19, 0xFB, 0xE1, // .V.J....
/* 0260 */ 0x58, 0xDC, 0xBB, 0x40, 0x07, 0x03, 0x0B, 0x7B, // X..@...{
/* 0268 */ 0x21, 0xE8, 0x88, 0xE0, 0x58, 0x20, 0x34, 0x08, // !...X 4.
/* 0270 */ 0x9D, 0x40, 0xFC, 0xFF, 0x07 // .@...
})
}
Scope (\)
{
Name (INSM, Zero)
Name (BCTP, Zero)
Name (CPP4, Zero)
Name (CTG2, Zero)
}
Name (FNQ0, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ1, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ2, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x000124F8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xD6D8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ3, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ4, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ6, Package (0x09)
{
Package (0x0D)
{
0x2E,
0x07,
0x06,
0x08,
0x20,
0x22,
0x24,
0x25,
0x26,
0x27,
0x28,
0x2C,
0x03
},
Package (0x0D)
{
0xFDE8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2D00,
0x21,
0x2666,
0xFE8A,
0xFEEC,
0x03C4,
0x4FAD,
0x64
},
Package (0x0D)
{
0xAFC8,
0x000156F8,
0x000156F8,
0x1E,
0x199A,
0x2800,
0x21,
0x2666,
0xFE88,
0x040E,
0x0339,
0x000FBE25,
0x64
},
Package (0x0D)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
},
Package (0x0D)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x64
},
Package (0x0D)
{
0x61A8,
0xAFC8,
0xBB80,
0x05,
0x199A,
0x2800,
0x21,
0x2666,
0xFE61,
0x01D2,
0x037C,
0x3E,
0x60
},
Package (0x0D)
{
0x61A8,
0x927C,
0xBB80,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0x4E20,
0x88B8,
0x9C40,
0x05,
0x199A,
0x1F00,
0x21,
0x2666,
0xB9,
0x05CF,
0x77,
0x000F88BB,
0x60
},
Package (0x0D)
{
0xC350,
0xD2F0,
0xFDE8,
0x0A,
0x199A,
0x2D00,
0x21,
0x2666,
0xFF45,
0x0306,
0x029A,
0x000FD500,
0x64
}
})
Name (FNQ7, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ8, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00013880,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xC350,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQ9, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
Name (FNQA, Package (0x16)
{
Package (0x08)
{
0x05,
0x07,
0x06,
One,
0x08,
0x03,
0x0C,
0x0B
},
Package (0x08)
{
0x00011170,
0x000156F8,
0x000156F8,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0xAFC8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x88B8,
0xD2F0,
0xFDE8,
0x0113,
0x0A,
0x64,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0xAFC8,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x927C,
0xBB80,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x4E20,
0x88B8,
0x9C40,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0xEA60,
0x00014C08,
0x00014C08,
0x01F4,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00011170,
0x4E20
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x2710,
0x2710,
0x2710,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00015F90,
0x80E8
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x00019A28,
0xC738
},
Package (0x08)
{
0x61A8,
0x88B8,
0x88B8,
0x32,
0x05,
0x5A,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x7530,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x88B8,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
},
Package (0x08)
{
0x9C40,
0x000156F8,
0x000156F8,
0xC8,
0x1E,
0x64,
0x0001ADB0,
0xE290
}
})
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
Field (ECMS, ByteAcc, Lock, Preserve)
{
INDX, 8,
DATA, 8
}
Method (RECM, 1, Serialized)
{
INDX = Arg0
Return (DATA) /* \_SB_.DATA */
}
Method (WECM, 2, Serialized)
{
INDX = Arg0
DATA = Arg1
}
Method (FNQR, 1, NotSerialized)
{
Name (XX11, Buffer (0x07){})
CreateWordField (XX11, Zero, SSZE)
CreateByteField (XX11, 0x02, SMUF)
CreateDWordField (XX11, 0x03, SMUD)
SSZE = 0x07
Local0 = 0x08
If ((MCSK == 0x04))
{
If ((GTYP == 0x02))
{
Local6 = FNQ4 /* \_SB_.FNQ4 */
}
Else
{
Local6 = FNQ3 /* \_SB_.FNQ3 */
}
}
ElseIf ((MCSK == 0x02))
{
If (((((0x04 == GTYP) || (0x05 == GTYP)) || (0x06 ==
GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ2 /* \_SB_.FNQ2 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ8 /* \_SB_.FNQ8 */
}
Else
{
Local6 = FNQ7 /* \_SB_.FNQ7 */
}
}
ElseIf (((((0x04 == GTYP) || (0x05 == GTYP)) || (
0x06 == GTYP)) || (0x07 == GTYP)))
{
Local6 = FNQ1 /* \_SB_.FNQ1 */
}
ElseIf ((GTYP == 0x02))
{
Local6 = FNQ9 /* \_SB_.FNQ9 */
}
Else
{
Local6 = FNQA /* \_SB_.FNQA */
}
Local1 = ((Local1 = (Local0 * 0x05)) + 0x02)
Name (BUFF, Buffer (Local1){})
BUFF [Zero] = Local1
BUFF [One] = Zero
Local2 = One
Local3 = Zero
While ((Local3 < Local0))
{
BUFF [Local2 += One] = DerefOf (DerefOf (Local6 [
Zero]) [Local3])
BUFF [Local2 += One] = (DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF00) >> 0x08)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0x00FF0000) >> 0x10)
BUFF [Local2 += One] = ((DerefOf (DerefOf (
Local6 [Arg0]) [Local3]) & 0xFF000000) >> 0x18)
Local3 += One
}
ALIB (0x0C, BUFF)
OperationRegion (CPUP, SystemMemory, 0xFE00D6B0, 0x10)
Field (CPUP, ByteAcc, NoLock, Preserve)
{
CPP1, 16,
CPP2, 16
}
If ((^PCI0.LPC0.EC0.CAC1 == One))
{
If (((CPP2 != Zero) && (CPP1 != Zero)))
{
SMUF = 0x07
SMUD = CPP2 /* \_SB_.FNQR.CPP2 */
ALIB (0x0C, XX11)
SMUF = 0x05
SMUD = CPP1 /* \_SB_.FNQR.CPP1 */
ALIB (0x0C, XX11)
}
}
}
Method (FNQS, 1, NotSerialized)
{
Local0 = Arg0
Local1 = ((One == Local0) || (0x02 == Local0))
Local2 = ((0x03 == Local0) || (0x04 == Local0))
Local3 = (Local1 || Local2)
If (((0x02 == ^PCI0.LPC0.EC0.ACTY ()) || (0x03 == ^PCI0.LPC0.EC0.ACTY ())))
{
If (Local3)
{
Local0 = 0x05
}
If ((0x06 == Local0))
{
Local0 = 0x07
}
}
If ((LCK0 == Zero))
{
FNQR (Local0)
}
}
Scope (\_SB)
{
Device (GZFD)
{
Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */) // _HID: Hardware ID
Name (_UID, "GMZN") // _UID: Unique ID
Name (LCOD, 0x55)
Name (_WDG, Buffer (0x01CC)
{
/* 0000 */ 0xE3, 0x54, 0x7B, 0x88, 0xDC, 0xDD, 0x2C, 0x4B, // .T{...,K
/* 0008 */ 0x8B, 0x88, 0x68, 0xA2, 0x6A, 0x88, 0x35, 0xD0, // ..h.j.5.
/* 0010 */ 0x41, 0x41, 0x01, 0x02, 0x49, 0x95, 0x54, 0x92, // AA..I.T.
/* 0018 */ 0xDE, 0x4B, 0x06, 0x4F, 0xAC, 0x04, 0xCE, 0x8B, // .K.O....
/* 0020 */ 0xF8, 0x98, 0xDB, 0xAA, 0x42, 0x32, 0x01, 0x02, // ....B2..
/* 0028 */ 0x77, 0xD7, 0xAF, 0x14, 0x6F, 0x10, 0x9B, 0x4C, // w...o..L
/* 0030 */ 0xB3, 0x34, 0xD3, 0x88, 0xDC, 0x78, 0x09, 0xBE, // .4...x..
/* 0038 */ 0x42, 0x33, 0x01, 0x02, 0xF1, 0x47, 0x75, 0xDA, // B3...Gu.
/* 0040 */ 0x4D, 0x82, 0x5F, 0x40, 0xBE, 0x79, 0xD9, 0x90, // M._@.y..
/* 0048 */ 0x3E, 0x29, 0xCE, 0xD7, 0x42, 0x34, 0x01, 0x02, // >)..B4..
/* 0050 */ 0x05, 0x88, 0x2A, 0xDC, 0x8C, 0x3A, 0xBA, 0x41, // ..*..:.A
/* 0058 */ 0xA6, 0xF7, 0x09, 0x2E, 0x00, 0x89, 0xCD, 0x3B, // .......;
/* 0060 */ 0x42, 0x35, 0x01, 0x02, 0x27, 0x91, 0x5B, 0x8C, // B5..'.[.
/* 0068 */ 0xD4, 0xEC, 0x57, 0x46, 0x98, 0x0F, 0x85, 0x10, // ..WF....
/* 0070 */ 0x19, 0xF9, 0x9C, 0xA5, 0x42, 0x41, 0x01, 0x02, // ....BA..
/* 0078 */ 0x6D, 0x2A, 0xFB, 0x87, 0x02, 0xD8, 0xE7, 0x48, // m*.....H
/* 0080 */ 0x92, 0x08, 0x45, 0x76, 0xC5, 0xF5, 0xC8, 0xD8, // ..Ev....
/* 0088 */ 0x41, 0x33, 0x02, 0x01, 0x84, 0xBD, 0xD5, 0x4D, // A3.....M
/* 0090 */ 0xA9, 0x15, 0xE2, 0x47, 0xAD, 0x65, 0xCC, 0x61, // ...G.e.a
/* 0098 */ 0xA5, 0xC6, 0x2F, 0xD0, 0x41, 0x34, 0x06, 0x01, // ../.A4..
/* 00A0 */ 0x0A, 0xCA, 0xF3, 0xB7, 0xDC, 0xAC, 0xD2, 0x42, // .......B
/* 00A8 */ 0x92, 0x17, 0x77, 0xC6, 0xC6, 0x28, 0xFB, 0xD2, // ..w..(..
/* 00B0 */ 0x41, 0x30, 0x01, 0x01, 0xE2, 0x54, 0x7B, 0x88, // A0...T{.
/* 00B8 */ 0xDC, 0xDD, 0x2C, 0x4B, 0x8B, 0x88, 0x68, 0xA2, // ..,K..h.
/* 00C0 */ 0x6A, 0x88, 0x35, 0xD0, 0x41, 0x31, 0x02, 0x01, // j.5.A1..
/* 00C8 */ 0xD3, 0x7C, 0xA5, 0x93, 0xC6, 0xBB, 0xAB, 0x46, // .|.....F
/* 00D0 */ 0x95, 0x1D, 0x31, 0xF1, 0x7C, 0xC9, 0x68, 0xA0, // ..1.|.h.
/* 00D8 */ 0x41, 0x32, 0x12, 0x01, 0x81, 0x24, 0xD4, 0xBF, // A2...$..
/* 00E0 */ 0xE3, 0xAE, 0x01, 0x45, 0xA1, 0x07, 0xAF, 0xB6, // ...E....
/* 00E8 */ 0x84, 0x25, 0xC5, 0xF8, 0xD0, 0x00, 0x01, 0x08, // .%......
/* 00F0 */ 0x81, 0x24, 0xD4, 0xBF, 0xE3, 0xAE, 0x02, 0x45, // .$.....E
/* 00F8 */ 0xA1, 0x07, 0xAF, 0xB6, 0x84, 0x25, 0xC5, 0xF8, // .....%..
/* 0100 */ 0xE0, 0x00, 0x01, 0x08, 0x6B, 0x90, 0x62, 0xD0, // ....k.b.
/* 0108 */ 0xD4, 0x12, 0x10, 0x45, 0x99, 0x9D, 0x48, 0x31, // ...E..H1
/* 0110 */ 0xEE, 0x80, 0xE9, 0x85, 0xD1, 0x00, 0x01, 0x08, // ........
/* 0118 */ 0x35, 0xA4, 0x72, 0xBC, 0xC1, 0xE8, 0x75, 0x42, // 5.r...uB
/* 0120 */ 0xB3, 0xE2, 0xD8, 0xB8, 0x07, 0x4A, 0xBA, 0x59, // .....J.Y
/* 0128 */ 0xE1, 0x00, 0x01, 0x08, 0xD9, 0xC6, 0xAF, 0x10, // ........
/* 0130 */ 0x8B, 0xEA, 0x90, 0x45, 0xA2, 0xE7, 0x1C, 0xD3, // ...E....
/* 0138 */ 0xC8, 0x4B, 0xB4, 0xB1, 0xE2, 0x00, 0x01, 0x08, // .K......
/* 0140 */ 0x9E, 0x28, 0x20, 0xD3, 0xEA, 0x8F, 0xE0, 0x41, // .( ....A
/* 0148 */ 0x86, 0xF9, 0x61, 0x1D, 0x83, 0x15, 0x1B, 0x5F, // ..a...._
/* 0150 */ 0xE3, 0x00, 0x01, 0x08, 0xA1, 0x91, 0x33, 0x1E, // ......3.
/* 0158 */ 0x89, 0x2C, 0x4D, 0x46, 0x95, 0xD9, 0x30, 0x28, // .,MF..0(
/* 0160 */ 0xB7, 0x2E, 0x7A, 0x33, 0xE8, 0x00, 0x01, 0x08, // ..z3....
/* 0168 */ 0x9E, 0x28, 0x20, 0xD3, 0xEA, 0x8F, 0xE1, 0x41, // .( ....A
/* 0170 */ 0x86, 0xF9, 0x61, 0x1D, 0x83, 0x15, 0x1B, 0x5F, // ..a...._
/* 0178 */ 0xE4, 0x00, 0x01, 0x08, 0x9E, 0x28, 0x20, 0xD3, // .....( .
/* 0180 */ 0xEA, 0x8F, 0xE0, 0x41, 0x86, 0xF9, 0x71, 0x1D, // ...A..q.
/* 0188 */ 0x83, 0x15, 0x1B, 0x5F, 0xE5, 0x00, 0x01, 0x08, // ..._....
/* 0190 */ 0x9E, 0x28, 0x20, 0xD3, 0xEA, 0x8F, 0xE0, 0x41, // .( ....A
/* 0198 */ 0x86, 0xF9, 0x81, 0x1D, 0x83, 0x15, 0x1B, 0x5F, // ......._
/* 01A0 */ 0xE6, 0x00, 0x01, 0x08, 0x9E, 0x28, 0x20, 0xD3, // .....( .
/* 01A8 */ 0xEA, 0x8F, 0xE0, 0x41, 0x86, 0xF9, 0x91, 0x1D, // ...A....
/* 01B0 */ 0x83, 0x15, 0x1B, 0x5F, 0xE7, 0x00, 0x01, 0x08, // ..._....
/* 01B8 */ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, // !...f...
/* 01C0 */ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, // ......).
/* 01C8 */ 0x44, 0x44, 0x01, 0x00 // DD..
})
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
Field (ECMS, ByteAcc, Lock, Preserve)
{
INDX, 8,
DATA, 8
}
Method (RECM, 1, Serialized)
{
INDX = Arg0
Return (DATA) /* \_SB_.GZFD.DATA */
}
Method (WECM, 2, Serialized)
{
INDX = Arg0
DATA = Arg1
}
Name (CPOC, Buffer (0x0190){})
Method (WQA0, 1, NotSerialized)
{
Return (CPOC) /* \_SB_.GZFD.CPOC */
}
Method (FTOI, 2, NotSerialized)
{
Name (OCVI, Zero)
Name (NORP, Zero)
Name (REMA, Zero)
Name (MANT, Zero)
Name (INDE, Zero)
Name (SHFT, Zero)
Name (RESU, Zero)
OCVI = Arg0
NORP = Arg1
Divide (OCVI, 0x02, REMA, OCVI) /* \_SB_.GZFD.FTOI.OCVI */
While ((OCVI != Zero))
{
REMA <<= INDE /* \_SB_.GZFD.FTOI.INDE */
MANT += REMA /* \_SB_.GZFD.FTOI.REMA */
INDE += One
Divide (OCVI, 0x02, REMA, OCVI) /* \_SB_.GZFD.FTOI.OCVI */
}
SHFT = (0x17 - INDE) /* \_SB_.GZFD.FTOI.INDE */
MANT <<= SHFT /* \_SB_.GZFD.FTOI.SHFT */
RESU |= MANT /* \_SB_.GZFD.FTOI.MANT */
INDE += 0x7F
INDE <<= 0x17
RESU |= INDE /* \_SB_.GZFD.FTOI.INDE */
If ((NORP == One))
{
RESU |= 0x80000000
}
Return (RESU) /* \_SB_.GZFD.FTOI.RESU */
}
Name (GOC0, Buffer (0x2C)
{
0x00 // .
})
CreateDWordField (GOC0, Zero, GPST)
CreateDWordField (GOC0, 0x04, GOCI)
CreateDWordField (GOC0, 0x08, GDEV)
CreateDWordField (GOC0, 0x0C, GOCV)
CreateDWordField (GOC0, 0x10, GMIN)
CreateDWordField (GOC0, 0x14, GMAX)
CreateDWordField (GOC0, 0x18, GSCV)
CreateDWordField (GOC0, 0x1C, GOCO)
CreateDWordField (GOC0, 0x20, GNOC)
CreateDWordField (GOC0, 0x24, GDET)
CreateDWordField (GOC0, 0x28, GCAP)
Name (GOC1, Buffer (0x2C)
{
0x00 // .
})
CreateDWordField (GOC1, Zero, MPST)
CreateDWordField (GOC1, 0x04, MOCI)
CreateDWordField (GOC1, 0x08, MDEV)
CreateDWordField (GOC1, 0x0C, MOCV)
CreateDWordField (GOC1, 0x10, MMIN)
CreateDWordField (GOC1, 0x14, MMAX)
CreateDWordField (GOC1, 0x18, MSCV)
CreateDWordField (GOC1, 0x1C, MOCO)
CreateDWordField (GOC1, 0x20, MNOC)
CreateDWordField (GOC1, 0x24, MDET)
CreateDWordField (GOC1, 0x28, MCAP)
Method (WQA1, 1, NotSerialized)
{
If ((Arg0 == Zero))
{
GPST = Zero
GOCI = Zero
GDEV = Zero
If ((GCCO == Zero))
{
GOCV = Zero
}
Else
{
GOCV = FTOI (GCCO, GCOP)
}
GMIN = Zero
GMAX = 0x43160000
GSCV = One
GOCO = Zero
GNOC = Zero
GDET = Zero
GCAP = Zero
Return (GOC0) /* \_SB_.GZFD.GOC0 */
}
If ((Arg0 == One))
{
MPST = Zero
MOCI = One
MDEV = Zero
If ((GVCO == Zero))
{
MOCV = Zero
}
Else
{
MOCV = FTOI (GVCO, GVOP)
}
MMIN = Zero
MMAX = 0x43960000
MSCV = One
MOCO = Zero
MNOC = Zero
MDET = Zero
MCAP = One
Return (GOC1) /* \_SB_.GZFD.GOC1 */
}
}
Name (WTL1, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"0"
},
Package (0x02)
{
"LeagueClient.exe",
"0"
},
Package (0x02)
{
"dota2.exe",
"0"
},
Package (0x02)
{
"csgo.exe",
"0"
},
Package (0x02)
{
"TslGame.exe",
"0"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"0"
},
Package (0x02)
{
"RainbowSix.exe",
"0"
},
Package (0x02)
{
"SOTTR.exe",
"0"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"0"
},
Package (0x02)
{
"ACOdyssey.exe",
"0"
},
Package (0x02)
{
"RDR2.exe",
"0"
},
Package (0x02)
{
"MetroExodus.exe",
"0"
},
Package (0x02)
{
"bfv.exe",
"0"
},
Package (0x02)
{
"F1_2020.exe",
"0"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"0"
},
Package (0x02)
{
"GTA5.exe",
"0"
},
Package (0x02)
{
"Overwatch.exe",
"0"
},
Package (0x02)
{
"ACValhalla.exe",
"0"
}
})
Name (WTL2, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"5"
},
Package (0x02)
{
"LeagueClient.exe",
"5"
},
Package (0x02)
{
"dota2.exe",
"1"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"3"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"2"
},
Package (0x02)
{
"RainbowSix.exe",
"3"
},
Package (0x02)
{
"SOTTR.exe",
"2"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"2"
},
Package (0x02)
{
"RDR2.exe",
"4"
},
Package (0x02)
{
"MetroExodus.exe",
"1"
},
Package (0x02)
{
"bfv.exe",
"3"
},
Package (0x02)
{
"F1_2020.exe",
"1"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"2"
},
Package (0x02)
{
"GTA5.exe",
"4"
},
Package (0x02)
{
"Overwatch.exe",
"2"
},
Package (0x02)
{
"ACValhalla.exe",
"1"
}
})
Name (WTL3, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"5"
},
Package (0x02)
{
"LeagueClient.exe",
"5"
},
Package (0x02)
{
"dota2.exe",
"5"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"3"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"2"
},
Package (0x02)
{
"RainbowSix.exe",
"1"
},
Package (0x02)
{
"SOTTR.exe",
"2"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"3"
},
Package (0x02)
{
"RDR2.exe",
"1"
},
Package (0x02)
{
"MetroExodus.exe",
"1"
},
Package (0x02)
{
"bfv.exe",
"3"
},
Package (0x02)
{
"F1_2020.exe",
"4"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"2"
},
Package (0x02)
{
"GTA5.exe",
"4"
},
Package (0x02)
{
"Overwatch.exe",
"4"
},
Package (0x02)
{
"ACValhalla.exe",
"1"
}
})
Name (WTL4, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"5"
},
Package (0x02)
{
"LeagueClient.exe",
"5"
},
Package (0x02)
{
"dota2.exe",
"5"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"1"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"1"
},
Package (0x02)
{
"RainbowSix.exe",
"1"
},
Package (0x02)
{
"SOTTR.exe",
"2"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"1"
},
Package (0x02)
{
"RDR2.exe",
"1"
},
Package (0x02)
{
"MetroExodus.exe",
"1"
},
Package (0x02)
{
"bfv.exe",
"1"
},
Package (0x02)
{
"F1_2020.exe",
"1"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"2"
},
Package (0x02)
{
"GTA5.exe",
"1"
},
Package (0x02)
{
"Overwatch.exe",
"1"
},
Package (0x02)
{
"ACValhalla.exe",
"1"
}
})
Name (WTL5, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"1"
},
Package (0x02)
{
"LeagueClient.exe",
"1"
},
Package (0x02)
{
"dota2.exe",
"1"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"3"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"2"
},
Package (0x02)
{
"RainbowSix.exe",
"1"
},
Package (0x02)
{
"SOTTR.exe",
"2"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"3"
},
Package (0x02)
{
"RDR2.exe",
"1"
},
Package (0x02)
{
"MetroExodus.exe",
"1"
},
Package (0x02)
{
"bfv.exe",
"3"
},
Package (0x02)
{
"F1_2020.exe",
"4"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"2"
},
Package (0x02)
{
"GTA5.exe",
"4"
},
Package (0x02)
{
"Overwatch.exe",
"4"
},
Package (0x02)
{
"ACValhalla.exe",
"1"
}
})
Name (WTL6, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"4"
},
Package (0x02)
{
"LeagueClient.exe",
"4"
},
Package (0x02)
{
"dota2.exe",
"4"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"1"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"1"
},
Package (0x02)
{
"RainbowSix.exe",
"4"
},
Package (0x02)
{
"SOTTR.exe",
"1"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"3"
},
Package (0x02)
{
"RDR2.exe",
"1"
},
Package (0x02)
{
"MetroExodus.exe",
"3"
},
Package (0x02)
{
"bfv.exe",
"3"
},
Package (0x02)
{
"F1_2020.exe",
"3"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"1"
},
Package (0x02)
{
"GTA5.exe",
"2"
},
Package (0x02)
{
"Overwatch.exe",
"1"
},
Package (0x02)
{
"ACValhalla.exe",
"3"
}
})
Name (WTL7, Package (0x12)
{
Package (0x02)
{
"League of Legends.exe",
"4"
},
Package (0x02)
{
"LeagueClient.exe",
"4"
},
Package (0x02)
{
"dota2.exe",
"4"
},
Package (0x02)
{
"csgo.exe",
"1"
},
Package (0x02)
{
"TslGame.exe",
"1"
},
Package (0x02)
{
"FortniteClient-Win64-Shipping.exe",
"1"
},
Package (0x02)
{
"RainbowSix.exe",
"4"
},
Package (0x02)
{
"SOTTR.exe",
"1"
},
Package (0x02)
{
"FarCryNewDawn.exe",
"1"
},
Package (0x02)
{
"ACOdyssey.exe",
"3"
},
Package (0x02)
{
"RDR2.exe",
"1"
},
Package (0x02)
{
"MetroExodus.exe",
"3"
},
Package (0x02)
{
"bfv.exe",
"3"
},
Package (0x02)
{
"F1_2020.exe",
"3"
},
Package (0x02)
{
"Cyberpunk2077.exe",
"1"
},
Package (0x02)
{
"GTA5.exe",
"2"
},
Package (0x02)
{
"Overwatch.exe",
"1"
},
Package (0x02)
{
"ACValhalla.exe",
"3"
}
})
Method (WQA2, 1, NotSerialized)
{
If (((MCSK == 0x02) || (MCSK == 0x04)))
{
If ((GTYP == 0x02))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL2 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL2 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL2 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL2 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL2 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL2 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL2 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL2 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL2 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL2 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL2 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL2 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL2 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL2 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL2 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL2 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL2 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL2 [0x11]))
}
}
ElseIf ((GTYP == 0x03))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL3 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL3 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL3 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL3 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL3 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL3 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL3 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL3 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL3 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL3 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL3 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL3 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL3 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL3 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL3 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL3 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL3 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL3 [0x11]))
}
}
ElseIf ((GTYP == One))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL4 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL4 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL4 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL4 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL4 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL4 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL4 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL4 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL4 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL4 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL4 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL4 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL4 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL4 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL4 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL4 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL4 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL4 [0x11]))
}
}
ElseIf (((GTYP == 0x04) || (GTYP == 0x06)))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL7 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL7 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL7 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL7 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL7 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL7 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL7 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL7 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL7 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL7 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL7 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL7 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL7 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL7 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL7 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL7 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL7 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL7 [0x11]))
}
}
Else
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL1 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL1 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL1 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL1 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL1 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL1 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL1 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL1 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL1 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL1 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL1 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL1 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL1 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL1 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL1 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL1 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL1 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL1 [0x11]))
}
}
}
If (((MCSK == One) || (MCSK == 0x03)))
{
If ((GTYP == 0x02))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL5 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL5 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL5 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL5 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL5 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL5 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL5 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL5 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL5 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL5 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL5 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL5 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL5 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL5 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL5 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL5 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL5 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL5 [0x11]))
}
}
ElseIf ((GTYP == 0x03))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL6 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL6 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL6 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL6 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL6 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL6 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL6 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL6 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL6 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL6 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL6 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL6 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL6 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL6 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL6 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL6 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL6 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL6 [0x11]))
}
}
ElseIf (((GTYP == 0x04) || (GTYP == 0x06)))
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL7 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL7 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL7 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL7 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL7 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL7 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL7 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL7 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL7 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL7 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL7 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL7 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL7 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL7 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL7 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL7 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL7 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL7 [0x11]))
}
}
Else
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL1 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL1 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL1 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL1 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL1 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL1 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL1 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL1 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL1 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL1 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL1 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL1 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL1 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL1 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL1 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL1 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL1 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL1 [0x11]))
}
}
}
Else
{
If ((Arg0 == Zero))
{
Return (DerefOf (WTL1 [Zero]))
}
If ((Arg0 == One))
{
Return (DerefOf (WTL1 [One]))
}
If ((Arg0 == 0x02))
{
Return (DerefOf (WTL1 [0x02]))
}
If ((Arg0 == 0x03))
{
Return (DerefOf (WTL1 [0x03]))
}
If ((Arg0 == 0x04))
{
Return (DerefOf (WTL1 [0x04]))
}
If ((Arg0 == 0x05))
{
Return (DerefOf (WTL1 [0x05]))
}
If ((Arg0 == 0x06))
{
Return (DerefOf (WTL1 [0x06]))
}
If ((Arg0 == 0x07))
{
Return (DerefOf (WTL1 [0x07]))
}
If ((Arg0 == 0x08))
{
Return (DerefOf (WTL1 [0x08]))
}
If ((Arg0 == 0x09))
{
Return (DerefOf (WTL1 [0x09]))
}
If ((Arg0 == 0x0A))
{
Return (DerefOf (WTL1 [0x0A]))
}
If ((Arg0 == 0x0B))
{
Return (DerefOf (WTL1 [0x0B]))
}
If ((Arg0 == 0x0C))
{
Return (DerefOf (WTL1 [0x0C]))
}
If ((Arg0 == 0x0D))
{
Return (DerefOf (WTL1 [0x0D]))
}
If ((Arg0 == 0x0E))
{
Return (DerefOf (WTL1 [0x0E]))
}
If ((Arg0 == 0x0F))
{
Return (DerefOf (WTL1 [0x0F]))
}
If ((Arg0 == 0x10))
{
Return (DerefOf (WTL1 [0x10]))
}
If ((Arg0 == 0x11))
{
Return (DerefOf (WTL1 [0x11]))
}
}
}
Name (FACT, Buffer (0x22)
{
0x00 // .
})
CreateByteField (FACT, Zero, FNID)
CreateDWordField (FACT, One, FNLE)
CreateWordField (FACT, 0x05, FNSP)
CreateByteField (FACT, 0x07, SEID)
CreateDWordField (FACT, 0x08, STLE)
CreateWordField (FACT, 0x0C, SSTM)
CreateWordField (FACT, 0x0E, FDMA)
CreateWordField (FACT, 0x10, FCMA)
CreateWordField (FACT, 0x12, FDMI)
CreateWordField (FACT, 0x14, FCMI)
CreateWordField (FACT, 0x16, FSST)
CreateWordField (FACT, 0x18, MAST)
CreateWordField (FACT, 0x1A, MIST)
CreateWordField (FACT, 0x1C, STST)
Method (WQA3, 1, NotSerialized)
{
If ((Arg0 == Zero))
{
FNID = Zero
FCMA = 0x1194
FDMI = 0x1130
Return (FACT) /* \_SB_.GZFD.FACT */
}
If ((Arg0 == One))
{
FNID = One
Return (FACT) /* \_SB_.GZFD.FACT */
}
}
Name (LTDA, Buffer (0x07)
{
0x00 // .
})
CreateByteField (LTDA, Zero, LTID)
CreateByteField (LTDA, One, COTI)
CreateByteField (LTDA, 0x02, LTTP)
CreateByteField (LTDA, 0x03, STTN)
CreateByteField (LTDA, 0x04, DFST)
CreateByteField (LTDA, 0x05, BNLE)
CreateByteField (LTDA, 0x06, DBNL)
Method (WQA4, 1, NotSerialized)
{
If ((^^PCI0.LPC0.EC0.STYP == One))
{
If ((Arg0 == Zero))
{
LTID = Zero
COTI = Zero
LTTP = One
STTN = 0x06
DFST = Zero
BNLE = 0x04
DBNL = 0x03
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == One))
{
LTID = One
COTI = Zero
LTTP = One
STTN = 0x06
DFST = Zero
BNLE = 0x04
DBNL = 0x03
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x02))
{
LTID = 0x02
COTI = Zero
LTTP = One
STTN = 0x06
DFST = Zero
BNLE = 0x04
DBNL = 0x03
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x03))
{
LTID = 0x03
COTI = Zero
LTTP = One
STTN = 0x04
DFST = Zero
BNLE = 0x04
DBNL = 0x03
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x04))
{
LTID = 0x04
COTI = 0x02
LTTP = One
STTN = 0x04
DFST = One
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x05))
{
LTID = 0x05
COTI = One
LTTP = Zero
STTN = 0x02
DFST = One
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
}
Else
{
If ((^^PCI0.LPC0.EC0.STYP == 0x02))
{
If ((Arg0 == Zero))
{
LTID = Zero
COTI = One
LTTP = Zero
STTN = 0x02
DFST = One
BNLE = 0x03
DBNL = One
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
}
ElseIf ((^^PCI0.LPC0.EC0.STYP == 0x03))
{
If ((Arg0 == Zero))
{
LTID = Zero
COTI = Zero
LTTP = One
STTN = 0x05
DFST = Zero
BNLE = 0x04
DBNL = 0x03
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
}
If ((Arg0 == One))
{
LTID = One
COTI = Zero
LTTP = Zero
STTN = Zero
DFST = Zero
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x02))
{
LTID = 0x02
COTI = Zero
LTTP = Zero
STTN = Zero
DFST = Zero
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x03))
{
LTID = 0x03
COTI = One
LTTP = Zero
STTN = 0x02
DFST = One
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x04))
{
LTID = 0x04
COTI = One
LTTP = Zero
STTN = 0x04
DFST = One
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
If ((Arg0 == 0x05))
{
LTID = 0x05
COTI = Zero
LTTP = Zero
STTN = Zero
DFST = Zero
BNLE = Zero
DBNL = Zero
Return (LTDA) /* \_SB_.GZFD.LTDA */
}
}
}
Method (WMAA, 3, NotSerialized)
{
If ((Arg1 == 0x04))
{
If ((GTYP == 0x05))
{
Return (Zero)
}
Else
{
Return (0x03)
}
}
If ((Arg1 == 0x0B))
{
Return (0x0D)
}
If ((Arg1 == 0x0C))
{
Return (Zero)
}
If ((Arg1 == 0x0D))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x70)
}
Else
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x76)
}
}
If ((Arg1 == 0x0E))
{
Return (Zero)
}
If ((Arg1 == 0x0F))
{
Return (Zero)
}
If ((Arg1 == 0x10))
{
Return (Zero)
}
If ((Arg1 == 0x12))
{
Return (Zero)
}
If ((Arg1 == 0x13))
{
Return (Zero)
}
If ((Arg1 == 0x14))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.FCST & One))
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (One)
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x15))
{
Return (One)
}
If ((Arg1 == 0x16))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x78)
}
Else
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x79)
}
}
If ((Arg1 == 0x17))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.GDST & 0x02))
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (One)
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x18))
{
Return (One)
}
If ((Arg1 == 0x19))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x7B)
}
Else
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x7A)
}
}
If ((Arg1 == 0x1A))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.GDST & 0x04))
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (One)
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x1D))
{
Return (Zero)
}
If ((Arg1 == 0x1E))
{
Local1 = Zero
Local1 |= 0xF000
Local1 |= 0x04
Local1 |= 0x10
Local1 |= 0x40
Return (Local1)
}
If ((Arg1 == 0x1F))
{
Local1 = 0x0C80
Local2 = 0x0C80
Local1 |= (Local2 << 0x10)
Return (Local1)
}
If ((Arg1 == 0x20))
{
Return (Zero)
}
If ((Arg1 == 0x21))
{
Return (Zero)
}
If ((Arg1 == 0x22))
{
Return (Zero)
}
If ((Arg1 == 0x23))
{
If ((^^PCI0.LPC0.EC0.KBLT == One))
{
Return (0x04)
}
Else
{
Return (0xF0)
}
}
If ((Arg1 == 0x24))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.KLOR = One
^^PCI0.LPC0.EC0.KLCH = One
}
Else
{
^^PCI0.LPC0.EC0.KLOR = Zero
^^PCI0.LPC0.EC0.KLCH = One
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x25))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local1 = ^^PCI0.LPC0.EC0.KLOR /* \_SB_.PCI0.LPC0.EC0_.KLOR */
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x26))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local1 = Zero
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x27))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local1 = Zero
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x28))
{
Return (0x02)
}
If ((Arg1 == 0x29))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.MSMF == One))
{
Local1 = One
}
ElseIf ((^^PCI0.LPC0.EC0.MSMF == Zero))
{
Local1 = Zero
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x2A))
{
If ((ToInteger (Arg2) == One))
{
SMBB = 0x26
SMBA = 0xCA
}
ElseIf ((ToInteger (Arg2) == Zero))
{
SMBB = 0x25
SMBA = 0xCA
}
Return (Zero)
}
If ((Arg1 == 0x2B))
{
Return (0x04)
}
If ((Arg1 == 0x2C))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.CTMD = Zero
If ((^^PCI0.LPC0.EC0.SPMO != 0x02))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = 0x02
If ((^^PCI0.LPC0.EC0.ADPT == Zero))
{
FNQS (0x07)
}
Else
{
FNQS (0x06)
}
LTGP = Zero
DTGP = Zero
^^PCI0.LPC0.EC0.PABD = Zero
}
ElseIf ((ToInteger (Arg2) == 0x02))
{
^^PCI0.LPC0.EC0.CTMD = Zero
If ((^^PCI0.LPC0.EC0.SPMO != Zero))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = Zero
If ((^^PCI0.LPC0.EC0.ADPT == Zero))
{
FNQS (0x05)
}
ElseIf ((DBFS == One))
{
FNQS (0x04)
}
Else
{
FNQS (0x03)
}
LTGP = Zero
DTGP = Zero
^^PCI0.LPC0.EC0.PABD = Zero
}
ElseIf ((ToInteger (Arg2) == 0x03))
{
^^PCI0.LPC0.EC0.CTMD = Zero
If (((^^PCI0.LPC0.EC0.ADPT == Zero) || (^^PCI0.LPC0.EC0.ACTY () == 0x02)))
{
If ((^^PCI0.LPC0.EC0.SPMO != Zero))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = Zero
FNQS (0x05)
LTGP = Zero
DTGP = Zero
^^PCI0.LPC0.EC0.PABD = One
}
Else
{
If ((^^PCI0.LPC0.EC0.SPMO != One))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = One
If ((DBFS == One))
{
FNQS (0x02)
}
Else
{
FNQS (One)
}
LTGP = One
DTGP = One
^^PCI0.LPC0.EC0.PABD = Zero
}
}
ElseIf ((ToInteger (Arg2) == 0xFF))
{
^^PCI0.LPC0.EC0.CTMD = One
If (((^^PCI0.LPC0.EC0.ADPT == Zero) || (^^PCI0.LPC0.EC0.ACTY () == 0x02)))
{
^^PCI0.LPC0.EC0.CAC1 = Zero
}
Else
{
^^PCI0.LPC0.EC0.CAC1 = One
}
If (((^^PCI0.LPC0.EC0.ADPT == Zero) || (^^PCI0.LPC0.EC0.ACTY () == 0x02)))
{
If ((^^PCI0.LPC0.EC0.SPMO != Zero))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = Zero
FNQS (0x05)
LTGP = Zero
DTGP = Zero
^^PCI0.LPC0.EC0.PABD = One
}
Else
{
If ((^^PCI0.LPC0.EC0.SPMO != One))
{
^^PCI0.LPC0.EC0.SSFM = One
}
^^PCI0.LPC0.EC0.SPMO = One
If ((DBFS == One))
{
FNQS (0x02)
}
Else
{
FNQS (One)
}
LTGP = One
DTGP = One
^^PCI0.LPC0.EC0.PABD = Zero
}
}
Sleep (0x05)
Notify (GZFD, 0xE7) // Hardware-Specific
BCTP = Zero
Notify (NPCF, 0xC0) // Hardware-Specific
INSM = Zero
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x2D))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.CTMD == One))
{
Local1 = 0xFF
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == 0x02))
{
Local1 = One
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
If ((^^PCI0.LPC0.EC0.PABD == One))
{
Local1 = 0x03
}
Else
{
Local1 = 0x02
}
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == One))
{
Local1 = 0x03
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x2E))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.GSFS == One))
{
Local1 = One
}
ElseIf ((^^PCI0.LPC0.EC0.GSFS == Zero))
{
Local1 = 0x02
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x2F))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.ACTY () == One))
{
Local1 = One
}
Else
{
Local1 = 0x02
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x30))
{
Return (0x64)
}
If ((Arg1 == 0x31))
{
If ((PANT & 0x02))
{
Return (One)
}
Else
{
Return (Zero)
}
}
If ((Arg1 == 0x32))
{
If ((PANT & 0x02))
{
If ((M009 == LCOD))
{
One
Return (One)
}
Else
{
Return (Zero)
}
}
Else
{
Return (Zero)
}
}
If ((Arg1 == 0x33))
{
If ((PANT & 0x02))
{
If ((ToInteger (Arg2) == One))
{
WECM (0x7F, One)
M010 (LCOD, One)
}
Else
{
WECM (0x7F, Zero)
M010 (LCOD, Zero)
}
}
Else
{
WECM (0x7F, Zero)
M010 (LCOD, Zero)
}
Return (Zero)
}
If ((Arg1 == 0x34))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
^^PCI0.LPC0.EC0.LCON = ToInteger (Arg2)
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
}
}
If ((Arg1 == 0x35))
{
Return (Zero)
}
If ((Arg1 == 0x36))
{
If ((ToInteger (Arg2) == One))
{
Return (Zero)
}
Else
{
Return (Zero)
}
}
If ((Arg1 == 0x37))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.SPMO == 0x02))
{
Local1 = One
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
Local1 = 0x02
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == One))
{
Local1 = 0x03
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x38))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((OCCS == Zero))
{
Local1 = Zero
}
ElseIf (((COCC == One) && (GOCC == One)))
{
Local1 = 0x03
}
ElseIf ((COCC == One))
{
Local1 = One
}
ElseIf ((GOCC == One))
{
Local1 = 0x02
}
Else
{
Local1 = Zero
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg1 == 0x39))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((((((GTYP == 0x02) || (GTYP == 0x03)) || (
GTYP == One)) || (GTYP == 0x04)) || (GTYP == 0x06)))
{
If ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
INSM = ToInteger (Arg2)
If ((INSM == Zero))
{
^^PCI0.LPC0.EC0.NCMD (0x8B, Zero)
FNQS (0x03)
BCTP = Zero
DTGP = Zero
LTGP = Zero
}
ElseIf ((INSM == One))
{
^^PCI0.LPC0.EC0.NCMD (0x8A, Zero)
FNQS (0x02)
BCTP = One
}
ElseIf ((INSM == 0x02))
{
^^PCI0.LPC0.EC0.NCMD (0x8A, Zero)
FNQS (0x13)
BCTP = One
}
ElseIf ((INSM == 0x03))
{
^^PCI0.LPC0.EC0.NCMD (0x8A, Zero)
FNQS (0x14)
BCTP = One
}
ElseIf ((INSM == 0x04))
{
^^PCI0.LPC0.EC0.NCMD (0x8A, Zero)
FNQS (0x15)
BCTP = One
}
ElseIf ((INSM == 0x05))
{
^^PCI0.LPC0.EC0.NCMD (0x8B, Zero)
FNQS (0x03)
BCTP = Zero
DTGP = Zero
LTGP = Zero
}
Else
{
^^PCI0.LPC0.EC0.NCMD (0x8B, Zero)
FNQS (0x03)
BCTP = Zero
DTGP = Zero
LTGP = Zero
}
Notify (NPCF, 0xC0) // Hardware-Specific
}
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
INSM = ToInteger (Arg2)
If ((INSM == Zero))
{
^^PCI0.LPC0.EC0.NCMD (0x8B, Zero)
FNQS (0x03)
BCTP = Zero
DTGP = Zero
LTGP = Zero
}
ElseIf ((INSM == One))
{
^^PCI0.LPC0.EC0.NCMD (0x8A, Zero)
FNQS (0x02)
BCTP = One
}
}
Return (Zero)
}
}
If ((Arg1 == 0x3A))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
Local1 = INSM /* \INSM */
Return (Local1)
}
}
If ((Arg1 == 0x3B))
{
Return (One)
}
If ((Arg1 == 0x3C))
{
Local1 = CMSP /* \CMSP */
Local2 = CMSP /* \CMSP */
If (((PVSD == 0x09) && (COCC == One)))
{
Local2 += 0xC8
}
Local1 = (Local2 | (Local1 << 0x10))
Return (Local1)
}
If ((Arg1 == 0x3D))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((((((GTYP == 0x02) || (GTYP == 0x03)) || (
GTYP == One)) || (GTYP == 0x04)) || (GTYP == 0x06)))
{
Local1 = 0x06
}
Else
{
Local1 = 0x02
}
Return (Local1)
}
}
If ((Arg1 == 0x3E))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((^^PCI0.LPC0.EC0.ACTY () == One))
{
Local1 = One
}
Else
{
Local1 = Zero
}
Return (Local1)
}
}
}
Method (WMB2, 3, NotSerialized)
{
If ((Arg1 == One))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local0 = ^^PCI0.LPC0.EC0.FCST /* \_SB_.PCI0.LPC0.EC0_.FCST */
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local0)
}
}
}
If ((Arg1 == 0x02))
{
If ((ToInteger (Arg2) == One))
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x77)
}
Else
{
^^PCI0.LPC0.EC0.NCMD (0x59, 0x76)
}
}
If ((Arg1 == 0x07))
{
If ((ToInteger (Arg2) == One))
{
Local0 = ^^PCI0.LPC0.EC0.FA2S /* \_SB_.PCI0.LPC0.EC0_.FA2S */
Local0 *= 0x64
Return (Local0)
}
ElseIf ((ToInteger (Arg2) == Zero))
{
Local0 = ^^PCI0.LPC0.EC0.FANS /* \_SB_.PCI0.LPC0.EC0_.FANS */
Local0 *= 0x64
Return (Local0)
}
}
If ((Arg1 == 0x08))
{
If ((ToInteger (Arg2) == 0x03))
{
Local0 = ^^PCI0.LPC0.EC0.CPUS /* \_SB_.PCI0.LPC0.EC0_.CPUS */
Return (Local0)
}
ElseIf ((ToInteger (Arg2) == 0x04))
{
Local0 = ^^PCI0.LPC0.EC0.GPUS /* \_SB_.PCI0.LPC0.EC0_.GPUS */
Return (Local0)
}
}
}
Method (WMB3, 3, NotSerialized)
{
OperationRegion (CPUP, SystemMemory, 0xFE00D6B0, 0x10)
Field (CPUP, ByteAcc, NoLock, Preserve)
{
CPP1, 16,
CPP2, 16
}
If ((MCSK == 0x02))
{
If (((((0x04 == GTYP) || (0x05 == GTYP)) || (0x06 ==
GTYP)) || (0x07 == GTYP)))
{
If ((DBFS == One))
{
CPP4 = 0x37
}
Else
{
CPP4 = 0x4B
}
}
ElseIf ((GTYP == 0x02))
{
If ((DBFS == One))
{
CPP4 = 0x32
}
Else
{
CPP4 = 0x50
}
}
ElseIf ((DBFS == One))
{
CPP4 = 0x2D
}
Else
{
CPP4 = 0x50
}
}
ElseIf (((((0x04 == GTYP) || (0x05 == GTYP)) || (
0x06 == GTYP)) || (0x07 == GTYP)))
{
If ((DBFS == One))
{
CPP4 = 0x37
}
Else
{
CPP4 = 0x46
}
}
ElseIf ((GTYP == 0x02))
{
If ((DBFS == One))
{
CPP4 = 0x2D
}
Else
{
CPP4 = 0x46
}
}
ElseIf ((DBFS == One))
{
CPP4 = 0x2D
}
Else
{
CPP4 = 0x46
}
Name (XX11, Buffer (0x07){})
CreateWordField (XX11, Zero, SSZE)
CreateByteField (XX11, 0x02, SMUF)
CreateDWordField (XX11, 0x03, SMUD)
SSZE = 0x07
If ((Arg1 == One))
{
Return (Zero)
}
If ((Arg1 == 0x03))
{
If ((CPP1 == Zero))
{
CPP1 = 0x58
}
Name (GCC1, Buffer (0x10)
{
0x00 // .
})
CreateDWordField (GCC1, Zero, STPL)
CreateDWordField (GCC1, 0x04, STP1)
CreateDWordField (GCC1, 0x08, MIP1)
CreateDWordField (GCC1, 0x0C, MAP1)
STPL = CPP1 /* \_SB_.GZFD.WMB3.CPP1 */
STP1 = One
MIP1 = Zero
MAP1 = 0x58
Return (GCC1) /* \_SB_.GZFD.WMB3.GCC1 */
}
If ((Arg1 == 0x04))
{
CPP1 = ToInteger (Arg2)
Local0 = CPP1 /* \_SB_.GZFD.WMB3.CPP1 */
Local0 *= 0x03E8
SMUF = 0x07
SMUD = Local0
ALIB (0x0C, XX11)
}
If ((Arg1 == 0x05))
{
If ((CPP2 == Zero))
{
CPP2 = CPP4 /* \CPP4 */
}
Name (GCC2, Buffer (0x10)
{
0x00 // .
})
CreateDWordField (GCC2, Zero, LTPL)
CreateDWordField (GCC2, 0x04, STP2)
CreateDWordField (GCC2, 0x08, MIP2)
CreateDWordField (GCC2, 0x0C, MAP2)
LTPL = CPP2 /* \_SB_.GZFD.WMB3.CPP2 */
STP2 = One
MIP2 = Zero
MAP2 = CPP4 /* \CPP4 */
Return (GCC2) /* \_SB_.GZFD.WMB3.GCC2 */
}
If ((Arg1 == 0x06))
{
CPP2 = ToInteger (Arg2)
Local0 = CPP2 /* \_SB_.GZFD.WMB3.CPP2 */
Local0 *= 0x03E8
SMUF = 0x05
SMUD = Local0
ALIB (0x0C, XX11)
}
}
Method (WMB4, 3, NotSerialized)
{
OperationRegion (GPUP, SystemMemory, 0xFE00D6C0, 0x10)
Field (GPUP, ByteAcc, NoLock, Preserve)
{
DTG1, 16,
CTG1, 16
}
If ((One == GTYP))
{
CTG2 = 0x50
}
ElseIf ((0x02 == GTYP))
{
CTG2 = 0x0118
}
ElseIf ((0x03 == GTYP))
{
CTG2 = 0x50
}
ElseIf ((0x04 == GTYP))
{
CTG2 = 0xA0
}
ElseIf ((0x05 == GTYP))
{
CTG2 = 0xA0
}
ElseIf ((0x06 == GTYP))
{
CTG2 = 0xA0
}
If ((Arg1 == One))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((ToInteger (Arg2) == One))
{
GOCC = Zero
SMBB = 0xCE
SMBA = 0xCA
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
ElseIf (((GTYP == 0x05) || (OCCS == Zero)))
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Zero)
}
ElseIf ((GOCC == One))
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (0x13)
}
Else
{
Release (^^PCI0.LPC0.EC0.LFCM)
Return (0x10)
}
}
}
}
If ((Arg1 == 0x02))
{
CreateByteField (Arg2, Zero, OCMO)
CreateByteField (Arg2, One, OCVA)
If ((ToInteger (OCMO) != One))
{
If ((ToInteger (OCVA) == One))
{
If ((^^PCI0.LPC0.EC0.ADPT && (OCCS == One)))
{
GOCC = One
SMBB = 0xCD
SMBA = 0xCA
}
}
Else
{
GOCC = Zero
SMBB = 0xCE
SMBA = 0xCA
}
}
Else
{
GOCC = Zero
SMBB = 0xCE
SMBA = 0xCA
}
}
If ((Arg1 == 0x03))
{
If ((DTG1 == Zero))
{
DTG1 = 0x78
}
Name (DTGG, Buffer (0x10)
{
0x00 // .
})
CreateDWordField (DTGG, Zero, PPAB)
CreateDWordField (DTGG, 0x04, STP3)
CreateDWordField (DTGG, 0x08, NPPL)
CreateDWordField (DTGG, 0x0C, XPPL)
Divide (DTG1, 0x08, Local1, Local0)
PPAB = Local0
STP3 = 0x05
NPPL = Zero
XPPL = 0x0F
Return (DTGG) /* \_SB_.GZFD.WMB4.DTGG */
}
If ((Arg1 == 0x04))
{
Local0 = ToInteger (Arg2)
DTG1 = (Local0 * 0x08)
Notify (NPCF, 0xC0) // Hardware-Specific
}
If ((Arg1 == 0x05))
{
If ((CTG1 == Zero))
{
CTG1 = CTG2 /* \CTG2 */
}
Name (CTGG, Buffer (0x10)
{
0x00 // .
})
CreateDWordField (CTGG, Zero, PPA1)
CreateDWordField (CTGG, 0x04, STP4)
CreateDWordField (CTGG, 0x08, NPP1)
CreateDWordField (CTGG, 0x0C, XPP1)
Divide (CTG2, 0x08, Local1, Local0)
Divide (CTG1, 0x08, Local3, Local2)
PPA1 = Local2
STP4 = 0x05
NPP1 = Zero
XPP1 = Local0
Return (CTGG) /* \_SB_.GZFD.WMB4.CTGG */
}
If ((Arg1 == 0x06))
{
Local0 = ToInteger (Arg2)
CTG1 = (Local0 * 0x08)
Notify (NPCF, 0xC0) // Hardware-Specific
}
}
Method (WMB5, 3, NotSerialized)
{
If ((Arg1 == 0x02))
{
Return (0x00010007)
}
If ((Arg1 == 0x03))
{
Return (0x3F)
}
If ((Arg1 == 0x04))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
^^PCI0.LPC0.EC0.CTMD = ToInteger (Arg2)
If (((^^PCI0.LPC0.EC0.ADPT == Zero) || (^^PCI0.LPC0.EC0.ACTY () == 0x02)))
{
^^PCI0.LPC0.EC0.SPMO = Zero
^^PCI0.LPC0.EC0.CAC1 = Zero
}
Else
{
^^PCI0.LPC0.EC0.SPMO = ToInteger (Arg2)
^^PCI0.LPC0.EC0.CAC1 = ToInteger (Arg2)
}
Release (^^PCI0.LPC0.EC0.LFCM)
}
}
}
If ((Arg1 == 0x05))
{
If ((PANT & 0x04))
{
If ((PANT & 0x20))
{
Return (0x1C)
}
Else
{
Return (0x18)
}
}
ElseIf ((PANT & 0x20))
{
Return (0x0C)
}
Else
{
Return (0x08)
}
}
If ((Arg1 == 0x08))
{
Return (One)
}
}
Method (WMBA, 3, NotSerialized)
{
Name (CSCB, Buffer (0x02)
{
0x00 // .
})
CreateByteField (CSCB, Zero, CST1)
CreateByteField (CSCB, One, CBL1)
If ((Arg1 == One))
{
If ((ToInteger (Arg2) == Zero))
{
CST1 = ^^PCI0.LPC0.EC0.KBST /* \_SB_.PCI0.LPC0.EC0_.KBST */
CBL1 = ^^PCI0.LPC0.EC0.KBBL /* \_SB_.PCI0.LPC0.EC0_.KBBL */
Return (CSCB) /* \_SB_.GZFD.WMBA.CSCB */
}
ElseIf ((ToInteger (Arg2) == 0x03))
{
CST1 = ^^PCI0.LPC0.EC0.YLST /* \_SB_.PCI0.LPC0.EC0_.YLST */
CBL1 = ^^PCI0.LPC0.EC0.YLBL /* \_SB_.PCI0.LPC0.EC0_.YLBL */
Return (CSCB) /* \_SB_.GZFD.WMBA.CSCB */
}
ElseIf ((ToInteger (Arg2) == 0x05))
{
CST1 = ^^PCI0.LPC0.EC0.ICST /* \_SB_.PCI0.LPC0.EC0_.ICST */
CBL1 = ^^PCI0.LPC0.EC0.ICBL /* \_SB_.PCI0.LPC0.EC0_.ICBL */
Return (CSCB) /* \_SB_.GZFD.WMBA.CSCB */
}
Else
{
Return (Zero)
}
}
If ((Arg1 == 0x02))
{
CreateByteField (Arg2, Zero, LTI2)
CreateByteField (Arg2, One, CST2)
CreateByteField (Arg2, 0x02, CBL2)
If ((ToInteger (LTI2) == Zero))
{
^^PCI0.LPC0.EC0.KBST = ToInteger (CST2)
^^PCI0.LPC0.EC0.KBBL = ToInteger (CBL2)
Return (Zero)
}
ElseIf ((ToInteger (LTI2) == 0x03))
{
^^PCI0.LPC0.EC0.YLST = ToInteger (CST2)
^^PCI0.LPC0.EC0.YLBL = ToInteger (CBL2)
Return (Zero)
}
ElseIf ((ToInteger (LTI2) == 0x05))
{
^^PCI0.LPC0.EC0.ICST = ToInteger (CST2)
^^PCI0.LPC0.EC0.ICBL = ToInteger (CBL2)
Return (Zero)
}
Else
{
Return (Zero)
}
}
}
Method (_WED, 1, NotSerialized) // _Wxx: Wake Event, xx=0x00-0xFF
{
If ((Arg0 == 0xD1))
{
Return (Zero)
}
If ((Arg0 == 0xE2))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local2 = Zero
If (((^^PCI0.LPC0.EC0.GDST & 0x02) == 0x02))
{
Local2 |= One
}
If (((^^PCI0.LPC0.EC0.GDST & 0x04) == 0x04))
{
Local2 |= 0x02
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local2)
}
}
}
Name (FANQ, Package (0x02)
{
One,
0x04
})
Name (FANB, Package (0x02)
{
0x02,
0x04
})
Name (FANP, Package (0x02)
{
0x03,
0x04
})
If ((Arg0 == 0xE3))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.SPMO == 0x02))
{
Return (FANQ) /* \_SB_.GZFD._WED.FANQ */
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
Return (FANB) /* \_SB_.GZFD._WED.FANB */
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == One))
{
Return (FANP) /* \_SB_.GZFD._WED.FANP */
}
Release (^^PCI0.LPC0.EC0.LFCM)
}
}
}
If ((Arg0 == 0xE4))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
Local1 = Zero
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg0 == 0xE5))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.ACTY () == One))
{
Local1 = One
}
Else
{
Local1 = 0x02
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg0 == 0xE6))
{
Return (One)
}
If ((Arg0 == 0xE7))
{
If (^^PCI0.LPC0.EC0.ECAV)
{
If ((Acquire (^^PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
{
If ((^^PCI0.LPC0.EC0.SPMO == 0x02))
{
Local1 = One
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == Zero))
{
Local1 = 0x02
}
ElseIf ((^^PCI0.LPC0.EC0.SPMO == One))
{
Local1 = 0x03
}
Release (^^PCI0.LPC0.EC0.LFCM)
Return (Local1)
}
}
}
If ((Arg0 == 0xE8))
{
If (((LSKD == 0x13) || (LSKD == 0x14)))
{
Local1 = Zero
}
ElseIf (((LSKD == 0x15) || (LSKD == 0x16)))
{
Local1 = One
}
ElseIf ((((LSKD == 0x17) || (LSKD == 0x18)) || ((
LSKD == 0x19) || (LSKD == 0x25))))
{
Local1 = 0x02
}
ElseIf ((LSKD == 0x26))
{
Local1 = 0x03
}
ElseIf ((((LSKD == 0x1A) || (LSKD == 0x1B)) || ((
LSKD == 0x1C) || (LSKD == 0x1D))))
{
Local1 = 0x03
}
ElseIf ((((LSKD == 0x1E) || (LSKD == 0x1F)) || ((
LSKD == 0x20) || (LSKD == 0x21))))
{
Local1 = 0x03
}
ElseIf ((((LSKD == 0x22) || (LSKD == 0x23)) || 0x24))
{
Local1 = 0x03
}
Return (Local1)
}
}
Name (WQDD, Buffer (0x4D6D)
{
/* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, // FOMB....
/* 0008 */ 0x5D, 0x4D, 0x00, 0x00, 0xC0, 0xFC, 0x01, 0x00, // ]M......
/* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, // DS...}.T
/* 0018 */ 0x28, 0xA5, 0xB6, 0x01, 0x01, 0x08, 0x09, 0x42, // (......B
/* 0020 */ 0x58, 0x0E, 0x84, 0x84, 0x58, 0xA0, 0x10, 0x81, // X...X...
/* 0028 */ 0xE2, 0x10, 0x29, 0xBA, 0x04, 0x18, 0x8C, 0x06, // ..).....
/* 0030 */ 0x40, 0xEA, 0x82, 0x89, 0x09, 0x10, 0x01, 0x21, // @......!
/* 0038 */ 0xAF, 0x02, 0x6C, 0x0A, 0x30, 0x09, 0xA2, 0xFE, // ..l.0...
/* 0040 */ 0xFD, 0x21, 0x4A, 0x82, 0x43, 0x09, 0x81, 0x90, // .!J.C...
/* 0048 */ 0x44, 0x01, 0xE6, 0x05, 0xE8, 0x16, 0x60, 0x58, // D.....`X
/* 0050 */ 0x80, 0x6D, 0x01, 0xA6, 0x05, 0x38, 0x86, 0xA4, // .m...8..
/* 0058 */ 0xD2, 0xC0, 0x29, 0x81, 0xA5, 0x40, 0x48, 0xA8, // ..)..@H.
/* 0060 */ 0x00, 0xE5, 0x02, 0x7C, 0x0B, 0xD0, 0x8E, 0x28, // ...|...(
/* 0068 */ 0xC9, 0x02, 0x2C, 0xC3, 0x88, 0xC0, 0xA3, 0x88, // ..,.....
/* 0070 */ 0x6C, 0x34, 0x0E, 0x8D, 0x1D, 0x86, 0x65, 0x82, // l4....e.
/* 0078 */ 0x69, 0x10, 0x87, 0x51, 0x36, 0xB2, 0x08, 0x3C, // i..Q6..<
/* 0080 */ 0xA1, 0x4E, 0x05, 0xC8, 0x15, 0x20, 0x4C, 0x80, // .N... L.
/* 0088 */ 0x78, 0x54, 0x61, 0x34, 0x07, 0x45, 0x02, 0x40, // xTa4.E.@
/* 0090 */ 0xA3, 0xC4, 0x8C, 0x89, 0xC0, 0x76, 0x8E, 0xAD, // .....v..
/* 0098 */ 0x51, 0x9C, 0x46, 0xE1, 0x02, 0xA4, 0x63, 0x68, // Q.F...ch
/* 00A0 */ 0x04, 0xC7, 0x15, 0x8C, 0x69, 0xC6, 0x11, 0x4C, // ....i..L
/* 00A8 */ 0x88, 0x58, 0x5C, 0x10, 0x86, 0xA0, 0x62, 0xF4, // .X\...b.
/* 00B0 */ 0x38, 0x3E, 0x02, 0x18, 0xE5, 0x54, 0xA2, 0xC5, // 8>...T..
/* 00B8 */ 0x0F, 0x18, 0x25, 0xAA, 0x31, 0x18, 0x4E, 0xB4, // ..%.1.N.
/* 00C0 */ 0x60, 0xD1, 0xEC, 0x19, 0x45, 0x40, 0x06, 0x8B, // `...E@..
/* 00C8 */ 0x1B, 0xFD, 0x10, 0x4D, 0x10, 0xEC, 0x80, 0x30, // ...M...0
/* 00D0 */ 0x32, 0x20, 0x04, 0xD9, 0xFA, 0x48, 0x09, 0x81, // 2 ...H..
/* 00D8 */ 0xDD, 0x8F, 0x4C, 0xCE, 0x04, 0x18, 0x14, 0x60, // ..L....`
/* 00E0 */ 0x4D, 0x80, 0x37, 0x01, 0x0E, 0x27, 0x24, 0x98, // M.7..'$.
/* 00E8 */ 0xB6, 0x04, 0x28, 0x44, 0x10, 0x4C, 0x6D, 0x28, // ..(D.Lm(
/* 00F0 */ 0x1A, 0x61, 0x8C, 0x70, 0x71, 0xA2, 0xC4, 0x8C, // .a.pq...
/* 00F8 */ 0xD8, 0x18, 0xA0, 0x50, 0x22, 0x06, 0xA9, 0x11, // ...P"...
/* 0100 */ 0x42, 0xC0, 0x46, 0x08, 0x16, 0xB1, 0x38, 0x48, // B.F...8H
/* 0108 */ 0x8D, 0xB5, 0xFD, 0x41, 0x10, 0xB1, 0x0E, 0xCE, // ...A....
/* 0110 */ 0x05, 0x2C, 0xC2, 0x68, 0x50, 0x67, 0x81, 0x04, // .,.hPg..
/* 0118 */ 0xCF, 0x06, 0x3E, 0x17, 0x9C, 0xD6, 0xE9, 0x79, // ..>....y
/* 0120 */ 0x8A, 0x41, 0xCE, 0xF7, 0xB4, 0xEA, 0x1C, 0x25, // .A.....%
/* 0128 */ 0x25, 0xB0, 0x54, 0x08, 0xFD, 0xFF, 0x15, 0x9C, // %.T.....
/* 0130 */ 0x12, 0xA0, 0xB8, 0x06, 0xD4, 0xF5, 0xE0, 0xE1, // ........
/* 0138 */ 0x80, 0x8D, 0xE4, 0x79, 0x00, 0x3B, 0x9F, 0x93, // ...y.;..
/* 0140 */ 0x78, 0x18, 0x88, 0xDE, 0xEC, 0xC1, 0x40, 0x16, // x.....@.
/* 0148 */ 0x81, 0x34, 0x0E, 0x9F, 0x02, 0x3C, 0x8F, 0x13, // .4...<..
/* 0150 */ 0x4D, 0xE0, 0x23, 0xC1, 0x31, 0x60, 0x46, 0x64, // M.#.1`Fd
/* 0158 */ 0x68, 0x4F, 0xED, 0x74, 0x9E, 0x03, 0x7C, 0x46, // hO.t..|F
/* 0160 */ 0x38, 0x1C, 0x36, 0xBE, 0x67, 0x09, 0x36, 0x0E, // 8.6.g.6.
/* 0168 */ 0xF8, 0x8A, 0xEF, 0x00, 0x42, 0x78, 0x53, 0xF0, // ....BxS.
/* 0170 */ 0xFC, 0x4C, 0x30, 0xF8, 0x40, 0xD1, 0xC7, 0x04, // .L0.@...
/* 0178 */ 0x9F, 0x11, 0xDE, 0x1C, 0x3C, 0x4D, 0x4F, 0x29, // ....<MO)
/* 0180 */ 0xC2, 0xBB, 0x04, 0x9B, 0x89, 0x23, 0x42, 0xE8, // .....#B.
/* 0188 */ 0x7B, 0x61, 0x51, 0x10, 0xDA, 0xB7, 0x0E, 0x13, // {aQ.....
/* 0190 */ 0x88, 0x73, 0x04, 0x3B, 0x05, 0x04, 0x3D, 0x6A, // .s.;..=j
/* 0198 */ 0x0F, 0xE6, 0xA5, 0xC0, 0x63, 0xF2, 0xF9, 0xE0, // ....c...
/* 01A0 */ 0xF0, 0x30, 0x87, 0x03, 0xCF, 0xE2, 0x6C, 0x7C, // .0....l|
/* 01A8 */ 0x38, 0x60, 0x43, 0x36, 0xF2, 0x43, 0x04, 0x58, // 8`C6.C.X
/* 01B0 */ 0x06, 0x85, 0x9D, 0xC5, 0x49, 0x61, 0xCE, 0x00, // ....Ia..
/* 01B8 */ 0x60, 0x8C, 0x3B, 0x58, 0xF4, 0xB0, 0x7C, 0x91, // `.;X..|.
/* 01C0 */ 0xC0, 0x10, 0x8C, 0x37, 0x52, 0x50, 0x1D, 0x15, // ...7RP..
/* 01C8 */ 0x3C, 0x52, 0x38, 0xFF, 0xFF, 0x91, 0xE2, 0xE4, // <R8.....
/* 01D0 */ 0x8D, 0x14, 0x34, 0x50, 0xCF, 0x18, 0xCF, 0x05, // ..4P....
/* 01D8 */ 0xEF, 0x1A, 0xB8, 0xA3, 0x03, 0x58, 0x81, 0x71, // .....X.q
/* 01E0 */ 0x03, 0xB5, 0x5F, 0x01, 0x08, 0xC1, 0xDF, 0x53, // .._....S
/* 01E8 */ 0x1E, 0x1E, 0x1E, 0x52, 0x22, 0x3C, 0xAA, 0x18, // ...R"<..
/* 01F0 */ 0xFD, 0xE1, 0xA2, 0x4F, 0x01, 0x5A, 0x21, 0x84, // ...O.Z!.
/* 01F8 */ 0x76, 0x10, 0x61, 0x0E, 0x22, 0x52, 0xAC, 0x08, // v.a."R..
/* 0200 */ 0x61, 0x9E, 0x4B, 0xC2, 0x19, 0x28, 0x58, 0xB8, // a.K..(X.
/* 0208 */ 0x13, 0x89, 0x11, 0xCA, 0xD0, 0x2F, 0x19, 0x26, // ...../.&
/* 0210 */ 0x28, 0x72, 0x88, 0xE8, 0x71, 0x70, 0xE0, 0xD3, // (r..qp..
/* 0218 */ 0x38, 0xAA, 0xE0, 0x41, 0x23, 0x47, 0x39, 0x95, // 8..A#G9.
/* 0220 */ 0xC3, 0xF2, 0xDD, 0xC0, 0x08, 0xC7, 0x75, 0x50, // ......uP
/* 0228 */ 0xA7, 0xE8, 0xDB, 0xCA, 0x41, 0x1F, 0xE7, 0xCB, // ....A...
/* 0230 */ 0x44, 0xA0, 0x67, 0x0E, 0x4E, 0xE0, 0x90, 0xAB, // D.g.N...
/* 0238 */ 0xA7, 0x31, 0x9E, 0x0E, 0x8A, 0x05, 0x83, 0x3A, // .1.....:
/* 0240 */ 0xF4, 0x00, 0xAE, 0x0E, 0x08, 0xCF, 0x09, 0xB0, // ........
/* 0248 */ 0xFE, 0xFF, 0x87, 0x1E, 0x70, 0x4D, 0xFE, 0x88, // ....pM..
/* 0250 */ 0x5A, 0x05, 0xD1, 0x65, 0x20, 0x4A, 0x8C, 0xD8, // Z..e J..
/* 0258 */ 0x27, 0x13, 0xFF, 0x3D, 0x83, 0x9D, 0x79, 0x0C, // '..=..y.
/* 0260 */ 0xF3, 0xE8, 0x83, 0x39, 0xF0, 0xC0, 0xBF, 0xE7, // ...9....
/* 0268 */ 0xBC, 0xE2, 0x3C, 0xE4, 0xBC, 0xE5, 0x1C, 0xC2, // ..<.....
/* 0270 */ 0x1B, 0x8E, 0x21, 0x5E, 0x74, 0x1E, 0x0A, 0x3C, // ..!^t..<
/* 0278 */ 0x9E, 0x10, 0x0F, 0x3C, 0x56, 0x86, 0x22, 0x88, // ...<V.".
/* 0280 */ 0x07, 0x1E, 0x63, 0x3C, 0xED, 0x18, 0x25, 0xC4, // ..c<..%.
/* 0288 */ 0xEB, 0x8E, 0x6F, 0x3B, 0x21, 0x0C, 0xF5, 0x00, // ..o;!...
/* 0290 */ 0x13, 0xFE, 0x04, 0x42, 0xFA, 0xC0, 0xC3, 0x04, // ...B....
/* 0298 */ 0xA9, 0x80, 0x68, 0x03, 0x44, 0x91, 0x0E, 0x3C, // ..h.D..<
/* 02A0 */ 0xA0, 0x1B, 0x9A, 0x8F, 0x1F, 0x3E, 0xF0, 0xC0, // .....>..
/* 02A8 */ 0x3D, 0x7D, 0xC0, 0x3F, 0x6E, 0x80, 0x4F, 0xFE, // =}.?n.O.
/* 02B0 */ 0xC1, 0x07, 0x14, 0x62, 0x0F, 0x27, 0xA0, 0x39, // ...b.'.9
/* 02B8 */ 0x00, 0x81, 0x2F, 0x32, 0x84, 0x9C, 0x8C, 0x07, // ../2....
/* 02C0 */ 0xFD, 0xFF, 0xC7, 0x7D, 0x2C, 0x08, 0x17, 0xF1, // ...},...
/* 02C8 */ 0xB9, 0x80, 0x07, 0x3C, 0xFE, 0x00, 0x1D, 0x81, // ...<....
/* 02D0 */ 0xC7, 0x09, 0xD0, 0x9C, 0x22, 0x18, 0xD0, 0x39, // ...."..9
/* 02D8 */ 0xB1, 0x8B, 0x98, 0x47, 0x50, 0xD7, 0x31, 0x06, // ...GP.1.
/* 02E0 */ 0x14, 0xB7, 0x08, 0x9F, 0xC7, 0x7C, 0x86, 0x78, // .....|.x
/* 02E8 */ 0x67, 0x48, 0xE0, 0xF0, 0x23, 0x45, 0x9F, 0x13, // gH..#E..
/* 02F0 */ 0x7C, 0xCA, 0x60, 0xD7, 0x14, 0x7E, 0x87, 0x79, // |.`..~.y
/* 02F8 */ 0xF5, 0x30, 0xCC, 0xB3, 0x00, 0x0B, 0x79, 0x02, // .0....y.
/* 0300 */ 0x02, 0x3A, 0xE7, 0x19, 0xFC, 0x51, 0x04, 0xF6, // .:...Q..
/* 0308 */ 0xA8, 0xF8, 0x2C, 0x9E, 0x17, 0xCE, 0x8A, 0xCF, // ..,.....
/* 0310 */ 0xD6, 0xC3, 0x05, 0x63, 0xE0, 0x73, 0x02, 0x94, // ...c.s..
/* 0318 */ 0x53, 0x80, 0xE7, 0x8A, 0x3B, 0x3C, 0xC1, 0xF9, // S...;<..
/* 0320 */ 0xFF, 0x8F, 0x15, 0x1E, 0xA0, 0x0F, 0x4F, 0xC0, // ......O.
/* 0328 */ 0xE3, 0x9C, 0xC0, 0xA6, 0x84, 0x39, 0x26, 0x80, // .....9&.
/* 0330 */ 0x33, 0xF4, 0x40, 0xD1, 0xC3, 0x33, 0x70, 0x48, // 3.@..3pH
/* 0338 */ 0x1F, 0x12, 0xB0, 0x07, 0x0C, 0x70, 0x81, 0xFA, // .....p..
/* 0340 */ 0x80, 0x01, 0x3C, 0xC6, 0xC4, 0x66, 0x8A, 0x1F, // ..<..f..
/* 0348 */ 0x2A, 0xF0, 0x18, 0xC5, 0x33, 0xD2, 0xA1, 0x82, // *...3...
/* 0350 */ 0xF9, 0x8F, 0xEA, 0xA1, 0xC2, 0xFB, 0xFF, 0x0F, // ........
/* 0358 */ 0x15, 0x8C, 0x63, 0xF2, 0x50, 0x81, 0xC1, 0x19, // ..c.P...
/* 0360 */ 0xD1, 0x43, 0xC5, 0x8D, 0xC6, 0xB7, 0xAB, 0x37, // .C.....7
/* 0368 */ 0x2C, 0x3E, 0x56, 0xEC, 0x19, 0x11, 0x5C, 0xA7, // ,>V...\.
/* 0370 */ 0x32, 0x9F, 0x11, 0x81, 0xC7, 0xA0, 0x30, 0x83, // 2.....0.
/* 0378 */ 0x05, 0x06, 0xB1, 0x8F, 0x09, 0x50, 0x8E, 0x1D, // .....P..
/* 0380 */ 0x86, 0x38, 0x9B, 0x57, 0x35, 0x76, 0x21, 0x62, // .8.W5v!b
/* 0388 */ 0x63, 0x05, 0x97, 0x87, 0xB1, 0x02, 0x85, 0xFF, // c.......
/* 0390 */ 0xFF, 0xC9, 0x04, 0x3B, 0x27, 0xCC, 0x85, 0x08, // ...;'...
/* 0398 */ 0x73, 0x22, 0x02, 0x06, 0xC3, 0xF1, 0x11, 0xD1, // s"......
/* 03A0 */ 0x73, 0x85, 0x41, 0x30, 0xE6, 0x60, 0x41, 0x35, // s.A0.`A5
/* 03A8 */ 0x22, 0x0F, 0x16, 0xFE, 0x99, 0xEF, 0x60, 0xC1, // ".....`.
/* 03B0 */ 0x32, 0x28, 0x43, 0xBC, 0xC6, 0x1D, 0x2E, 0x70, // 2(C....p
/* 03B8 */ 0x89, 0x7E, 0x52, 0x80, 0x72, 0xA0, 0xF3, 0xBD, // .~R.r...
/* 03C0 */ 0x8F, 0x5D, 0x94, 0xD8, 0x68, 0xC1, 0x67, 0x62, // .]..h.gb
/* 03C8 */ 0xB4, 0x40, 0x05, 0xCC, 0x13, 0x8A, 0xFE, 0x9C, // .@......
/* 03D0 */ 0xF7, 0x2A, 0x66, 0xAC, 0x47, 0x3E, 0xFF, 0xFF, // .*f.G>..
/* 03D8 */ 0x2F, 0xD9, 0x1C, 0x26, 0xF2, 0x63, 0x11, 0x38, // /..&.c.8
/* 03E0 */ 0x8F, 0xA8, 0x60, 0xBC, 0x9E, 0xBE, 0x91, 0x32, // ..`....2
/* 03E8 */ 0xB5, 0x17, 0x02, 0x02, 0x12, 0xD6, 0xC7, 0x48, // .......H
/* 03F0 */ 0x5F, 0x51, 0x8D, 0x12, 0xE3, 0xCC, 0x02, 0x1E, // _Q......
/* 03F8 */ 0x4C, 0x88, 0x47, 0x54, 0x60, 0x14, 0xFD, 0xE5, // L.GT`...
/* 0400 */ 0xE8, 0xF3, 0x29, 0x0D, 0x0B, 0x83, 0x3A, 0xA2, // ..)...:.
/* 0408 */ 0x02, 0xBE, 0x2F, 0x04, 0x8F, 0xA8, 0x98, 0xFF, // ../.....
/* 0410 */ 0xFF, 0x11, 0x15, 0xEC, 0x57, 0xD2, 0x08, 0xAF, // ....W...
/* 0418 */ 0xA5, 0xCF, 0xA4, 0x8F, 0xF6, 0x27, 0xF6, 0x46, // .....'.F
/* 0420 */ 0xF0, 0x74, 0xEA, 0xE1, 0x44, 0xF0, 0x11, 0x95, // .t..D...
/* 0428 */ 0x81, 0x45, 0x8A, 0x62, 0xC8, 0x28, 0x51, 0x8D, // .E.b.(Q.
/* 0430 */ 0xF2, 0x78, 0xCF, 0xB0, 0x5E, 0xF4, 0x8D, 0xE4, // .x..^...
/* 0438 */ 0x1B, 0x44, 0xF4, 0xB8, 0x8F, 0xF8, 0x5C, 0xE6, // .D....\.
/* 0440 */ 0x42, 0xE4, 0xE3, 0x88, 0x0A, 0x50, 0xE4, 0xE4, // B....P..
/* 0448 */ 0x06, 0x07, 0xF5, 0xD9, 0xE1, 0xBC, 0x7D, 0x41, // ......}A
/* 0450 */ 0x30, 0xFE, 0xDB, 0x92, 0x4F, 0x6E, 0x60, 0xF9, // 0...On`.
/* 0458 */ 0xFF, 0x9F, 0x51, 0x81, 0xD3, 0x98, 0x5E, 0x15, // ..Q...^.
/* 0460 */ 0xCE, 0x09, 0x33, 0x8B, 0x83, 0xF2, 0x39, 0x06, // ..3...9.
/* 0468 */ 0x9C, 0xA7, 0x4C, 0x38, 0xD0, 0x87, 0xFC, 0xE6, // ..L8....
/* 0470 */ 0xE1, 0x73, 0xC2, 0x99, 0xB2, 0x13, 0x3F, 0xF0, // .s....?.
/* 0478 */ 0x3E, 0xE8, 0xF8, 0x00, 0x62, 0x97, 0x03, 0x05, // >...b...
/* 0480 */ 0xF5, 0xD9, 0x16, 0xCE, 0xFD, 0x06, 0x7B, 0x6B, // ......{k
/* 0488 */ 0xC5, 0x9C, 0x6D, 0xC1, 0x77, 0x40, 0x05, 0xC7, // ..m.w@..
/* 0490 */ 0x41, 0xC8, 0xFF, 0xFF, 0xB3, 0x2D, 0x70, 0x7E, // A....-p~
/* 0498 */ 0x4B, 0x78, 0xB8, 0xF8, 0x7B, 0x1B, 0x9B, 0x49, // Kx..{..I
/* 04A0 */ 0x84, 0x13, 0x7A, 0xA4, 0xF1, 0x45, 0xFD, 0xDC, // ..z..E..
/* 04A8 */ 0x6C, 0x1C, 0x92, 0x04, 0x3D, 0xA5, 0x02, 0x9D, // l...=...
/* 04B0 */ 0x59, 0x3D, 0xF5, 0x81, 0x6D, 0x56, 0x18, 0x9C, // Y=..mV..
/* 04B8 */ 0x28, 0x87, 0xC5, 0x20, 0x1E, 0x69, 0x7C, 0x8F, // (.. .i|.
/* 04C0 */ 0x79, 0x5C, 0x00, 0xE7, 0x80, 0xF1, 0x23, 0xF2, // y\....#.
/* 04C8 */ 0x58, 0x7C, 0x82, 0x65, 0x83, 0xC1, 0x11, 0x8C, // X|.e....
/* 04D0 */ 0x7A, 0x54, 0x05, 0x3A, 0xB3, 0x3A, 0x5E, 0xEC, // zT.:.:^.
/* 04D8 */ 0xFF, 0x7F, 0xBC, 0xB0, 0x6F, 0xB9, 0xFC, 0xF8, // ....o...
/* 04E0 */ 0xE4, 0x11, 0x63, 0x0E, 0x0C, 0xC0, 0x67, 0xC0, // ..c...g.
/* 04E8 */ 0x98, 0x73, 0xAC, 0x07, 0x0C, 0xE6, 0xF3, 0x2A, // .s.....*
/* 04F0 */ 0x38, 0x06, 0x0C, 0xBE, 0xBB, 0x2E, 0x1B, 0x30, // 8......0
/* 04F8 */ 0xB0, 0x89, 0x7F, 0x5C, 0x81, 0x72, 0xE0, 0xC0, // ...\.r..
/* 0500 */ 0x9F, 0x67, 0x31, 0x87, 0x47, 0xB0, 0x9D, 0x5A, // .g1.G..Z
/* 0508 */ 0xC1, 0x71, 0x78, 0xC4, 0xFD, 0xFF, 0x0F, 0x1C, // .qx.....
/* 0510 */ 0xE0, 0x1B, 0x16, 0xE6, 0xC8, 0x0B, 0x98, 0x38, // .......8
/* 0518 */ 0xB6, 0x82, 0xE3, 0xC8, 0x0B, 0xB8, 0x3C, 0xB5, // ......<.
/* 0520 */ 0x02, 0x97, 0xFF, 0xFF, 0x91, 0x17, 0xF0, 0xA4, // ........
/* 0528 */ 0xE2, 0xC8, 0x0B, 0xE8, 0x39, 0x66, 0xE0, 0x07, // ....9f..
/* 0530 */ 0x64, 0xE8, 0x23, 0x79, 0x0F, 0xF5, 0x01, 0x31, // d.#y...1
/* 0538 */ 0xEC, 0x4B, 0xA8, 0x71, 0xDF, 0x29, 0x7D, 0x2C, // .K.q.)},
/* 0540 */ 0x04, 0xDB, 0x60, 0x7D, 0x2C, 0x04, 0x1E, 0x83, // ..`},...
/* 0548 */ 0x82, 0xF3, 0xFF, 0x3F, 0x28, 0x80, 0xF3, 0xB4, // ...?(...
/* 0550 */ 0x0C, 0x1C, 0x4E, 0xB4, 0xEC, 0xB4, 0x0C, 0x0C, // ..N.....
/* 0558 */ 0x35, 0x45, 0x01, 0x61, 0xF2, 0x4F, 0x53, 0x92, // 5E.a.OS.
/* 0560 */ 0xF7, 0x16, 0xA0, 0x30, 0x3E, 0x2D, 0x03, 0xAE, // ...0>-..
/* 0568 */ 0x04, 0x1F, 0x14, 0x40, 0x73, 0x1A, 0x80, 0x7F, // ...@s...
/* 0570 */ 0x13, 0xE0, 0x87, 0x88, 0xF0, 0x0F, 0x1C, 0x1E, // ........
/* 0578 */ 0x41, 0x84, 0xFF, 0x7F, 0x02, 0x9F, 0x94, 0xC1, // A.......
/* 0580 */ 0x75, 0x62, 0x78, 0x52, 0x06, 0x7B, 0xC0, 0xF3, // ubxR.{..
/* 0588 */ 0x80, 0xCE, 0x1B, 0x3E, 0x29, 0x03, 0xFC, 0x38, // ...>)..8
/* 0590 */ 0x59, 0xE2, 0x4E, 0x22, 0xE0, 0xBD, 0x85, 0x60, // Y.N"...`
/* 0598 */ 0x8E, 0x21, 0x30, 0xFF, 0xFF, 0xC7, 0x10, 0xF0, // .!0.....
/* 05A0 */ 0x65, 0x0D, 0x02, 0x51, 0xDF, 0x61, 0xC3, 0xAB, // e..Q.a..
/* 05A8 */ 0x95, 0x8D, 0xD5, 0xFA, 0xBC, 0x41, 0x05, 0x1F, // .....A..
/* 05B0 */ 0x13, 0x34, 0xA1, 0x27, 0x37, 0x0F, 0xB3, 0xD2, // .4.'7...
/* 05B8 */ 0xD9, 0x08, 0xE5, 0xF5, 0xE0, 0xD9, 0xDE, 0x32, // .......2
/* 05C0 */ 0xC1, 0x74, 0x8E, 0x36, 0x84, 0x05, 0x9E, 0x48, // .t.6...H
/* 05C8 */ 0x0C, 0xA1, 0xF1, 0x18, 0xDC, 0x82, 0xE0, 0x28, // .......(
/* 05D0 */ 0x88, 0x4F, 0x00, 0x0E, 0x7B, 0x02, 0x42, 0x1F, // .O..{.B.
/* 05D8 */ 0x01, 0x7C, 0xE7, 0xE1, 0x04, 0x0E, 0x77, 0xFC, // .|....w.
/* 05E0 */ 0xA1, 0x27, 0x06, 0xFC, 0xD8, 0x0E, 0xEC, 0xBC, // .'......
/* 05E8 */ 0x7C, 0xCA, 0x05, 0xD7, 0xCC, 0x7C, 0x5F, 0xF2, // |....|_.
/* 05F0 */ 0xD0, 0xD8, 0xDD, 0xC4, 0x43, 0xF1, 0x10, 0x1E, // ....C...
/* 05F8 */ 0x0F, 0x4C, 0xE0, 0x91, 0xF8, 0x5C, 0xC4, 0x07, // .L...\..
/* 0600 */ 0xE1, 0x53, 0x38, 0x3F, 0xFC, 0x80, 0xF3, 0x60, // .S8?...`
/* 0608 */ 0x84, 0x3B, 0x23, 0xC0, 0x03, 0xF2, 0x85, 0xC0, // .;#.....
/* 0610 */ 0xB3, 0x7A, 0x28, 0x60, 0x73, 0x08, 0x11, 0x26, // .z(`s..&
/* 0618 */ 0x9A, 0xE1, 0x31, 0x81, 0x46, 0x45, 0x65, 0x8D, // ..1.FEe.
/* 0620 */ 0x0B, 0x35, 0x52, 0x9F, 0x64, 0x18, 0xF6, 0xFB, // .5R.d...
/* 0628 */ 0x80, 0x45, 0x0F, 0x54, 0xB7, 0x83, 0xA7, 0x74, // .E.T...t
/* 0630 */ 0x0C, 0xAC, 0xC7, 0xCE, 0x61, 0x8D, 0x76, 0xB0, // ....a.v.
/* 0638 */ 0x3E, 0x4A, 0xF8, 0x1A, 0xE2, 0x99, 0xFD, 0xFF, // >J......
/* 0640 */ 0x4F, 0xD8, 0xB0, 0x3E, 0x42, 0x81, 0xEB, 0xA8, // O..>B...
/* 0648 */ 0xC0, 0x8E, 0xDB, 0x3E, 0x01, 0xE0, 0xCE, 0x09, // ...>....
/* 0650 */ 0x3A, 0x35, 0xA0, 0x0E, 0x40, 0x16, 0x7F, 0x6A, // :5..@..j
/* 0658 */ 0x40, 0xCC, 0xF1, 0xB0, 0x9E, 0x04, 0x0C, 0xFA, // @.......
/* 0660 */ 0xAA, 0x63, 0x9C, 0x27, 0x2A, 0x8F, 0xC8, 0xB7, // .c.'*...
/* 0668 */ 0x00, 0x26, 0xF5, 0xE4, 0x80, 0x12, 0x49, 0x21, // .&....I!
/* 0670 */ 0x89, 0x27, 0x07, 0x94, 0x28, 0x38, 0x0A, 0xE2, // .'..(8..
/* 0678 */ 0x93, 0x83, 0x4F, 0xED, 0xF8, 0x93, 0x03, 0xFE, // ..O.....
/* 0680 */ 0x1C, 0xC6, 0x4F, 0x0E, 0x70, 0x0F, 0xCC, 0xE0, // ..O.p...
/* 0688 */ 0x19, 0x2A, 0x9F, 0x1F, 0xBC, 0xEB, 0x3A, 0x3B, // .*....:;
/* 0690 */ 0x3B, 0x00, 0x56, 0x82, 0x9D, 0x1D, 0x40, 0xF3, // ;.V...@.
/* 0698 */ 0xFF, 0x3F, 0x3B, 0xF0, 0x73, 0x80, 0xCF, 0x0E, // .?;.s...
/* 06A0 */ 0xE0, 0x3A, 0x01, 0x00, 0x9F, 0xF3, 0x03, 0x9C, // .:......
/* 06A8 */ 0x49, 0x3E, 0x3F, 0x00, 0x16, 0x2E, 0x06, 0x3E, // I>?....>
/* 06B0 */ 0xBF, 0x83, 0x6F, 0x7C, 0xEC, 0xFC, 0x00, 0x18, // ..o|....
/* 06B8 */ 0xFA, 0xFF, 0x9F, 0x1F, 0x80, 0x03, 0x2C, 0x3F, // ......,?
/* 06C0 */ 0x3F, 0x00, 0x9F, 0x13, 0x00, 0x78, 0x44, 0x9E, // ?....xD.
/* 06C8 */ 0x1F, 0x50, 0x1C, 0x3E, 0x28, 0x1A, 0xED, 0x24, // .P.>(..$
/* 06D0 */ 0x0E, 0xE0, 0xC4, 0x0F, 0x22, 0xC2, 0x39, 0x84, // ....".9.
/* 06D8 */ 0x3F, 0x84, 0x57, 0x8A, 0x28, 0x81, 0x1E, 0x26, // ?.W.(..&
/* 06E0 */ 0x7D, 0xC2, 0x24, 0xC7, 0x07, 0x94, 0x50, 0x0A, // }.$...P.
/* 06E8 */ 0x1D, 0xAD, 0x7C, 0x7C, 0xE0, 0xC2, 0xE0, 0x28, // ..||...(
/* 06F0 */ 0x88, 0x8F, 0x0F, 0x0E, 0x7D, 0x7C, 0x80, 0x1E, // ....}|..
/* 06F8 */ 0xF2, 0x34, 0x03, 0x8A, 0xA3, 0x9B, 0x8F, 0x55, // .4.....U
/* 0700 */ 0x60, 0xC1, 0x7A, 0x13, 0xF7, 0xF4, 0x60, 0xDC, // `.z...`.
/* 0708 */ 0x8B, 0x7D, 0x9B, 0x33, 0xD2, 0x09, 0x9E, 0xEF, // .}.3....
/* 0710 */ 0xDB, 0xA3, 0xCF, 0x7B, 0x0F, 0x10, 0xC0, 0xE0, // ...{....
/* 0718 */ 0xFF, 0x7F, 0x80, 0x00, 0x4E, 0x47, 0x33, 0x1F, // ....NG3.
/* 0720 */ 0x20, 0xC0, 0x35, 0x7E, 0x1F, 0x20, 0xC0, 0x75, // .5~. .u
/* 0728 */ 0x06, 0x00, 0x5E, 0xA2, 0x8E, 0x10, 0x68, 0xD9, // ..^...h.
/* 0730 */ 0x07, 0x2C, 0x04, 0x36, 0xC3, 0xF0, 0x2D, 0xC2, // .,.6..-.
/* 0738 */ 0xC7, 0x05, 0x0F, 0xCA, 0x04, 0x3E, 0xE8, 0x01, // .....>..
/* 0740 */ 0x5E, 0x8E, 0x43, 0x7C, 0x7A, 0xF0, 0x8E, 0x0F, // ^.C|z...
/* 0748 */ 0xFC, 0xFF, 0x7F, 0x7C, 0x00, 0x5C, 0x84, 0x3A, // ...|.\.:
/* 0750 */ 0x3E, 0x80, 0xCE, 0xC2, 0xF1, 0x01, 0x74, 0xE3, // >.....t.
/* 0758 */ 0x07, 0x1E, 0x47, 0x07, 0x38, 0x67, 0x1B, 0x76, // ..G.8g.v
/* 0760 */ 0x74, 0x00, 0xF6, 0x47, 0x2B, 0xDC, 0x58, 0xC1, // t..G+.X.
/* 0768 */ 0xF3, 0xFF, 0x3F, 0x09, 0xF1, 0xA3, 0x03, 0x70, // ..?....p
/* 0770 */ 0x3A, 0xA8, 0x07, 0x7A, 0x90, 0x0D, 0xF4, 0xE8, // :..z....
/* 0778 */ 0x00, 0xFC, 0xCF, 0xEA, 0x3E, 0x3A, 0x00, 0xA7, // ....>:..
/* 0780 */ 0xF1, 0xC3, 0x17, 0x72, 0x74, 0x40, 0x0D, 0xC1, // ...rt@..
/* 0788 */ 0x62, 0x0F, 0x31, 0x08, 0x8D, 0x37, 0x65, 0x32, // b.1..7e2
/* 0790 */ 0xDC, 0xD7, 0x14, 0x8F, 0xC7, 0xA7, 0x06, 0x76, // .......v
/* 0798 */ 0x70, 0xE0, 0xD2, 0x28, 0x74, 0x9E, 0xF2, 0xC1, // p..(t...
/* 07A0 */ 0x81, 0x4B, 0x81, 0xA3, 0x20, 0x3E, 0x38, 0x38, // .K.. >88
/* 07A8 */ 0xE6, 0xC1, 0x01, 0x7A, 0xAC, 0x23, 0x0C, 0x28, // ...z.#.(
/* 07B0 */ 0xE4, 0x41, 0xD1, 0xFF, 0xFF, 0x48, 0xE1, 0x4F, // .A...H.O
/* 07B8 */ 0x8D, 0xAD, 0xF0, 0xD8, 0x70, 0xA7, 0x06, 0xC0, // ....p...
/* 07C0 */ 0xC9, 0x21, 0xDE, 0xA7, 0x06, 0x70, 0x79, 0x38, // .!...py8
/* 07C8 */ 0x35, 0x80, 0x6E, 0xA2, 0x3E, 0xBF, 0x80, 0x6B, // 5.n.>..k
/* 07D0 */ 0xF8, 0x90, 0x0E, 0x0D, 0xA8, 0x13, 0x80, 0x4F, // .......O
/* 07D8 */ 0xDF, 0x18, 0x5C, 0x66, 0x6C, 0x94, 0x3A, 0x53, // ..\fl.:S
/* 07E0 */ 0x7B, 0x36, 0xEC, 0x8C, 0xC9, 0x4E, 0x0D, 0x5C, // {6...N.\
/* 07E8 */ 0x1C, 0x85, 0x8E, 0x0D, 0x3E, 0x35, 0x70, 0x31, // ....>5p1
/* 07F0 */ 0x70, 0x14, 0xC4, 0xA7, 0x06, 0x07, 0x3D, 0x35, // p.....=5
/* 07F8 */ 0x40, 0x3F, 0x25, 0xFA, 0xD4, 0x00, 0xE7, 0xFF, // @?%.....
/* 0800 */ 0x7F, 0x6A, 0xC0, 0x1D, 0x98, 0xC1, 0x33, 0x37, // .j....37
/* 0808 */ 0x7E, 0x0E, 0xF3, 0xE0, 0x70, 0x67, 0x17, 0xC0, // ~...pg..
/* 0810 */ 0x21, 0xB8, 0x4F, 0x51, 0xC0, 0x6D, 0xFC, 0x10, // !.OQ.m..
/* 0818 */ 0xCF, 0x0D, 0xD0, 0x67, 0xFD, 0xDC, 0x00, 0xAC, // ...g....
/* 0820 */ 0xFE, 0xFF, 0xE7, 0x06, 0x60, 0x35, 0xB7, 0xE7, // ....`5..
/* 0828 */ 0x06, 0xC0, 0xA9, 0x89, 0x73, 0x03, 0x90, 0x1C, // ....s...
/* 0830 */ 0x3F, 0x8C, 0xC3, 0x1C, 0x5E, 0xF4, 0xB9, 0x01, // ?...^...
/* 0838 */ 0x3D, 0xB5, 0x18, 0xC5, 0x43, 0xA3, 0xCF, 0xDC, // =...C...
/* 0840 */ 0x3E, 0x38, 0xF0, 0xB3, 0x9C, 0x4F, 0x0E, 0x3E, // >8...O.>
/* 0848 */ 0x38, 0x70, 0x39, 0x70, 0x14, 0xC4, 0xFF, 0xFF, // 8p9p....
/* 0850 */ 0x83, 0x83, 0xA3, 0x1E, 0x1C, 0xA0, 0x47, 0x3B, // ......G;
/* 0858 */ 0x38, 0x80, 0xE2, 0xE0, 0x03, 0x9E, 0x63, 0x0F, // 8.....c.
/* 0860 */ 0x1F, 0x1D, 0x9B, 0x2A, 0xF6, 0xE4, 0x00, 0x38, // ...*...8
/* 0868 */ 0x39, 0x83, 0xF9, 0xE4, 0x00, 0x2E, 0x15, 0x27, // 9......'
/* 0870 */ 0x07, 0xD0, 0xCD, 0xE9, 0x31, 0x0A, 0xAC, 0x07, // ....1...
/* 0878 */ 0x00, 0x38, 0x47, 0x07, 0xDC, 0x18, 0x2C, 0xF9, // .8G...,.
/* 0880 */ 0xE8, 0x80, 0xD0, 0x7A, 0xD6, 0x25, 0xC3, 0x38, // ...z.%.8
/* 0888 */ 0x07, 0x7E, 0xA8, 0xC4, 0xFC, 0xFF, 0x8F, 0xB7, // .~......
/* 0890 */ 0x80, 0x8F, 0x2B, 0x41, 0xAC, 0x53, 0x7F, 0xFB, // ..+A.S..
/* 0898 */ 0xF2, 0x24, 0x5F, 0xD4, 0x7D, 0x33, 0x66, 0xD3, // .$_.}3f.
/* 08A0 */ 0xC3, 0x9C, 0x1C, 0x00, 0x27, 0x87, 0x7F, 0xF0, // ....'...
/* 08A8 */ 0x8D, 0xDC, 0x87, 0x7F, 0xE0, 0x74, 0x72, 0xE0, // .....tr.
/* 08B0 */ 0x27, 0x00, 0xFC, 0x7D, 0x01, 0x7F, 0xF8, 0xC7, // '..}....
/* 08B8 */ 0xFD, 0xFF, 0x45, 0x41, 0x28, 0xC0, 0xE1, 0x1F, // ..EA(...
/* 08C0 */ 0xD2, 0xC9, 0x12, 0x83, 0x70, 0x0E, 0xCF, 0xB1, // ....p...
/* 08C8 */ 0xF6, 0x7C, 0xC2, 0xA4, 0xC7, 0x07, 0x7E, 0x82, // .|....~.
/* 08D0 */ 0xF0, 0x51, 0xC6, 0xC7, 0x07, 0x2E, 0x0B, 0x8E, // .Q......
/* 08D8 */ 0x82, 0xF8, 0xF8, 0xE0, 0xC8, 0xC7, 0x07, 0xE8, // ........
/* 08E0 */ 0x11, 0x8F, 0x0F, 0xA0, 0x38, 0x0C, 0x3C, 0xC6, // ....8.<.
/* 08E8 */ 0x80, 0x0D, 0xED, 0xE0, 0x70, 0x40, 0x06, 0x0B, // ....p@..
/* 08F0 */ 0x1A, 0xA2, 0x62, 0x28, 0x02, 0xDC, 0xFC, 0x09, // ..b(....
/* 08F8 */ 0x02, 0xD0, 0x72, 0x12, 0xF2, 0x09, 0x02, 0x5C, // ..r....\
/* 0900 */ 0x67, 0x00, 0x9F, 0x20, 0xC0, 0x75, 0x04, 0x80, // g.. .u..
/* 0908 */ 0xF7, 0xFF, 0x3F, 0x02, 0x80, 0x11, 0x29, 0xD6, // ..?...).
/* 0910 */ 0x23, 0x00, 0x93, 0x78, 0xBA, 0x43, 0x8B, 0x3F, // #..x.C.?
/* 0918 */ 0x72, 0x23, 0xCE, 0x0F, 0xB0, 0xE4, 0x9E, 0x1F, // r#......
/* 0920 */ 0x50, 0x42, 0x29, 0x74, 0x80, 0xF0, 0xF9, 0x81, // PB)t....
/* 0928 */ 0x1F, 0x76, 0x0D, 0x66, 0x10, 0x9F, 0x1F, 0x1C, // .v.f....
/* 0930 */ 0xFA, 0xFC, 0x00, 0x3D, 0xE4, 0x89, 0x1B, 0x14, // ...=....
/* 0938 */ 0x62, 0x8F, 0xC8, 0xA0, 0x1B, 0x2F, 0x3C, 0x4C, // b..../<L
/* 0940 */ 0xFB, 0xC2, 0x90, 0x66, 0x04, 0x9D, 0xF1, 0x00, // ...f....
/* 0948 */ 0x2F, 0x27, 0x22, 0x1F, 0x20, 0xC0, 0x65, 0x03, // /'". .e.
/* 0950 */ 0x96, 0xFE, 0xFF, 0x0F, 0x10, 0xE0, 0x39, 0x03, // ......9.
/* 0958 */ 0x00, 0x2F, 0x61, 0xE7, 0x3C, 0xB4, 0xF0, 0x33, // ./a.<..3
/* 0960 */ 0x0D, 0xA4, 0x39, 0xBF, 0x88, 0xDB, 0x27, 0x88, // ..9...'.
/* 0968 */ 0x08, 0x7C, 0x7E, 0xF0, 0x11, 0x82, 0x1F, 0x39, // .|~....9
/* 0970 */ 0x7D, 0xC0, 0xF2, 0x11, 0x82, 0x4B, 0x82, 0xA3, // }....K..
/* 0978 */ 0x20, 0x3E, 0x42, 0x38, 0xEE, 0x11, 0x02, 0x7A, // >B8...z
/* 0980 */ 0xBC, 0x13, 0x0D, 0x28, 0x4E, 0x66, 0xE0, 0x41, // ...(Nf.A
/* 0988 */ 0x3A, 0x33, 0x8F, 0xD4, 0x28, 0x2F, 0x1F, 0xF8, // :3..(/..
/* 0990 */ 0xF3, 0x0C, 0xE0, 0xE5, 0xFF, 0x7F, 0xD2, 0x03, // ........
/* 0998 */ 0xA7, 0x8E, 0x93, 0x1E, 0xD0, 0x3A, 0x00, 0x80, // .....:..
/* 09A0 */ 0x43, 0xF0, 0xE1, 0x01, 0x1D, 0xE2, 0xF0, 0x40, // C......@
/* 09A8 */ 0x15, 0x62, 0xE8, 0xE0, 0x70, 0xB4, 0x3E, 0x3E, // .b..p.>>
/* 09B0 */ 0xE0, 0x2E, 0x0F, 0xEC, 0xF0, 0xE9, 0xC3, 0x03, // ........
/* 09B8 */ 0x3F, 0xD1, 0xF8, 0x84, 0xE5, 0xC3, 0x03, 0x3F, // ?......?
/* 09C0 */ 0xEE, 0xF9, 0xE4, 0xC9, 0x0F, 0x0F, 0x8E, 0x7E, // .......~
/* 09C8 */ 0x78, 0x80, 0x7E, 0xF6, 0xF4, 0xE1, 0x01, 0xFE, // x.~.....
/* 09D0 */ 0x11, 0x9A, 0x0F, 0x16, 0xFE, 0x34, 0x8D, 0x12, // .....4..
/* 09D8 */ 0xED, 0x10, 0xDF, 0x03, 0xCE, 0x23, 0x88, 0x71, // .....#.q
/* 09E0 */ 0x1E, 0xF6, 0x18, 0xEC, 0xC9, 0x9E, 0xB1, 0x5D, // .......]
/* 09E8 */ 0x1F, 0x21, 0x80, 0xE0, 0xFF, 0xFF, 0x08, 0x01, // .!......
/* 09F0 */ 0x5C, 0x0E, 0x69, 0x3E, 0x42, 0x80, 0xCB, 0xC7, // \.i>B...
/* 09F8 */ 0x11, 0x02, 0x74, 0xC7, 0x00, 0xE0, 0x28, 0xFB, // ..t...(.
/* 0A00 */ 0x20, 0x81, 0x92, 0x72, 0x90, 0xA0, 0xA7, 0x1C, // ..r....
/* 0A08 */ 0x76, 0x91, 0xE0, 0xA7, 0x08, 0x26, 0xFD, 0x14, // v....&..
/* 0A10 */ 0x81, 0x3A, 0x48, 0xF8, 0x2C, 0xEA, 0x53, 0x04, // .:H.,.S.
/* 0A18 */ 0x3F, 0x0F, 0x73, 0x10, 0x9F, 0x22, 0x4C, 0xE3, // ?.s.."L.
/* 0A20 */ 0x53, 0x04, 0xDC, 0xC0, 0x67, 0x2C, 0x50, 0x4C, // S...g,PL
/* 0A28 */ 0xED, 0x78, 0xC1, 0x32, 0x7A, 0x9F, 0xF5, 0x7C, // .x.2z..|
/* 0A30 */ 0x5C, 0xF4, 0x89, 0xC3, 0x18, 0x67, 0x1F, 0x2E, // \....g..
/* 0A38 */ 0xEA, 0x0B, 0x1F, 0xC3, 0x62, 0x63, 0xC6, 0xFD, // ....bc..
/* 0A40 */ 0xFF, 0xC7, 0xCC, 0xA6, 0x62, 0x8C, 0xC3, 0xE7, // ....b...
/* 0A48 */ 0x27, 0x2D, 0xC0, 0xCB, 0x11, 0xDF, 0x07, 0x09, // '-......
/* 0A50 */ 0x70, 0x8D, 0xC5, 0x07, 0x09, 0x70, 0x9D, 0x04, // p....p..
/* 0A58 */ 0x80, 0x6F, 0xA8, 0xB3, 0x04, 0x4A, 0xDC, 0x09, // .o...J..
/* 0A60 */ 0xCD, 0x87, 0x63, 0xC4, 0x7C, 0x8F, 0xC6, 0x87, // ..c.|...
/* 0A68 */ 0xAF, 0x08, 0x67, 0x60, 0x9C, 0x73, 0xF3, 0x51, // ..g`.s.Q
/* 0A70 */ 0xD9, 0x30, 0x6F, 0x0F, 0xBE, 0xCA, 0x04, 0x09, // .0o.....
/* 0A78 */ 0xF3, 0x96, 0x1A, 0xE6, 0x3C, 0xC2, 0x44, 0x49, // ....<.DI
/* 0A80 */ 0xE0, 0x13, 0xAA, 0x0F, 0x15, 0xFC, 0x5C, 0xE1, // ......\.
/* 0A88 */ 0x23, 0x98, 0x0F, 0x15, 0x5C, 0x2A, 0x1C, 0x05, // #...\*..
/* 0A90 */ 0xF1, 0xA1, 0xC2, 0x32, 0x0E, 0x15, 0xA8, 0xFF, // ...2....
/* 0A98 */ 0xFF, 0xA1, 0x02, 0x4E, 0xEC, 0x93, 0x0E, 0x28, // ...N...(
/* 0AA0 */ 0xE4, 0x9F, 0x6A, 0x41, 0x77, 0x14, 0xF0, 0x08, // ..jAw...
/* 0AA8 */ 0x61, 0xDC, 0x48, 0x7C, 0x32, 0xF1, 0xB9, 0xCD, // a.H|2...
/* 0AB0 */ 0x38, 0x06, 0x3B, 0x5C, 0x1C, 0x36, 0xE6, 0xC8, // 8.;\.6..
/* 0AB8 */ 0xEC, 0xB9, 0x62, 0xCE, 0x15, 0x80, 0x93, 0xA3, // ..b.....
/* 0AC0 */ 0x9C, 0xCF, 0x15, 0xE0, 0x32, 0x72, 0xAE, 0x00, // ....2r..
/* 0AC8 */ 0xDD, 0x61, 0x00, 0x78, 0xFD, 0xFF, 0x0F, 0x03, // .a.x....
/* 0AD0 */ 0xE0, 0x38, 0x19, 0xE2, 0xC6, 0x63, 0xD9, 0x47, // .8...c.G
/* 0AD8 */ 0x0B, 0xC4, 0xCC, 0x0F, 0xFB, 0x25, 0xE0, 0xC1, // .....%..
/* 0AE0 */ 0x82, 0x9F, 0x25, 0x70, 0x07, 0x1E, 0x7E, 0x30, // ..%p..~0
/* 0AE8 */ 0xF4, 0x91, 0x82, 0x8B, 0x82, 0xA3, 0x20, 0x3E, // ...... >
/* 0AF0 */ 0x52, 0xF8, 0xB8, 0xE3, 0x23, 0x05, 0xDC, 0x80, // R...#...
/* 0AF8 */ 0x47, 0x0A, 0x50, 0x9C, 0xBB, 0xC1, 0x37, 0x39, // G.P...79
/* 0B00 */ 0x36, 0x70, 0x78, 0x07, 0x79, 0xC0, 0xA2, 0x92, // 6px.y...
/* 0B08 */ 0x73, 0x04, 0xA8, 0xFE, 0xFF, 0x27, 0x00, 0xE0, // s....'..
/* 0B10 */ 0x74, 0x78, 0x80, 0x89, 0xF1, 0xF0, 0x00, 0xF8, // tx......
/* 0B18 */ 0x9A, 0x1C, 0x3B, 0x3C, 0x00, 0x66, 0xFF, 0xFF, // ..;<.f..
/* 0B20 */ 0x27, 0x06, 0x9F, 0x02, 0x7C, 0x78, 0x00, 0x6E, // '...|x.n
/* 0B28 */ 0x27, 0x00, 0xF8, 0xA2, 0x0F, 0x0F, 0x28, 0x51, // '.....(Q
/* 0B30 */ 0x10, 0x0A, 0x72, 0x78, 0x40, 0x1C, 0xE1, 0xE1, // ..rx@...
/* 0B38 */ 0x8C, 0xF5, 0x61, 0xC1, 0xF8, 0xBE, 0x81, 0xF9, // ..a.....
/* 0B40 */ 0x9C, 0x0A, 0x78, 0x19, 0x2F, 0x3F, 0x72, 0x83, // ..x./?r.
/* 0B48 */ 0x03, 0xE7, 0x04, 0x8E, 0x12, 0x77, 0x8A, 0x00, // .....w..
/* 0B50 */ 0xAE, 0xFF, 0xFF, 0x73, 0x2A, 0xF0, 0x3A, 0x7F, // ...s*.:.
/* 0B58 */ 0xFA, 0x9C, 0x0A, 0x9C, 0x8E, 0x01, 0xE0, 0x0E, // ........
/* 0B60 */ 0x74, 0x94, 0x40, 0x1D, 0x01, 0x1C, 0xEC, 0x2C, // t.@....,
/* 0B68 */ 0x0F, 0x69, 0x3A, 0xCF, 0x88, 0xB8, 0x81, 0x9E, // .i:.....
/* 0B70 */ 0x86, 0x5D, 0xA2, 0xE8, 0xDE, 0xEA, 0xA3, 0x20, // .].....
/* 0B78 */ 0x60, 0xE6, 0x72, 0xF0, 0x92, 0x70, 0xB0, 0x9E, // `.r..p..
/* 0B80 */ 0x22, 0xEE, 0x58, 0x09, 0xC3, 0xFB, 0x1C, 0x09, // ".X.....
/* 0B88 */ 0x56, 0xC0, 0x28, 0x8F, 0xBD, 0x3E, 0x56, 0xFE, // V.(..>V.
/* 0B90 */ 0xFF, 0x0F, 0xD3, 0x27, 0x69, 0xC0, 0xD5, 0x51, // ...'i..Q
/* 0B98 */ 0x10, 0x7C, 0x56, 0x8E, 0x82, 0x40, 0xEB, 0x30, // .|V..@.0
/* 0BA0 */ 0x00, 0x9C, 0x8E, 0x3C, 0x38, 0x0E, 0xC7, 0x38, // ...<8..8
/* 0BA8 */ 0x4F, 0x23, 0x6E, 0x14, 0xB8, 0x03, 0x0F, 0xF6, // O#n.....
/* 0BB0 */ 0x1C, 0xE6, 0x43, 0x05, 0x17, 0x4C, 0xA1, 0x13, // ..C..L..
/* 0BB8 */ 0x8F, 0x0F, 0x15, 0x5C, 0x20, 0x1C, 0x05, 0xF1, // ...\ ...
/* 0BC0 */ 0xA1, 0xC2, 0xE1, 0x0F, 0x3C, 0x50, 0xFE, 0xFF, // ....<P..
/* 0BC8 */ 0x87, 0x0A, 0x5C, 0xD8, 0x23, 0x35, 0x28, 0xCE, // ..\.#5(.
/* 0BD0 */ 0x01, 0x07, 0x0E, 0x96, 0xE1, 0xB1, 0x09, 0xC3, // ........
/* 0BD8 */ 0x9C, 0x3A, 0xF6, 0x72, 0xF2, 0x48, 0x60, 0x1C, // .:.r.H`.
/* 0BE0 */ 0x7E, 0xA0, 0x06, 0xBC, 0x84, 0x3C, 0x4F, 0x80, // ~....<O.
/* 0BE8 */ 0x4E, 0xCB, 0x79, 0x02, 0x74, 0xE7, 0x00, 0xE0, // N.y.t...
/* 0BF0 */ 0x19, 0xE0, 0x28, 0x81, 0xFA, 0xFF, 0x73, 0x38, // ..(...s8
/* 0BF8 */ 0xCC, 0x61, 0x0C, 0x71, 0x94, 0x80, 0x29, 0xFE, // .a.q..).
/* 0C00 */ 0x28, 0x81, 0x3A, 0x4D, 0xF8, 0x38, 0xE6, 0xA3, // (.:M.8..
/* 0C08 */ 0x04, 0x97, 0x09, 0x47, 0x41, 0x7C, 0x94, 0xB0, // ...GA|..
/* 0C10 */ 0x84, 0xE3, 0x0E, 0xF4, 0xC8, 0xC7, 0x1D, 0x50, // .......P
/* 0C18 */ 0x80, 0xF8, 0xD0, 0x04, 0xAE, 0x31, 0x83, 0xF3, // .....1..
/* 0C20 */ 0x38, 0x06, 0x38, 0x3A, 0xD5, 0xF9, 0x34, 0x01, // 8.8:..4.
/* 0C28 */ 0x2E, 0x2F, 0xA7, 0x09, 0xD0, 0xFD, 0xFF, 0x8F, // ./......
/* 0C30 */ 0x02, 0xC0, 0x39, 0xC8, 0x61, 0x11, 0x1D, 0xE9, // ..9.a...
/* 0C38 */ 0x48, 0x06, 0x8A, 0x71, 0xBF, 0x4D, 0xFA, 0x60, // H..q.M.`
/* 0C40 */ 0xA4, 0x23, 0x05, 0xEA, 0x3C, 0xE6, 0x33, 0x85, // .#..<.3.
/* 0C48 */ 0x8F, 0x14, 0x5C, 0x28, 0x1C, 0x05, 0xF1, 0x91, // ..\(....
/* 0C50 */ 0xC2, 0x22, 0x8E, 0x14, 0xD0, 0x43, 0x1F, 0x29, // ."...C.)
/* 0C58 */ 0x40, 0x21, 0xFE, 0xD0, 0x04, 0x64, 0xA0, 0x8E, // @!...d..
/* 0C60 */ 0xC3, 0x27, 0x72, 0xDF, 0x97, 0x8C, 0xF7, 0xCA, // .'r.....
/* 0C68 */ 0x04, 0xEF, 0x4C, 0x01, 0x4C, 0xFF, 0xFF, 0x67, // ..L.L..g
/* 0C70 */ 0x0A, 0x70, 0x1D, 0x9C, 0x7C, 0xA6, 0x00, 0x17, // .p..|...
/* 0C78 */ 0x9C, 0xCF, 0x14, 0xE0, 0x3A, 0x0B, 0x00, 0x6F, // ....:..o
/* 0C80 */ 0xA1, 0x87, 0x6B, 0xF4, 0x49, 0xC2, 0x27, 0x21, // ..k.I.'!
/* 0C88 */ 0x76, 0x9B, 0xF0, 0x91, 0x07, 0x2B, 0xF9, 0x40, // v....+.@
/* 0C90 */ 0x81, 0x3A, 0xCB, 0xFA, 0xAC, 0xE8, 0x03, 0x05, // .:......
/* 0C98 */ 0x17, 0x07, 0x47, 0x41, 0x7C, 0xA0, 0x70, 0xF0, // ..GA|.p.
/* 0CA0 */ 0xC3, 0x18, 0xF4, 0xA0, 0x87, 0x31, 0x50, 0x08, // .....1P.
/* 0CA8 */ 0x3E, 0x35, 0x81, 0x6E, 0xB6, 0x30, 0xEE, 0x4C, // >5.n.0.L
/* 0CB0 */ 0xB0, 0xFF, 0xFF, 0x47, 0x09, 0xC0, 0xC9, 0x11, // ...G....
/* 0CB8 */ 0xDD, 0x47, 0x09, 0x70, 0x99, 0x39, 0x4A, 0x80, // .G.p.9J.
/* 0CC0 */ 0xEE, 0x14, 0x00, 0xFC, 0x84, 0x1F, 0x22, 0xD0, // ......".
/* 0CC8 */ 0x47, 0x44, 0x1F, 0x80, 0xD8, 0x21, 0x02, 0xC6, // GD...!..
/* 0CD0 */ 0x09, 0xD6, 0x87, 0x08, 0x7E, 0x0A, 0xF3, 0x41, // ....~..A
/* 0CD8 */ 0xC2, 0x87, 0x08, 0x7E, 0xE8, 0xF7, 0xB1, 0x9F, // ...~....
/* 0CE0 */ 0x1F, 0x22, 0x4C, 0xE3, 0x43, 0x04, 0xDC, 0x83, // ."L.C...
/* 0CE8 */ 0xBF, 0x0F, 0x39, 0xF0, 0x27, 0x78, 0xBC, 0xD8, // ..9.'x..
/* 0CF0 */ 0xFF, 0xFF, 0x61, 0x09, 0xFE, 0x78, 0xC1, 0x76, // ..a..x.v
/* 0CF8 */ 0x55, 0xC2, 0x1F, 0x24, 0x00, 0x2B, 0xC7, 0x11, // U..$.+..
/* 0D00 */ 0x1F, 0x24, 0xC0, 0xA5, 0xE6, 0x20, 0x01, 0xBA, // .$... ..
/* 0D08 */ 0x93, 0x00, 0xF0, 0x95, 0x7B, 0x98, 0x40, 0x1D, // ....{.@.
/* 0D10 */ 0xC7, 0x7D, 0xB2, 0xF6, 0x38, 0x18, 0xC6, 0x31, // .}..8..1
/* 0D18 */ 0xBF, 0x01, 0x84, 0x78, 0x37, 0xF3, 0xD9, 0x15, // ...x7...
/* 0D20 */ 0xD6, 0xFF, 0xFF, 0xEC, 0x0A, 0x7C, 0xCE, 0x12, // .....|..
/* 0D28 */ 0xB8, 0x43, 0x26, 0x78, 0x86, 0xCC, 0xE7, 0xC6, // .C&x....
/* 0D30 */ 0x40, 0x42, 0x3D, 0x25, 0xF9, 0x18, 0x70, 0x2A, // @B=%..p*
/* 0D38 */ 0x07, 0x1B, 0x27, 0xC8, 0x2B, 0x81, 0x87, 0x6B, // ..'.+..k
/* 0D40 */ 0x24, 0x9F, 0x9C, 0x82, 0x3C, 0x25, 0x9C, 0x42, // $...<%.B
/* 0D48 */ 0xD4, 0xD7, 0xB7, 0x87, 0x83, 0xA6, 0xCE, 0xAE, // ........
/* 0D50 */ 0x80, 0x48, 0x37, 0x67, 0x57, 0xA0, 0x75, 0x0E, // .H7gW.u.
/* 0D58 */ 0x80, 0xFF, 0xFF, 0x3F, 0x07, 0xC0, 0x3F, 0x77, // ...?..?w
/* 0D60 */ 0xC1, 0x39, 0x47, 0xE0, 0x7C, 0x4E, 0x5B, 0x07, // .9G.|N[.
/* 0D68 */ 0x09, 0x7E, 0xEE, 0x02, 0x8E, 0x07, 0x09, 0xDC, // .~......
/* 0D70 */ 0x11, 0x09, 0x3C, 0x23, 0xC6, 0x8F, 0xCE, 0xC7, // ..<#....
/* 0D78 */ 0x08, 0xC0, 0xDB, 0xB9, 0x0B, 0x7C, 0x23, 0xF4, // .....|#.
/* 0D80 */ 0x31, 0x02, 0xEE, 0xFF, 0xFF, 0xDC, 0x05, 0xDE, // 1.......
/* 0D88 */ 0x53, 0x00, 0x78, 0x25, 0x1D, 0x22, 0x50, 0xE3, // S.x%."P.
/* 0D90 */ 0xF2, 0x69, 0xCB, 0x87, 0x08, 0x3C, 0xF4, 0x63, // .i...<.c
/* 0D98 */ 0xE1, 0xB1, 0x3C, 0x5B, 0xB3, 0x73, 0x34, 0x3F, // ..<[.s4?
/* 0DA0 */ 0xD7, 0x70, 0x79, 0xA7, 0x08, 0x94, 0x20, 0x38, // .py... 8
/* 0DA8 */ 0x0A, 0xE2, 0x53, 0x84, 0x4F, 0x35, 0x3E, 0x45, // ..S.O5>E
/* 0DB0 */ 0xC0, 0x0D, 0x77, 0x8A, 0x00, 0x85, 0xC8, 0x01, // ..w.....
/* 0DB8 */ 0x83, 0xFC, 0x12, 0xE9, 0xE9, 0xB1, 0xF3, 0x03, // ........
/* 0DC0 */ 0xE0, 0x24, 0xD4, 0xF9, 0x01, 0xCA, 0xFF, 0xFF, // .$......
/* 0DC8 */ 0xFC, 0x00, 0xD7, 0xCE, 0xF9, 0x01, 0x74, 0xE3, // ......t.
/* 0DD0 */ 0x07, 0x1E, 0x82, 0x4F, 0x0E, 0xA8, 0xB1, 0x3B, // ...O...;
/* 0DD8 */ 0xC8, 0xC9, 0x01, 0x71, 0xAD, 0x67, 0x47, 0xAE, // ...q.gG.
/* 0DE0 */ 0x43, 0x78, 0x49, 0x38, 0x8B, 0xC3, 0xA9, 0x19, // CxI8....
/* 0DE8 */ 0x48, 0x57, 0x2E, 0x86, 0x13, 0xE5, 0x29, 0xD5, // HW....).
/* 0DF0 */ 0xE7, 0x2E, 0x13, 0xF8, 0xA0, 0xE5, 0xE3, 0x03, // ........
/* 0DF8 */ 0x3F, 0xD2, 0xF8, 0xD4, 0xEC, 0xE3, 0x03, 0x97, // ?.......
/* 0E00 */ 0x06, 0x47, 0x41, 0x7C, 0x7C, 0x70, 0xEC, 0xE3, // .GA||p..
/* 0E08 */ 0x03, 0xF4, 0x98, 0xC7, 0x07, 0x50, 0xC8, 0x1D, // .....P..
/* 0E10 */ 0x2F, 0xE8, 0xA6, 0x88, 0x47, 0x3A, 0x46, 0x2C, // /...G:F,
/* 0E18 */ 0xD0, 0x39, 0x62, 0xCE, 0x10, 0xC0, 0xED, 0xFF, // .9b.....
/* 0E20 */ 0x7F, 0x86, 0x00, 0x6F, 0xBC, 0x33, 0x04, 0xE8, // ...o.3..
/* 0E28 */ 0xF4, 0x9C, 0x21, 0x40, 0x77, 0x08, 0x00, 0x6E, // ..!@w..n
/* 0E30 */ 0xA7, 0x2C, 0x1C, 0x87, 0x0F, 0x7F, 0x98, 0xE1, // .,......
/* 0E38 */ 0xF9, 0x84, 0x63, 0xE4, 0x63, 0x78, 0xAB, 0xF0, // ..c.cx..
/* 0E40 */ 0xC4, 0x8E, 0xE4, 0x10, 0x02, 0x3D, 0x44, 0x00, // .....=D.
/* 0E48 */ 0x86, 0xA6, 0x87, 0xBB, 0x84, 0xF0, 0xF9, 0xF1, // ........
/* 0E50 */ 0xC3, 0x1A, 0x83, 0xC6, 0x1C, 0x22, 0x70, 0xFF, // ....."p.
/* 0E58 */ 0xFF, 0x43, 0x04, 0xE0, 0xCD, 0xCF, 0x21, 0x02, // .C....!.
/* 0E60 */ 0xE8, 0x1D, 0x02, 0xC0, 0x25, 0xFF, 0x10, 0x81, // ....%...
/* 0E68 */ 0x1A, 0x95, 0xE3, 0x1C, 0x19, 0x04, 0x7B, 0x1E, // ......{.
/* 0E70 */ 0x27, 0xFA, 0x62, 0x8F, 0x9B, 0x62, 0x68, 0xCF, // '.b..bh.
/* 0E78 */ 0x22, 0xCC, 0x31, 0x44, 0x8A, 0xF0, 0x50, 0x61, // ".1D..Pa
/* 0E80 */ 0xFC, 0x9E, 0x0F, 0xCF, 0x3E, 0x47, 0xA0, 0x4E, // ....>G.N
/* 0E88 */ 0x80, 0x3E, 0x4B, 0xF8, 0x1C, 0xC1, 0x25, 0xC2, // .>K...%.
/* 0E90 */ 0x51, 0x10, 0x9F, 0x23, 0x1C, 0xFF, 0x1C, 0x01, // Q..#....
/* 0E98 */ 0x3D, 0xEE, 0x39, 0x02, 0x14, 0xD3, 0x39, 0x66, // =.9...9f
/* 0EA0 */ 0xCC, 0xFF, 0x7F, 0xCC, 0x70, 0x27, 0x87, 0x59, // ....p'.Y
/* 0EA8 */ 0xE7, 0xD1, 0x61, 0xEF, 0x21, 0x30, 0xF0, 0xE3, // ..a.!0..
/* 0EB0 */ 0xBC, 0xDF, 0xFA, 0x42, 0x12, 0x31, 0xA6, 0xEF, // ...B.1..
/* 0EB8 */ 0x48, 0x3E, 0x01, 0x02, 0x5E, 0x0E, 0x24, 0x3E, // H>..^.$>
/* 0EC0 */ 0x4B, 0x80, 0xEB, 0x9B, 0xE0, 0xB3, 0x04, 0xB8, // K.......
/* 0EC8 */ 0x0E, 0x02, 0xC0, 0xF5, 0xBC, 0x8C, 0x1B, 0x99, // ........
/* 0ED0 */ 0xCF, 0xF2, 0x3E, 0xDE, 0xB3, 0xC3, 0x04, 0xBC, // ..>.....
/* 0ED8 */ 0x03, 0x3D, 0xF6, 0xFF, 0x7F, 0xCC, 0x01, 0x8E, // .=......
/* 0EE0 */ 0xC3, 0x31, 0x34, 0x3B, 0x92, 0x80, 0x69, 0x84, // .14;..i.
/* 0EE8 */ 0x6C, 0x99, 0x47, 0x0E, 0xF7, 0x2C, 0x0F, 0x38, // l.G..,.8
/* 0EF0 */ 0x3A, 0xE6, 0x80, 0xCF, 0xD0, 0x31, 0x07, 0x68, // :....1.h
/* 0EF8 */ 0x1D, 0x02, 0xE0, 0xFD, 0xFF, 0x0F, 0x01, 0x70, // .......p
/* 0F00 */ 0xCF, 0x11, 0x70, 0x0E, 0x3E, 0xEC, 0x1C, 0x01, // ..p.>...
/* 0F08 */ 0x98, 0x38, 0x7D, 0x81, 0xFB, 0x1C, 0x01, 0xF8, // .8}.....
/* 0F10 */ 0x56, 0x74, 0x8E, 0x80, 0xF2, 0xFF, 0x3F, 0x7D, // Vt....?}
/* 0F18 */ 0x01, 0x97, 0x43, 0x00, 0xB8, 0x64, 0x9F, 0x23, // ..C..d.#
/* 0F20 */ 0x50, 0xD2, 0x20, 0x14, 0xE6, 0xF4, 0x05, 0x69, // P. ....i
/* 0F28 */ 0xD0, 0x07, 0x10, 0xFF, 0x08, 0x8F, 0xC5, 0x43, // .......C
/* 0F30 */ 0xB0, 0xC6, 0x5B, 0x0F, 0x92, 0xC0, 0xA7, 0x79, // ..[....y
/* 0F38 */ 0xC0, 0xCB, 0xF4, 0xF0, 0x97, 0x24, 0xF0, 0x1C, // .....$..
/* 0F40 */ 0x25, 0x80, 0xEF, 0xFF, 0xFF, 0x34, 0x0F, 0x9C, // %....4..
/* 0F48 */ 0x1C, 0x9D, 0xE6, 0x81, 0xD6, 0x29, 0x00, 0xBC, // .....)..
/* 0F50 */ 0xD2, 0xCF, 0x12, 0x28, 0x49, 0x87, 0x68, 0x7A, // ...(I.hz
/* 0F58 */ 0xE8, 0x61, 0xB7, 0x57, 0xFC, 0x44, 0x30, 0x27, // .a.W.D0'
/* 0F60 */ 0x0B, 0x72, 0x8E, 0x40, 0x9D, 0x71, 0x2C, 0xF7, // .r.@.q,.
/* 0F68 */ 0x1C, 0x81, 0x3A, 0xD3, 0xFB, 0x54, 0xCF, 0xCF, // ..:..T..
/* 0F70 */ 0x11, 0x0E, 0x7F, 0x8E, 0x80, 0x7E, 0xAE, 0xF7, // .....~..
/* 0F78 */ 0xB9, 0x0B, 0xFE, 0x70, 0x0E, 0x19, 0x2C, 0xAE, // ...p..,.
/* 0F80 */ 0xCF, 0xBA, 0x10, 0xC6, 0xEA, 0xE1, 0x31, 0x98, // ......1.
/* 0F88 */ 0x58, 0x67, 0x1D, 0x21, 0x88, 0x8F, 0x24, 0x46, // Xg.!..$F
/* 0F90 */ 0xF6, 0x7D, 0xC4, 0xDE, 0xE7, 0x4C, 0xC6, 0x70, // .}...L.p
/* 0F98 */ 0x24, 0x3E, 0x49, 0xE0, 0xFE, 0xFF, 0x27, 0x09, // $>I...'.
/* 0FA0 */ 0xC0, 0xC3, 0x79, 0xC4, 0x27, 0x09, 0x70, 0x1D, // ..y.'.p.
/* 0FA8 */ 0x11, 0x7C, 0x92, 0x00, 0x17, 0xD8, 0xA3, 0x17, // .|......
/* 0FB0 */ 0xD8, 0x4E, 0x02, 0x60, 0x04, 0x0B, 0x12, 0xE3, // .N.`....
/* 0FB8 */ 0xB5, 0xD5, 0xE2, 0x4F, 0x13, 0x50, 0xA2, 0x9C, // ...O.P..
/* 0FC0 */ 0xF0, 0x21, 0x9E, 0x26, 0xB0, 0x67, 0x56, 0xE0, // .!.&.gV.
/* 0FC8 */ 0xFB, 0xFF, 0x3F, 0x5B, 0x82, 0xE7, 0xA4, 0xC4, // ..?[....
/* 0FD0 */ 0x87, 0x0D, 0x1F, 0xB6, 0xAF, 0x79, 0x23, 0x4E, // .....y#N
/* 0FD8 */ 0x60, 0x80, 0xA3, 0x33, 0x2B, 0xF8, 0x2C, 0x9D, // `..3+.,.
/* 0FE0 */ 0x59, 0x81, 0xD6, 0x41, 0x00, 0x38, 0x88, 0x5E, // Y..A.8.^
/* 0FE8 */ 0xA0, 0x4E, 0x13, 0x5C, 0xD4, 0x91, 0xDA, 0x2F, // .N.\.../
/* 0FF0 */ 0x07, 0x1D, 0xF3, 0x39, 0xE8, 0xD1, 0x18, 0xFD, // ...9....
/* 0FF8 */ 0x40, 0xD8, 0x88, 0x5F, 0x7D, 0x3C, 0x86, 0x18, // @.._}<..
/* 1000 */ 0xFF, 0xFF, 0xD3, 0xF4, 0x15, 0xCC, 0x87, 0x0B, // ........
/* 1008 */ 0x9F, 0x23, 0x7C, 0x8C, 0xB0, 0x68, 0x0A, 0xC9, // .#|..h..
/* 1010 */ 0x3A, 0x4E, 0xA0, 0x84, 0x1C, 0x27, 0x28, 0x88, // :N...'(.
/* 1018 */ 0x01, 0x9D, 0xF2, 0x38, 0x81, 0x3E, 0xE2, 0xB0, // ...8.>..
/* 1020 */ 0x21, 0x3C, 0x6E, 0x38, 0xD7, 0x69, 0x82, 0x8E, // !<n8.i..
/* 1028 */ 0xD5, 0x23, 0xE7, 0x1A, 0x8E, 0x3A, 0x08, 0xD8, // .#...:..
/* 1030 */ 0x17, 0xB4, 0x83, 0x06, 0xCB, 0xE4, 0xF0, 0xBB, // ........
/* 1038 */ 0x3C, 0x01, 0x8F, 0xCD, 0x33, 0xB1, 0x9A, 0xBB, // <...3...
/* 1040 */ 0x01, 0x6A, 0x1E, 0xBE, 0x42, 0x60, 0x74, 0x1D, // .j..B`t.
/* 1048 */ 0x21, 0x40, 0xA6, 0xEF, 0x06, 0x01, 0x72, 0x74, // !@....rt
/* 1050 */ 0x7E, 0x90, 0xF3, 0xD8, 0xB9, 0x9C, 0xB1, 0x53, // ~......S
/* 1058 */ 0x10, 0x8F, 0xDD, 0x51, 0xC7, 0x8E, 0x96, 0x02, // ...Q....
/* 1060 */ 0xA2, 0xC1, 0xFA, 0x3E, 0x80, 0x25, 0x18, 0xEB, // ...>.%..
/* 1068 */ 0x6C, 0x02, 0x0A, 0x79, 0x27, 0x1C, 0x10, 0x0D, // l..y'...
/* 1070 */ 0x84, 0x1D, 0xBA, 0x3C, 0x11, 0x7E, 0x1E, 0x81, // ...<.~..
/* 1078 */ 0xF7, 0xFF, 0x1F, 0x9B, 0xCF, 0x23, 0xC0, 0x3B, // .....#.;
/* 1080 */ 0xDC, 0x79, 0x04, 0x74, 0x9A, 0xCE, 0x23, 0xA0, // .y.t..#.
/* 1088 */ 0x13, 0x7B, 0x1E, 0x01, 0xDD, 0x69, 0x02, 0xC6, // .{...i..
/* 1090 */ 0xD5, 0x80, 0x5F, 0x01, 0x70, 0x87, 0x4B, 0x9D, // .._.p.K.
/* 1098 */ 0x93, 0xD0, 0xA7, 0x23, 0x1F, 0x45, 0x60, 0xDD, // ...#.E`.
/* 10A0 */ 0x38, 0x7D, 0x40, 0x38, 0x2B, 0x13, 0x58, 0xE6, // 8}@8+.X.
/* 10A8 */ 0x39, 0x09, 0x75, 0x7C, 0xB3, 0xBC, 0xE3, 0x03, // 9.u|....
/* 10B0 */ 0x4A, 0x10, 0x1C, 0x05, 0xF1, 0xF1, 0xC1, 0x87, // J.......
/* 10B8 */ 0x37, 0x9F, 0x93, 0xE0, 0x8E, 0xDF, 0x87, 0x07, // 7.......
/* 10C0 */ 0xF8, 0x22, 0x07, 0x0C, 0x8A, 0xFF, 0xFF, 0x59, // .".....Y
/* 10C8 */ 0x04, 0xD6, 0x5C, 0x3D, 0x3C, 0xCC, 0xF1, 0x08, // ..\=<...
/* 10D0 */ 0x70, 0x12, 0xEC, 0xFC, 0x00, 0x3A, 0x4F, 0xE7, // p....:O.
/* 10D8 */ 0x07, 0xD0, 0x0D, 0xE8, 0xF9, 0x01, 0xFC, 0x27, // .......'
/* 10E0 */ 0x00, 0xAC, 0xC8, 0xD3, 0x03, 0x8A, 0xC3, 0xF2, // ........
/* 10E8 */ 0x0F, 0xBB, 0x90, 0xE6, 0x10, 0x28, 0xFC, 0x6B, // .....(.k
/* 10F0 */ 0x8B, 0x0F, 0xE4, 0xE4, 0xF0, 0x80, 0x3A, 0x7F, // ......:.
/* 10F8 */ 0xFB, 0x00, 0xE1, 0xC3, 0x03, 0x17, 0x06, 0x47, // .......G
/* 1100 */ 0x41, 0x7C, 0x78, 0x70, 0xE8, 0xC3, 0x03, 0xF4, // A|xp....
/* 1108 */ 0x90, 0x87, 0x07, 0x68, 0xFF, 0xFF, 0xC3, 0x03, // ...h....
/* 1110 */ 0xEE, 0xF0, 0x01, 0x9E, 0xD1, 0x61, 0xE7, 0x78, // .....a.x
/* 1118 */ 0x76, 0x6D, 0x0D, 0x0F, 0x71, 0x2A, 0xC5, 0x1F, // vm..q*..
/* 1120 */ 0x20, 0x00, 0x2F, 0xE7, 0x19, 0xF0, 0x1D, 0xC2, // ./.....
/* 1128 */ 0x7C, 0x9E, 0x01, 0x4E, 0x67, 0x00, 0xF0, 0x89, // |..Ng...
/* 1130 */ 0x3B, 0x42, 0xA0, 0xA5, 0x9F, 0x67, 0x10, 0xE7, // ;B...g..
/* 1138 */ 0x07, 0x0C, 0xC8, 0x63, 0x1B, 0xF6, 0xD4, 0xED, // ...c....
/* 1140 */ 0x23, 0x04, 0x17, 0x49, 0xA1, 0x03, 0xA4, 0x8F, // #..I....
/* 1148 */ 0x10, 0xFC, 0xFF, 0x2F, 0x0A, 0x8E, 0x82, 0xF8, // .../....
/* 1150 */ 0x08, 0xE1, 0xC0, 0x47, 0x08, 0xE8, 0x67, 0x66, // ...G..gf
/* 1158 */ 0x1F, 0x21, 0xE0, 0x9F, 0x3F, 0xC0, 0x37, 0x5A, // .!..?.7Z
/* 1160 */ 0xEC, 0xFC, 0x70, 0x07, 0x1A, 0xC0, 0xA4, 0xA9, // ..p.....
/* 1168 */ 0x03, 0x0D, 0xD0, 0x3B, 0x01, 0xC0, 0x3F, 0x3E, // ...;..?>
/* 1170 */ 0xC0, 0x39, 0xEB, 0xFA, 0xFF, 0x7F, 0x7C, 0x00, // .9....|.
/* 1178 */ 0xFE, 0x07, 0x6E, 0xDC, 0x68, 0xC1, 0x73, 0x32, // ..n.h.s2
/* 1180 */ 0xE6, 0xC7, 0x07, 0xC0, 0xB1, 0xAA, 0xE3, 0x03, // ........
/* 1188 */ 0xD0, 0x3A, 0x01, 0xF0, 0xFF, 0xFF, 0x09, 0x00, // .:......
/* 1190 */ 0xBE, 0xD4, 0xB3, 0x1E, 0x3A, 0xC2, 0xF1, 0x0A, // ....:...
/* 1198 */ 0x12, 0xCE, 0xE3, 0xB6, 0x51, 0x7C, 0x50, 0x7D, // ....Q|P}
/* 11A0 */ 0xF8, 0xF3, 0xF1, 0x9A, 0x9D, 0x1F, 0xF8, 0x11, // ........
/* 11A8 */ 0xC2, 0x07, 0x2C, 0x9F, 0x1F, 0xB8, 0x34, 0x38, // ..,...48
/* 11B0 */ 0x0A, 0xE2, 0xF3, 0x83, 0x63, 0x9F, 0x1F, 0xA0, // ....c...
/* 11B8 */ 0x9F, 0x8C, 0x7D, 0x9A, 0x81, 0x2F, 0xF7, 0x30, // ..}../.0
/* 11C0 */ 0x04, 0xDA, 0xE9, 0x61, 0x60, 0x8E, 0x8F, 0xDD, // ...a`...
/* 11C8 */ 0x86, 0x60, 0x1C, 0x21, 0x00, 0x27, 0xF1, 0x8E, // .`.!.'..
/* 11D0 */ 0x10, 0xA0, 0x73, 0x75, 0x84, 0x80, 0xF6, 0xFF, // ..su....
/* 11D8 */ 0x3F, 0x42, 0xC0, 0x3B, 0x04, 0x00, 0xB7, 0x33, // ?B.;...3
/* 11E0 */ 0x0D, 0xCC, 0x23, 0x04, 0x7E, 0x88, 0x6F, 0xA3, // ..#.~.o.
/* 11E8 */ 0xFC, 0x4C, 0x03, 0xF8, 0x19, 0x2E, 0x9C, 0xF9, // .L......
/* 11F0 */ 0x61, 0xCE, 0x34, 0x80, 0x99, 0xFF, 0xFF, 0x09, // a.4.....
/* 11F8 */ 0x02, 0x5C, 0xA0, 0x3E, 0xD3, 0x00, 0xB7, 0x13, // .\.>....
/* 1200 */ 0x00, 0xFC, 0xF3, 0x1E, 0xCC, 0xE3, 0x03, 0xB0, // ........
/* 1208 */ 0x3F, 0xEF, 0x81, 0xFB, 0xF8, 0x00, 0xFC, 0xFF, // ?.......
/* 1210 */ 0xFF, 0xC7, 0x07, 0xE0, 0x78, 0x91, 0x7A, 0xDE, // ....x.z.
/* 1218 */ 0x03, 0x76, 0x27, 0x00, 0xF8, 0x62, 0x8F, 0x0F, // .v'..b..
/* 1220 */ 0xA8, 0x23, 0xAA, 0x4F, 0x58, 0x3E, 0x3E, 0xC0, // .#.OX>>.
/* 1228 */ 0xBA, 0x52, 0xB0, 0x89, 0x18, 0xA6, 0xE7, 0x13, // .R......
/* 1230 */ 0x31, 0x20, 0x67, 0xBC, 0x70, 0xE6, 0x87, 0x3D, // 1 g.p..=
/* 1238 */ 0x42, 0x80, 0xE5, 0xFF, 0x7F, 0x84, 0x00, 0xEE, // B.......
/* 1240 */ 0x87, 0x10, 0x1F, 0x21, 0xC0, 0xA5, 0xEB, 0x08, // ...!....
/* 1248 */ 0x01, 0x3A, 0xC1, 0x47, 0x08, 0xA0, 0x70, 0x0A, // .:.G..p.
/* 1250 */ 0x80, 0x7B, 0x4A, 0xC7, 0x1D, 0x23, 0x1C, 0xE0, // .{J..#..
/* 1258 */ 0x18, 0x81, 0x98, 0x6E, 0xCC, 0xDE, 0x51, 0x34, // ...n..Q4
/* 1260 */ 0x86, 0xA3, 0x3E, 0xC1, 0xA3, 0x30, 0x7C, 0x9C, // ..>..0|.
/* 1268 */ 0xA7, 0x0A, 0xE4, 0x31, 0x02, 0x75, 0x8A, 0xF0, // ...1.u..
/* 1270 */ 0xB9, 0xC6, 0xC7, 0x08, 0x2E, 0x0B, 0x8E, 0x82, // ........
/* 1278 */ 0xF8, 0x18, 0xE1, 0xC8, 0xC7, 0x08, 0xE8, 0x11, // ........
/* 1280 */ 0x8F, 0x11, 0xA0, 0x38, 0x10, 0x1C, 0x33, 0xAC, // ...8..3.
/* 1288 */ 0xFF, 0xFF, 0x98, 0xE1, 0x4D, 0x10, 0x03, 0x73, // ....M..s
/* 1290 */ 0x84, 0xB8, 0x09, 0xE3, 0x4E, 0x11, 0x80, 0x93, // ....N...
/* 1298 */ 0x68, 0xA7, 0x08, 0xD0, 0xF9, 0x3A, 0x45, 0x80, // h....:E.
/* 12A0 */ 0xEE, 0x08, 0x00, 0x9C, 0x8E, 0x10, 0x38, 0x0E, // ......8.
/* 12A8 */ 0xCB, 0x3F, 0x42, 0xA0, 0x70, 0x63, 0xFA, 0x88, // .?B.pc..
/* 12B0 */ 0x70, 0x22, 0x71, 0x0E, 0xEB, 0x34, 0x9E, 0x01, // p"q..4..
/* 12B8 */ 0x03, 0x3D, 0xD6, 0x00, 0x97, 0xFF, 0xFF, 0xB1, // .=......
/* 12C0 */ 0x06, 0x78, 0x81, 0x1C, 0xC7, 0xCB, 0x80, 0x6F, // .x.....o
/* 12C8 */ 0x1F, 0x6C, 0x88, 0x58, 0xA0, 0x53, 0xC4, 0x9C, // .l.X.S..
/* 12D0 */ 0x20, 0x00, 0x27, 0xE1, 0x4E, 0x10, 0xA0, 0x1B, // .'.N...
/* 12D8 */ 0x9A, 0x4F, 0x10, 0xE0, 0x3A, 0x03, 0x00, 0xAF, // .O..:...
/* 12E0 */ 0xA3, 0x16, 0x6E, 0x18, 0x3E, 0xD4, 0xF8, 0x6C, // ..n.>..l
/* 12E8 */ 0x0C, 0xC3, 0xE7, 0x45, 0x80, 0x88, 0x3E, 0x39, // ...E..>9
/* 12F0 */ 0xD0, 0xFF, 0x3F, 0x84, 0xCF, 0x10, 0x3E, 0xD4, // ..?...>.
/* 12F8 */ 0xF8, 0x00, 0xC1, 0xE5, 0xC1, 0x51, 0x10, 0x1F, // .....Q..
/* 1300 */ 0x20, 0x1C, 0xFD, 0x00, 0x01, 0x3D, 0xEA, 0x01, // ....=..
/* 1308 */ 0x02, 0x14, 0xE3, 0xF5, 0x68, 0xC1, 0x31, 0xAF, // ....h.1.
/* 1310 */ 0xDA, 0xEF, 0x1E, 0x14, 0x31, 0x9C, 0x71, 0x7C, // ....1.q|
/* 1318 */ 0x81, 0xC5, 0x03, 0x05, 0x8F, 0x13, 0x3B, 0x44, // ......;D
/* 1320 */ 0xC5, 0x88, 0x3A, 0x09, 0x84, 0x88, 0xF6, 0x82, // ..:.....
/* 1328 */ 0xFD, 0x0C, 0x01, 0x58, 0x39, 0x17, 0xF9, 0x0C, // ...X9...
/* 1330 */ 0x01, 0x2E, 0x63, 0x67, 0x08, 0xD0, 0x1D, 0x03, // ..cg....
/* 1338 */ 0xC0, 0xFF, 0xFF, 0x3F, 0x06, 0x80, 0xE3, 0x38, // ...?...8
/* 1340 */ 0x8A, 0x1B, 0x89, 0x85, 0x1F, 0x6C, 0x10, 0x67, // .....l.g
/* 1348 */ 0x08, 0x9F, 0xDE, 0x71, 0xC7, 0x2C, 0xC0, 0xD0, // ...q.,..
/* 1350 */ 0x90, 0x61, 0xDD, 0xF5, 0x3D, 0x42, 0xCC, 0x31, // .a..=B.1
/* 1358 */ 0x0B, 0x70, 0x38, 0x1F, 0x1F, 0x21, 0xC0, 0xF1, // .p8..!..
/* 1360 */ 0xFF, 0x3F, 0x66, 0x81, 0xF7, 0x08, 0x00, 0x8E, // .?f.....
/* 1368 */ 0xE3, 0x03, 0x9C, 0x43, 0x20, 0x3B, 0x3E, 0x00, // ...C ;>.
/* 1370 */ 0xEB, 0x83, 0x3A, 0x6E, 0xB0, 0xE0, 0x39, 0x57, // ..:n..9W
/* 1378 */ 0xF3, 0xE3, 0x03, 0xE0, 0xF5, 0xFF, 0x7F, 0x7C, // .......|
/* 1380 */ 0xC0, 0x0F, 0xE8, 0xF1, 0x01, 0x58, 0x1D, 0x01, // .....X..
/* 1388 */ 0xC0, 0x25, 0xF5, 0xF8, 0x80, 0x1A, 0x93, 0x43, // .%.....C
/* 1390 */ 0x1C, 0x1F, 0x10, 0xE3, 0x8D, 0xFC, 0xC4, 0x75, // .......u
/* 1398 */ 0x70, 0x51, 0x0E, 0xF9, 0x30, 0x0C, 0xF2, 0xCC, // pQ..0...
/* 13A0 */ 0xE5, 0x69, 0x9D, 0xC5, 0x93, 0x60, 0x9C, 0xC3, // .i...`..
/* 13A8 */ 0xF0, 0xB9, 0x0F, 0x78, 0x9E, 0x21, 0x70, 0x87, // ...x.!p.
/* 13B0 */ 0x34, 0xF0, 0x8C, 0x98, 0xCF, 0x10, 0x73, 0x6A, // 4.....sj
/* 13B8 */ 0xF4, 0x10, 0x71, 0x03, 0xF7, 0x14, 0x31, 0x87, // ..q...1.
/* 13C0 */ 0x08, 0xE0, 0xF8, 0xFF, 0x3F, 0xF7, 0x01, 0x3F, // ....?..?
/* 13C8 */ 0x69, 0xE7, 0x3E, 0xA0, 0x75, 0x06, 0x00, 0xDF, // i.>.u...
/* 13D0 */ 0xD9, 0x18, 0xCE, 0x08, 0xD8, 0x44, 0x9E, 0x69, // .....D.i
/* 13D8 */ 0x7C, 0x88, 0x80, 0x7B, 0xAE, 0x01, 0xFC, 0x4C, // |..{...L
/* 13E0 */ 0x90, 0x9D, 0x21, 0xC0, 0xFA, 0xFF, 0x3F, 0xD7, // ..!...?.
/* 13E8 */ 0x00, 0xAE, 0xAC, 0x9D, 0x6B, 0x80, 0xDE, 0x11, // ....k...
/* 13F0 */ 0x00, 0x1C, 0x29, 0x96, 0xA6, 0x23, 0x04, 0x97, // ..)..#..
/* 13F8 */ 0x04, 0xA1, 0x54, 0xAF, 0x05, 0x9D, 0x44, 0x3D, // ..T...D=
/* 1400 */ 0xCE, 0xE3, 0x30, 0xF4, 0x93, 0xA8, 0x51, 0x22, // ..0...Q"
/* 1408 */ 0x1F, 0x41, 0xAD, 0x97, 0x05, 0xE1, 0xBF, 0xE4, // .A......
/* 1410 */ 0x3C, 0xAC, 0xB3, 0x0C, 0xA0, 0x3A, 0x3A, 0xF8, // <....::.
/* 1418 */ 0xE4, 0x60, 0xF5, 0x14, 0xD2, 0x75, 0x82, 0x40, // .`...u.@
/* 1420 */ 0x29, 0x39, 0x41, 0x50, 0x10, 0x03, 0x3A, 0xE6, // )9AP..:.
/* 1428 */ 0x09, 0x02, 0x7D, 0x70, 0x60, 0xB3, 0x2C, 0x1E, // ..}p`.,.
/* 1430 */ 0x44, 0xC1, 0x0E, 0x10, 0x74, 0x90, 0x1E, 0x32, // D...t..2
/* 1438 */ 0xD7, 0x70, 0x80, 0x40, 0xC0, 0x16, 0x39, 0x5A, // .p.@..9Z
/* 1440 */ 0xD0, 0x0C, 0xEC, 0xE8, 0x3D, 0xB1, 0xFF, 0xFF, // ....=...
/* 1448 */ 0x93, 0xBE, 0x6F, 0x02, 0x06, 0x8B, 0xF9, 0xD0, // ..o.....
/* 1450 */ 0x68, 0xAC, 0x50, 0x0F, 0x21, 0x09, 0xAA, 0x39, // h.P.!..9
/* 1458 */ 0x15, 0xA0, 0x06, 0xE2, 0xC3, 0x03, 0x46, 0xD7, // ......F.
/* 1460 */ 0xDD, 0x01, 0x64, 0xFA, 0xCE, 0x0E, 0x20, 0x47, // ..d... G
/* 1468 */ 0xE7, 0x37, 0x48, 0xC0, 0xC3, 0x4D, 0x81, 0xC1, // .7H..M..
/* 1470 */ 0x3C, 0x37, 0xF8, 0x78, 0x65, 0x94, 0x90, 0x31, // <7.xe..1
/* 1478 */ 0x9E, 0xB0, 0x5E, 0x15, 0xF8, 0x05, 0x00, 0x77, // ..^....w
/* 1480 */ 0x19, 0x81, 0x77, 0x9F, 0x22, 0x97, 0x11, 0xA0, // ..w."...
/* 1488 */ 0x7D, 0x8D, 0xF0, 0x65, 0x04, 0xFB, 0xFF, 0xBF, // }..e....
/* 1490 */ 0x8C, 0xC0, 0xD6, 0x76, 0x19, 0x01, 0x1D, 0xD6, // ...v....
/* 1498 */ 0x1B, 0x24, 0xD8, 0xE6, 0xE2, 0xD9, 0xE3, 0x2E, // .$......
/* 14A0 */ 0x01, 0x86, 0x89, 0xF1, 0x1E, 0xE0, 0x3B, 0x08, // ......;.
/* 14A8 */ 0xE6, 0x42, 0xE2, 0xA9, 0x3E, 0x0A, 0xE0, 0x08, // .B..>...
/* 14B0 */ 0x7C, 0x8F, 0xC4, 0x71, 0xF8, 0x56, 0x8B, 0x99, // |..q.V..
/* 14B8 */ 0xEE, 0x59, 0x18, 0xFD, 0xC0, 0x02, 0x7B, 0x96, // .Y....{.
/* 14C0 */ 0x07, 0x69, 0x68, 0x76, 0x67, 0xF3, 0x15, 0x89, // .ihvg...
/* 14C8 */ 0x4B, 0xA4, 0x90, 0xC0, 0x63, 0x04, 0x4A, 0x12, // K...c.J.
/* 14D0 */ 0x1C, 0x05, 0xF1, 0x31, 0xC2, 0x71, 0x8F, 0x11, // ...1.q..
/* 14D8 */ 0xD0, 0xE3, 0x1D, 0x23, 0x40, 0x71, 0x2F, 0x78, // ...#@q/x
/* 14E0 */ 0x8C, 0x00, 0xD3, 0xD8, 0x3C, 0xC4, 0xE3, 0xF3, // ....<...
/* 14E8 */ 0x68, 0x3D, 0x3E, 0x06, 0x74, 0x7E, 0x98, 0x0B, // h=>.t~..
/* 14F0 */ 0x12, 0xB0, 0xFA, 0xFF, 0x5F, 0x90, 0x80, 0xAD, // ...._...
/* 14F8 */ 0xB7, 0x5B, 0x2D, 0xD0, 0x3B, 0x02, 0x80, 0xE3, // .[-.;...
/* 1500 */ 0xF8, 0x80, 0x3B, 0x05, 0xF8, 0x9E, 0xE6, 0x01, // ..;.....
/* 1508 */ 0x30, 0x85, 0x63, 0xD2, 0x55, 0xE2, 0x44, 0xDF, // 0.c.U.D.
/* 1510 */ 0x25, 0x0C, 0x8C, 0xB9, 0xF3, 0xF3, 0xDB, 0x23, // %......#
/* 1518 */ 0x3F, 0xCE, 0xF8, 0xF4, 0xC0, 0x85, 0xC0, 0x51, // ?......Q
/* 1520 */ 0x10, 0x9F, 0x1E, 0x7C, 0x77, 0xF4, 0xE9, 0x01, // ...|w...
/* 1528 */ 0x6E, 0xA8, 0xD3, 0x03, 0x28, 0xC4, 0x5D, 0xD2, // n...(.].
/* 1530 */ 0x41, 0x74, 0xEA, 0xF0, 0xC1, 0x01, 0xFC, 0xFF, // At......
/* 1538 */ 0xFF, 0xC3, 0x0C, 0x60, 0x63, 0xBC, 0x3E, 0xCC, // ...`c.>.
/* 1540 */ 0x00, 0xC7, 0xF1, 0x33, 0xD4, 0xC7, 0xB4, 0x27, // ...3...'
/* 1548 */ 0x7D, 0x03, 0xC7, 0x7A, 0xA2, 0xC5, 0xE2, 0x3C, // }..z...<
/* 1550 */ 0x84, 0x19, 0xE3, 0xA5, 0x81, 0x13, 0xF8, 0x56, // .......V
/* 1558 */ 0x8B, 0x97, 0x7C, 0x81, 0x44, 0x40, 0x9E, 0x15, // ..|.D@..
/* 1560 */ 0x9B, 0xD3, 0xD3, 0xBF, 0x6F, 0x38, 0x67, 0xC6, // ....o8g.
/* 1568 */ 0xE0, 0x4E, 0xA1, 0xE2, 0xE3, 0x04, 0xEE, 0x08, // .N......
/* 1570 */ 0x81, 0x3A, 0x41, 0x58, 0xD4, 0x11, 0x02, 0x25, // .:AX...%
/* 1578 */ 0x03, 0x8E, 0x82, 0xF8, 0x08, 0xE1, 0xD3, 0x95, // ........
/* 1580 */ 0x8F, 0x10, 0x70, 0x23, 0xDD, 0x20, 0x41, 0x71, // ..p#. Aq
/* 1588 */ 0x1D, 0xF5, 0xB8, 0xC1, 0xF0, 0xFF, 0x27, 0x78, // ......'x
/* 1590 */ 0x0B, 0x78, 0xF0, 0xC1, 0x9C, 0x20, 0x00, 0x27, // .x... .'
/* 1598 */ 0x47, 0x22, 0x9F, 0x20, 0xC0, 0x65, 0xEE, 0x04, // G". .e..
/* 15A0 */ 0x01, 0x3A, 0xF9, 0x37, 0x47, 0xD0, 0x9D, 0x20, // .:.7G..
/* 15A8 */ 0x38, 0xE2, 0x83, 0x42, 0xC8, 0x27, 0x19, 0x0F, // 8..B.'..
/* 15B0 */ 0xC2, 0x40, 0x8F, 0x00, 0xFC, 0xFC, 0xC0, 0x6F, // .@.....o
/* 15B8 */ 0x0D, 0xB0, 0x2E, 0x27, 0xB8, 0x53, 0x04, 0xAC, // ...'.S..
/* 15C0 */ 0xB3, 0x05, 0x3B, 0x45, 0x00, 0xCF, 0xFF, 0xFF, // ..;E....
/* 15C8 */ 0x29, 0x02, 0x0C, 0xE7, 0x1A, 0xDC, 0x29, 0x02, // ).....).
/* 15D0 */ 0xF0, 0xAE, 0xEE, 0x14, 0x01, 0xB4, 0x8E, 0x35, // .......5
/* 15D8 */ 0xF8, 0x53, 0x04, 0x70, 0x10, 0x7B, 0x8A, 0x40, // .S.p.{.@
/* 15E0 */ 0xC9, 0x83, 0x90, 0xF8, 0x53, 0x04, 0xE2, 0xDC, // ....S...
/* 15E8 */ 0xFA, 0xAA, 0x70, 0x1C, 0x41, 0xDF, 0x76, 0x82, // ..p.A.v.
/* 15F0 */ 0x18, 0xE9, 0x1C, 0xFC, 0xFF, 0xBF, 0x0B, 0x46, // .......F
/* 15F8 */ 0x7F, 0x8B, 0xF0, 0xAC, 0x22, 0xBC, 0x0B, 0x1A, // ...."...
/* 1600 */ 0xF3, 0xF1, 0xF6, 0xF9, 0xCF, 0x73, 0x3B, 0x32, // .....s;2
/* 1608 */ 0x7E, 0xE0, 0x02, 0xBC, 0xDC, 0x19, 0x0F, 0x0D, // ~.......
/* 1610 */ 0x7B, 0xE0, 0x02, 0x1C, 0xBA, 0x3B, 0x70, 0x01, // {....;p.
/* 1618 */ 0xBD, 0xB1, 0xBC, 0x30, 0x60, 0x91, 0xFE, 0xFF, // ...0`...
/* 1620 */ 0x8F, 0x11, 0x3E, 0x31, 0xF8, 0xC0, 0xE5, 0x1B, // ..>1....
/* 1628 */ 0x03, 0xEE, 0x2E, 0xEA, 0x83, 0x00, 0xF6, 0x30, // .......0
/* 1630 */ 0x8A, 0x17, 0x7C, 0x8C, 0x40, 0xCC, 0x3A, 0x76, // ..|.@.:v
/* 1638 */ 0xF8, 0x1A, 0x27, 0x41, 0x8C, 0x1F, 0x4C, 0x09, // ..'A..L.
/* 1640 */ 0xF0, 0x11, 0x35, 0x7F, 0x04, 0xF0, 0xF9, 0x01, // ..5.....
/* 1648 */ 0x25, 0x8D, 0x42, 0x07, 0x08, 0x9F, 0x1F, 0xB8, // %.B.....
/* 1650 */ 0x14, 0x38, 0x0A, 0xE2, 0xDB, 0x36, 0x9C, 0xF3, // .8...6..
/* 1658 */ 0x03, 0x3E, 0xD6, 0xF9, 0x01, 0x14, 0x87, 0x0D, // .>......
/* 1660 */ 0x0F, 0x1A, 0x1C, 0x93, 0x3D, 0x36, 0x18, 0x07, // ....=6..
/* 1668 */ 0x08, 0xC0, 0xC9, 0xE9, 0xC8, 0x07, 0x08, 0x70, // .......p
/* 1670 */ 0x0D, 0xD8, 0x07, 0x08, 0x70, 0x81, 0xFC, 0xFF, // ....p...
/* 1678 */ 0x1F, 0x20, 0xC0, 0x76, 0x55, 0x60, 0x47, 0x1B, // . .vU`G.
/* 1680 */ 0x5F, 0x8B, 0xF9, 0xB4, 0xDF, 0x6C, 0x7C, 0x31, // _....l|1
/* 1688 */ 0x78, 0xAE, 0x7F, 0x43, 0xF6, 0x2D, 0x00, 0x06, // x..C.-..
/* 1690 */ 0x41, 0xB9, 0xC7, 0x07, 0xD4, 0x11, 0xC0, 0x87, // A.......
/* 1698 */ 0x1A, 0xCC, 0x98, 0xDF, 0x4D, 0x0D, 0x1D, 0xF6, // ....M...
/* 16A0 */ 0x8D, 0xC2, 0x77, 0x9C, 0x73, 0x0E, 0xF3, 0xC0, // ..w.s...
/* 16A8 */ 0x6C, 0x9C, 0x73, 0xF3, 0x58, 0x5E, 0x13, 0x3C, // l.s.X^.<
/* 16B0 */ 0x38, 0x1F, 0xD8, 0xD9, 0x11, 0x82, 0x1F, 0x6A, // 8......j
/* 16B8 */ 0x7C, 0xDC, 0xF2, 0x11, 0x82, 0xCB, 0x81, 0xA3, // |.......
/* 16C0 */ 0x20, 0x3E, 0x42, 0x38, 0xEA, 0x11, 0x02, 0xFA, // >B8....
/* 16C8 */ 0xE9, 0xD6, 0x47, 0x08, 0xF8, 0xD7, 0x05, 0x0F, // ..G.....
/* 16D0 */ 0x1B, 0x1C, 0x30, 0x27, 0x87, 0x1B, 0x36, 0x1B, // ..0'..6.
/* 16D8 */ 0x1D, 0x3F, 0x44, 0x00, 0x4E, 0x82, 0x1E, 0x22, // .?D.N.."
/* 16E0 */ 0x20, 0xFC, 0xFF, 0x0F, 0x11, 0xB0, 0xED, 0x1D, // .......
/* 16E8 */ 0x22, 0x40, 0x07, 0xF6, 0x10, 0x01, 0xB6, 0x91, // "@......
/* 16F0 */ 0x05, 0x7A, 0x2C, 0xF0, 0xC5, 0xD8, 0xE3, 0xC7, // .z,.....
/* 16F8 */ 0xDC, 0xD8, 0xF9, 0xC1, 0x01, 0x8F, 0xF4, 0xE2, // ........
/* 1700 */ 0x80, 0x3D, 0x36, 0xE8, 0x8C, 0x8C, 0x16, 0x7D, // .=6....}
/* 1708 */ 0x62, 0xD0, 0xC0, 0x4E, 0xE6, 0x84, 0x4F, 0xFB, // b..N..O.
/* 1710 */ 0xA1, 0xE6, 0x39, 0xD5, 0x18, 0xAF, 0x16, 0x3E, // ..9....>
/* 1718 */ 0xAC, 0x9A, 0xC0, 0x32, 0x8F, 0x10, 0xA8, 0x73, // ...2...s
/* 1720 */ 0x8D, 0xCF, 0x10, 0x3E, 0x42, 0x70, 0x41, 0x70, // ...>BpAp
/* 1728 */ 0x14, 0xC4, 0x47, 0x08, 0x87, 0x3D, 0x42, 0x40, // ..G..=B@
/* 1730 */ 0x0F, 0x77, 0x84, 0x00, 0xC5, 0x65, 0xEC, 0xA0, // .w...e..
/* 1738 */ 0xC1, 0x32, 0x38, 0x4F, 0xD8, 0x37, 0x36, 0x63, // .28O.76c
/* 1740 */ 0x74, 0x7D, 0xE1, 0x47, 0x4C, 0xE1, 0x50, 0x9F, // t}.GL.P.
/* 1748 */ 0x21, 0x80, 0xDD, 0xFF, 0xFF, 0x9C, 0x05, 0x4C, // !......L
/* 1750 */ 0xF5, 0x9D, 0xB3, 0x80, 0xD6, 0xF0, 0xCE, 0x1E, // ........
/* 1758 */ 0x73, 0x04, 0xE4, 0xB3, 0x3B, 0x83, 0x37, 0x83, // s...;.7.
/* 1760 */ 0x98, 0x3E, 0x61, 0x19, 0xCC, 0x67, 0x9A, 0x38, // .>a..g.8
/* 1768 */ 0xD1, 0x7C, 0x7E, 0xF0, 0x45, 0xC2, 0xA7, 0x2D, // .|~.E..-
/* 1770 */ 0xA3, 0xF9, 0xDA, 0xC0, 0xE2, 0x3D, 0x11, 0x7C, // .....=.|
/* 1778 */ 0xAE, 0xA1, 0x81, 0x60, 0x50, 0x1A, 0x0E, 0x0A, // ...`P...
/* 1780 */ 0x50, 0x06, 0x7A, 0x9C, 0x87, 0x77, 0x64, 0x4C, // P.z..wdL
/* 1788 */ 0x12, 0x1C, 0xEA, 0x0C, 0xE0, 0x91, 0x1D, 0xCA, // ........
/* 1790 */ 0x51, 0x9D, 0xCE, 0x09, 0x7B, 0x52, 0x4F, 0x9F, // Q...{RO.
/* 1798 */ 0x30, 0xA4, 0x40, 0xE8, 0x84, 0xC1, 0xEE, 0x61, // 0.@....a
/* 17A0 */ 0x11, 0x5F, 0x0E, 0x0D, 0x93, 0xC0, 0xA3, 0x67, // ._.....g
/* 17A8 */ 0x68, 0x1C, 0x1A, 0x3B, 0x0C, 0x5F, 0x0B, 0x82, // h..;._..
/* 17B0 */ 0x1D, 0xC4, 0xA3, 0x87, 0x4F, 0x8A, 0x6C, 0x42, // ....O.lB
/* 17B8 */ 0xCF, 0x04, 0xE5, 0x5E, 0x17, 0x74, 0x1B, 0x8A, // ...^.t..
/* 17C0 */ 0x1A, 0xE3, 0x65, 0xD7, 0x47, 0x21, 0x0D, 0x1E, // ..e.G!..
/* 17C8 */ 0x34, 0x67, 0x84, 0x77, 0x01, 0xCF, 0xD9, 0x68, // 4g.w...h
/* 17D0 */ 0x27, 0xF1, 0xFF, 0x7F, 0xD8, 0xF6, 0x15, 0x89, // '.......
/* 17D8 */ 0xDD, 0x27, 0x0C, 0xF4, 0x28, 0x62, 0x1C, 0x43, // .'..(b.C
/* 17E0 */ 0x3C, 0xB0, 0xF9, 0x4E, 0xC2, 0xCE, 0x04, 0xD8, // <..N....
/* 17E8 */ 0x23, 0x87, 0x21, 0x63, 0x1F, 0xA0, 0x09, 0xEC, // #.!c....
/* 17F0 */ 0xFE, 0xE6, 0xAD, 0x9B, 0xC8, 0xB9, 0x9C, 0xD2, // ........
/* 17F8 */ 0x83, 0x44, 0x88, 0xF7, 0xC3, 0xC6, 0x04, 0xD8, // .D......
/* 1800 */ 0x3A, 0x10, 0xE8, 0xF0, 0x10, 0xE1, 0x65, 0x22, // :.....e"
/* 1808 */ 0x4A, 0xA4, 0xD6, 0x26, 0x26, 0x28, 0x86, 0x11, // J..&&(..
/* 1810 */ 0xA5, 0x37, 0x14, 0x02, 0x1C, 0xBA, 0x36, 0x58, // .7....6X
/* 1818 */ 0x41, 0x1B, 0xF0, 0x85, 0x20, 0x44, 0xA4, 0x38, // A... D.8
/* 1820 */ 0xED, 0x0F, 0x82, 0x88, 0x7A, 0x43, 0xE8, 0x38, // ....zC.8
/* 1828 */ 0xE0, 0x43, 0xAD, 0x47, 0xC3, 0x4F, 0x16, 0x3E, // .C.G.O.>
/* 1830 */ 0x12, 0xF8, 0x72, 0xE9, 0xA3, 0x39, 0x3B, 0x48, // ..r..9;H
/* 1838 */ 0x79, 0x60, 0x8F, 0x19, 0xCF, 0x02, 0x1E, 0x35, // y`.....5
/* 1840 */ 0x3B, 0x7A, 0xF8, 0x48, 0xE1, 0xC3, 0x01, 0xFE, // ;z.H....
/* 1848 */ 0xD8, 0x10, 0xF0, 0x95, 0xCA, 0x67, 0x02, 0x8F, // .....g..
/* 1850 */ 0xD1, 0x70, 0x7C, 0x88, 0x9E, 0xAE, 0x27, 0x70, // .p|...'p
/* 1858 */ 0x88, 0x0C, 0xD0, 0x67, 0x10, 0xF8, 0xE3, 0xF1, // ...g....
/* 1860 */ 0x21, 0xC0, 0x33, 0x37, 0x81, 0x8F, 0xAA, 0x1E, // !.37....
/* 1868 */ 0x04, 0x1F, 0x99, 0xA1, 0x3D, 0xCF, 0xD3, 0x7A, // ....=..z
/* 1870 */ 0x17, 0xF0, 0x01, 0xC0, 0x87, 0x52, 0x02, 0xA1, // .....R..
/* 1878 */ 0x43, 0x8C, 0xC7, 0x03, 0xFE, 0xE3, 0xF2, 0x03, // C.......
/* 1880 */ 0x42, 0x84, 0x17, 0x06, 0xCF, 0xD7, 0x27, 0x05, // B.....'.
/* 1888 */ 0x1D, 0x2C, 0x74, 0xB0, 0xC1, 0x9D, 0x29, 0x7C, // .,t...)|
/* 1890 */ 0x4E, 0xE0, 0xA7, 0x0E, 0x9F, 0x11, 0x38, 0xFC, // N.....8.
/* 1898 */ 0x2B, 0x02, 0x3F, 0x92, 0xB0, 0xC0, 0xC7, 0x1B, // +.?.....
/* 18A0 */ 0x2A, 0x6A, 0xF0, 0xE4, 0xFF, 0x7F, 0xAC, 0xC0, // *j......
/* 18A8 */ 0x9C, 0x28, 0xD8, 0x45, 0x87, 0xC3, 0xB2, 0x43, // .(.E...C
/* 18B0 */ 0x0F, 0x19, 0x1E, 0x74, 0xC1, 0xC7, 0x09, 0xA0, // ...t....
/* 18B8 */ 0x75, 0x90, 0xE0, 0xC3, 0x86, 0x7F, 0xA5, 0x30, // u......0
/* 18C0 */ 0xB0, 0x0F, 0x3A, 0xFC, 0xC8, 0x81, 0x3B, 0xE8, // ..:...;.
/* 18C8 */ 0xC0, 0x43, 0x89, 0xFE, 0xFC, 0xF0, 0xBC, 0xF2, // .C......
/* 18D0 */ 0xAC, 0x1B, 0x22, 0xDA, 0x3B, 0xD5, 0x9B, 0x0E, // ..".;...
/* 18D8 */ 0x53, 0x8B, 0x23, 0xAC, 0x20, 0x91, 0x1E, 0x76, // S.#. ..v
/* 18E0 */ 0x8C, 0x74, 0x20, 0x51, 0x82, 0x84, 0x0C, 0x6B, // .t Q...k
/* 18E8 */ 0xA4, 0x04, 0x3E, 0x24, 0xE1, 0xC7, 0xC1, 0x01, // ..>$....
/* 18F0 */ 0x4F, 0x80, 0x8D, 0xE3, 0xED, 0xC7, 0x53, 0x39, // O.....S9
/* 18F8 */ 0x2C, 0x9F, 0x51, 0x7C, 0xCF, 0xF2, 0xA0, 0x1E, // ,.Q|....
/* 1900 */ 0x55, 0x7C, 0x98, 0x39, 0xD2, 0x77, 0x24, 0x7E, // U|.9.w$~
/* 1908 */ 0x90, 0xC3, 0x1E, 0x2E, 0x3C, 0x04, 0x3E, 0x80, // ....<.>.
/* 1910 */ 0x77, 0xA3, 0xB3, 0xF4, 0x59, 0xE8, 0xDC, 0x70, // w...Y..p
/* 1918 */ 0xA7, 0x19, 0x7E, 0x45, 0xC0, 0x9C, 0xB1, 0x91, // ..~E....
/* 1920 */ 0x87, 0x1B, 0x1A, 0xE0, 0x6D, 0xA0, 0x80, 0x30, // ....m..0
/* 1928 */ 0xA8, 0xF3, 0x0D, 0x58, 0xFE, 0xFF, 0xE7, 0x1B, // ...X....
/* 1930 */ 0xC0, 0xC2, 0x91, 0x12, 0x4C, 0x07, 0x4A, 0x76, // ....L.Jv
/* 1938 */ 0xC2, 0x01, 0xCE, 0x68, 0x4F, 0x38, 0x60, 0x12, // ...hO8`.
/* 1940 */ 0x78, 0xC2, 0x01, 0x44, 0xFD, 0xFF, 0x4F, 0x38, // x..D..O8
/* 1948 */ 0xC0, 0x5E, 0xD4, 0x09, 0x07, 0x7D, 0x70, 0xF3, // .^...}p.
/* 1950 */ 0x49, 0x81, 0x5D, 0x71, 0xC0, 0x41, 0x30, 0xF4, // I.]q.A0.
/* 1958 */ 0x19, 0x07, 0xE8, 0x8C, 0xE5, 0x91, 0x02, 0xD8, // ........
/* 1960 */ 0x9D, 0x72, 0xC0, 0x7B, 0xF0, 0xC0, 0x9D, 0x72, // .r.{...r
/* 1968 */ 0xC0, 0x8B, 0x74, 0x1C, 0xEF, 0x31, 0xCF, 0x39, // ..t..1.9
/* 1970 */ 0xF8, 0xFF, 0xFF, 0x39, 0x07, 0xB0, 0x13, 0xE5, // ...9....
/* 1978 */ 0x90, 0x43, 0xA5, 0xBF, 0x0F, 0x24, 0x1E, 0x06, // .C...$..
/* 1980 */ 0x75, 0xCE, 0x01, 0x5C, 0x9D, 0x3F, 0x7C, 0x8A, // u..\.?|.
/* 1988 */ 0x00, 0xC7, 0x95, 0xD2, 0x67, 0x87, 0x17, 0x8F, // ....g...
/* 1990 */ 0xF7, 0x57, 0x23, 0x84, 0x32, 0xCE, 0x83, 0xB4, // .W#.2...
/* 1998 */ 0x71, 0x8D, 0xF0, 0xD8, 0xE9, 0x2B, 0x04, 0xEE, // q....+..
/* 19A0 */ 0x90, 0x03, 0x7F, 0x26, 0x07, 0xF4, 0x5E, 0xF3, // ...&..^.
/* 19A8 */ 0xFE, 0x70, 0x44, 0x41, 0x7C, 0xB5, 0x79, 0xB9, // .pDA|.y.
/* 19B0 */ 0x79, 0xBD, 0x89, 0xF3, 0xA2, 0xE3, 0x43, 0x0E, // y.....C.
/* 19B8 */ 0x3B, 0xE2, 0x18, 0x25, 0xDE, 0xFF, 0x3F, 0x82, // ;..%..?.
/* 19C0 */ 0xB1, 0x42, 0xF9, 0x7C, 0xF3, 0x2E, 0x11, 0xEB, // .B.|....
/* 19C8 */ 0x69, 0xC7, 0x28, 0xE1, 0x62, 0x04, 0x0B, 0x12, // i.(.b...
/* 19D0 */ 0xF4, 0x21, 0x87, 0x49, 0x38, 0xE4, 0x00, 0x34, // .!.I8..4
/* 19D8 */ 0x09, 0x7F, 0x7A, 0x46, 0x0F, 0xD7, 0xC7, 0x04, // ..zF....
/* 19E0 */ 0x1F, 0x08, 0xDE, 0x12, 0x30, 0xA7, 0x91, 0x87, // ....0...
/* 19E8 */ 0x07, 0x9F, 0xFC, 0x4D, 0x30, 0xE4, 0x01, 0x07, // ...M0...
/* 19F0 */ 0xE8, 0x1C, 0xA6, 0xC1, 0x73, 0x96, 0xC0, 0xFC, // ....s...
/* 19F8 */ 0xFF, 0xCF, 0x12, 0x98, 0x73, 0x04, 0xEE, 0x60, // ....s..`
/* 1A00 */ 0x03, 0xBE, 0x93, 0x06, 0xEE, 0x60, 0x03, 0xDE, // .....`..
/* 1A08 */ 0x51, 0xF9, 0x54, 0x03, 0x38, 0x8A, 0x76, 0xA4, // Q.T.8.v.
/* 1A10 */ 0x41, 0x85, 0x39, 0xD5, 0x00, 0x02, 0xFF, 0xFF, // A.9.....
/* 1A18 */ 0x47, 0x07, 0xD8, 0x97, 0xBC, 0xB7, 0x14, 0x76, // G......v
/* 1A20 */ 0xD3, 0x60, 0x27, 0x11, 0x76, 0x02, 0x67, 0x28, // .`'.v.g(
/* 1A28 */ 0x21, 0x22, 0xBF, 0x69, 0x3D, 0xD5, 0x80, 0xEB, // !".i=...
/* 1A30 */ 0xC6, 0xF1, 0x26, 0xF0, 0xFC, 0xF7, 0xF2, 0xF0, // ..&.....
/* 1A38 */ 0x28, 0x70, 0x4A, 0xAF, 0x0F, 0xCF, 0x31, 0x6F, // (pJ...1o
/* 1A40 */ 0x33, 0xCF, 0x32, 0x86, 0x7A, 0x17, 0xF4, 0x0D, // 3.2.z...
/* 1A48 */ 0xD0, 0x70, 0xA1, 0x8C, 0x19, 0x2E, 0xD8, 0xBB, // .p......
/* 1A50 */ 0xA0, 0x67, 0x15, 0x2F, 0xCE, 0x3B, 0x8D, 0xD1, // .g./.;..
/* 1A58 */ 0x02, 0xC6, 0x0E, 0x13, 0x22, 0xE2, 0x09, 0x3E, // ...."..>
/* 1A60 */ 0xD5, 0x30, 0x49, 0xA7, 0x1A, 0x80, 0x26, 0x22, // .0I...&"
/* 1A68 */ 0x4E, 0x82, 0x68, 0x68, 0x5F, 0x33, 0x30, 0xFF, // N.hh_30.
/* 1A70 */ 0xFF, 0x73, 0x0C, 0x8B, 0x7C, 0xA4, 0x01, 0x3A, // .s..|..:
/* 1A78 */ 0x87, 0x54, 0xF0, 0x1C, 0x24, 0x60, 0x01, 0x9D, // .T..$`..
/* 1A80 */ 0x1F, 0x3F, 0x4B, 0xC0, 0x3D, 0xD9, 0x80, 0xEF, // .?K.=...
/* 1A88 */ 0x9C, 0x88, 0x3B, 0xD9, 0x80, 0x77, 0x70, 0x91, // ..;..wp.
/* 1A90 */ 0xA2, 0x84, 0x36, 0x52, 0x84, 0xB8, 0x27, 0x13, // ..6R..'.
/* 1A98 */ 0x27, 0xE6, 0xDB, 0x0D, 0xF6, 0x74, 0x03, 0x38, // '....t.8
/* 1AA0 */ 0x89, 0x7A, 0x6C, 0x46, 0x85, 0x3B, 0x39, 0x23, // .zlF.;9#
/* 1AA8 */ 0xFF, 0xFF, 0x27, 0x67, 0xC0, 0xA8, 0xCB, 0x23, // ..'g...#
/* 1AB0 */ 0x0A, 0x39, 0x3B, 0x1C, 0xC3, 0x51, 0xF8, 0x96, // .9;..Q..
/* 1AB8 */ 0x12, 0xE5, 0x95, 0x85, 0xDD, 0x4B, 0x8D, 0xF2, // .....K..
/* 1AC0 */ 0x5C, 0x0A, 0x93, 0xC0, 0x07, 0x1C, 0xD8, 0xA7, // \.......
/* 1AC8 */ 0x3F, 0x1F, 0x97, 0x7D, 0x1C, 0x78, 0x09, 0x3C, // ?..}.x.<
/* 1AD0 */ 0x9F, 0xB3, 0x7A, 0xC0, 0x31, 0xD0, 0x93, 0x8D, // ..z.1...
/* 1AD8 */ 0x4F, 0x81, 0xEC, 0x2C, 0xE8, 0x6B, 0xB3, 0x0F, // O..,.k..
/* 1AE0 */ 0x13, 0xC1, 0x9E, 0x9C, 0x0D, 0x1C, 0x35, 0xE8, // ......5.
/* 1AE8 */ 0x03, 0x45, 0x8C, 0x37, 0x67, 0x63, 0x46, 0x88, // .E.7gcF.
/* 1AF0 */ 0x61, 0xAC, 0x07, 0x1C, 0x26, 0xEE, 0x80, 0x03, // a...&...
/* 1AF8 */ 0x48, 0xF8, 0xFF, 0x1F, 0x70, 0x00, 0x43, 0x52, // H...p.CR
/* 1B00 */ 0x0E, 0x38, 0xE8, 0xE1, 0xFA, 0xA4, 0xC0, 0x6E, // .8.....n
/* 1B08 */ 0x0F, 0x6C, 0xB8, 0xCF, 0x0E, 0x0F, 0x0A, 0x6C, // .l.....l
/* 1B10 */ 0x48, 0xEC, 0x8C, 0x03, 0xBC, 0x8F, 0x13, 0xE0, // H.......
/* 1B18 */ 0x3E, 0xE3, 0x80, 0x6F, 0x38, 0xCF, 0x38, 0xC0, // >..o8.8.
/* 1B20 */ 0x60, 0x70, 0x31, 0x0E, 0xE4, 0xFF, 0x1F, 0xF3, // `p1.....
/* 1B28 */ 0x71, 0xD0, 0x30, 0x8F, 0x31, 0x1E, 0x4C, 0xC8, // q.0.1.L.
/* 1B30 */ 0x10, 0xEF, 0x31, 0x51, 0x1E, 0x09, 0x01, 0x47, // ..1Q...G
/* 1B38 */ 0xA1, 0x2C, 0x80, 0x30, 0xF9, 0x2F, 0x04, 0xC5, // .,.0./..
/* 1B40 */ 0x80, 0x41, 0x9D, 0x72, 0x00, 0x57, 0x82, 0xCF, // .A.r.W..
/* 1B48 */ 0x11, 0xA0, 0x41, 0x3F, 0x96, 0x53, 0x88, 0x15, // ..A?.S..
/* 1B50 */ 0xE9, 0xF5, 0xE1, 0xE9, 0x8B, 0x81, 0x44, 0x0A, // ......D.
/* 1B58 */ 0x77, 0x4E, 0xBE, 0x46, 0xC0, 0x3D, 0x39, 0xC3, // wN.F.=9.
/* 1B60 */ 0x3F, 0x44, 0xFC, 0xFF, 0x1F, 0x22, 0x8E, 0x29, // ?D...".)
/* 1B68 */ 0xC4, 0x83, 0xCD, 0x41, 0xBD, 0x09, 0xBC, 0xDC, // ...A....
/* 1B70 */ 0x04, 0x39, 0x8F, 0xA7, 0x1C, 0x1F, 0x72, 0x7C, // .9....r|
/* 1B78 */ 0x66, 0xF6, 0x21, 0xC7, 0x50, 0xEF, 0x3A, 0xB1, // f.!.P.:.
/* 1B80 */ 0xDE, 0x75, 0x0C, 0x12, 0x2A, 0xC2, 0x5B, 0xA1, // .u..*.[.
/* 1B88 */ 0xAF, 0xCE, 0x3E, 0x41, 0xFB, 0x8E, 0x13, 0x23, // ..>A...#
/* 1B90 */ 0xDC, 0x43, 0x0E, 0x13, 0xF2, 0x1A, 0x91, 0x87, // .C......
/* 1B98 */ 0x43, 0x0E, 0x40, 0x91, 0xD7, 0x8C, 0x0F, 0x39, // C.@....9
/* 1BA0 */ 0xB8, 0x51, 0xF8, 0x8C, 0xC0, 0x09, 0x1C, 0xF8, // .Q......
/* 1BA8 */ 0x80, 0x03, 0x74, 0x4E, 0x12, 0xB0, 0xFF, 0xFF, // ..tN....
/* 1BB0 */ 0x27, 0x09, 0xD8, 0x43, 0x7C, 0x92, 0x00, 0xC3, // '..C|...
/* 1BB8 */ 0xF9, 0x06, 0x7C, 0xB1, 0x4F, 0xDE, 0x68, 0x68, // ..|.O.hh
/* 1BC0 */ 0xCF, 0xC1, 0xD3, 0x39, 0xAB, 0x63, 0xE2, 0xC7, // ...9.c..
/* 1BC8 */ 0x6E, 0x70, 0x9D, 0x0C, 0xC0, 0x71, 0xEC, 0x06, // np...q..
/* 1BD0 */ 0xCF, 0x90, 0xB0, 0xB3, 0x88, 0xF1, 0x80, 0x73, // .......s
/* 1BD8 */ 0xCE, 0x3E, 0x5C, 0x74, 0x25, 0xC0, 0xE8, 0xD1, // .>\t%...
/* 1BE0 */ 0x08, 0x68, 0x43, 0x06, 0x0A, 0xF5, 0xDA, 0x73, // .hC....s
/* 1BE8 */ 0x26, 0x0F, 0x94, 0x18, 0xA4, 0x78, 0x47, 0x18, // &....xG.
/* 1BF0 */ 0xCF, 0x47, 0x23, 0xF0, 0xFF, 0xFF, 0x8F, 0x46, // .G#....F
/* 1BF8 */ 0xC0, 0x30, 0xF0, 0x61, 0x92, 0xC6, 0x78, 0x5B, // .0.a..x[
/* 1C00 */ 0x28, 0x22, 0x0C, 0xEA, 0x68, 0x04, 0xB8, 0x3A, // ("..h..:
/* 1C08 */ 0x22, 0xE0, 0x4E, 0x20, 0xE0, 0x03, 0x0D, 0x1B, // ".N ....
/* 1C10 */ 0x28, 0xA4, 0xEF, 0xB9, 0xEC, 0x78, 0x04, 0x1C, // (....x..
/* 1C18 */ 0x2F, 0xE1, 0x3E, 0x1E, 0x81, 0xE5, 0xFF, 0x7F, // /.>.....
/* 1C20 */ 0xA4, 0x04, 0x98, 0x22, 0xE4, 0x78, 0x04, 0x3D, // ...".x.=
/* 1C28 */ 0xF8, 0xF1, 0x08, 0xE8, 0x9C, 0x26, 0xC0, 0x0D, // .....&..
/* 1C30 */ 0xF5, 0x34, 0x01, 0x9E, 0xFF, 0xFF, 0x11, 0x09, // .4......
/* 1C38 */ 0xCC, 0xD0, 0x3E, 0xE7, 0x00, 0x27, 0xA8, 0x68, // ..>..'.h
/* 1C40 */ 0x81, 0x22, 0x3C, 0x87, 0x03, 0x9E, 0x82, 0x9E, // ."<.....
/* 1C48 */ 0x72, 0x68, 0x84, 0x57, 0x82, 0xA2, 0xC1, 0xA0, // rh.W....
/* 1C50 */ 0x0E, 0x3A, 0x80, 0xA5, 0xFF, 0xFF, 0x41, 0x87, // .:....A.
/* 1C58 */ 0x9D, 0xFB, 0x71, 0x67, 0x09, 0xB8, 0x33, 0x79, // ..qg..3y
/* 1C60 */ 0x3D, 0x38, 0x98, 0x03, 0xF7, 0xF9, 0xE1, 0xC4, // =8......
/* 1C68 */ 0xDF, 0x09, 0x9E, 0x0F, 0x7C, 0x32, 0x08, 0xF4, // ....|2..
/* 1C70 */ 0xEA, 0xE6, 0x4B, 0x15, 0x03, 0xF3, 0x45, 0x02, // ..K...E.
/* 1C78 */ 0x77, 0xB0, 0xC2, 0x1E, 0x2A, 0x81, 0xCD, 0x49, // w...*..I
/* 1C80 */ 0xFC, 0x31, 0x07, 0xAE, 0xB0, 0x63, 0x0E, 0x40, // .1...c.@
/* 1C88 */ 0x92, 0xFF, 0x3F, 0xAC, 0x8E, 0x39, 0xD0, 0x43, // ..?..9.C
/* 1C90 */ 0x1F, 0x73, 0x80, 0xCE, 0x59, 0x02, 0x78, 0x1E, // .s..Y.x.
/* 1C98 */ 0x72, 0x80, 0xF3, 0xE8, 0x30, 0xE0, 0x1E, 0x1D, // r...0...
/* 1CA0 */ 0xE6, 0x72, 0x08, 0xEF, 0x90, 0x03, 0x18, 0xF8, // .r......
/* 1CA8 */ 0xFF, 0x1F, 0x72, 0x60, 0x84, 0x3F, 0xE1, 0xD0, // ..r`.?..
/* 1CB0 */ 0x50, 0x6F, 0x04, 0xC5, 0x85, 0x41, 0x1D, 0x72, // Po...A.r
/* 1CB8 */ 0x00, 0x57, 0x31, 0x4E, 0x12, 0xA0, 0x39, 0xBB, // .W1N..9.
/* 1CC0 */ 0xC4, 0x78, 0x4D, 0x3D, 0x80, 0x50, 0x07, 0xF1, // .xM=.P..
/* 1CC8 */ 0xC8, 0xE2, 0x83, 0x97, 0x87, 0x71, 0x70, 0xBE, // .....qp.
/* 1CD0 */ 0xAB, 0xBC, 0x77, 0xE1, 0x64, 0xE1, 0x08, 0xCC, // ..w.d...
/* 1CD8 */ 0x47, 0x89, 0x87, 0x89, 0x47, 0x31, 0x03, 0x9F, // G...G1..
/* 1CE0 */ 0x97, 0x4F, 0x04, 0x91, 0xCE, 0xC8, 0xB7, 0x30, // .O.....0
/* 1CE8 */ 0xB8, 0xA7, 0x1D, 0xE0, 0x83, 0xF2, 0xB4, 0x03, // ........
/* 1CF0 */ 0x57, 0xDA, 0x69, 0x07, 0x84, 0xFF, 0xFF, 0xD3, // W.i.....
/* 1CF8 */ 0x0E, 0x60, 0x5D, 0xC2, 0x69, 0x07, 0x0D, 0xED, // .`].i...
/* 1D00 */ 0x3B, 0x07, 0xE6, 0x8C, 0xC3, 0x8E, 0xE4, 0xC0, // ;.......
/* 1D08 */ 0xFB, 0xA0, 0xF1, 0x28, 0x01, 0xD6, 0xC3, 0x0E, // ...(....
/* 1D10 */ 0xF8, 0x0E, 0x04, 0x06, 0xFE, 0xFF, 0x3F, 0xEC, // ......?.
/* 1D18 */ 0x80, 0x1D, 0xF0, 0x48, 0x62, 0xBD, 0xE1, 0x3C, // ...Hb..<
/* 1D20 */ 0x20, 0x7A, 0x26, 0x6F, 0x32, 0xC1, 0x5E, 0x29, // z&o2.^)
/* 1D28 */ 0x22, 0xC5, 0xF6, 0x81, 0x87, 0x9F, 0x10, 0x7D, // "......}
/* 1D30 */ 0xB4, 0x06, 0x2C, 0x05, 0x3C, 0x57, 0xA3, 0x22, // ..,.<W."
/* 1D38 */ 0x1D, 0xAD, 0x01, 0xBD, 0x37, 0x82, 0x47, 0x88, // ....7.G.
/* 1D40 */ 0xC3, 0xF1, 0x64, 0xFE, 0xFF, 0x07, 0xE1, 0x4B, // ..d....K
/* 1D48 */ 0x98, 0x0F, 0xAE, 0x7C, 0xF2, 0x6F, 0x17, 0x86, // ...|.o..
/* 1D50 */ 0xC2, 0x1E, 0xAD, 0x81, 0xD9, 0x39, 0x07, 0x0B, // .....9..
/* 1D58 */ 0xF1, 0x9C, 0x03, 0x57, 0xCC, 0x39, 0x07, 0xA0, // ...W.9..
/* 1D60 */ 0x49, 0x78, 0x08, 0x1D, 0x12, 0xE1, 0x86, 0x3D, // Ix.....=
/* 1D68 */ 0xE6, 0x20, 0xFF, 0xFF, 0xC7, 0x1C, 0x60, 0x30, // . ....`0
/* 1D70 */ 0x44, 0x9F, 0x26, 0x80, 0xCF, 0x21, 0x07, 0x9C, // D.&..!..
/* 1D78 */ 0x67, 0x0A, 0xDC, 0x21, 0x07, 0xBC, 0xF3, 0x78, // g..!...x
/* 1D80 */ 0xAD, 0x79, 0x7B, 0xF1, 0xAD, 0xDA, 0xB0, 0x6F, // .y{....o
/* 1D88 */ 0x87, 0xF0, 0x0E, 0x38, 0x80, 0x15, 0x91, 0xF2, // ...8....
/* 1D90 */ 0x40, 0x98, 0xF8, 0xD7, 0x81, 0x8E, 0x6C, 0x86, // @.....l.
/* 1D98 */ 0xE1, 0x07, 0x1C, 0xD8, 0xFF, 0xFF, 0x03, 0x0E, // ........
/* 1DA0 */ 0x60, 0x03, 0xE8, 0xC9, 0x0B, 0x3C, 0x47, 0x04, // `....<G.
/* 1DA8 */ 0xDC, 0x59, 0xC0, 0x07, 0x04, 0x5F, 0x0E, 0xD8, // .Y..._..
/* 1DB0 */ 0xFD, 0xDD, 0x07, 0x83, 0xC7, 0x03, 0xDF, 0x11, // ........
/* 1DB8 */ 0xD9, 0x64, 0x4E, 0x20, 0xC2, 0xB3, 0x0D, 0xFC, // .dN ....
/* 1DC0 */ 0xA1, 0xBC, 0xCA, 0x84, 0x88, 0xF3, 0x60, 0x10, // ......`.
/* 1DC8 */ 0xE1, 0x25, 0x24, 0xC4, 0x3B, 0x4D, 0x9C, 0x47, // .%$.;M.G
/* 1DD0 */ 0x9A, 0xD7, 0x88, 0x08, 0xCF, 0x36, 0x46, 0x8A, // .....6F.
/* 1DD8 */ 0x10, 0xE8, 0xD9, 0x86, 0x81, 0xBE, 0xDD, 0x78, // .......x
/* 1DE0 */ 0x1A, 0x31, 0x1E, 0xA8, 0x63, 0x45, 0x0A, 0x71, // .1..cE.q
/* 1DE8 */ 0x22, 0xE1, 0x42, 0x46, 0x8A, 0x16, 0xE3, 0xD9, // ".BF....
/* 1DF0 */ 0x86, 0xC5, 0x3B, 0x0E, 0xE8, 0x24, 0xE2, 0xB3, // ..;..$..
/* 1DF8 */ 0x0D, 0x60, 0xE8, 0xFF, 0x7F, 0xB6, 0x01, 0xF6, // .`......
/* 1E00 */ 0x97, 0x83, 0xA7, 0x13, 0xF0, 0x9D, 0x15, 0xE0, // ........
/* 1E08 */ 0x9D, 0x4A, 0x80, 0xC9, 0x97, 0xC2, 0x5A, 0xC6, // .J....Z.
/* 1E10 */ 0xEA, 0xC5, 0xCA, 0xC6, 0x62, 0x7D, 0xC6, 0xA0, // ....b}..
/* 1E18 */ 0x32, 0x4F, 0x09, 0x9A, 0xC0, 0xE1, 0x19, 0x39, // 2O.....9
/* 1E20 */ 0xEC, 0xFB, 0x8B, 0x41, 0x22, 0x3F, 0x9B, 0x18, // ...A"?..
/* 1E28 */ 0xFE, 0xB9, 0x22, 0xC2, 0x41, 0x9C, 0x45, 0x20, // ..".A.E
/* 1E30 */ 0x76, 0x4E, 0x30, 0x44, 0xAC, 0xB7, 0x09, 0x8F, // vN0D....
/* 1E38 */ 0x49, 0xE0, 0x3A, 0x02, 0x19, 0xC2, 0x32, 0x28, // I.:...2(
/* 1E40 */ 0x74, 0x18, 0xF7, 0xB8, 0x0C, 0xE7, 0xD8, 0x60, // t......`
/* 1E48 */ 0x14, 0xC4, 0x07, 0x01, 0x1F, 0x1E, 0x7C, 0x3E, // ......|>
/* 1E50 */ 0xC2, 0xED, 0xC7, 0x03, 0x81, 0x7F, 0x5A, 0xF3, // ......Z.
/* 1E58 */ 0xE9, 0x01, 0x0E, 0x70, 0xC4, 0x93, 0xF4, 0x54, // ...p...T
/* 1E60 */ 0x0C, 0xE7, 0xB3, 0x12, 0x87, 0xF3, 0xAD, 0xE0, // ........
/* 1E68 */ 0xE4, 0x4D, 0xE0, 0xFF, 0xFF, 0x51, 0x08, 0x8C, // .M...Q..
/* 1E70 */ 0x02, 0x4F, 0x07, 0xA0, 0x00, 0xF2, 0x5D, 0xC0, // .O....].
/* 1E78 */ 0x07, 0x9C, 0xE7, 0x01, 0x36, 0x87, 0x67, 0x1C, // ....6.g.
/* 1E80 */ 0x9F, 0x70, 0xD8, 0x61, 0x10, 0x31, 0x2A, 0x7A, // .p.a.1*z
/* 1E88 */ 0x0E, 0x3E, 0x2E, 0xCC, 0xF1, 0xC0, 0x47, 0x18, // .>....G.
/* 1E90 */ 0x86, 0xFD, 0x1E, 0xE0, 0xCB, 0xD3, 0x43, 0x93, // ......C.
/* 1E98 */ 0xCF, 0x54, 0x18, 0x58, 0x8F, 0x94, 0xC3, 0x1A, // .T.X....
/* 1EA0 */ 0x2D, 0xEC, 0x01, 0x3F, 0x44, 0xF8, 0x02, 0xE2, // -..?D...
/* 1EA8 */ 0x99, 0xF9, 0x84, 0xE2, 0xC3, 0x28, 0xD8, 0x8E, // .....(..
/* 1EB0 */ 0x08, 0xEC, 0x2A, 0xF0, 0x9C, 0x80, 0x81, 0x79, // ..*....y
/* 1EB8 */ 0x1A, 0xC0, 0x02, 0x3D, 0xD1, 0x05, 0x7A, 0x37, // ...=..z7
/* 1EC0 */ 0x31, 0x36, 0xBF, 0x0E, 0x90, 0x83, 0x03, 0xEA, // 16......
/* 1EC8 */ 0x04, 0x64, 0x59, 0x07, 0x07, 0x88, 0x87, 0x03, // .dY.....
/* 1ED0 */ 0xEC, 0x81, 0xC1, 0x87, 0x06, 0x1E, 0xFF, 0x70, // .......p
/* 1ED8 */ 0x46, 0x0F, 0x0D, 0x3C, 0x2E, 0x18, 0x05, 0xF1, // F..<....
/* 1EE0 */ 0xA1, 0xC1, 0x51, 0x0E, 0x0D, 0xE8, 0xC3, 0x80, // ..Q.....
/* 1EE8 */ 0x0F, 0x0C, 0xC0, 0xE6, 0xFF, 0x7F, 0x60, 0x00, // ......`.
/* 1EF0 */ 0x4C, 0x0D, 0xDA, 0x07, 0x06, 0xE0, 0x79, 0x58, // L.....yX
/* 1EF8 */ 0x80, 0x71, 0x6A, 0xF0, 0x71, 0x00, 0x7B, 0x60, // .qj.q.{`
/* 1F00 */ 0x80, 0x0F, 0xFC, 0xC0, 0x00, 0xEC, 0x6F, 0x07, // ......o.
/* 1F08 */ 0x3E, 0x16, 0xF1, 0x03, 0x03, 0xCC, 0xFF, 0xFF, // >.......
/* 1F10 */ 0x81, 0x01, 0x30, 0x05, 0xCB, 0x0F, 0x0C, 0xC0, // ..0.....
/* 1F18 */ 0xE7, 0x68, 0xC0, 0x0E, 0x0C, 0x60, 0x14, 0x72, // .h...`.r
/* 1F20 */ 0x60, 0x40, 0xDD, 0xD8, 0x12, 0x94, 0x77, 0x60, // `@....w`
/* 1F28 */ 0x81, 0x76, 0xDC, 0xB3, 0x77, 0x10, 0x82, 0xEF, // .v..w...
/* 1F30 */ 0x99, 0x79, 0x18, 0xCF, 0x68, 0xEF, 0x57, 0x3E, // .y..h.W>
/* 1F38 */ 0x6B, 0x62, 0x0E, 0xF5, 0x3E, 0x35, 0xF0, 0x43, // kb..>5.C
/* 1F40 */ 0x83, 0xA3, 0x9F, 0x1A, 0x50, 0x87, 0x53, 0x83, // ....P.S.
/* 1F48 */ 0x19, 0xC4, 0xA7, 0x06, 0x07, 0x39, 0xA8, 0x42, // .....9.B
/* 1F50 */ 0x3F, 0xB4, 0x80, 0xED, 0xFF, 0x7F, 0x68, 0x00, // ?.....h.
/* 1F58 */ 0xCC, 0x1D, 0x04, 0x7D, 0x68, 0x01, 0x9E, 0x27, // ...}h..'
/* 1F60 */ 0x04, 0x06, 0xE2, 0x13, 0x02, 0xEE, 0x70, 0x8B, // ......p.
/* 1F68 */ 0x3D, 0x34, 0xC0, 0x3F, 0xB4, 0xF0, 0x43, 0x03, // =4.?..C.
/* 1F70 */ 0xE0, 0xE1, 0xE0, 0xC2, 0xFE, 0xFF, 0x87, 0x06, // ........
/* 1F78 */ 0xC0, 0xA4, 0x85, 0x83, 0x0B, 0x50, 0x3D, 0x34, // .....P=4
/* 1F80 */ 0x80, 0x23, 0xD0, 0xEA, 0x74, 0x68, 0xE0, 0x67, // .#..th.g
/* 1F88 */ 0x71, 0xC7, 0x7D, 0x1B, 0xE8, 0xE0, 0x02, 0x07, // q.}.....
/* 1F90 */ 0xEA, 0xCC, 0x42, 0x04, 0x79, 0x6C, 0xF5, 0x95, // ..B.yl..
/* 1F98 */ 0xF2, 0x00, 0x12, 0x38, 0x1A, 0xAC, 0x0E, 0x0C, // ...8....
/* 1FA0 */ 0x3C, 0x14, 0x8C, 0x22, 0x41, 0xE8, 0xC0, 0xC0, // <.."A...
/* 1FA8 */ 0x43, 0xC0, 0x51, 0x10, 0x8F, 0xD6, 0x07, 0x06, // C.Q.....
/* 1FB0 */ 0x38, 0x83, 0x38, 0x84, 0x63, 0x7C, 0x3B, 0xF5, // 8.8.c|;.
/* 1FB8 */ 0xA1, 0x05, 0xFE, 0xFF, 0xFF, 0xC0, 0x00, 0x8C, // ........
/* 1FC0 */ 0x06, 0x05, 0x13, 0xF9, 0xA0, 0xC0, 0x3F, 0x5C, // ......?\
/* 1FC8 */ 0x0F, 0x0A, 0x38, 0x9C, 0x12, 0x42, 0x56, 0x7F, // ..8..BV.
/* 1FD0 */ 0x20, 0xD0, 0xC4, 0x3D, 0x28, 0x70, 0x1F, 0x48, // ..=(p.H
/* 1FD8 */ 0x3C, 0x28, 0xE0, 0x32, 0x71, 0x0F, 0x0A, 0xDC, // <(.2q...
/* 1FE0 */ 0x50, 0x1E, 0x14, 0xD8, 0xFE, 0xFF, 0x87, 0x13, // P.......
/* 1FE8 */ 0x60, 0x12, 0xEC, 0x70, 0x02, 0xBA, 0x63, 0xBD, // `..p..c.
/* 1FF0 */ 0x0F, 0x27, 0xE0, 0x1A, 0xD0, 0x03, 0x12, 0x98, // .'......
/* 1FF8 */ 0x4F, 0x22, 0x0C, 0xE4, 0x49, 0x04, 0x77, 0x30, // O"..I.w0
/* 2000 */ 0x81, 0x7F, 0x38, 0xE2, 0x07, 0x13, 0xE0, 0x7D, // ..8....}
/* 2008 */ 0x30, 0x02, 0x5E, 0x83, 0xC2, 0xFE, 0xFF, 0x0F, // 0.^.....
/* 2010 */ 0x26, 0x60, 0x1A, 0x14, 0x38, 0x0E, 0x26, 0xC0, // &`..8.&.
/* 2018 */ 0x75, 0x50, 0xE0, 0x38, 0x98, 0x00, 0xD7, 0x41, // uP.8...A
/* 2020 */ 0x81, 0xE3, 0x60, 0x02, 0x18, 0xF9, 0xFF, 0x1F, // ..`.....
/* 2028 */ 0x4C, 0x60, 0x7A, 0x38, 0x98, 0x00, 0xAD, 0x43, // L`z8...C
/* 2030 */ 0x18, 0x9C, 0x83, 0x09, 0x9C, 0x70, 0x87, 0x40, // .....p.@
/* 2038 */ 0x94, 0xC8, 0x83, 0x89, 0x0F, 0xA2, 0xD0, 0x40, // .......@
/* 2040 */ 0x42, 0x9D, 0x93, 0x51, 0x8E, 0xF7, 0x48, 0xCE, // B..Q..H.
/* 2048 */ 0x29, 0xC8, 0xFB, 0x69, 0xD0, 0x33, 0x09, 0x72, // )..i.3.r
/* 2050 */ 0x42, 0x81, 0x4E, 0xE8, 0xE0, 0x8C, 0xF8, 0x22, // B.N...."
/* 2058 */ 0xE8, 0x9B, 0x06, 0x23, 0x70, 0x94, 0x83, 0x20, // ...#p..
/* 2060 */ 0x2A, 0x04, 0x85, 0x22, 0x40, 0xE8, 0x80, 0xC2, // *.."@...
/* 2068 */ 0x45, 0xC3, 0x51, 0x10, 0x0F, 0xDD, 0x07, 0x31, // E.Q....1
/* 2070 */ 0xC0, 0xEE, 0xFF, 0xFF, 0x80, 0x02, 0x0C, 0x0E, // ........
/* 2078 */ 0x16, 0xC0, 0x23, 0xE4, 0xC1, 0x02, 0x74, 0xE0, // ..#...t.
/* 2080 */ 0x3E, 0x58, 0x80, 0x0B, 0xFE, 0x01, 0x0A, 0xCC, // >X......
/* 2088 */ 0x27, 0x09, 0x8E, 0xF2, 0x24, 0xC1, 0x2E, 0xCE, // '...$...
/* 2090 */ 0x3E, 0x49, 0x18, 0xE4, 0x49, 0x02, 0x7B, 0xBC, // >I..I.{.
/* 2098 */ 0x00, 0xC7, 0x31, 0x8A, 0x1F, 0x2F, 0x00, 0x0B, // ..1../..
/* 20A0 */ 0xFF, 0xFF, 0xE3, 0x14, 0x60, 0xFE, 0x78, 0x01, // ....`.x.
/* 20A8 */ 0xBC, 0x4D, 0x1C, 0x2F, 0x80, 0xD6, 0x31, 0x08, // .M./..1.
/* 20B0 */ 0xCE, 0xF1, 0x02, 0x0C, 0xFF, 0xFF, 0xE3, 0x05, // ........
/* 20B8 */ 0x26, 0xEC, 0xA1, 0x0F, 0x75, 0x06, 0x70, 0xFC, // &...u.p.
/* 20C0 */ 0xC3, 0x2D, 0xB4, 0xE3, 0x05, 0x3C, 0x02, 0xC7, // .-...<..
/* 20C8 */ 0x3C, 0xF6, 0xA1, 0x02, 0xC2, 0x28, 0xDE, 0xB1, // <....(..
/* 20D0 */ 0x0F, 0x15, 0x08, 0x8E, 0x82, 0xF8, 0xD8, 0xE7, // ........
/* 20D8 */ 0x38, 0x87, 0x06, 0xF4, 0x38, 0x7D, 0x1E, 0x78, // 8...8}.x
/* 20E0 */ 0x33, 0x38, 0xCC, 0x08, 0x47, 0xCC, 0x86, 0x81, // 38..G...
/* 20E8 */ 0x39, 0x09, 0x01, 0xDF, 0x28, 0xE3, 0x42, 0x43, // 9...(.BC
/* 20F0 */ 0x7B, 0xAE, 0xB5, 0x0B, 0xF0, 0x3C, 0x2A, 0xA0, // {....<*.
/* 20F8 */ 0x71, 0xB8, 0x00, 0xE7, 0xA8, 0xE0, 0x00, 0x3F, // q......?
/* 2100 */ 0x13, 0x14, 0x3F, 0x2A, 0x90, 0xFF, 0xFF, 0xCF, // ..?*....
/* 2108 */ 0x7E, 0x60, 0x1F, 0x15, 0x2C, 0x48, 0x8F, 0x0A, // ~`..,H..
/* 2110 */ 0x58, 0x1C, 0xFE, 0x80, 0xFB, 0x31, 0x05, 0x7C, // X....1.|
/* 2118 */ 0x2A, 0x8E, 0x29, 0x80, 0x16, 0x31, 0x87, 0x2A, // *.)..1.*
/* 2120 */ 0x94, 0xBC, 0x81, 0xFB, 0x50, 0x85, 0xFC, 0xFF, // ....P...
/* 2128 */ 0x1F, 0x53, 0xE0, 0xDE, 0x36, 0x7D, 0xD9, 0x38, // .S..6}.8
/* 2130 */ 0xB4, 0x78, 0xBE, 0xE6, 0x63, 0x24, 0x9C, 0xA8, // .x..c$..
/* 2138 */ 0x50, 0xE1, 0x21, 0x14, 0xFD, 0x24, 0x40, 0x4F, // P.!..$@O
/* 2140 */ 0x30, 0x04, 0x8C, 0x82, 0xF8, 0x10, 0xE1, 0xD3, // 0.......
/* 2148 */ 0x12, 0x9C, 0x91, 0x3C, 0xF9, 0x63, 0x8E, 0x29, // ...<.c.)
/* 2150 */ 0xC0, 0xF7, 0xDC, 0x00, 0x3C, 0x22, 0x9E, 0x1B, // ....<"..
/* 2158 */ 0x40, 0x37, 0x4E, 0x9F, 0x1B, 0xC0, 0x75, 0xD0, // @7N...u.
/* 2160 */ 0xE3, 0x67, 0x3B, 0x60, 0x71, 0x44, 0xC0, 0xC0, // .g;`qD..
/* 2168 */ 0x3C, 0x22, 0x60, 0x8E, 0x0D, 0xEC, 0xFF, 0x7F, // <"`.....
/* 2170 */ 0x6C, 0x80, 0x79, 0xB4, 0x83, 0x79, 0x6C, 0x00, // l.y..yl.
/* 2178 */ 0xE6, 0xE7, 0x3A, 0xE0, 0x75, 0x6C, 0x00, 0xDE, // ..:.ul..
/* 2180 */ 0xC3, 0xF5, 0xB1, 0x01, 0x38, 0x9D, 0x5E, 0xC0, // ....8.^.
/* 2188 */ 0x72, 0x44, 0xF0, 0xFF, 0xFF, 0xD8, 0x00, 0x43, // rD.....C
/* 2190 */ 0xDA, 0x91, 0x0D, 0x75, 0x6C, 0xB0, 0xDC, 0x23, // ...ul..#
/* 2198 */ 0x1B, 0x88, 0x26, 0x1D, 0x24, 0x92, 0xE7, 0xF4, // ..&.$...
/* 21A0 */ 0xEE, 0x8F, 0x13, 0x74, 0x6A, 0x43, 0x49, 0x81, // ...tjCI.
/* 21A8 */ 0x91, 0x90, 0x53, 0x1B, 0x2A, 0xFA, 0xE9, 0x81, // ..S.*...
/* 21B0 */ 0x82, 0x58, 0xC2, 0x79, 0x1C, 0xE2, 0x5C, 0x4E, // .X.y..\N
/* 21B8 */ 0xE5, 0x28, 0x1E, 0x5A, 0x7C, 0x78, 0x01, 0xBE, // .(.Z|x..
/* 21C0 */ 0x31, 0x06, 0x85, 0x86, 0x37, 0x68, 0xC4, 0x47, // 1...7h.G
/* 21C8 */ 0x02, 0x1F, 0xD8, 0x80, 0xEF, 0xB8, 0xE1, 0x40, // .......@
/* 21D0 */ 0x3F, 0x3A, 0x78, 0xDE, 0x1E, 0x14, 0x78, 0xFF, // ?:x...x.
/* 21D8 */ 0xFF, 0xE7, 0x35, 0x30, 0x9F, 0x3E, 0x80, 0xB7, // ..50.>..
/* 21E0 */ 0x8D, 0x33, 0x10, 0x90, 0x3F, 0x69, 0x60, 0xEE, // .3..?i`.
/* 21E8 */ 0xF6, 0xB8, 0xD3, 0x07, 0xFC, 0x33, 0x10, 0xCC, // .....3..
/* 21F0 */ 0xD3, 0x07, 0x30, 0x3F, 0x03, 0xB1, 0xFF, 0xFF, // ..0?....
/* 21F8 */ 0xE9, 0x03, 0xB0, 0x70, 0x52, 0x06, 0x5E, 0xA7, // ...pR.^.
/* 2200 */ 0x0F, 0xF0, 0x0E, 0x0A, 0x1C, 0xA7, 0x0F, 0xC0, // ........
/* 2208 */ 0x95, 0x8E, 0xD3, 0x07, 0xC4, 0xFF, 0xFF, 0x51, // .......Q
/* 2210 */ 0x0A, 0x38, 0x9E, 0x3E, 0xA0, 0x1D, 0xE8, 0x50, // .8.>...P
/* 2218 */ 0x97, 0x00, 0x8B, 0x3C, 0x56, 0x82, 0x68, 0xEE, // ...<V.h.
/* 2220 */ 0x4F, 0x39, 0x9E, 0x9C, 0x71, 0xA2, 0xF4, 0x8E, // O9..q...
/* 2228 */ 0xA2, 0xF3, 0x07, 0xEE, 0x48, 0x07, 0xFE, 0x79, // ....H..y
/* 2230 */ 0x7A, 0x30, 0x3E, 0x58, 0x02, 0xEE, 0x06, 0xEA, // z0>X....
/* 2238 */ 0x83, 0x03, 0x58, 0xFE, 0xFF, 0x07, 0x07, 0xE6, // ..X.....
/* 2240 */ 0xE3, 0xE0, 0x00, 0xBA, 0xD3, 0xF4, 0x53, 0x10, // ......S.
/* 2248 */ 0x70, 0x39, 0x24, 0xC0, 0x38, 0x3D, 0x80, 0xF7, // p9$.8=..
/* 2250 */ 0x28, 0x04, 0xF3, 0xF4, 0x00, 0x18, 0x38, 0x5F, // (.....8_
/* 2258 */ 0x02, 0x56, 0xFE, 0xFF, 0xA7, 0x07, 0x30, 0x8F, // .V....0.
/* 2260 */ 0xC5, 0xA7, 0x07, 0xE0, 0x74, 0x8A, 0x01, 0xCB, // ....t...
/* 2268 */ 0xE9, 0x01, 0x4C, 0xAF, 0x03, 0x9F, 0x1E, 0xF8, // ..L.....
/* 2270 */ 0x39, 0xC0, 0xD2, 0x8E, 0x32, 0xD0, 0xAE, 0xDF, // 9...2...
/* 2278 */ 0xD8, 0x6B, 0x2E, 0xEE, 0xB4, 0x0D, 0xB8, 0xFD, // .k......
/* 2280 */ 0xFF, 0x1F, 0x1C, 0xC0, 0x14, 0xEE, 0xE0, 0x00, // ........
/* 2288 */ 0x3A, 0x23, 0x07, 0x07, 0xD0, 0x89, 0x3D, 0xC5, // :#....=.
/* 2290 */ 0x80, 0xFA, 0x7C, 0x80, 0xBD, 0xE3, 0xE2, 0x0E, // ..|.....
/* 2298 */ 0x0C, 0x60, 0x38, 0xBD, 0xF0, 0x03, 0x03, 0xF0, // .`8.....
/* 22A0 */ 0x3F, 0xB8, 0x00, 0xEB, 0xFF, 0xFF, 0x81, 0x01, // ?.......
/* 22A8 */ 0x98, 0x29, 0x39, 0x30, 0x00, 0xAD, 0x83, 0x0B, // .)90....
/* 22B0 */ 0x9C, 0x03, 0x03, 0xB8, 0x8F, 0x72, 0xD8, 0x13, // .....r..
/* 22B8 */ 0x89, 0x4F, 0x0D, 0xBE, 0xC4, 0x9C, 0x44, 0x94, // .O....D.
/* 22C0 */ 0xF3, 0x39, 0xC9, 0x07, 0x16, 0xC0, 0xEE, 0xFF, // .9......
/* 22C8 */ 0xFF, 0xC0, 0x00, 0xCC, 0x46, 0xEC, 0x03, 0x0B, // ....F...
/* 22D0 */ 0xF0, 0x3C, 0x1F, 0x60, 0x6E, 0xF9, 0x3E, 0x1F, // .<.`n.>.
/* 22D8 */ 0x60, 0x0F, 0x2C, 0xE0, 0x39, 0x30, 0x00, 0xFF, // `.,.90..
/* 22E0 */ 0x03, 0x0B, 0xB0, 0xFE, 0xFF, 0x1F, 0x18, 0x80, // ........
/* 22E8 */ 0x99, 0x94, 0x03, 0x0B, 0x50, 0x3D, 0x30, 0xC0, // ....P=0.
/* 22F0 */ 0x0D, 0x73, 0x2E, 0x47, 0x71, 0x38, 0xEA, 0xB9, // .s.Gq8..
/* 22F8 */ 0x1C, 0x7D, 0x60, 0xE1, 0x13, 0x8C, 0x75, 0xB4, // .}`...u.
/* 2300 */ 0xA7, 0x9B, 0xC0, 0xD1, 0x0E, 0xE4, 0xA8, 0x50, // .......P
/* 2308 */ 0x30, 0x8A, 0x74, 0x20, 0x47, 0x85, 0x80, 0xA3, // 0.t G...
/* 2310 */ 0x20, 0xB6, 0x70, 0x58, 0x80, 0x36, 0x85, 0x63, // .pX.6.c
/* 2318 */ 0x3B, 0xBE, 0x93, 0xF4, 0x61, 0x05, 0x18, 0x0F, // ;...a...
/* 2320 */ 0x0A, 0x26, 0xF2, 0x41, 0xC1, 0xF8, 0xFF, 0x0F, // .&.A....
/* 2328 */ 0x0A, 0x6C, 0x27, 0x72, 0xE0, 0x71, 0x32, 0x08, // .l'r.q2.
/* 2330 */ 0x59, 0xFD, 0x71, 0x40, 0x13, 0xF7, 0xA0, 0xC0, // Y.q@....
/* 2338 */ 0x7D, 0x22, 0x07, 0xE7, 0xA0, 0xE0, 0x4E, 0xDC, // }"....N.
/* 2340 */ 0x83, 0x02, 0x37, 0x94, 0x0F, 0x26, 0xC0, 0x3B, // ..7..&.;
/* 2348 */ 0xD8, 0xC1, 0x04, 0x74, 0x56, 0x60, 0xC9, 0xFF, // ...tV`..
/* 2350 */ 0xFF, 0x60, 0x02, 0xA6, 0x01, 0x3D, 0x18, 0x81, // .`...=..
/* 2358 */ 0xF9, 0x1C, 0xC2, 0x51, 0x8E, 0xD7, 0xC7, 0x52, // ...Q...R
/* 2360 */ 0x76, 0x2C, 0x81, 0x7F, 0x2C, 0xE2, 0xC7, 0x12, // v,..,...
/* 2368 */ 0xE0, 0x7B, 0x24, 0x02, 0x5E, 0xC7, 0x12, 0xF0, // .{$.^...
/* 2370 */ 0x0E, 0x0A, 0x1C, 0xC7, 0x12, 0x30, 0xFF, 0xFF, // .....0..
/* 2378 */ 0x8F, 0x25, 0x60, 0x1C, 0x14, 0x38, 0x8E, 0x25, // .%`..8.%
/* 2380 */ 0xC0, 0x75, 0x50, 0xE0, 0x38, 0x96, 0x00, 0xAE, // .uP.8...
/* 2388 */ 0xB4, 0x1C, 0x4B, 0x80, 0xD6, 0xF1, 0x0B, 0xCE, // ..K.....
/* 2390 */ 0x7C, 0xFE, 0xFF, 0x8F, 0x25, 0x30, 0x64, 0x7A, // |...%0dz
/* 2398 */ 0x18, 0x03, 0x0B, 0xF1, 0x8A, 0x90, 0x30, 0x18, // ......0.
/* 23A0 */ 0x94, 0x86, 0xF3, 0x00, 0x94, 0x11, 0x9E, 0xC0, // ........
/* 23A8 */ 0x71, 0x1D, 0x12, 0x93, 0x04, 0x87, 0x1A, 0xBC, // q.......
/* 23B0 */ 0x87, 0xF4, 0x4A, 0x7A, 0x14, 0x8F, 0x65, 0x1E, // ..Jz..e.
/* 23B8 */ 0xC7, 0x39, 0x85, 0x64, 0xD2, 0xC6, 0x86, 0x3A, // .9.d...:
/* 23C0 */ 0xB8, 0x79, 0x3E, 0x67, 0x76, 0x34, 0xB5, 0x9F, // .y>gv4..
/* 23C8 */ 0xD2, 0xC9, 0xF1, 0xDC, 0x04, 0x1E, 0x36, 0x43, // ......6C
/* 23D0 */ 0xE3, 0xD0, 0xD8, 0x61, 0xF8, 0x3E, 0x10, 0xEC, // ...a.>..
/* 23D8 */ 0x20, 0x0E, 0xE3, 0x9C, 0x4D, 0xE0, 0x09, 0x9D, // ...M...
/* 23E0 */ 0x66, 0xB9, 0xF7, 0x04, 0x1D, 0xE4, 0xA3, 0xC6, // f.......
/* 23E8 */ 0x68, 0x0E, 0x8A, 0xC0, 0x1D, 0x35, 0x58, 0xC0, // h....5X.
/* 23F0 */ 0x3C, 0xDB, 0xE3, 0xF5, 0xE5, 0xCD, 0x58, 0x6C, // <.....Xl
/* 23F8 */ 0xCC, 0x31, 0x42, 0xC5, 0xA8, 0x71, 0xE8, 0x64, // .1B..q.d
/* 2400 */ 0xE4, 0x06, 0x39, 0x8E, 0xC7, 0x38, 0xA3, 0xC7, // ..9..8..
/* 2408 */ 0x7D, 0x1C, 0x30, 0xCC, 0x81, 0x3C, 0xCC, 0xFA, // }.0..<..
/* 2410 */ 0xCE, 0xE4, 0xB1, 0x60, 0x4F, 0x17, 0xF6, 0x7C, // ...`O..|
/* 2418 */ 0x85, 0x20, 0xF7, 0x02, 0x13, 0x74, 0x3F, 0x1A, // . ...t?.
/* 2420 */ 0x1D, 0x22, 0x42, 0xF4, 0x36, 0x02, 0xA1, 0x57, // ."B.6..W
/* 2428 */ 0x2C, 0x40, 0x9C, 0x00, 0x5B, 0x33, 0x13, 0xD0, // ,@..[3..
/* 2430 */ 0xA1, 0xD5, 0x86, 0x42, 0x30, 0x8F, 0xCE, 0x28, // ...B0..(
/* 2438 */ 0xC1, 0x4E, 0xE6, 0x6D, 0xE2, 0xF8, 0xA2, 0xC4, // .N.m....
/* 2440 */ 0x68, 0x0C, 0x42, 0xB8, 0x01, 0x63, 0x46, 0x08, // h.B..cF.
/* 2448 */ 0x18, 0x3D, 0x62, 0x9C, 0x08, 0xED, 0x0F, 0x82, // .=b.....
/* 2450 */ 0x84, 0x7A, 0xE6, 0x68, 0x2C, 0x8E, 0x34, 0x1A, // .z.h,.4.
/* 2458 */ 0xD4, 0xB1, 0xC2, 0xC7, 0x02, 0x5F, 0xF6, 0x3D, // ....._.=
/* 2460 */ 0x2A, 0xCF, 0xCE, 0xE8, 0xE7, 0x52, 0xE7, 0xE9, // *....R..
/* 2468 */ 0x9F, 0x12, 0x78, 0x6A, 0x3E, 0x7F, 0xC0, 0x71, // ..xj>..q
/* 2470 */ 0x2D, 0xE0, 0xFF, 0x0F, 0xF8, 0x66, 0xF0, 0x5C, // -....f.\
/* 2478 */ 0xC0, 0x4E, 0x44, 0x86, 0xE3, 0x43, 0xF4, 0xD8, // .ND..C..
/* 2480 */ 0xC3, 0x9D, 0xC0, 0x21, 0x32, 0x40, 0x1F, 0x40, // ...!2@.@
/* 2488 */ 0xE0, 0x8F, 0xC7, 0x07, 0x01, 0xCF, 0xE7, 0x84, // ........
/* 2490 */ 0x13, 0x58, 0xFE, 0x20, 0x50, 0x23, 0x33, 0xB4, // .X. P#3.
/* 2498 */ 0x6F, 0x1E, 0xA7, 0xF5, 0x28, 0xE0, 0x63, 0xC2, // o...(.c.
/* 24A0 */ 0x61, 0xB1, 0xA3, 0x8C, 0xCF, 0x2E, 0x1E, 0x0F, // a.......
/* 24A8 */ 0xF8, 0xAF, 0x01, 0x4F, 0x07, 0x11, 0x5E, 0x1A, // ...O..^.
/* 24B0 */ 0x3C, 0x5F, 0x9F, 0x49, 0xD9, 0x81, 0xDE, 0xE3, // <_.I....
/* 24B8 */ 0xC1, 0x1D, 0x12, 0xD8, 0xE1, 0xE4, 0x4D, 0x84, // ......M.
/* 24C0 */ 0x9D, 0xA1, 0x74, 0x4C, 0x35, 0x84, 0x44, 0x1D, // ..tL5.D.
/* 24C8 */ 0x4B, 0x50, 0xA7, 0x0A, 0x1F, 0x28, 0xD8, 0xB5, // KP...(..
/* 24D0 */ 0x21, 0xEE, 0x33, 0x80, 0x71, 0xD9, 0x41, 0xC8, // !.3.q.A.
/* 24D8 */ 0x23, 0x83, 0x7F, 0x42, 0x78, 0x9A, 0x00, 0xCB, // #..Bx...
/* 24E0 */ 0x31, 0x82, 0x9F, 0x6B, 0xAC, 0xEB, 0xAC, 0x42, // 1..k...B
/* 24E8 */ 0x8F, 0x35, 0xE0, 0x18, 0x88, 0x03, 0x0F, 0x13, // .5......
/* 24F0 */ 0x3D, 0x38, 0x0F, 0x93, 0x83, 0xBC, 0x6F, 0xFB, // =8....o.
/* 24F8 */ 0x3C, 0xC0, 0xCE, 0xA6, 0x1E, 0x27, 0x58, 0xFE, // <....'X.
/* 2500 */ 0xFF, 0x07, 0x02, 0xB0, 0xC8, 0x1B, 0x27, 0xE8, // ......'.
/* 2508 */ 0xC6, 0xC4, 0x07, 0x0A, 0x3E, 0x29, 0x4F, 0x01, // ....>)O.
/* 2510 */ 0x1D, 0xDF, 0x3D, 0x50, 0x3E, 0x40, 0x0F, 0x94, // ..=P>@..
/* 2518 */ 0x9F, 0x4D, 0x18, 0x4C, 0xE0, 0xE3, 0x88, 0xFB, // .M.L....
/* 2520 */ 0x56, 0xC2, 0x4E, 0x25, 0x98, 0xD3, 0x02, 0x1B, // V.N%....
/* 2528 */ 0x2D, 0x78, 0x00, 0x3D, 0x5A, 0xF8, 0x87, 0x5A, // -x.=Z..Z
/* 2530 */ 0xF0, 0x8C, 0x96, 0x0F, 0x0C, 0x7B, 0x7C, 0x81, // .....{|.
/* 2538 */ 0x33, 0x67, 0x9F, 0x31, 0xC0, 0x60, 0x15, 0x48, // 3g.1.`.H
/* 2540 */ 0xE7, 0x93, 0x40, 0x8F, 0x2C, 0x4F, 0x2C, 0x47, // ..@.,O,G
/* 2548 */ 0x48, 0x46, 0x0D, 0x15, 0xFE, 0x5C, 0x0E, 0xEA, // HF...\..
/* 2550 */ 0xF4, 0x7C, 0x01, 0xF0, 0xA8, 0xC1, 0xF9, 0xFF, // .|......
/* 2558 */ 0x1F, 0x35, 0x06, 0xD4, 0xA3, 0x06, 0x3E, 0x03, // .5....>.
/* 2560 */ 0xC3, 0x8E, 0x1A, 0x98, 0x0C, 0x09, 0x77, 0x2E, // ......w.
/* 2568 */ 0x83, 0x87, 0x12, 0x3D, 0x74, 0x9F, 0x02, 0xB4, // ...=t...
/* 2570 */ 0x42, 0xE8, 0xDE, 0x61, 0xB0, 0x38, 0xEF, 0x90, // B..a.8..
/* 2578 */ 0x06, 0x89, 0xFF, 0x1E, 0xE9, 0x69, 0x18, 0xE1, // .....i..
/* 2580 */ 0x04, 0x5F, 0x23, 0x0C, 0x75, 0x1C, 0x21, 0x12, // ._#.u.!.
/* 2588 */ 0x14, 0x39, 0x50, 0xF4, 0x30, 0x38, 0xFA, 0x83, // .9P.08..
/* 2590 */ 0x1A, 0xC3, 0x36, 0xCA, 0x99, 0x1C, 0x95, 0x0F, // ..6.....
/* 2598 */ 0x56, 0x46, 0x38, 0xCB, 0xE7, 0xA9, 0xE7, 0x2B, // VF8....+
/* 25A0 */ 0x5F, 0x17, 0x30, 0xE7, 0x35, 0x9C, 0xA4, 0xE7, // _.0.5...
/* 25A8 */ 0x01, 0x0D, 0x70, 0x42, 0x90, 0x08, 0x18, 0xD4, // ..pB....
/* 25B0 */ 0x19, 0x0C, 0x30, 0xF1, 0xFF, 0x3F, 0x83, 0x81, // ..0..?..
/* 25B8 */ 0xE1, 0xBE, 0xE0, 0x33, 0x18, 0xF0, 0xB8, 0x09, // ...3....
/* 25C0 */ 0x04, 0x79, 0x36, 0x3A, 0x17, 0x9F, 0xC0, 0xC0, // .y6:....
/* 25C8 */ 0x75, 0x6D, 0x79, 0xE3, 0x3A, 0x83, 0xE0, 0x8F, // umy.:...
/* 25D0 */ 0x5D, 0x0C, 0xEB, 0xCD, 0x2B, 0x44, 0xA8, 0x03, // ]...+D..
/* 25D8 */ 0x0B, 0xF4, 0x04, 0x66, 0x94, 0x73, 0x08, 0x18, // ...f.s..
/* 25E0 */ 0xE5, 0xDC, 0x02, 0x85, 0x7A, 0x11, 0x63, 0xD6, // ....z.c.
/* 25E8 */ 0x90, 0x74, 0x01, 0x33, 0x48, 0xF0, 0x10, 0x41, // .t.3H..A
/* 25F0 */ 0x62, 0x45, 0xF6, 0x09, 0x8C, 0x85, 0x58, 0xAE, // bE....X.
/* 25F8 */ 0xBE, 0x04, 0x3E, 0x81, 0x01, 0x2C, 0xF8, 0xFF, // ..>..,..
/* 2600 */ 0x9F, 0xC0, 0x00, 0xE3, 0xE1, 0x8F, 0xB2, 0xE8, // ........
/* 2608 */ 0x43, 0x82, 0x07, 0xC1, 0xEE, 0x15, 0x98, 0x89, // C.......
/* 2610 */ 0xBE, 0x76, 0x3C, 0xDD, 0x98, 0xC0, 0x21, 0xCF, // .v<...!.
/* 2618 */ 0x60, 0x40, 0xE7, 0x24, 0x83, 0x1F, 0x29, 0xFC, // `@.$..).
/* 2620 */ 0xD3, 0x07, 0x6E, 0x56, 0xEC, 0xF4, 0x03, 0x96, // ..nV....
/* 2628 */ 0x43, 0x2E, 0x5E, 0xDC, 0x11, 0xCA, 0x87, 0x71, // C.^....q
/* 2630 */ 0x3A, 0x5C, 0xCC, 0xFF, 0x7F, 0xB8, 0xF8, 0x41, // :\.....A
/* 2638 */ 0xF2, 0x71, 0x08, 0x58, 0x47, 0x70, 0x1F, 0xC2, // .q.XGp..
/* 2640 */ 0x80, 0xC7, 0x70, 0xC1, 0x3D, 0x17, 0x3E, 0x5D, // ..p.=.>]
/* 2648 */ 0x1F, 0x8B, 0x71, 0x83, 0xC2, 0x5C, 0x9D, 0xF9, // ..q..\..
/* 2650 */ 0xA0, 0x8E, 0xE2, 0x21, 0x01, 0xF6, 0xF0, 0xC1, // ...!....
/* 2658 */ 0x73, 0x96, 0xE2, 0x91, 0x4F, 0x83, 0x50, 0xCE, // s...O.P.
/* 2660 */ 0xC0, 0xBE, 0xBA, 0x78, 0x72, 0xE7, 0xF7, 0xCE, // ...xr...
/* 2668 */ 0xE1, 0x9B, 0xB4, 0xE3, 0x9D, 0xC5, 0x80, 0xCE, // ........
/* 2670 */ 0x50, 0x71, 0xC7, 0x64, 0xF8, 0x63, 0xE2, 0x97, // Pq.d.c..
/* 2678 */ 0x0E, 0xCC, 0xA9, 0x03, 0x3C, 0xFF, 0xFF, 0x53, // ....<..S
/* 2680 */ 0x07, 0x7B, 0x97, 0xF8, 0xD4, 0x81, 0x1B, 0x97, // .{......
/* 2688 */ 0x87, 0x81, 0xBB, 0x02, 0xC0, 0x89, 0x39, 0x58, // ......9X
/* 2690 */ 0x50, 0x1D, 0x21, 0x3C, 0x58, 0xF8, 0xC3, 0x38, // P.!<X..8
/* 2698 */ 0x58, 0x70, 0xDE, 0x3B, 0x60, 0x9D, 0x3B, 0xC0, // Xp.;`.;.
/* 26A0 */ 0x27, 0xF3, 0xDC, 0x81, 0x3E, 0x90, 0x79, 0xC0, // '...>.y.
/* 26A8 */ 0xF0, 0x2E, 0x1E, 0x98, 0x73, 0x21, 0x3B, 0x79, // ....s!;y
/* 26B0 */ 0x80, 0xE7, 0xB4, 0xE6, 0x11, 0xC3, 0x3F, 0xA3, // ......?.
/* 26B8 */ 0x83, 0x6B, 0xC4, 0xB0, 0xAE, 0x1E, 0xB8, 0x01, // .k......
/* 26C0 */ 0xF8, 0xEC, 0x01, 0xFF, 0xFF, 0x7F, 0x54, 0x00, // ......T.
/* 26C8 */ 0xC3, 0xE1, 0x03, 0x7C, 0x87, 0x4B, 0x38, 0xE7, // ...|.K8.
/* 26D0 */ 0x4E, 0xEC, 0xBD, 0x84, 0xDD, 0x2D, 0x61, 0x1C, // N....-a.
/* 26D8 */ 0x2E, 0xC1, 0xF6, 0xAD, 0xF7, 0xE1, 0x12, 0x78, // .......x
/* 26E0 */ 0x9C, 0x4F, 0xF1, 0xE7, 0x75, 0x98, 0xE7, 0x21, // .O..u..!
/* 26E8 */ 0xB0, 0x8D, 0x1A, 0xEE, 0xB9, 0x13, 0x3B, 0x6A, // ......;j
/* 26F0 */ 0x60, 0x31, 0x2A, 0x8F, 0x1A, 0x6C, 0xFF, 0xFF, // `1*..l..
/* 26F8 */ 0x51, 0xC3, 0x3C, 0x9F, 0xE2, 0x47, 0x0D, 0x1C, // Q.<..G..
/* 2700 */ 0x8F, 0x0E, 0xB0, 0xC0, 0x3D, 0x6A, 0x30, 0x9B, // ....=j0.
/* 2708 */ 0x38, 0x3A, 0x00, 0xC9, 0x91, 0xF9, 0xE8, 0x00, // 8:......
/* 2710 */ 0x5C, 0x47, 0x0D, 0x76, 0x15, 0xA3, 0x46, 0xFC, // \G.v..F.
/* 2718 */ 0xFF, 0x8F, 0x0E, 0xC0, 0x6D, 0xD4, 0xC0, 0xE2, // ....m...
/* 2720 */ 0x70, 0xE8, 0x51, 0xE3, 0x8E, 0x77, 0x98, 0x69, // p.Q..w.i
/* 2728 */ 0x60, 0x50, 0x02, 0x07, 0x89, 0xF3, 0x70, 0x08, // `P....p.
/* 2730 */ 0xBE, 0x01, 0xFB, 0x78, 0x07, 0x7C, 0x66, 0x85, // ...x.|f.
/* 2738 */ 0x81, 0xF1, 0xB0, 0xD8, 0xA9, 0x0A, 0x5C, 0xC3, // ......\.
/* 2740 */ 0xE5, 0x62, 0xCE, 0x0C, 0xE8, 0x43, 0x9A, 0x0F, // .b...C..
/* 2748 */ 0x2E, 0xFC, 0x72, 0x84, 0x83, 0x39, 0xCC, 0x93, // ..r..9..
/* 2750 */ 0x31, 0xCC, 0x69, 0xFA, 0x4C, 0xE0, 0x63, 0x2B, // 1.i.L.c+
/* 2758 */ 0x3B, 0x34, 0x80, 0xE5, 0xFF, 0x3F, 0x64, 0x36, // ;4...?d6
/* 2760 */ 0x5C, 0x1F, 0x1A, 0x80, 0xC7, 0xC1, 0x05, 0x73, // \......s
/* 2768 */ 0xB2, 0xC2, 0x0E, 0x0D, 0xCE, 0xB0, 0x81, 0xC9, // ........
/* 2770 */ 0xA1, 0x83, 0x0D, 0x1B, 0xF8, 0xD8, 0x18, 0x36, // .......6
/* 2778 */ 0x90, 0x39, 0x74, 0xF0, 0x61, 0x03, 0xD3, 0x49, // .9t.a..I
/* 2780 */ 0x83, 0xE1, 0xFF, 0x7F, 0xFD, 0xC0, 0x0C, 0x1B, // ........
/* 2788 */ 0x5C, 0x3A, 0x0E, 0x0F, 0x80, 0xAA, 0x53, 0x20, // \:....S
/* 2790 */ 0x0E, 0xD8, 0xE3, 0xF6, 0x3D, 0x2F, 0x42, 0xF0, // ....=/B.
/* 2798 */ 0x17, 0xBD, 0x67, 0xF0, 0xB3, 0x89, 0xF0, 0x3C, // ..g....<
/* 27A0 */ 0x69, 0xF4, 0x67, 0xF5, 0x3E, 0x05, 0x68, 0x85, // i.g.>.h.
/* 27A8 */ 0x10, 0xDA, 0x2B, 0x4A, 0xB0, 0x38, 0x41, 0x8E, // ..+J.8A.
/* 27B0 */ 0x22, 0x48, 0x85, 0x70, 0xE4, 0xB6, 0x68, 0x98, // "H.p..h.
/* 27B8 */ 0x40, 0x3E, 0xB4, 0xC0, 0x18, 0x04, 0x47, 0x8E, // @>....G.
/* 27C0 */ 0x77, 0x48, 0x61, 0x0F, 0xE2, 0x64, 0xA2, 0x9C, // wHa..d..
/* 27C8 */ 0xC7, 0x31, 0x79, 0x74, 0x4F, 0xE1, 0x1E, 0x53, // .1ytO..S
/* 27D0 */ 0xB9, 0xC3, 0xD6, 0xF5, 0x09, 0x77, 0x7E, 0xE7, // .....w~.
/* 27D8 */ 0x04, 0x16, 0x6D, 0x06, 0x84, 0x49, 0x3F, 0x20, // ..m..I?
/* 27E0 */ 0x48, 0xD6, 0x73, 0x80, 0xC2, 0xF8, 0xF0, 0xE8, // H.s.....
/* 27E8 */ 0xB3, 0x3C, 0xFE, 0x4C, 0x70, 0x22, 0xE7, 0xFA, // .<.Lp"..
/* 27F0 */ 0x20, 0xC0, 0x4E, 0x96, 0x86, 0xE3, 0xC3, 0xF4, // .N.....
/* 27F8 */ 0xC4, 0xDE, 0xE8, 0x0F, 0xF7, 0xE1, 0xDE, 0x03, // ........
/* 2800 */ 0x7E, 0x13, 0x08, 0xC9, 0xAE, 0xFC, 0x0F, 0x8C, // ~.......
/* 2808 */ 0xD8, 0x69, 0x9D, 0x94, 0xAF, 0xEF, 0x11, 0x0F, // .i......
/* 2810 */ 0xCA, 0x30, 0x09, 0xFE, 0xFF, 0x0F, 0x0A, 0x1C, // .0......
/* 2818 */ 0x8D, 0x43, 0x63, 0x87, 0xE1, 0x01, 0x07, 0x3B, // .Cc....;
/* 2820 */ 0x88, 0xC3, 0x78, 0x6B, 0x34, 0x81, 0x27, 0x74, // ..xk4.'t
/* 2828 */ 0xA2, 0x07, 0xF9, 0x46, 0xF0, 0x74, 0x10, 0x35, // ...F.t.5
/* 2830 */ 0x46, 0x73, 0x27, 0x7A, 0xC4, 0x59, 0x01, 0x1C, // Fs'z.Y..
/* 2838 */ 0x47, 0x01, 0x58, 0xB3, 0xF7, 0x39, 0xE0, 0x31, // G.X..9.1
/* 2840 */ 0x20, 0x54, 0xF0, 0xD7, 0x85, 0xD8, 0xA7, 0x72, // T.....r
/* 2848 */ 0x2E, 0xF1, 0x9F, 0x2B, 0x8D, 0x72, 0x18, 0x98, // ...+.r..
/* 2850 */ 0x93, 0x84, 0x6F, 0xFD, 0xEF, 0x09, 0x3E, 0x49, // ..o...>I
/* 2858 */ 0x30, 0xF7, 0xE3, 0xD1, 0xFD, 0xB4, 0xB5, 0x19, // 0.......
/* 2860 */ 0x09, 0x24, 0x06, 0xB3, 0x85, 0xA1, 0xFB, 0xE5, // .$......
/* 2868 */ 0x69, 0x1A, 0xC5, 0x77, 0x81, 0xF3, 0x7A, 0x61, // i..w..za
/* 2870 */ 0x88, 0x72, 0x0C, 0x27, 0x11, 0x25, 0x50, 0x94, // .r.'.%P.
/* 2878 */ 0x20, 0xD1, 0xDE, 0x75, 0x23, 0x46, 0x8B, 0x11, // ..u#F..
/* 2880 */ 0x37, 0x44, 0xD4, 0x30, 0xF1, 0x22, 0xB4, 0x3F, // 7D.0.".?
/* 2888 */ 0x08, 0x12, 0xEE, 0x34, 0xA0, 0x03, 0x87, 0x23, // ...4...#
/* 2890 */ 0x8D, 0x06, 0x75, 0x98, 0xE2, 0xA7, 0x81, 0xD7, // ..u.....
/* 2898 */ 0x0A, 0x1F, 0x38, 0x0C, 0x72, 0x06, 0x9E, 0xDD, // ..8.r...
/* 28A0 */ 0xA3, 0x80, 0x07, 0xCD, 0xEE, 0x08, 0xFE, 0x1D, // ........
/* 28A8 */ 0xF8, 0x6C, 0x80, 0x77, 0x0D, 0xA8, 0x4B, 0xC1, // .l.w..K.
/* 28B0 */ 0x23, 0x01, 0x3B, 0x7B, 0xC0, 0x3F, 0x65, 0xC0, // #.;{.?e.
/* 28B8 */ 0x1F, 0x8F, 0xCF, 0x00, 0x9E, 0xCF, 0x09, 0x27, // .......'
/* 28C0 */ 0xB0, 0xFC, 0x41, 0xA0, 0x46, 0x66, 0x68, 0x9F, // ..A.Ffh.
/* 28C8 */ 0x01, 0x4E, 0xEB, 0x55, 0xC0, 0x27, 0x84, 0xC3, // .N.U.'..
/* 28D0 */ 0x62, 0xA7, 0x02, 0x1F, 0xEA, 0xC1, 0xF0, 0xFF, // b.......
/* 28D8 */ 0x1F, 0x0F, 0x18, 0x46, 0xFE, 0x84, 0xE1, 0xFB, // ...F....
/* 28E0 */ 0x82, 0xE7, 0xEB, 0x03, 0x07, 0xF6, 0x10, 0x02, // ........
/* 28E8 */ 0xB6, 0xA3, 0x02, 0xEE, 0x08, 0x02, 0x4C, 0x44, // ......LD
/* 28F0 */ 0x69, 0x19, 0x02, 0x0B, 0x7E, 0x40, 0x90, 0x8D, // i...~@..
/* 28F8 */ 0x13, 0x32, 0x3D, 0x77, 0x58, 0x16, 0x90, 0x4E, // .2=wX..N
/* 2900 */ 0x65, 0x6C, 0x14, 0x3D, 0x62, 0x0B, 0xF7, 0x94, // el.=b...
/* 2908 */ 0x0C, 0x6E, 0x84, 0xD7, 0x3F, 0xDC, 0x51, 0xDF, // .n..?.Q.
/* 2910 */ 0x0C, 0x82, 0x20, 0xF1, 0x0F, 0x73, 0x74, 0x4C, // .. ..stL
/* 2918 */ 0x1E, 0x82, 0xE3, 0x82, 0x51, 0x10, 0x9F, 0x01, // ....Q...
/* 2920 */ 0x1C, 0xE5, 0x38, 0x00, 0xE5, 0x02, 0xE4, 0x8B, // ..8.....
/* 2928 */ 0x0D, 0xBB, 0x5C, 0x98, 0xE0, 0x19, 0xC8, 0x87, // ..\.....
/* 2930 */ 0x06, 0x38, 0x03, 0x8C, 0x78, 0x72, 0x9E, 0x86, // .8..xr..
/* 2938 */ 0xE1, 0x7C, 0x12, 0xE2, 0x70, 0xBE, 0xC0, 0x33, // .|..p..3
/* 2940 */ 0x02, 0x76, 0x28, 0x00, 0xDF, 0xD1, 0x1D, 0x77, // .v(....w
/* 2948 */ 0x28, 0x80, 0x07, 0xE4, 0x3B, 0x80, 0x95, 0x9E, // (...;...
/* 2950 */ 0x03, 0xE8, 0x1C, 0x42, 0x84, 0x89, 0xE6, 0xFF, // ...B....
/* 2958 */ 0x3F, 0x3C, 0x26, 0xD8, 0xA8, 0xE8, 0xF1, 0xC9, // ?<&.....
/* 2960 */ 0xE3, 0xE2, 0xC7, 0x02, 0x1F, 0x5C, 0x18, 0xF6, // .....\..
/* 2968 */ 0x0B, 0x80, 0x45, 0x4F, 0x47, 0xA3, 0x7F, 0x62, // ..EOG..b
/* 2970 */ 0x62, 0xC3, 0x36, 0xAC, 0x47, 0xCA, 0x61, 0x8D, // b.6.G.a.
/* 2978 */ 0xF6, 0x74, 0xE4, 0x71, 0xF9, 0xDE, 0xE1, 0x1B, // .t.q....
/* 2980 */ 0x91, 0x4F, 0x02, 0xEC, 0x9C, 0x0D, 0xAE, 0xB3, // .O......
/* 2988 */ 0x01, 0x3B, 0x42, 0x62, 0x4E, 0x07, 0xFC, 0x1A, // .;BbN...
/* 2990 */ 0x88, 0x3D, 0x2C, 0xC0, 0x3E, 0x43, 0xF9, 0xB0, // .=,.>C..
/* 2998 */ 0x00, 0xFC, 0xEF, 0x26, 0x3E, 0x89, 0xF0, 0xC3, // ...&>...
/* 29A0 */ 0x02, 0x60, 0xE6, 0xFF, 0x7F, 0x58, 0x00, 0xD3, // .`...X..
/* 29A8 */ 0xA0, 0x7D, 0x58, 0x00, 0x4E, 0x67, 0x03, 0x76, // .}X.Ng.v
/* 29B0 */ 0x58, 0x00, 0x43, 0xC6, 0x95, 0xE9, 0xB0, 0x80, // X.C.....
/* 29B8 */ 0x53, 0x00, 0xA4, 0x83, 0x0A, 0xFE, 0x00, 0x0E, // S.......
/* 29C0 */ 0x27, 0xEF, 0xF2, 0x74, 0x4A, 0xF0, 0x00, 0x9D, // '..tJ...
/* 29C8 */ 0x94, 0x42, 0xA9, 0x0F, 0x0B, 0xA8, 0x9C, 0x87, // .B......
/* 29D0 */ 0x05, 0x0A, 0x62, 0x40, 0x87, 0x80, 0x90, 0x91, // ..b@....
/* 29D8 */ 0xC3, 0x02, 0xEA, 0xA8, 0xE7, 0x91, 0xF0, 0xD3, // ........
/* 29E0 */ 0x01, 0x3B, 0xCF, 0x9C, 0x3B, 0x9B, 0xA4, 0xA7, // .;..;...
/* 29E8 */ 0xCC, 0xAF, 0x66, 0xBE, 0x2B, 0x30, 0xE4, 0x6A, // ..f.+0.j
/* 29F0 */ 0xEE, 0x00, 0x28, 0x30, 0x5F, 0x15, 0x30, 0xE3, // ..(0_.0.
/* 29F8 */ 0xF7, 0xF1, 0x0E, 0x1C, 0xC7, 0xAA, 0x04, 0xF5, // ........
/* 2A00 */ 0x9D, 0x14, 0x40, 0x8E, 0xCE, 0x23, 0x6F, 0x53, // ..@..#oS
/* 2A08 */ 0x53, 0xE5, 0x21, 0x6F, 0x1B, 0x14, 0xC4, 0x03, // S.!o....
/* 2A10 */ 0xF3, 0x4D, 0xCB, 0x4E, 0x20, 0xF4, 0xFF, 0x9F, // .M.N ...
/* 2A18 */ 0x2A, 0x7F, 0x06, 0xF8, 0x44, 0x0F, 0x0B, 0xE5, // *...D...
/* 2A20 */ 0xB0, 0xAA, 0x3F, 0x45, 0x91, 0x6B, 0x0E, 0xB8, // ..?E.k..
/* 2A28 */ 0xC7, 0xE3, 0xEB, 0x21, 0x78, 0x9C, 0x1D, 0xD3, // ...!x...
/* 2A30 */ 0x74, 0x27, 0xE1, 0x46, 0x2E, 0x0B, 0x74, 0x64, // t'.F..td
/* 2A38 */ 0x3E, 0x0D, 0xF8, 0xE8, 0x0F, 0xEF, 0x8E, 0xE1, // >.......
/* 2A40 */ 0xFB, 0x99, 0xC7, 0x05, 0x77, 0x4A, 0xBE, 0xF3, // ....wJ..
/* 2A48 */ 0xE1, 0xAE, 0x1A, 0x6C, 0xA0, 0x7C, 0x4C, 0x0F, // ...l.|L.
/* 2A50 */ 0x29, 0x1E, 0x31, 0xFC, 0x81, 0xC2, 0xBB, 0x77, // ).1....w
/* 2A58 */ 0xF0, 0x8B, 0x02, 0x78, 0x6E, 0x28, 0xC0, 0x1B, // ...xn(..
/* 2A60 */ 0x96, 0x8F, 0x9C, 0xFF, 0xFF, 0x6F, 0x47, 0xC0, // .....oG.
/* 2A68 */ 0xEB, 0x96, 0x8A, 0x39, 0xA1, 0xE0, 0x0E, 0x00, // ...9....
/* 2A70 */ 0x5A, 0xBA, 0x6E, 0x28, 0x38, 0xB1, 0xB7, 0x23, // Z.n(8..#
/* 2A78 */ 0x28, 0x37, 0x14, 0x38, 0xD2, 0x6E, 0x47, 0x28, // (7.8.nG(
/* 2A80 */ 0x51, 0x14, 0x92, 0x74, 0xCE, 0x40, 0x5D, 0x92, // Q..t.@].
/* 2A88 */ 0x38, 0x88, 0x8F, 0x04, 0x0E, 0x78, 0x7C, 0x40, // 8....x|@
/* 2A90 */ 0x0F, 0xC5, 0xC7, 0x04, 0x58, 0x97, 0x80, 0x40, // ....X..@
/* 2A98 */ 0x0F, 0x42, 0xAF, 0x99, 0xFC, 0xBE, 0xE2, 0x13, // .B......
/* 2AA0 */ 0x04, 0x9C, 0x2B, 0x12, 0xDC, 0x49, 0xB0, 0x63, // ..+..I.c
/* 2AA8 */ 0x07, 0xE6, 0xA6, 0x04, 0xEF, 0xDC, 0x00, 0x78, // .......x
/* 2AB0 */ 0xF9, 0xFF, 0x9F, 0x1B, 0x70, 0xE3, 0xF5, 0x45, // ....p..E
/* 2AB8 */ 0x09, 0x38, 0x9E, 0x1B, 0xE0, 0x49, 0x5B, 0x90, // .8...I[.
/* 2AC0 */ 0xCE, 0x0D, 0xFC, 0x0C, 0x60, 0xF1, 0x17, 0x25, // ....`..%
/* 2AC8 */ 0x28, 0x97, 0x03, 0x9C, 0x5C, 0x40, 0x5D, 0x93, // (...\@].
/* 2AD0 */ 0xB8, 0x50, 0x18, 0xDD, 0x7E, 0x7D, 0x6A, 0xE0, // .P..~}j.
/* 2AD8 */ 0xC7, 0x08, 0xC3, 0x19, 0xC4, 0xE3, 0x75, 0x86, // ......u.
/* 2AE0 */ 0x6B, 0x12, 0xFA, 0xCA, 0xE9, 0x71, 0xB0, 0x63, // k....q.c
/* 2AE8 */ 0x12, 0x70, 0x8D, 0x31, 0x23, 0xF4, 0xE1, 0xDC, // .p.1#...
/* 2AF0 */ 0xC7, 0x6D, 0xDC, 0x98, 0xC0, 0x7D, 0x28, 0xE4, // .m...}(.
/* 2AF8 */ 0x27, 0x29, 0xB0, 0xFD, 0xFF, 0x4F, 0x52, 0xE0, // ')...OR.
/* 2B00 */ 0x0F, 0x7B, 0x1A, 0x40, 0xC5, 0x3B, 0x0D, 0x50, // .{.@.;.P
/* 2B08 */ 0x10, 0x0F, 0xCC, 0x81, 0x4E, 0x52, 0xE8, 0x53, // ....NR.S
/* 2B10 */ 0x82, 0x4F, 0x03, 0xEC, 0x86, 0x80, 0xB9, 0x06, // .O......
/* 2B18 */ 0x61, 0x0E, 0x52, 0x60, 0x3F, 0x31, 0xF8, 0x20, // a.R`?1.
/* 2B20 */ 0x05, 0xBE, 0xA8, 0x47, 0x17, 0xF4, 0xA9, 0xC9, // ...G....
/* 2B28 */ 0x03, 0xC3, 0x13, 0x38, 0xD6, 0x39, 0x0A, 0x14, // ...8.9..
/* 2B30 */ 0xA7, 0x13, 0xDC, 0x39, 0x0A, 0xF6, 0x78, 0x61, // ...9..xa
/* 2B38 */ 0x0D, 0x13, 0xDE, 0x01, 0x85, 0x9F, 0x5F, 0x80, // ......_.
/* 2B40 */ 0xD7, 0xFF, 0xFF, 0xFC, 0x02, 0x2F, 0xD4, 0xF9, // ...../..
/* 2B48 */ 0x05, 0x74, 0x16, 0xCE, 0x2F, 0xA0, 0xBB, 0x2F, // .t../../
/* 2B50 */ 0xE3, 0x8F, 0x51, 0xE0, 0x99, 0x3F, 0xE6, 0x79, // ..Q..?.y
/* 2B58 */ 0xC0, 0xE2, 0xDF, 0x58, 0x51, 0x27, 0x00, 0x0B, // ...XQ'..
/* 2B60 */ 0x3C, 0x44, 0x41, 0xB9, 0x23, 0xE0, 0x8E, 0x4F, // <DA.#..O
/* 2B68 */ 0x3E, 0x42, 0x71, 0x31, 0x14, 0x92, 0x72, 0xC0, // >Bq1..r.
/* 2B70 */ 0x40, 0x5D, 0x59, 0x0D, 0x66, 0x10, 0x1F, 0x22, // @]Y.f.."
/* 2B78 */ 0x7C, 0x00, 0xF2, 0xC1, 0x01, 0x1C, 0xC7, 0x27, // |......'
/* 2B80 */ 0x70, 0x1F, 0x0E, 0x7C, 0x7C, 0x02, 0xEE, 0xFF, // p..||...
/* 2B88 */ 0xFF, 0xF3, 0x02, 0x70, 0x38, 0xD1, 0xF8, 0xBC, // ...p8...
/* 2B90 */ 0x00, 0x9C, 0x8E, 0x4F, 0xF8, 0xF3, 0x02, 0x3E, // ...O...>
/* 2B98 */ 0xFC, 0x19, 0x0E, 0x75, 0x5E, 0xB1, 0x30, 0x20, // ...u^.0
/* 2BA0 */ 0x1D, 0x9E, 0xB0, 0xD3, 0x3D, 0xF0, 0xB3, 0x78, // ....=..x
/* 2BA8 */ 0xD9, 0xF7, 0x84, 0x0C, 0xC7, 0x8E, 0x71, 0xD8, // ......q.
/* 2BB0 */ 0xA7, 0x82, 0x4F, 0x50, 0x3C, 0x3A, 0x89, 0x42, // ..OP<:.B
/* 2BB8 */ 0xDF, 0x5B, 0x51, 0x31, 0x0F, 0x0D, 0x14, 0xC4, // .[Q1....
/* 2BC0 */ 0x80, 0x3E, 0x41, 0x01, 0x16, 0x8E, 0x47, 0xC0, // .>A...G.
/* 2BC8 */ 0xE2, 0xEC, 0x67, 0x74, 0xFF, 0xFF, 0x61, 0x1C, // ..gt..a.
/* 2BD0 */ 0x7B, 0xA8, 0x14, 0xC4, 0x43, 0xF5, 0xB9, 0xD5, // {...C...
/* 2BD8 */ 0xD7, 0x2A, 0x9F, 0x5B, 0x71, 0x57, 0x00, 0xF8, // .*.[qW..
/* 2BE0 */ 0xE7, 0x56, 0xE0, 0x69, 0x4C, 0x80, 0x36, 0x48, // .V.iL.6H
/* 2BE8 */ 0x72, 0xD6, 0x00, 0x1E, 0xD1, 0xCE, 0x1A, 0xA0, // r.......
/* 2BF0 */ 0xF3, 0x70, 0xD6, 0x00, 0xDD, 0x68, 0x1E, 0x75, // .p...h.u
/* 2BF8 */ 0xC0, 0x76, 0x14, 0xC0, 0x9E, 0x37, 0x30, 0x67, // .v...70g
/* 2C00 */ 0x01, 0x9C, 0xB6, 0x2B, 0x37, 0x6A, 0xC8, 0x56, // ...+7j.V
/* 2C08 */ 0x7B, 0xDC, 0x80, 0x7E, 0x91, 0xC3, 0x0D, 0xEA, // {..~....
/* 2C10 */ 0xCC, 0x3C, 0x06, 0xC3, 0xBC, 0xE1, 0xFB, 0xFF, // .<......
/* 2C18 */ 0x0F, 0xEA, 0x1B, 0x8E, 0xD5, 0x1C, 0x39, 0x50, // ......9P
/* 2C20 */ 0x3A, 0x28, 0x94, 0xFB, 0xC8, 0x81, 0x4A, 0x7A, // :(....Jz
/* 2C28 */ 0x32, 0xA0, 0x20, 0x06, 0xF4, 0x0D, 0x0F, 0xB8, // 2. .....
/* 2C30 */ 0xDD, 0x39, 0x80, 0xB5, 0x9C, 0x3B, 0x07, 0x6A, // .9...;.j
/* 2C38 */ 0xAB, 0x9E, 0xAB, 0x29, 0x3C, 0x57, 0x87, 0xBB, // ...)<W..
/* 2C40 */ 0x73, 0xA0, 0xA5, 0xDD, 0x39, 0x20, 0x1C, 0x04, // s...9 ..
/* 2C48 */ 0xC0, 0x71, 0xF1, 0x00, 0xBC, 0xFC, 0xFF, 0x2F, // .q...../
/* 2C50 */ 0x1E, 0x60, 0x08, 0x79, 0xF1, 0x00, 0x1D, 0xB8, // .`.y....
/* 2C58 */ 0x2F, 0x1E, 0xE0, 0x82, 0x7F, 0xF1, 0x00, 0xFB, // /.......
/* 2C60 */ 0x7D, 0x00, 0x77, 0x72, 0xF2, 0x81, 0x00, 0xCE, // }.wr....
/* 2C68 */ 0xDB, 0xC3, 0x31, 0x6C, 0x8C, 0x84, 0xC5, 0x78, // ..1l...x
/* 2C70 */ 0x03, 0x48, 0x38, 0x0C, 0xEA, 0x3C, 0xE1, 0x53, // .H8..<.S
/* 2C78 */ 0x01, 0x7E, 0x9C, 0x87, 0x79, 0x74, 0x07, 0xC6, // .~..yt..
/* 2C80 */ 0xEE, 0xCF, 0x86, 0xE3, 0x47, 0x00, 0x0F, 0xAC, // ....G...
/* 2C88 */ 0xF9, 0xC1, 0x68, 0x1C, 0xE7, 0xEB, 0x99, 0x85, // ..h.....
/* 2C90 */ 0x64, 0xA7, 0x06, 0xDF, 0x17, 0x71, 0xA7, 0x80, // d....q..
/* 2C98 */ 0xB3, 0x39, 0xA8, 0xDA, 0x11, 0x35, 0xD3, 0x53, // .9...5.S
/* 2CA0 */ 0x32, 0x81, 0x07, 0xCF, 0xD0, 0x38, 0x34, 0x76, // 2....84v
/* 2CA8 */ 0x18, 0xBE, 0x15, 0x04, 0x3B, 0x88, 0xC3, 0x78, // ....;..x
/* 2CB0 */ 0x8B, 0xE3, 0x13, 0x3A, 0xCD, 0x72, 0x6F, 0x0B, // ...:.ro.
/* 2CB8 */ 0xBA, 0xB9, 0x45, 0x8D, 0xD1, 0xDC, 0x09, 0x02, // ..E.....
/* 2CC0 */ 0x31, 0x76, 0x70, 0x80, 0xF9, 0x40, 0xF2, 0xD0, // 1vp..@..
/* 2CC8 */ 0x60, 0x88, 0x58, 0x7C, 0xC4, 0x31, 0x42, 0x3D, // `.X|.1B=
/* 2CD0 */ 0x00, 0x78, 0x44, 0xAD, 0x82, 0xC8, 0x27, 0x8A, // .xD...'.
/* 2CD8 */ 0x30, 0xFE, 0xFF, 0xB1, 0x4F, 0xE6, 0xD4, 0x7D, // 0...O..}
/* 2CE0 */ 0x2C, 0xF0, 0xAD, 0xC0, 0x27, 0x00, 0x4F, 0x28, // ,...'.O(
/* 2CE8 */ 0xF2, 0x59, 0x3C, 0x55, 0x18, 0xE5, 0x60, 0x30, // .Y<U..`0
/* 2CF0 */ 0x77, 0x2D, 0x7B, 0xBE, 0x49, 0x90, 0xEB, 0x17, // w-{.I...
/* 2CF8 */ 0x73, 0x3F, 0x2C, 0x4D, 0xE0, 0xB0, 0x8E, 0xEB, // s?,M....
/* 2D00 */ 0x1D, 0xB4, 0xB5, 0xD3, 0x84, 0x46, 0xD3, 0x16, // .....F..
/* 2D08 */ 0x92, 0x10, 0x5E, 0x20, 0x9E, 0x21, 0xA2, 0xC4, // ..^ .!..
/* 2D10 */ 0x89, 0x14, 0xE4, 0xC5, 0x24, 0x4A, 0x6F, 0x28, // ....$Jo(
/* 2D18 */ 0x02, 0x8C, 0x19, 0x25, 0xC8, 0xEB, 0x68, 0xB0, // ...%..h.
/* 2D20 */ 0x57, 0x9B, 0x90, 0x21, 0x62, 0x56, 0x08, 0xAE, // W..!bV..
/* 2D28 */ 0x01, 0x44, 0x89, 0xD0, 0xFE, 0x20, 0x48, 0xE4, // .D... H.
/* 2D30 */ 0x97, 0x80, 0x7C, 0xDC, 0xA7, 0xE8, 0x68, 0xF8, // ..|...h.
/* 2D38 */ 0xED, 0x95, 0x9F, 0x09, 0x5E, 0x14, 0x3C, 0xA9, // ....^.<.
/* 2D40 */ 0x27, 0x1D, 0xCF, 0xF5, 0xCC, 0xEA, 0x9C, 0x1C, // '.......
/* 2D48 */ 0x25, 0xF0, 0xD0, 0x7C, 0x0C, 0x81, 0xE3, 0x1A, // %..|....
/* 2D50 */ 0x50, 0x57, 0x83, 0x07, 0x03, 0x76, 0x60, 0x30, // PW...v`0
/* 2D58 */ 0x1C, 0x1F, 0xA2, 0x4F, 0x0D, 0x9E, 0xC0, 0x21, // ...O...!
/* 2D60 */ 0x32, 0x40, 0x9F, 0x43, 0xE0, 0x8F, 0xC7, 0x27, // 2@.C...'
/* 2D68 */ 0x01, 0xCF, 0xE7, 0x84, 0x13, 0x58, 0xFE, 0x20, // .....X.
/* 2D70 */ 0x50, 0x23, 0x33, 0xB4, 0xE7, 0x7A, 0x5A, 0xCF, // P#3..zZ.
/* 2D78 */ 0x02, 0x3E, 0x27, 0x1C, 0x16, 0x13, 0x7B, 0xF7, // .>'...{.
/* 2D80 */ 0xA1, 0xE3, 0x01, 0xFF, 0x65, 0xEF, 0xF1, 0x20, // ....e..
/* 2D88 */ 0xC2, 0x5B, 0x83, 0xE7, 0x6B, 0x82, 0x71, 0x6F, // .[..k.qo
/* 2D90 */ 0x74, 0x50, 0xC6, 0xFC, 0x40, 0xE2, 0xE1, 0xB0, // tP..@...
/* 2D98 */ 0x78, 0x77, 0x4A, 0x2A, 0xEA, 0x70, 0x82, 0xBA, // xwJ*.p..
/* 2DA0 */ 0xD4, 0x62, 0x0E, 0x04, 0x6F, 0x1D, 0x86, 0x78, // .b..o..x
/* 2DA8 */ 0x36, 0x61, 0xFF, 0x8D, 0xFF, 0xFF, 0x81, 0x81, // 6a......
/* 2DB0 */ 0xE1, 0x08, 0x83, 0x3B, 0x4D, 0xC0, 0x3D, 0x44, // ...;M.=D
/* 2DB8 */ 0xB0, 0x29, 0x71, 0x94, 0x47, 0x07, 0xEB, 0xBA, // .)q.G...
/* 2DC0 */ 0x23, 0x81, 0x2E, 0xF2, 0x38, 0xD1, 0xC0, 0x6C, // #...8..l
/* 2DC8 */ 0x26, 0x21, 0x03, 0x3F, 0x23, 0xBC, 0xA5, 0x98, // &!.?#...
/* 2DD0 */ 0x60, 0xC0, 0x81, 0x82, 0xEA, 0x40, 0x00, 0x8E, // `....@..
/* 2DD8 */ 0x8B, 0x90, 0x07, 0x0A, 0xA6, 0x39, 0x31, 0x90, // .....91.
/* 2DE0 */ 0x60, 0x07, 0xC5, 0x26, 0xEA, 0x91, 0x82, 0xF1, // `..&....
/* 2DE8 */ 0xD6, 0x8D, 0x03, 0x36, 0x6A, 0xC4, 0x80, 0xE7, // ...6j...
/* 2DF0 */ 0xF0, 0x1C, 0xC2, 0x47, 0x0A, 0x2E, 0x40, 0x9F, // ...G..@.
/* 2DF8 */ 0x10, 0xC0, 0xFC, 0xFF, 0x1F, 0x29, 0x9C, 0xDB, // .....)..
/* 2E00 */ 0x8F, 0xE7, 0xE4, 0x13, 0x02, 0xE6, 0x1A, 0x0E, // ........
/* 2E08 */ 0xBE, 0x0B, 0xB0, 0xAF, 0xEB, 0xF8, 0x53, 0x0D, // ......S.
/* 2E10 */ 0x9B, 0x55, 0xD8, 0x67, 0x8C, 0xA8, 0xB5, 0x5E, // .U.g...^
/* 2E18 */ 0x75, 0x08, 0xCC, 0xD3, 0x05, 0x3B, 0x49, 0x79, // u....;Iy
/* 2E20 */ 0xB0, 0xE0, 0x01, 0xF5, 0x60, 0xE1, 0x5F, 0x64, // ....`._d
/* 2E28 */ 0xC1, 0x33, 0x2A, 0xEC, 0x2C, 0x9E, 0x4F, 0xCE, // .3*.,.O.
/* 2E30 */ 0x8A, 0x1F, 0x13, 0xD8, 0x70, 0xC1, 0x17, 0xF8, // ....p...
/* 2E38 */ 0x9C, 0x00, 0xE5, 0x14, 0xE0, 0xB9, 0xE2, 0x0E, // ........
/* 2E40 */ 0x26, 0xE0, 0xBA, 0x85, 0x7B, 0xAC, 0xF0, 0xE5, // &...{...
/* 2E48 */ 0x9D, 0x13, 0x40, 0x36, 0x25, 0xCC, 0x31, 0x81, // ..@6%.1.
/* 2E50 */ 0xFD, 0xFF, 0x07, 0x0A, 0xB6, 0x7B, 0xAF, 0x07, // .....{..
/* 2E58 */ 0x8A, 0x1B, 0x9E, 0x81, 0x43, 0xFA, 0x90, 0x80, // ....C...
/* 2E60 */ 0x3D, 0x60, 0x80, 0xEB, 0x40, 0xE6, 0x03, 0x06, // =`..@...
/* 2E68 */ 0xF0, 0x18, 0x13, 0x9B, 0x29, 0x7E, 0xA8, 0xC0, // ....)~..
/* 2E70 */ 0xE3, 0x72, 0xEE, 0xA1, 0x82, 0xF9, 0xFA, 0xEA, // .r......
/* 2E78 */ 0xA1, 0x02, 0x93, 0x31, 0x79, 0xA8, 0xC0, 0x20, // ...1y..
/* 2E80 */ 0xB8, 0x80, 0xFF, 0xFF, 0x50, 0xB1, 0xA3, 0xF1, // ....P...
/* 2E88 */ 0x6D, 0xEE, 0x8D, 0x8E, 0x8F, 0x15, 0x1B, 0x71, // m......q
/* 2E90 */ 0xAC, 0xA0, 0x1A, 0x91, 0x8F, 0x43, 0xC0, 0x63, // .....C.c
/* 2E98 */ 0x50, 0x98, 0xC1, 0x02, 0x83, 0x8B, 0xB6, 0x8F, // P.......
/* 2EA0 */ 0x09, 0xF8, 0x63, 0x87, 0x21, 0xCE, 0xE6, 0xD5, // ..c.!...
/* 2EA8 */ 0x90, 0x5D, 0x88, 0xD8, 0x58, 0xC1, 0x65, 0xE2, // .]..X.e.
/* 2EB0 */ 0x24, 0x05, 0x84, 0xE6, 0x84, 0xB9, 0x10, 0x61, // $......a
/* 2EB8 */ 0x4E, 0x44, 0xC0, 0x60, 0x38, 0x3E, 0xFE, 0x9D, // ND.`8>..
/* 2EC0 */ 0x2B, 0xFE, 0xFF, 0x3F, 0x32, 0x76, 0xD1, 0xF7, // +..?2v..
/* 2EC8 */ 0x60, 0xC1, 0xA3, 0x62, 0xB0, 0xA0, 0x38, 0x63, // `..b..8c
/* 2ED0 */ 0x1E, 0x2C, 0x58, 0x06, 0x65, 0x88, 0xD7, 0xC6, // .,X.e...
/* 2ED8 */ 0xC3, 0x05, 0x2E, 0xD1, 0x4F, 0x0A, 0x50, 0x0E, // ....O.P.
/* 2EE0 */ 0x90, 0xBE, 0x67, 0xB2, 0x8B, 0x12, 0x1B, 0x2D, // ..g....-
/* 2EE8 */ 0xF8, 0xC6, 0xEA, 0xD1, 0x02, 0x0F, 0x30, 0x4F, // ......0O
/* 2EF0 */ 0x28, 0xFA, 0x03, 0xDC, 0xAB, 0x98, 0xB1, 0x1E, // (.......
/* 2EF8 */ 0x31, 0x3D, 0x58, 0x1F, 0x6F, 0x0C, 0x13, 0xF9, // 1=X.o...
/* 2F00 */ 0xB1, 0x08, 0x9C, 0x82, 0xCF, 0xCA, 0xA0, 0x40, // .......@
/* 2F08 */ 0x89, 0xFE, 0x30, 0xE0, 0x13, 0x48, 0x88, 0x68, // ..0..H.h
/* 2F10 */ 0xBE, 0xB1, 0x1A, 0xE4, 0xFF, 0x1F, 0xC8, 0xA7, // ........
/* 2F18 */ 0x65, 0xA3, 0xFA, 0x46, 0x60, 0x97, 0x53, 0x11, // e..F`.S.
/* 2F20 */ 0xE6, 0xB3, 0x70, 0xB4, 0x43, 0x8B, 0x7E, 0x32, // ..p.C.~2
/* 2F28 */ 0x21, 0x12, 0xF8, 0x10, 0x86, 0x1F, 0x08, 0x47, // !......G
/* 2F30 */ 0x7D, 0x7C, 0x66, 0x03, 0x79, 0x83, 0x36, 0xFE, // }|f.y.6.
/* 2F38 */ 0x71, 0xF9, 0xA0, 0x6B, 0x84, 0xE3, 0x7A, 0xBE, // q..k..z.
/* 2F40 */ 0x7D, 0x46, 0xF0, 0x3D, 0x0C, 0x73, 0x8A, 0xC6, // }F.=.s..
/* 2F48 */ 0x29, 0xB3, 0x02, 0xC2, 0xA4, 0x3F, 0x28, 0x25, // )....?(%
/* 2F50 */ 0xEB, 0x3D, 0x40, 0x61, 0x7C, 0x26, 0x06, 0x5C, // .=@a|&.\
/* 2F58 */ 0x1D, 0x54, 0x7D, 0x58, 0x00, 0xC7, 0x71, 0x00, // .T}X..q.
/* 2F60 */ 0xD6, 0x5D, 0x9C, 0x1D, 0x03, 0x42, 0x05, 0x7F, // .]...B..
/* 2F68 */ 0x5C, 0x88, 0xFD, 0xD2, 0x60, 0xFC, 0x08, 0x4F, // \...`..O
/* 2F70 */ 0xC3, 0xF0, 0xEF, 0xE9, 0x27, 0x14, 0xF5, 0x2D, // ....'..-
/* 2F78 */ 0x20, 0xD0, 0x63, 0x70, 0x04, 0x9F, 0x3F, 0x22, // .cp..?"
/* 2F80 */ 0x9D, 0xD4, 0x6B, 0x70, 0xA4, 0xF7, 0x61, 0x0F, // ..kp..a.
/* 2F88 */ 0xE1, 0xB8, 0x1E, 0x5E, 0xA3, 0x84, 0x78, 0x6D, // ...^..xm
/* 2F90 */ 0x88, 0x10, 0x28, 0x4A, 0xD0, 0x20, 0x6F, 0x93, // ..(J. o.
/* 2F98 */ 0x11, 0x82, 0x84, 0x8B, 0x1B, 0xE4, 0xFC, 0x8C, // ........
/* 2FA0 */ 0x77, 0x6A, 0x4F, 0xC3, 0x2C, 0x9C, 0x81, 0xFF, // wjO.,...
/* 2FA8 */ 0xFF, 0x89, 0x83, 0x9D, 0x86, 0x01, 0x7E, 0x1C, // ......~.
/* 2FB0 */ 0x38, 0x70, 0x07, 0x11, 0xB0, 0x1D, 0x15, 0x70, // 8p.....p
/* 2FB8 */ 0x47, 0x10, 0x60, 0x92, 0xFC, 0xE5, 0xAB, 0xB3, // G.`.....
/* 2FC0 */ 0x87, 0x93, 0xAE, 0x55, 0x36, 0xD6, 0x6A, 0x02, // ...U6.j.
/* 2FC8 */ 0x9D, 0x3B, 0xAC, 0x03, 0x48, 0xD3, 0xE1, 0x87, // .;..H...
/* 2FD0 */ 0x7F, 0x76, 0x51, 0x31, 0x52, 0x8C, 0xD3, 0x78, // .vQ1R..x
/* 2FD8 */ 0x45, 0xF0, 0x35, 0xD5, 0x27, 0x09, 0xA7, 0x3E, // E.5.'..>
/* 2FE0 */ 0x2E, 0xE8, 0xBC, 0x6C, 0xDE, 0xFF, 0x7F, 0x82, // ...l....
/* 2FE8 */ 0x79, 0x49, 0x94, 0x79, 0x4C, 0x74, 0x08, 0x4E, // yI.yLt.N
/* 2FF0 */ 0x79, 0x6C, 0xA6, 0x20, 0x06, 0x74, 0x84, 0x53, // yl. .t.S
/* 2FF8 */ 0x31, 0xFA, 0xC0, 0xE4, 0xC3, 0x34, 0x66, 0x58, // 1....4fX
/* 3000 */ 0xAF, 0x0C, 0x6C, 0x8E, 0xBE, 0x0C, 0xF0, 0x69, // ..l....i
/* 3008 */ 0xF9, 0x78, 0x60, 0x60, 0xAB, 0xB9, 0x07, 0xA1, // .x``....
/* 3010 */ 0xC0, 0x7C, 0x14, 0x38, 0x64, 0x9F, 0x7E, 0xC1, // .|.8d.~.
/* 3018 */ 0xA7, 0xEF, 0x40, 0x00, 0x0A, 0x20, 0xCF, 0xDF, // ..@.. ..
/* 3020 */ 0x67, 0x9C, 0x67, 0x00, 0x36, 0x85, 0xC7, 0x1C, // g.g.6...
/* 3028 */ 0xA3, 0x19, 0x9D, 0x5F, 0x9B, 0x3C, 0x53, 0x1E, // ..._.<S.
/* 3030 */ 0x76, 0xA6, 0x14, 0xC4, 0x33, 0x75, 0x90, 0xEB, // v...3u..
/* 3038 */ 0x34, 0x94, 0xD1, 0x63, 0xAF, 0x25, 0xEC, 0xB6, // 4..c.%..
/* 3040 */ 0x01, 0x67, 0xCC, 0x11, 0x1F, 0x0B, 0x3C, 0x0D, // .g....<.
/* 3048 */ 0xC3, 0x79, 0xB0, 0x1C, 0xCE, 0x83, 0xE5, 0x63, // .y.....c
/* 3050 */ 0xF1, 0x64, 0xC1, 0x75, 0x65, 0xC4, 0x4D, 0x16, // .d.ue.M.
/* 3058 */ 0x8C, 0xF0, 0x98, 0x60, 0x83, 0xA2, 0xE3, 0xF1, // ...`....
/* 3060 */ 0xB0, 0xF8, 0xD9, 0xC0, 0x17, 0x1E, 0x86, 0xFD, // ........
/* 3068 */ 0xFF, 0x7F, 0x72, 0xB0, 0xE8, 0x3B, 0x02, 0xB9, // ..r..;..
/* 3070 */ 0xB4, 0x63, 0x60, 0x3D, 0x50, 0x0E, 0x6B, 0xB4, // .c`=P.k.
/* 3078 */ 0xB0, 0x2F, 0x39, 0xEF, 0x1C, 0x3E, 0xB0, 0xF8, // ./9..>..
/* 3080 */ 0x0A, 0xC6, 0x60, 0x3D, 0x58, 0x0F, 0xE8, 0x8D, // ..`=X...
/* 3088 */ 0x07, 0x2C, 0x77, 0x0A, 0x76, 0x00, 0xF7, 0xBD, // .,w.v...
/* 3090 */ 0xC2, 0x67, 0x35, 0x5F, 0xD6, 0x7C, 0x11, 0xC0, // .g5_.|..
/* 3098 */ 0xFD, 0x30, 0x98, 0xF8, 0x4B, 0x06, 0x3A, 0xDA, // .0..K.:.
/* 30A0 */ 0xA2, 0x74, 0xC9, 0xE0, 0xB8, 0x2F, 0x19, 0x30, // .t.../.0
/* 30A8 */ 0x83, 0x5C, 0x32, 0x28, 0x84, 0x23, 0x50, 0x28, // .\2(.#P(
/* 30B0 */ 0x00, 0x84, 0xCE, 0x0A, 0x5C, 0x32, 0x1C, 0x05, // ....\2..
/* 30B8 */ 0xF1, 0x88, 0x1D, 0xE3, 0xAC, 0x80, 0xBE, 0xB8, // ........
/* 30C0 */ 0xF8, 0x92, 0x81, 0x39, 0x2A, 0xC0, 0x3C, 0x65, // ...9*.<e
/* 30C8 */ 0xB0, 0xA3, 0x02, 0xEC, 0x6B, 0x06, 0xF8, 0x8E, // ....k...
/* 30D0 */ 0x13, 0xE0, 0x1E, 0x14, 0x38, 0x8E, 0x13, 0xF0, // ....8...
/* 30D8 */ 0xFF, 0xFF, 0xC7, 0x09, 0xC0, 0xC3, 0x89, 0xC4, // ........
/* 30E0 */ 0xC7, 0x09, 0xE0, 0x74, 0x7A, 0x60, 0xC7, 0x09, // ...tz`..
/* 30E8 */ 0x30, 0xC8, 0xFB, 0x71, 0xE9, 0x38, 0xC1, 0x2F, // 0..q.8./
/* 30F0 */ 0xE1, 0x96, 0xBC, 0x3A, 0x5D, 0x81, 0xF0, 0xD8, // ...:]...
/* 30F8 */ 0x27, 0xE7, 0x89, 0x84, 0x39, 0xD9, 0x57, 0x38, // '...9.W8
/* 3100 */ 0xCF, 0xEA, 0x90, 0x8D, 0xD4, 0x3B, 0x0E, 0x19, // .....;..
/* 3108 */ 0xF8, 0x33, 0xA2, 0x21, 0x5E, 0x8C, 0x98, 0xA8, // .3.!^...
/* 3110 */ 0x01, 0xE8, 0x50, 0xC1, 0xE5, 0xC0, 0x48, 0x0C, // ..P...H.
/* 3118 */ 0x84, 0x0E, 0x15, 0x3C, 0xFE, 0x5A, 0x05, 0x66, // ...<.Z.f
/* 3120 */ 0x10, 0x5F, 0xD4, 0x7D, 0x69, 0xF7, 0xE5, 0x12, // ._.}i...
/* 3128 */ 0x77, 0x24, 0xF0, 0x78, 0x8E, 0xEB, 0x28, 0x1E, // w$.x..(.
/* 3130 */ 0xAF, 0x3C, 0x5C, 0x4F, 0x07, 0x4C, 0xE3, 0x7D, // .<\O.L.}
/* 3138 */ 0xB2, 0x01, 0xDB, 0xFF, 0xFF, 0x7C, 0x81, 0xBF, // .....|..
/* 3140 */ 0x4E, 0x82, 0xEF, 0x80, 0xE1, 0xF1, 0xE1, 0xCE, // N.......
/* 3148 */ 0x20, 0xBE, 0x9E, 0x79, 0x58, 0xA7, 0xE4, 0x41, // ..yX..A
/* 3150 */ 0x81, 0x7D, 0xE4, 0x1E, 0x14, 0xF8, 0xA2, 0x0D, // .}......
/* 3158 */ 0x0A, 0x3D, 0x00, 0xDF, 0xDA, 0xD9, 0x09, 0x00, // .=......
/* 3160 */ 0x58, 0x1E, 0x31, 0x3C, 0x3A, 0x60, 0x71, 0x51, // X.1<:`qQ
/* 3168 */ 0xF7, 0xE8, 0x80, 0xE1, 0xFF, 0x9F, 0xC0, 0x50, // .......P
/* 3170 */ 0x1E, 0x1D, 0xF8, 0x8E, 0x2E, 0xC0, 0xE3, 0x2A, // .......*
/* 3178 */ 0xEE, 0xA3, 0x0B, 0xB8, 0x60, 0xF9, 0xD1, 0x05, // ....`...
/* 3180 */ 0x3C, 0x77, 0x7A, 0x7E, 0xB0, 0x02, 0xDF, 0x75, // <wz~...u
/* 3188 */ 0x00, 0x3C, 0x9F, 0x17, 0x8B, 0x39, 0x5D, 0xA1, // .<...9].
/* 3190 */ 0xCE, 0x2F, 0x16, 0x78, 0xBA, 0x82, 0x72, 0x7E, // ./.x..r~
/* 3198 */ 0x01, 0x97, 0x84, 0x33, 0x16, 0xEA, 0x86, 0xEE, // ...3....
/* 31A0 */ 0xE3, 0x1D, 0xFC, 0x03, 0x09, 0xFE, 0xA4, 0xCD, // ........
/* 31A8 */ 0x6E, 0xFE, 0x3E, 0x36, 0xC0, 0x3C, 0x3F, 0xF1, // n.>6.<?.
/* 31B0 */ 0xFF, 0xFF, 0xA1, 0x05, 0xFC, 0x23, 0x7D, 0x78, // .....#}x
/* 31B8 */ 0x36, 0xD0, 0x63, 0x03, 0xF0, 0xBF, 0xE1, 0xFA, // 6.c.....
/* 31C0 */ 0xD8, 0x00, 0x9C, 0x0E, 0x50, 0xF8, 0x63, 0x03, // ....P.c.
/* 31C8 */ 0xB8, 0xC4, 0x9D, 0xA2, 0x50, 0xA7, 0x24, 0x0B, // ....P.$.
/* 31D0 */ 0x3E, 0x45, 0x41, 0xB9, 0x4A, 0xFB, 0xA2, 0xEB, // >EA.J...
/* 31D8 */ 0x5B, 0x03, 0xFC, 0x43, 0x14, 0xB0, 0x99, 0x0D, // [..C....
/* 31E0 */ 0xE6, 0xFF, 0x7F, 0xA6, 0x80, 0x7F, 0x88, 0x02, // ........
/* 31E8 */ 0x98, 0x71, 0x02, 0x00, 0x96, 0x87, 0x28, 0x60, // .q....(`
/* 31F0 */ 0x33, 0x3A, 0x18, 0xFF, 0xFF, 0xD1, 0x01, 0xA7, // 3:......
/* 31F8 */ 0x43, 0x14, 0xE0, 0xEA, 0xF0, 0xE1, 0x43, 0x14, // C.....C.
/* 3200 */ 0x70, 0xBC, 0x0E, 0xE0, 0x91, 0xDE, 0x5E, 0xE0, // p.....^.
/* 3208 */ 0x11, 0x94, 0x72, 0x88, 0x42, 0x9D, 0x4F, 0x2C, // ..r.B.O,
/* 3210 */ 0xEF, 0x10, 0x05, 0xE5, 0x8A, 0x00, 0x9E, 0x33, // .......3
/* 3218 */ 0x14, 0xFC, 0xFF, 0xFF, 0x19, 0x0A, 0xE0, 0xC4, // ........
/* 3220 */ 0xD1, 0xDE, 0x67, 0x28, 0xE0, 0x78, 0x42, 0x00, // ..g(.xB.
/* 3228 */ 0xCB, 0x93, 0x81, 0x45, 0xF3, 0x31, 0x10, 0x16, // ...E.1..
/* 3230 */ 0xE3, 0x71, 0xA0, 0x30, 0x30, 0xA8, 0xB1, 0xF9, // .q.00...
/* 3238 */ 0x50, 0x80, 0x1F, 0xE6, 0x51, 0x1E, 0xDC, 0x71, // P...Q..q
/* 3240 */ 0xB1, 0x13, 0xB8, 0xE1, 0xF8, 0x09, 0xC0, 0xE3, // ........
/* 3248 */ 0x6A, 0x7E, 0x34, 0x3A, 0x25, 0x1C, 0x87, 0x27, // j~4:%..'
/* 3250 */ 0x96, 0xE0, 0xFF, 0x1F, 0xD2, 0xD2, 0x06, 0x88, // ........
/* 3258 */ 0x92, 0x02, 0xA1, 0x19, 0x1D, 0xD0, 0x21, 0xBD, // ......!.
/* 3260 */ 0x2E, 0x44, 0x7C, 0xE9, 0x36, 0x4C, 0x02, 0x8F, // .D|.6L..
/* 3268 */ 0x9D, 0xA1, 0x71, 0x68, 0xEC, 0x30, 0x3C, 0x46, // ..qh.0<F
/* 3270 */ 0x0F, 0xE2, 0xD9, 0xC1, 0x27, 0x70, 0x36, 0xA1, // ....'p6.
/* 3278 */ 0x73, 0x2D, 0xF7, 0xB2, 0xA0, 0xD3, 0x4C, 0xD4, // s-....L.
/* 3280 */ 0x18, 0xCD, 0x9D, 0x62, 0x10, 0x43, 0x07, 0x07, // ...b.C..
/* 3288 */ 0x98, 0x35, 0xDF, 0x22, 0xC8, 0x80, 0x8D, 0xC5, // .5."....
/* 3290 */ 0x66, 0x1C, 0x23, 0x54, 0x8C, 0xC7, 0x90, 0x47, // f.#T...G
/* 3298 */ 0x64, 0x1C, 0xF6, 0xC9, 0xC4, 0x3F, 0x47, 0x5F, // d....?G_
/* 32A0 */ 0x03, 0x3C, 0x36, 0x43, 0x9D, 0x50, 0xE4, 0x97, // .<6C.P..
/* 32A8 */ 0x27, 0x1F, 0xBF, 0xD9, 0x60, 0xF8, 0x19, 0xC3, // '...`...
/* 32B0 */ 0x57, 0x81, 0xB7, 0x19, 0xDF, 0x0D, 0x4C, 0xD0, // W.....L.
/* 32B8 */ 0xFD, 0x35, 0x44, 0x97, 0x87, 0x10, 0xA7, 0x15, // .5D.....
/* 32C0 */ 0xE2, 0xC4, 0x9E, 0x1E, 0x5E, 0x26, 0xDA, 0x82, // ....^&..
/* 32C8 */ 0x10, 0x42, 0x9C, 0x1A, 0x51, 0xA4, 0x0D, 0x44, // .B..Q..D
/* 32D0 */ 0xD6, 0x50, 0x88, 0x42, 0x3C, 0x41, 0x06, 0x8A, // .P.B<A..
/* 32D8 */ 0x72, 0x56, 0x11, 0x22, 0xC7, 0x32, 0x44, 0xD0, // rV.".2D.
/* 32E0 */ 0xF3, 0x89, 0x16, 0x3B, 0x4A, 0x8C, 0xF6, 0x07, // ...;J...
/* 32E8 */ 0xC2, 0x74, 0x1C, 0xD1, 0x59, 0xA4, 0xD1, 0xA0, // .t..Y...
/* 32F0 */ 0x0E, 0x17, 0x3E, 0x17, 0xF8, 0x4C, 0x70, 0x80, // ..>..Lp.
/* 32F8 */ 0x27, 0xE5, 0xA1, 0x05, 0x39, 0xD7, 0x33, 0x7B, // '...9.3{
/* 3300 */ 0xD2, 0x38, 0x39, 0x46, 0xE0, 0xA1, 0xF9, 0x14, // .89F....
/* 3308 */ 0x02, 0xC7, 0x35, 0xA0, 0xAE, 0x06, 0x0F, 0x06, // ..5.....
/* 3310 */ 0xEC, 0xC2, 0x60, 0x38, 0x3E, 0x44, 0xDF, 0xD0, // ..`8>D..
/* 3318 */ 0x3C, 0x81, 0x43, 0x64, 0x80, 0x3E, 0x86, 0xC0, // <.Cd.>..
/* 3320 */ 0x1F, 0x8F, 0x4F, 0x02, 0x3E, 0x4B, 0x98, 0xC0, // ..O.>K..
/* 3328 */ 0xF2, 0x07, 0x81, 0xFA, 0xFF, 0x9F, 0xE6, 0xF9, // ........
/* 3330 */ 0x34, 0x4F, 0xEB, 0x59, 0xC0, 0xE7, 0x84, 0xC3, // 4O.Y....
/* 3338 */ 0x62, 0x62, 0x4F, 0x2D, 0x74, 0x3C, 0xE0, 0x57, // bbO-t<.W
/* 3340 */ 0x7C, 0x3C, 0x10, 0xC2, 0x5B, 0x83, 0xE7, 0xEB, // |<..[...
/* 3348 */ 0xB3, 0x0C, 0x3B, 0xEC, 0xE3, 0x46, 0xE1, 0x31, // ..;..F.1
/* 3350 */ 0x3F, 0x8F, 0x78, 0x38, 0x2C, 0xDC, 0x19, 0x91, // ?.x8,...
/* 3358 */ 0x8A, 0x3A, 0x9B, 0xA0, 0x4E, 0x15, 0x3E, 0x50, // .:..N.>P
/* 3360 */ 0xB0, 0x0B, 0xC1, 0xDB, 0xB9, 0x21, 0x1E, 0x4D, // .....!.M
/* 3368 */ 0xD8, 0xF9, 0xC6, 0x03, 0x83, 0x7F, 0x28, 0xF5, // ......(.
/* 3370 */ 0x69, 0x02, 0x1C, 0x87, 0x08, 0x36, 0x25, 0x8E, // i....6%.
/* 3378 */ 0x52, 0xD7, 0xF1, 0x1F, 0x74, 0x91, 0x87, 0x89, // R...t...
/* 3380 */ 0x06, 0xF6, 0xD9, 0xE2, 0x44, 0x42, 0x06, 0x7E, // ....DB.~
/* 3388 */ 0x44, 0x08, 0x72, 0x9E, 0x0E, 0x38, 0x4E, 0x50, // D.r..8NP
/* 3390 */ 0x9D, 0x07, 0xC0, 0x71, 0x0D, 0xF2, 0x38, 0xC1, // ...q..8.
/* 3398 */ 0x34, 0x27, 0x06, 0x12, 0xEC, 0xA0, 0xD8, 0x44, // 4'.....D
/* 33A0 */ 0x4D, 0xF0, 0xFF, 0x3F, 0x52, 0x70, 0x85, 0x3E, // M..?Rp.>
/* 33A8 */ 0x38, 0xA1, 0xCF, 0x2E, 0xEC, 0xA8, 0x72, 0x76, // 8.....rv
/* 33B0 */ 0xBE, 0x8F, 0xF8, 0xAC, 0xC4, 0x87, 0x0A, 0x2E, // ........
/* 33B8 */ 0x40, 0x0F, 0x15, 0xFE, 0x91, 0x09, 0x37, 0x54, // @.....7T
/* 33C0 */ 0xB8, 0x63, 0x7A, 0x33, 0x39, 0x27, 0xCC, 0x2C, // .cz39'.,
/* 33C8 */ 0x0E, 0xCA, 0x33, 0xF5, 0x99, 0x0E, 0x7C, 0x81, // ..3...|.
/* 33D0 */ 0x87, 0x8A, 0x86, 0x66, 0x27, 0x8C, 0x17, 0x1D, // ...f'...
/* 33D8 */ 0x1F, 0x4B, 0xCE, 0x94, 0x9D, 0x44, 0x3D, 0x52, // .K...D=R
/* 33E0 */ 0xF0, 0x80, 0xFA, 0x68, 0x01, 0x3C, 0xCE, 0x5B, // ...h.<.[
/* 33E8 */ 0x3E, 0x24, 0xD8, 0xE5, 0x40, 0x41, 0x7D, 0x64, // >$..@A}d
/* 33F0 */ 0xF3, 0x40, 0xF9, 0xFF, 0xFF, 0x64, 0xC3, 0x6F, // .@...d.o
/* 33F8 */ 0x1B, 0x3E, 0x08, 0x9D, 0x54, 0xD8, 0x43, 0x8D, // .>..T.C.
/* 3400 */ 0xFA, 0xB6, 0x86, 0x23, 0x18, 0x72, 0xAC, 0xA0, // ...#.r..
/* 3408 */ 0x3A, 0x04, 0x7A, 0xAC, 0xF0, 0x45, 0x1E, 0x99, // :.z..E..
/* 3410 */ 0x40, 0x36, 0x2A, 0x3E, 0x8B, 0xB3, 0xC2, 0x9C, // @6*>....
/* 3418 */ 0x2F, 0xD8, 0x70, 0xC1, 0xF7, 0x78, 0xF1, 0x70, // /.p..x.p
/* 3420 */ 0xF1, 0x67, 0x00, 0x43, 0x9C, 0x49, 0x84, 0x13, // .g.C.I..
/* 3428 */ 0x7A, 0x82, 0xF2, 0x3D, 0xE9, 0xDC, 0x6C, 0x1C, // z..=..l.
/* 3430 */ 0x92, 0x04, 0x1D, 0x2E, 0xA8, 0x8E, 0x64, 0x1E, // ......d.
/* 3438 */ 0x2E, 0xFC, 0x59, 0x3D, 0x9C, 0x80, 0x6B, 0x56, // ..Y=..kV
/* 3440 */ 0x38, 0x9C, 0x28, 0x87, 0xC5, 0xCE, 0x73, 0x46, // 8.(...sF
/* 3448 */ 0x7E, 0x41, 0x79, 0x5C, 0x00, 0xE7, 0x80, 0xF1, // ~Ay\....
/* 3450 */ 0x23, 0xF2, 0xFF, 0x7F, 0x2C, 0x3E, 0xE4, 0xB2, // #...,>..
/* 3458 */ 0xC1, 0xE0, 0x08, 0x46, 0x1D, 0x2F, 0xA8, 0x3C, // ...F./.<
/* 3460 */ 0x8C, 0x17, 0x14, 0xB3, 0x3A, 0x5E, 0x70, 0x4D, // ....:^pM
/* 3468 */ 0x8A, 0x9D, 0xD6, 0xD8, 0x88, 0x31, 0x07, 0x06, // .....1..
/* 3470 */ 0xE0, 0x33, 0x60, 0xCC, 0xB9, 0xD7, 0x03, 0x06, // .3`.....
/* 3478 */ 0xF3, 0x88, 0x3C, 0x60, 0xE0, 0x33, 0x29, 0x0F, // ..<`.3).
/* 3480 */ 0x18, 0xF8, 0xC4, 0x3F, 0xAE, 0x40, 0xF9, 0xFF, // ...?.@..
/* 3488 */ 0x1F, 0x38, 0xF0, 0x07, 0xA0, 0x37, 0x44, 0x4C, // .8...7DL
/* 3490 */ 0xCC, 0x11, 0x83, 0xCA, 0xC4, 0x88, 0x41, 0x71, // ......Aq
/* 3498 */ 0xBD, 0x79, 0xE0, 0x00, 0xF3, 0xB0, 0x30, 0xE3, // .y....0.
/* 34A0 */ 0x05, 0x6B, 0xEC, 0xF3, 0x15, 0x94, 0xF1, 0xB2, // .k......
/* 34A8 */ 0xF9, 0xBC, 0x69, 0xB2, 0x6B, 0x23, 0x3B, 0xBB, // ..i.k#;.
/* 34B0 */ 0x7A, 0xB4, 0xE0, 0x51, 0x71, 0x32, 0x03, 0x42, // z..Qq2.B
/* 34B8 */ 0x73, 0xC2, 0xC0, 0x1C, 0x94, 0xC7, 0x0A, 0xD6, // s.......
/* 34C0 */ 0x83, 0x12, 0x7E, 0x38, 0x3E, 0x4D, 0x9E, 0x2B, // ..~8>M.+
/* 34C8 */ 0x1C, 0x82, 0xFF, 0xFF, 0x93, 0x02, 0xB8, 0x86, // ........
/* 34D0 */ 0xEA, 0x93, 0x02, 0xF0, 0x18, 0x94, 0x21, 0x1E, // ......!.
/* 34D8 */ 0xCE, 0x0E, 0x17, 0xB8, 0x9C, 0xB3, 0x7D, 0x52, // ......}R
/* 34E0 */ 0xC0, 0x9F, 0x47, 0x7D, 0x6D, 0x65, 0xF7, 0x0F, // ..G}me..
/* 34E8 */ 0x36, 0x5A, 0xF0, 0x8D, 0xD4, 0xA3, 0x05, 0x1E, // 6Z......
/* 34F0 */ 0x60, 0x9E, 0x50, 0xF4, 0xF7, 0xA3, 0x37, 0x42, // `.P...7B
/* 34F8 */ 0x1F, 0x94, 0x7D, 0xB3, 0xF3, 0x55, 0x87, 0xC1, // ..}..U..
/* 3500 */ 0x44, 0x7E, 0x4A, 0x02, 0xE7, 0x31, 0x03, 0x3F, // D~J..1.?
/* 3508 */ 0x20, 0x43, 0x1F, 0xC9, 0x6B, 0xAF, 0xCF, 0xA3, // C..k...
/* 3510 */ 0x61, 0xDF, 0x79, 0x7D, 0x59, 0xF4, 0xB1, 0x10, // a.y}Y...
/* 3518 */ 0xDE, 0xFF, 0x7F, 0xB8, 0xF0, 0x6C, 0x1C, 0x0B, // .....l..
/* 3520 */ 0x81, 0xCA, 0xA0, 0xE0, 0x8D, 0x15, 0x7C, 0x82, // ......|.
/* 3528 */ 0x0F, 0xED, 0xA0, 0x40, 0x89, 0xFE, 0x1C, 0x61, // ...@...a
/* 3530 */ 0xAD, 0x10, 0x42, 0x7B, 0x77, 0x66, 0x20, 0x81, // ..B{wf .
/* 3538 */ 0x7C, 0x6C, 0xF7, 0xFD, 0x0F, 0x73, 0x95, 0x37, // |l...s.7
/* 3540 */ 0x5E, 0xB4, 0xA7, 0x64, 0x4F, 0x26, 0x44, 0x02, // ^..dO&D.
/* 3548 */ 0x1F, 0xEB, 0xF0, 0x03, 0xE1, 0xA8, 0xCF, 0xF1, // ........
/* 3550 */ 0x6C, 0x20, 0xAF, 0xF2, 0xC6, 0x3F, 0x2E, 0x1F, // l ...?..
/* 3558 */ 0xB9, 0x8D, 0x70, 0x5C, 0x4F, 0xDA, 0xAF, 0x7F, // ..p\O...
/* 3560 */ 0xD8, 0xE3, 0x3C, 0x2E, 0xD7, 0x3B, 0xC0, 0x27, // ..<..;.'
/* 3568 */ 0x65, 0x1F, 0xA7, 0x24, 0xEB, 0x31, 0x40, 0x61, // e..$.1@a
/* 3570 */ 0x7C, 0x3A, 0x07, 0x5C, 0xFC, 0xFF, 0x4F, 0xE7, // |:.\..O.
/* 3578 */ 0xF0, 0x8F, 0xCC, 0x3E, 0x29, 0x80, 0xE3, 0x38, // ...>)..8
/* 3580 */ 0x00, 0x6B, 0xF6, 0xBE, 0x07, 0x3C, 0x06, 0x84, // .k...<..
/* 3588 */ 0x0A, 0xFE, 0x0E, 0x11, 0xFB, 0x7D, 0xC3, 0xF8, // .....}..
/* 3590 */ 0x11, 0x9E, 0xCB, 0xE1, 0x83, 0x04, 0xED, 0xED, // ........
/* 3598 */ 0x1E, 0xAE, 0x21, 0xC5, 0x78, 0x0E, 0x68, 0xEC, // ..!.x.h.
/* 35A0 */ 0xE8, 0xA2, 0x03, 0xED, 0x13, 0x43, 0x9C, 0x60, // .....C.`
/* 35A8 */ 0x51, 0x8E, 0xCB, 0x68, 0xB1, 0xA2, 0x3C, 0x44, // Q..h..<D
/* 35B0 */ 0x1C, 0x53, 0xC0, 0x43, 0x8B, 0x12, 0x2C, 0x46, // .S.C..,F
/* 35B8 */ 0x84, 0x60, 0xAF, 0x0E, 0x91, 0x82, 0x46, 0x79, // .`....Fy
/* 35C0 */ 0x13, 0x37, 0x54, 0xB8, 0xE7, 0x72, 0x16, 0xEE, // .7T..r..
/* 35C8 */ 0x34, 0xA0, 0xE3, 0x86, 0xCF, 0xE5, 0x00, 0x27, // 4......'
/* 35D0 */ 0xFE, 0xFF, 0xE7, 0x72, 0xDC, 0x81, 0x03, 0x77, // ...r...w
/* 35D8 */ 0x10, 0x01, 0xDB, 0x51, 0x01, 0x77, 0x04, 0x01, // ...Q.w..
/* 35E0 */ 0x26, 0xBA, 0x1F, 0xE1, 0x3A, 0x7B, 0x38, 0xE9, // &...:{8.
/* 35E8 */ 0x5A, 0x65, 0x63, 0xAD, 0x26, 0xD0, 0xB9, 0xC3, // Zec.&...
/* 35F0 */ 0x3A, 0x80, 0x34, 0x1D, 0x0E, 0xF2, 0xE0, 0xE6, // :.4.....
/* 35F8 */ 0x8B, 0x8A, 0x07, 0x11, 0xE3, 0x7D, 0x99, 0x8F, // .....}..
/* 3600 */ 0xE0, 0x49, 0xC2, 0xA9, 0x8F, 0x0B, 0x3A, 0xB9, // .I....:.
/* 3608 */ 0x7B, 0xEC, 0xCE, 0x4B, 0xA2, 0xCC, 0x63, 0xA2, // {..K..c.
/* 3610 */ 0x43, 0x70, 0xCA, 0x03, 0x3C, 0x05, 0x31, 0xA0, // Cp..<.1.
/* 3618 */ 0x23, 0x1C, 0xD0, 0xD1, 0xE7, 0x34, 0x1F, 0xEB, // #....4..
/* 3620 */ 0x31, 0xC3, 0x7A, 0x65, 0x60, 0x73, 0xF4, 0x65, // 1.ze`s.e
/* 3628 */ 0x80, 0x4F, 0xCB, 0xC7, 0x03, 0x03, 0x5B, 0xCD, // .O....[.
/* 3630 */ 0x25, 0x08, 0x05, 0xE6, 0x2B, 0x37, 0x3F, 0x88, // %...+7?.
/* 3638 */ 0x83, 0x4D, 0xDF, 0x81, 0x00, 0x14, 0x40, 0x9E, // .M....@.
/* 3640 */ 0xBF, 0xCF, 0x38, 0xCF, 0x00, 0x6C, 0x0A, 0x8F, // ..8..l..
/* 3648 */ 0x39, 0x46, 0x33, 0x3A, 0xBF, 0x71, 0x79, 0xA6, // 9F3:.qy.
/* 3650 */ 0x3C, 0xEC, 0x4C, 0x29, 0x88, 0x67, 0xEA, 0x20, // <.L).g.
/* 3658 */ 0x37, 0x7B, 0x08, 0xFF, 0x7F, 0x82, 0xA3, 0xC7, // 7{......
/* 3660 */ 0x5E, 0x4B, 0xD8, 0x6D, 0x03, 0xCE, 0x98, 0x23, // ^K.m...#
/* 3668 */ 0x3E, 0x16, 0x78, 0x1A, 0x86, 0xF3, 0x60, 0x39, // >.x...`9
/* 3670 */ 0x9C, 0x07, 0xCB, 0xC7, 0xE2, 0xC9, 0x82, 0xEB, // ........
/* 3678 */ 0x02, 0x85, 0x9B, 0x2C, 0x18, 0xE1, 0x31, 0xC1, // ...,..1.
/* 3680 */ 0x06, 0x45, 0xC7, 0xE3, 0x61, 0xF1, 0xB3, 0x81, // .E..a...
/* 3688 */ 0x2F, 0x3C, 0x0C, 0xFB, 0xC9, 0xC1, 0xA2, 0xEF, // /<......
/* 3690 */ 0x08, 0xE4, 0x9E, 0xC5, 0x86, 0xC6, 0x07, 0xCA, // ........
/* 3698 */ 0x61, 0x8D, 0x16, 0xF6, 0x25, 0xE7, 0x9D, 0xC3, // a...%...
/* 36A0 */ 0x07, 0x16, 0xDF, 0xDE, 0x18, 0xAC, 0xAF, 0xC7, // ........
/* 36A8 */ 0xE0, 0xBA, 0x53, 0xB0, 0xAF, 0xC5, 0x7B, 0x05, // ..S...{.
/* 36B0 */ 0x3B, 0xE6, 0xF9, 0x9E, 0xE7, 0x8B, 0x00, 0xEE, // ;.......
/* 36B8 */ 0x87, 0xC1, 0xC4, 0x5F, 0x32, 0xD0, 0xD1, 0x16, // ..._2...
/* 36C0 */ 0xA5, 0x4B, 0x06, 0xC7, 0x7D, 0xC9, 0x80, 0x19, // .K..}...
/* 36C8 */ 0xE4, 0x92, 0x41, 0x21, 0x1C, 0x81, 0x42, 0x01, // ..A!..B.
/* 36D0 */ 0x20, 0x74, 0x56, 0xE0, 0x92, 0xE1, 0x28, 0x88, // tV...(.
/* 36D8 */ 0x47, 0xEC, 0x18, 0x67, 0x05, 0xF4, 0xC5, 0xC5, // G..g....
/* 36E0 */ 0x97, 0x0C, 0xCC, 0x51, 0x81, 0xFF, 0xFF, 0x8F, // ...Q....
/* 36E8 */ 0x0A, 0x30, 0x4E, 0x19, 0xEC, 0xA8, 0x00, 0xFB, // .0N.....
/* 36F0 */ 0x9A, 0x01, 0xBE, 0xE3, 0x04, 0xB8, 0x07, 0x05, // ........
/* 36F8 */ 0x8E, 0xE3, 0x04, 0xE0, 0xE9, 0x44, 0xE2, 0xE3, // .....D..
/* 3700 */ 0x04, 0x70, 0x3A, 0x3D, 0xB0, 0xE3, 0x04, 0x18, // .p:=....
/* 3708 */ 0x64, 0xFC, 0xB8, 0x74, 0x9C, 0xE0, 0xF7, 0x26, // d..t...&
/* 3710 */ 0x0B, 0x74, 0xF0, 0xFF, 0xBF, 0x02, 0xC1, 0xC0, // .t......
/* 3718 */ 0x39, 0x5B, 0x2B, 0x44, 0x21, 0xF3, 0xE8, 0xFD, // 9[+D!...
/* 3720 */ 0x0E, 0x47, 0x66, 0xFD, 0x6E, 0xE9, 0xEB, 0xA1, // .Gf.n...
/* 3728 */ 0x07, 0x2F, 0x68, 0x9D, 0x28, 0xB8, 0x84, 0xD5, // ./h.(...
/* 3730 */ 0x1A, 0x42, 0x27, 0x0A, 0x1E, 0x79, 0xA1, 0x02, // .B'..y..
/* 3738 */ 0x33, 0x88, 0x2D, 0x1C, 0x33, 0x7C, 0xAF, 0x44, // 3.-.3|.D
/* 3740 */ 0x8F, 0xC6, 0xD3, 0x3A, 0xA8, 0x93, 0x78, 0xB6, // ...:..x.
/* 3748 */ 0xF2, 0x58, 0x3D, 0x17, 0xF8, 0x04, 0x87, 0xFA, // .X=.....
/* 3750 */ 0x50, 0x03, 0xE6, 0x9B, 0x24, 0x38, 0xCF, 0x16, // P...$8..
/* 3758 */ 0x1E, 0x1D, 0xEE, 0xF8, 0xE1, 0x9B, 0x99, 0xA7, // ........
/* 3760 */ 0x75, 0x4A, 0x1E, 0x14, 0xD8, 0xC7, 0xED, 0x41, // uJ.....A
/* 3768 */ 0x81, 0x2F, 0xD6, 0xA0, 0xD0, 0xF7, 0x53, 0x1F, // ./....S.
/* 3770 */ 0xFC, 0xD9, 0xF8, 0x81, 0xC3, 0xFF, 0x7F, 0x6C, // .......l
/* 3778 */ 0x30, 0xCF, 0x16, 0x1E, 0x1B, 0xB0, 0x38, 0xE3, // 0.....8.
/* 3780 */ 0x7B, 0x6C, 0xC0, 0x0E, 0xCA, 0x63, 0x03, 0xDF, // {l...c..
/* 3788 */ 0x89, 0x05, 0x78, 0x84, 0x3B, 0xB1, 0x80, 0x0E, // ..x.;...
/* 3790 */ 0x96, 0x9F, 0x58, 0xC0, 0x73, 0x21, 0x05, 0xCF, // ..X.s!..
/* 3798 */ 0x79, 0x0A, 0x7F, 0x19, 0xE0, 0x28, 0xBE, 0x0C, // y....(..
/* 37A0 */ 0x40, 0x3A, 0x51, 0x91, 0xFF, 0xFF, 0xC9, 0x03, // @:Q.....
/* 37A8 */ 0x23, 0xED, 0x44, 0x05, 0xE5, 0x76, 0x00, 0x5F, // #.D..v._
/* 37B0 */ 0xC2, 0xA1, 0x0A, 0x75, 0x9B, 0xF7, 0x79, 0x0E, // ...u..y.
/* 37B8 */ 0xFE, 0x31, 0x04, 0x7F, 0x2A, 0x67, 0xD7, 0x82, // .1..*g..
/* 37C0 */ 0x97, 0x2A, 0x1F, 0x18, 0xE0, 0x1D, 0xAA, 0xC0, // .*......
/* 37C8 */ 0x73, 0x60, 0x80, 0x3F, 0xCC, 0xA7, 0x65, 0x03, // s`.?..e.
/* 37D0 */ 0x3D, 0x30, 0x00, 0xFF, 0x2B, 0xAD, 0x0F, 0x0C, // =0..+...
/* 37D8 */ 0xC0, 0xE9, 0xC4, 0x84, 0x3F, 0x30, 0xC0, 0x3F, // ....?0.?
/* 37E0 */ 0x33, 0xB1, 0xFF, 0xFF, 0x99, 0x09, 0xF6, 0x4C, // 3......L
/* 37E8 */ 0x4E, 0x36, 0x94, 0xCF, 0x4C, 0xC0, 0x72, 0x30, // N6..L.r0
/* 37F0 */ 0x60, 0x38, 0x33, 0x01, 0xCC, 0x18, 0x3F, 0x78, // `83...?x
/* 37F8 */ 0xFF, 0xFF, 0x67, 0x26, 0xE0, 0x3C, 0x36, 0x60, // ..g&.<6`
/* 3800 */ 0x77, 0x66, 0x02, 0x5C, 0x1D, 0x3B, 0x7C, 0x66, // wf.\.;|f
/* 3808 */ 0x02, 0x8E, 0x87, 0x01, 0x7E, 0x66, 0x81, 0xF1, // ....~f..
/* 3810 */ 0xFF, 0x3F, 0x22, 0xD1, 0x33, 0x13, 0x28, 0x4E, // .?".3.(N
/* 3818 */ 0x07, 0xF0, 0xCF, 0x4C, 0x00, 0x07, 0xE2, 0x1D, // ...L....
/* 3820 */ 0x18, 0x40, 0x77, 0x76, 0xF7, 0x81, 0x01, 0x5C, // .@wv...\
/* 3828 */ 0x37, 0xFF, 0x67, 0x26, 0xB0, 0x1E, 0x18, 0x60, // 7.g&...`
/* 3830 */ 0xFE, 0xFF, 0x8F, 0x1C, 0x8C, 0xC0, 0x62, 0x5F, // ......b_
/* 3838 */ 0xF8, 0x26, 0xD0, 0x29, 0xDA, 0xF2, 0x60, 0x50, // .&.)..`P
/* 3840 */ 0x23, 0xF3, 0x91, 0x00, 0x3F, 0xC8, 0x63, 0x3C, // #...?.c<
/* 3848 */ 0xB4, 0xA3, 0x62, 0x07, 0x6C, 0xC3, 0xF1, 0xF1, // ..b.l...
/* 3850 */ 0x7B, 0x54, 0xCD, 0x8F, 0x42, 0x67, 0x84, 0xE3, // {T..Bg..
/* 3858 */ 0xF0, 0x70, 0x42, 0x32, 0x69, 0xC3, 0x43, 0x49, // .pB2i.CI
/* 3860 */ 0x81, 0xD0, 0x8C, 0x0E, 0xE8, 0x90, 0x5E, 0x16, // ......^.
/* 3868 */ 0x22, 0xBE, 0x53, 0x1B, 0x26, 0x81, 0x47, 0xCE, // ".S.&.G.
/* 3870 */ 0xD0, 0x38, 0x34, 0x76, 0x18, 0x1E, 0x5C, 0xB0, // .84v..\.
/* 3878 */ 0x83, 0x78, 0x72, 0xF0, 0x01, 0x9B, 0x4D, 0xE8, // .xr...M.
/* 3880 */ 0x4C, 0x0F, 0xFA, 0x55, 0xE1, 0x21, 0x26, 0x6A, // L..U.!&j
/* 3888 */ 0x8C, 0xE6, 0xA0, 0xC8, 0xD0, 0x3D, 0x70, 0x70, // .....=pp
/* 3890 */ 0x80, 0x59, 0xF3, 0x78, 0xC9, 0xF9, 0xC2, 0x58, // .Y.x...X
/* 3898 */ 0x6C, 0xDC, 0x31, 0x42, 0xC5, 0x78, 0x33, 0xF0, // l.1B.x3.
/* 38A0 */ 0xD1, 0xDB, 0xD0, 0x87, 0xF8, 0x0A, 0xCC, 0x47, // .......G
/* 38A8 */ 0x13, 0xF2, 0x71, 0xC9, 0x47, 0x6B, 0x3E, 0x12, // ..q.Gk>.
/* 38B0 */ 0x7E, 0xBC, 0xB0, 0xE7, 0x3B, 0x0C, 0x99, 0x8E, // ~...;...
/* 38B8 */ 0x09, 0xBA, 0xBF, 0x44, 0xC8, 0x1B, 0x8C, 0x06, // ...D....
/* 38C0 */ 0x15, 0xA1, 0xB1, 0x61, 0x49, 0xB1, 0x00, 0x5B, // ...aI..[
/* 38C8 */ 0x48, 0x04, 0xE7, 0x88, 0xA2, 0x04, 0x8A, 0x72, // H......r
/* 38D0 */ 0x38, 0x46, 0x09, 0x16, 0x23, 0x54, 0xB4, 0x28, // 8F..#T.(
/* 38D8 */ 0xAD, 0x1D, 0xAA, 0x85, 0x10, 0x2B, 0xC4, 0x69, // .....+.i
/* 38E0 */ 0x86, 0x0C, 0xF6, 0x50, 0x11, 0x2D, 0xC8, 0x09, // ...P.-..
/* 38E8 */ 0xB4, 0x7F, 0x88, 0x60, 0x2B, 0xD4, 0x10, 0x1D, // ...`+...
/* 38F0 */ 0x69, 0x34, 0xA8, 0x73, 0x85, 0x0F, 0x05, 0x3E, // i4.s...>
/* 38F8 */ 0x10, 0x1C, 0xDD, 0x51, 0x19, 0x3C, 0x48, 0xE4, // ...Q.<H.
/* 3900 */ 0x13, 0x78, 0xC8, 0x78, 0x1A, 0xF0, 0xB8, 0xD9, // .x.x....
/* 3908 */ 0xD4, 0x7C, 0x00, 0x81, 0xE3, 0x1A, 0x50, 0xB3, // .|....P.
/* 3910 */ 0x7C, 0x2A, 0x60, 0x7F, 0x15, 0xC3, 0xFD, 0xFF, // |*`.....
/* 3918 */ 0x0F, 0x11, 0x73, 0x23, 0xF3, 0x04, 0x0E, 0x91, // ..s#....
/* 3920 */ 0x01, 0xFA, 0x04, 0x02, 0x7F, 0x3C, 0x3E, 0x06, // .....<>.
/* 3928 */ 0x78, 0x3E, 0x27, 0x9C, 0xC0, 0xF2, 0x07, 0x81, // x>'.....
/* 3930 */ 0x3A, 0xA9, 0xF3, 0xAB, 0xC7, 0x69, 0x3D, 0x08, // :....i=.
/* 3938 */ 0xF8, 0x90, 0x70, 0x58, 0xEC, 0x80, 0xE3, 0x03, // ..pX....
/* 3940 */ 0x8B, 0xC7, 0x03, 0xFE, 0xA1, 0x3F, 0x18, 0x44, // .....?.D
/* 3948 */ 0x78, 0x65, 0xF0, 0x7C, 0xFD, 0x8E, 0x61, 0x07, // xe.|..a.
/* 3950 */ 0x79, 0xDC, 0x40, 0x7C, 0x32, 0x31, 0xC4, 0xD3, // y.@|21..
/* 3958 */ 0xC9, 0x0B, 0x82, 0x31, 0x4E, 0x29, 0xF4, 0x21, // ...1N).!
/* 3960 */ 0x3D, 0x22, 0x78, 0x50, 0x27, 0x6C, 0x82, 0x31, // ="xP'l.1
/* 3968 */ 0xCF, 0x84, 0xF4, 0x58, 0xE5, 0xB3, 0x09, 0x3F, // ...X...?
/* 3970 */ 0x57, 0xF8, 0x48, 0xC1, 0x2E, 0x0E, 0xAF, 0xDF, // W.H.....
/* 3978 */ 0x86, 0x78, 0x34, 0x61, 0xE7, 0x1B, 0x8F, 0x0E, // .x4a....
/* 3980 */ 0xFE, 0xD9, 0x1C, 0x3C, 0x07, 0x09, 0x38, 0xF3, // ...<..8.
/* 3988 */ 0xC2, 0xEA, 0x1A, 0x01, 0x39, 0xE4, 0x83, 0x4B, // ....9..K
/* 3990 */ 0xCE, 0xC2, 0xA4, 0x64, 0xC0, 0x28, 0x78, 0x0F, // ...d.(x.
/* 3998 */ 0x18, 0x7B, 0x1D, 0xE3, 0x1A, 0x87, 0x47, 0x8C, // .{....G.
/* 39A0 */ 0x1F, 0x85, 0xC8, 0xF1, 0xC1, 0xFF, 0xFF, 0x31, // .......1
/* 39A8 */ 0xB3, 0xB8, 0x63, 0x06, 0xD5, 0x01, 0x01, 0x1C, // ..c.....
/* 39B0 */ 0x47, 0x1B, 0xF0, 0x8C, 0x19, 0xCE, 0xD4, 0x18, // G.......
/* 39B8 */ 0xC8, 0xA9, 0xC1, 0x18, 0x36, 0x3B, 0xA7, 0x81, // ....6;..
/* 39C0 */ 0xE7, 0x40, 0x52, 0x1B, 0x24, 0x19, 0x37, 0x38, // .@R.$.78
/* 39C8 */ 0x2E, 0x80, 0x6C, 0xDC, 0xC0, 0x00, 0xD0, 0xE3, // ..l.....
/* 39D0 */ 0x06, 0x76, 0x53, 0xF3, 0xB8, 0x81, 0x89, 0x2C, // .vS....,
/* 39D8 */ 0x03, 0xFF, 0xFF, 0x71, 0x63, 0x4F, 0x43, 0x1E, // ...qcOC.
/* 39E0 */ 0x37, 0xF6, 0xEA, 0xC3, 0x06, 0x18, 0xFD, 0xBD, // 7.......
/* 39E8 */ 0xE2, 0x8D, 0xCD, 0x23, 0x87, 0x15, 0x79, 0xE4, // ...#..y.
/* 39F0 */ 0xA0, 0x02, 0xF5, 0xC8, 0xE1, 0x1F, 0x91, 0xC0, // ........
/* 39F8 */ 0x33, 0x72, 0x38, 0x93, 0xC3, 0x8E, 0x1D, 0x98, // 3r8.....
/* 3A00 */ 0x48, 0x1A, 0x3B, 0x7A, 0x00, 0x1E, 0x3B, 0x76, // H.;z..;v
/* 3A08 */ 0x2A, 0x30, 0xEE, 0x7F, 0x3E, 0x5D, 0xF1, 0x9B, // *0..>]..
/* 3A10 */ 0x96, 0x03, 0x0F, 0x1D, 0x54, 0xE7, 0x46, 0x0F, // ....T.F.
/* 3A18 */ 0x1D, 0xBE, 0xE0, 0xA1, 0x83, 0x7A, 0x6E, 0xEC, // .....zn.
/* 3A20 */ 0xFF, 0x3F, 0x37, 0x1C, 0xD4, 0xB9, 0xE1, 0x66, // .?7....f
/* 3A28 */ 0xEE, 0x91, 0x83, 0x4F, 0xD0, 0x91, 0x08, 0x7D, // ...O...}
/* 3A30 */ 0x5A, 0x65, 0x23, 0xC7, 0x5D, 0x98, 0xC2, 0x3C, // Ze#.]..<
/* 3A38 */ 0x41, 0xFA, 0x6E, 0x15, 0xFE, 0xA4, 0xDE, 0x76, // A.n....v
/* 3A40 */ 0x4E, 0xC5, 0x93, 0x7B, 0x82, 0x00, 0xDF, 0xA9, // N..{....
/* 3A48 */ 0xCE, 0xE3, 0x86, 0x7F, 0x14, 0x3C, 0x6E, 0x30, // .....<n0
/* 3A50 */ 0x0F, 0xF9, 0xBC, 0x42, 0x46, 0x88, 0xE5, 0x13, // ...BF...
/* 3A58 */ 0x84, 0x67, 0xC7, 0x40, 0xCE, 0x0E, 0x7B, 0x34, // .g.@..{4
/* 3A60 */ 0x02, 0xA3, 0xBC, 0x13, 0x04, 0x1A, 0xCA, 0x03, // ........
/* 3A68 */ 0xC7, 0x5E, 0xBA, 0x7D, 0x0D, 0xF3, 0x74, 0xCE, // .^.}..t.
/* 3A70 */ 0xD6, 0xEA, 0xA7, 0xA2, 0xD3, 0x08, 0xBC, 0xE0, // ........
/* 3A78 */ 0x83, 0x07, 0x95, 0x87, 0xC1, 0x43, 0xFC, 0xFF, // .....C..
/* 3A80 */ 0x0F, 0x1E, 0x73, 0x1A, 0xF5, 0xE0, 0xC1, 0x3B, // ..s....;
/* 3A88 */ 0x3B, 0x18, 0x47, 0x12, 0x4F, 0x88, 0x5D, 0x48, // ;.G.O.]H
/* 3A90 */ 0xE0, 0x9D, 0x23, 0xC0, 0x27, 0xEA, 0x88, 0x04, // ..#.'...
/* 3A98 */ 0x82, 0xF1, 0xC3, 0xC1, 0x79, 0x42, 0xB5, 0x4B, // ....yB.K
/* 3AA0 */ 0x58, 0x85, 0x1E, 0x3C, 0xA8, 0x86, 0xE5, 0x83, // X..<....
/* 3AA8 */ 0x04, 0x70, 0x1B, 0x3C, 0xEC, 0xD1, 0xF1, 0xA3, // .p.<....
/* 3AB0 */ 0x0D, 0xB0, 0x18, 0x3A, 0xEC, 0xFF, 0xFF, 0xD0, // ...:....
/* 3AB8 */ 0xB1, 0x47, 0x12, 0xF0, 0x99, 0x38, 0x23, 0x01, // .G...8#.
/* 3AC0 */ 0xBD, 0xA1, 0x83, 0xE3, 0x0C, 0x01, 0x4E, 0x71, // ......Nq
/* 3AC8 */ 0xC7, 0x2D, 0x10, 0x8C, 0x1C, 0xD6, 0x61, 0x39, // .-....a9
/* 3AD0 */ 0xD8, 0x01, 0x45, 0x61, 0x87, 0x45, 0x9F, 0x48, // ..Ea.E.H
/* 3AD8 */ 0xC0, 0xA5, 0xE2, 0x44, 0x02, 0xE4, 0xC7, 0x87, // ...D....
/* 3AE0 */ 0x3F, 0x47, 0xF0, 0xFF, 0xFF, 0x89, 0x04, 0x58, // ?G.....X
/* 3AE8 */ 0x9E, 0xBE, 0x7D, 0xF5, 0xF6, 0x89, 0x04, 0x5C, // ..}....\
/* 3AF0 */ 0x43, 0xF7, 0x89, 0x04, 0xB8, 0x8F, 0x8E, 0x0D, // C.......
/* 3AF8 */ 0x1D, 0xD8, 0x62, 0x9D, 0xF2, 0x1B, 0x89, 0x87, // ..b.....
/* 3B00 */ 0x0E, 0xAE, 0x61, 0x7B, 0xE8, 0x60, 0xFE, 0xFF, // ..a{.`..
/* 3B08 */ 0x9F, 0x48, 0x80, 0xC3, 0xE8, 0x3C, 0x74, 0x60, // .H...<t`
/* 3B10 */ 0x7B, 0x89, 0x7A, 0x2E, 0x38, 0x9B, 0x43, 0x07, // {.z.8.C.
/* 3B18 */ 0x9B, 0x8D, 0xA1, 0x03, 0xFD, 0xD1, 0xB1, 0xA3, // ........
/* 3B20 */ 0x29, 0xB0, 0x38, 0x4F, 0xC2, 0x38, 0x8E, 0xC0, // ).8O.8..
/* 3B28 */ 0x83, 0x3C, 0x9C, 0xE3, 0x48, 0xE0, 0xB1, 0xC3, // .<..H...
/* 3B30 */ 0xFA, 0xFF, 0x8F, 0x1D, 0x96, 0x8E, 0xF3, 0x08, // ........
/* 3B38 */ 0x20, 0x60, 0x78, 0xEC, 0xE8, 0x06, 0x5C, 0x47, // `x...\G
/* 3B40 */ 0x73, 0x32, 0xD1, 0x0E, 0x1D, 0x6C, 0x3E, 0x86, // s2...l>.
/* 3B48 */ 0x0E, 0x08, 0x18, 0x9D, 0xCF, 0x23, 0xE0, 0xFE, // .....#..
/* 3B50 */ 0xFF, 0x0F, 0x1D, 0x9C, 0x08, 0x47, 0x74, 0xE8, // .....Gt.
/* 3B58 */ 0x60, 0x1B, 0x94, 0x87, 0x0E, 0xEC, 0x47, 0xE7, // `.....G.
/* 3B60 */ 0xA1, 0x03, 0xDF, 0x51, 0x3C, 0xB9, 0x79, 0xE8, // ...Q<.y.
/* 3B68 */ 0xE0, 0x3A, 0xFF, 0x7A, 0xE8, 0xC0, 0xF6, 0xFF, // .:.z....
/* 3B70 */ 0x3F, 0x74, 0xFC, 0xE8, 0x3C, 0x74, 0x60, 0x3B, // ?t..<t`;
/* 3B78 */ 0xE4, 0xA3, 0x38, 0x9C, 0x43, 0x07, 0xDB, 0x50, // ..8.C..P
/* 3B80 */ 0x3C, 0x74, 0xE0, 0x3E, 0x3A, 0x76, 0x46, 0x02, // <t.>:vF.
/* 3B88 */ 0xAE, 0xD7, 0xE9, 0x80, 0x81, 0xCE, 0x33, 0xCC, // ......3.
/* 3B90 */ 0x33, 0x12, 0xF8, 0x9C, 0x8C, 0x1D, 0xF2, 0xFF, // 3.......
/* 3B98 */ 0x7F, 0xEC, 0xC0, 0x6F, 0x78, 0x98, 0x33, 0x12, // ...ox.3.
/* 3BA0 */ 0x38, 0xCF, 0xB8, 0x60, 0xD5, 0x3A, 0x20, 0x5D, // 8..`.: ]
/* 3BA8 */ 0x6C, 0x7C, 0xC6, 0x05, 0x1B, 0x98, 0xCF, 0xB8, // l|......
/* 3BB0 */ 0xC0, 0x7C, 0x74, 0x6C, 0xE4, 0xE0, 0x3C, 0xC9, // .|tl..<.
/* 3BB8 */ 0x18, 0x18, 0x37, 0x74, 0x8F, 0xF8, 0xB4, 0x7D, // ..7t...}
/* 3BC0 */ 0x2B, 0x7C, 0xC1, 0xF4, 0x71, 0xD4, 0x28, 0xD1, // +|..q.(.
/* 3BC8 */ 0x5F, 0x09, 0x0E, 0xE9, 0x4C, 0x42, 0x44, 0x7B, // _...LBD{
/* 3BD0 */ 0x01, 0x60, 0x28, 0x2F, 0x18, 0x47, 0xF1, 0xFF, // .`(/.G..
/* 3BD8 */ 0x7F, 0x04, 0xE0, 0xE3, 0x09, 0x7B, 0x24, 0x21, // .....{$!
/* 3BE0 */ 0x12, 0x14, 0x39, 0x52, 0xF4, 0x20, 0xF8, 0x00, // ..9R. ..
/* 3BE8 */ 0xE2, 0x45, 0xF7, 0x20, 0x4E, 0x26, 0x4A, 0xE8, // .E. N&J.
/* 3BF0 */ 0x63, 0xF2, 0x40, 0xCF, 0x31, 0xC2, 0x31, 0x95, // c.@.1.1.
/* 3BF8 */ 0x7B, 0x51, 0x20, 0x9A, 0xA7, 0xA8, 0x79, 0x95, // {Q ...y.
/* 3C00 */ 0x0D, 0x24, 0x02, 0x8F, 0x80, 0x67, 0x7B, 0xEE, // .$...g{.
/* 3C08 */ 0x9A, 0x40, 0xF2, 0xCF, 0x08, 0x92, 0xF7, 0x22, // .@....."
/* 3C10 */ 0xA0, 0x30, 0xD6, 0x00, 0x22, 0x39, 0x87, 0x01, // .0.."9..
/* 3C18 */ 0x14, 0xB0, 0x8F, 0x05, 0x27, 0xF2, 0x6E, 0xE7, // ....'.n.
/* 3C20 */ 0xB3, 0x80, 0x25, 0xC1, 0xA1, 0x86, 0xE9, 0x89, // ..%.....
/* 3C28 */ 0x3D, 0x03, 0x1C, 0xEE, 0x89, 0x9C, 0xBF, 0x2F, // =....../
/* 3C30 */ 0x03, 0x21, 0xD9, 0xF1, 0xD8, 0x43, 0xE1, 0x07, // .!...C..
/* 3C38 */ 0x04, 0x4F, 0xEB, 0xA4, 0xAC, 0x1D, 0x51, 0x83, // .O....Q.
/* 3C40 */ 0x32, 0x4C, 0x02, 0x9F, 0x15, 0x18, 0x1A, 0x87, // 2L......
/* 3C48 */ 0xC6, 0x0E, 0xC3, 0xE3, 0x0E, 0x76, 0x10, 0x87, // .....v..
/* 3C50 */ 0x71, 0x78, 0xCF, 0x21, 0x6C, 0x42, 0x27, 0x7A, // qx.!lB'z
/* 3C58 */ 0x90, 0x6F, 0x04, 0xC5, 0xA3, 0x0A, 0xA3, 0x39, // .o.....9
/* 3C60 */ 0x28, 0x22, 0xF8, 0xB8, 0x00, 0x9A, 0xA3, 0x00, // ("......
/* 3C68 */ 0x5C, 0x1C, 0x5F, 0x04, 0xDE, 0x03, 0x02, 0xC5, // \._.....
/* 3C70 */ 0x7F, 0x58, 0x08, 0x7F, 0x30, 0x47, 0x73, 0x04, // .X..0Gs.
/* 3C78 */ 0x11, 0x12, 0x18, 0xE6, 0x40, 0x30, 0xC7, 0x09, // ....@0..
/* 3C80 */ 0x7B, 0xBE, 0x29, 0x90, 0xE3, 0x04, 0x73, 0x3F, // {.)...s?
/* 3C88 */ 0x23, 0x39, 0x3B, 0x2B, 0x08, 0xA3, 0xB7, 0x8B, // #9;+....
/* 3C90 */ 0x80, 0xC0, 0x4F, 0xA7, 0x2D, 0x18, 0xC1, 0x15, // ..O.-...
/* 3C98 */ 0x87, 0x25, 0x94, 0x23, 0x8B, 0xF6, 0xCA, 0x50, // .%.#...P
/* 3CA0 */ 0x19, 0x8A, 0x80, 0x0E, 0x22, 0x4C, 0x3C, 0x43, // ...."L<C
/* 3CA8 */ 0x45, 0x09, 0xF1, 0x50, 0x60, 0xD0, 0x20, 0xF1, // E..P`. .
/* 3CB0 */ 0x5A, 0xBB, 0x61, 0x90, 0x29, 0xB6, 0x3F, 0x08, // Z.a.).?.
/* 3CB8 */ 0x12, 0xF0, 0x3C, 0xA0, 0x53, 0x87, 0x23, 0x8D, // ..<.S.#.
/* 3CC0 */ 0x86, 0xFC, 0xFF, 0xCF, 0x21, 0x98, 0x33, 0x81, // ....!.3.
/* 3CC8 */ 0xCF, 0x03, 0x67, 0xF8, 0x64, 0x61, 0xDC, 0x20, // ..g.da.
/* 3CD0 */ 0xA7, 0xE2, 0x31, 0x3E, 0x0C, 0x78, 0xD8, 0xEC, // ..1>.x..
/* 3CD8 */ 0x96, 0xE0, 0xFF, 0x81, 0x4F, 0x07, 0x78, 0xD7, // ....O.x.
/* 3CE0 */ 0x80, 0xBA, 0x16, 0x3C, 0x14, 0xB0, 0x03, 0x08, // ...<....
/* 3CE8 */ 0xFC, 0x73, 0x06, 0xFC, 0xF1, 0xF8, 0x14, 0xE0, // .s......
/* 3CF0 */ 0xF9, 0x9C, 0xF0, 0xA3, 0x03, 0x19, 0x04, 0x6A, // .......j
/* 3CF8 */ 0x64, 0x86, 0xF6, 0x79, 0xE2, 0xB4, 0x5E, 0x06, // d..y..^.
/* 3D00 */ 0x7C, 0x46, 0x38, 0x2C, 0x26, 0x16, 0x42, 0x0A, // |F8,&.B.
/* 3D08 */ 0xCE, 0x27, 0xA0, 0x18, 0x0F, 0x7C, 0xC5, 0x67, // .'...|.g
/* 3D10 */ 0x0C, 0x72, 0x63, 0xF0, 0x7C, 0x7D, 0x0C, 0x01, // .rc.|}..
/* 3D18 */ 0x06, 0x87, 0x05, 0x1C, 0x81, 0x8F, 0x21, 0xC0, // ......!.
/* 3D20 */ 0x43, 0xB3, 0x87, 0x23, 0x01, 0xCB, 0xBA, 0x5A, // C..#...Z
/* 3D28 */ 0xD9, 0x58, 0xAD, 0x8F, 0x3E, 0x3E, 0x9D, 0x1A, // .X..>>..
/* 3D30 */ 0x48, 0xE7, 0x1E, 0xEE, 0x11, 0x5B, 0xB8, 0xCF, // H....[..
/* 3D38 */ 0x29, 0x7C, 0x1A, 0x2F, 0x09, 0x86, 0x78, 0xA0, // )|./..x.
/* 3D40 */ 0x31, 0xC1, 0xD4, 0x07, 0x06, 0x31, 0x68, 0xF4, // 1....1h.
/* 3D48 */ 0x24, 0xAF, 0x81, 0xFF, 0x3F, 0xC4, 0xCC, 0x63, // $...?..c
/* 3D50 */ 0xA2, 0x43, 0x70, 0x4A, 0x08, 0xC1, 0x19, 0xC4, // .CpJ....
/* 3D58 */ 0x80, 0x8E, 0x70, 0xAA, 0xA3, 0x07, 0x02, 0xFE, // ..p.....
/* 3D60 */ 0x45, 0xF1, 0x31, 0xC7, 0x47, 0x2A, 0x36, 0xAC, // E.1.G*6.
/* 3D68 */ 0x53, 0x62, 0x73, 0xF4, 0x75, 0x80, 0xDF, 0x52, // Sbs.u..R
/* 3D70 */ 0x7C, 0x40, 0x30, 0xB0, 0xD5, 0xDC, 0x86, 0x50, // |@0....P
/* 3D78 */ 0x60, 0x3E, 0x0C, 0x9C, 0x32, 0x3B, 0x71, 0xE9, // `>..2;q.
/* 3D80 */ 0xA4, 0x03, 0x9A, 0x53, 0x46, 0x82, 0xFA, 0x8E, // ...SF...
/* 3D88 */ 0x04, 0xA0, 0x00, 0xF2, 0xFC, 0x7D, 0x3A, 0xF7, // .....}:.
/* 3D90 */ 0x71, 0x80, 0x41, 0x84, 0x89, 0x66, 0x74, 0x1E, // q.A..ft.
/* 3D98 */ 0x7D, 0xA6, 0xA8, 0xB0, 0x33, 0xA5, 0x20, 0x9E, // }...3. .
/* 3DA0 */ 0xA9, 0x83, 0xCC, 0x14, 0x3D, 0x13, 0x8F, 0x1E, // ....=...
/* 3DA8 */ 0x7B, 0x31, 0x61, 0xF7, 0x0D, 0x38, 0x63, 0x8E, // {1a..8c.
/* 3DB0 */ 0xF8, 0x58, 0xE0, 0x69, 0x18, 0xCE, 0x83, 0xE5, // .X.i....
/* 3DB8 */ 0x70, 0x1E, 0x2C, 0x1F, 0x8B, 0x27, 0x0B, 0x2E, // p.,..'..
/* 3DC0 */ 0x81, 0x93, 0x05, 0x39, 0x3C, 0x26, 0xDA, 0xA0, // ...9<&..
/* 3DC8 */ 0xE8, 0x78, 0x3C, 0x2C, 0x7E, 0x36, 0xF0, 0xA5, // .x<,~6..
/* 3DD0 */ 0x87, 0x9D, 0xAC, 0x3C, 0x98, 0xFF, 0xFF, 0xEB, // ...<....
/* 3DD8 */ 0xDA, 0x3B, 0x82, 0x2F, 0x5C, 0x6C, 0x68, 0x7C, // .;./\lh|
/* 3DE0 */ 0xA0, 0x1C, 0xD6, 0x68, 0x61, 0x5F, 0x74, 0xDE, // ...ha_t.
/* 3DE8 */ 0x3A, 0x7C, 0x64, 0xF1, 0xC4, 0x8C, 0x11, 0xD6, // :|d.....
/* 3DF0 */ 0x83, 0xF5, 0x68, 0xDE, 0x7A, 0xC0, 0x72, 0xA7, // ..h.z.r.
/* 3DF8 */ 0x60, 0x5F, 0x8B, 0xB7, 0x2E, 0x38, 0x47, 0x01, // `_...8G.
/* 3E00 */ 0xDC, 0x1B, 0xC3, 0xF2, 0x6F, 0x19, 0xE8, 0x68, // ....o..h
/* 3E08 */ 0xAB, 0xD2, 0x2D, 0x83, 0xC3, 0xBE, 0x65, 0xC0, // ..-...e.
/* 3E10 */ 0x0C, 0x72, 0xCB, 0xA0, 0x10, 0x8E, 0x40, 0xA1, // .r....@.
/* 3E18 */ 0x00, 0x10, 0x3A, 0x2C, 0x70, 0xC9, 0x70, 0x14, // ..:,p.p.
/* 3E20 */ 0xC4, 0x43, 0x76, 0x8C, 0xC3, 0x02, 0xFA, 0xEE, // .Cv.....
/* 3E28 */ 0xE2, 0x5B, 0x06, 0xE6, 0xAC, 0x00, 0xF3, 0x98, // .[......
/* 3E30 */ 0xC1, 0xCE, 0x0A, 0xB0, 0xEF, 0x19, 0xE0, 0x3B, // .......;
/* 3E38 */ 0x4F, 0x80, 0x7B, 0x50, 0xE0, 0x38, 0x4F, 0xC0, // O.{P.8O.
/* 3E40 */ 0xFF, 0xFF, 0x9F, 0x27, 0x00, 0x0F, 0x47, 0x12, // ...'..G.
/* 3E48 */ 0x9F, 0x27, 0x80, 0xD3, 0xE9, 0x81, 0x9D, 0x27, // .'.....'
/* 3E50 */ 0xC0, 0x22, 0xE3, 0x3C, 0x81, 0xE2, 0xB0, 0xC8, // .".<....
/* 3E58 */ 0xF3, 0x04, 0xC4, 0xE3, 0x21, 0xBF, 0xED, 0xB2, // ....!...
/* 3E60 */ 0xE3, 0x04, 0x97, 0x43, 0x21, 0x31, 0xC7, 0x09, // ...C!1..
/* 3E68 */ 0x54, 0x7C, 0x30, 0x0A, 0xE2, 0x81, 0x7A, 0xD4, // T|0...z.
/* 3E70 */ 0x36, 0x32, 0x10, 0x0A, 0xE9, 0xE1, 0xF9, 0x8E, // 62......
/* 3E78 */ 0x89, 0x9B, 0x05, 0x86, 0x60, 0x88, 0xEB, 0x25, // ....`..%
/* 3E80 */ 0x3D, 0x2D, 0x80, 0x6B, 0x08, 0xE1, 0xDF, 0xEE, // =-.k....
/* 3E88 */ 0xDE, 0x35, 0xD9, 0xC1, 0x02, 0x3C, 0xFF, 0xFF, // .5...<..
/* 3E90 */ 0x43, 0x03, 0x1C, 0xAB, 0x40, 0xBA, 0x55, 0x05, // C...@.U.
/* 3E98 */ 0x7A, 0x68, 0x00, 0x2E, 0xC1, 0x0E, 0x0D, 0xA0, // zh......
/* 3EA0 */ 0x83, 0xE5, 0x87, 0x06, 0xF0, 0xDC, 0xCD, 0x70, // .......p
/* 3EA8 */ 0x87, 0x06, 0xF0, 0xDE, 0x49, 0x31, 0x04, 0xE3, // ....I1..
/* 3EB0 */ 0xFC, 0x21, 0x4D, 0x20, 0xF1, 0x0F, 0x04, 0x49, // .!M ...I
/* 3EB8 */ 0x5B, 0x1C, 0x85, 0xF1, 0xED, 0x12, 0x70, 0x05, // [.....p.
/* 3EC0 */ 0x74, 0xD4, 0x60, 0xF8, 0xFF, 0xDF, 0x2E, 0x61, // t.`....a
/* 3EC8 */ 0x40, 0xBC, 0xDD, 0xF9, 0x82, 0xE0, 0xD3, 0x25, // @......%
/* 3ED0 */ 0xDC, 0xCB, 0x25, 0x6C, 0x90, 0xB0, 0x4F, 0x95, // ..%l..O.
/* 3ED8 */ 0x61, 0x5F, 0x20, 0x22, 0x9C, 0xD3, 0x03, 0xE5, // a_ "....
/* 3EE0 */ 0x53, 0xE5, 0xB3, 0x65, 0x1C, 0x63, 0xBD, 0x57, // S..e.c.W
/* 3EE8 */ 0xFA, 0x52, 0xF9, 0x2C, 0x18, 0x27, 0xCA, 0xC3, // .R.,.'..
/* 3EF0 */ 0xA5, 0x4F, 0x70, 0x6F, 0x99, 0x0F, 0x99, 0x9E, // .Opo....
/* 3EF8 */ 0x5C, 0xE0, 0xF3, 0x0A, 0x12, 0x21, 0x66, 0x98, // \....!f.
/* 3F00 */ 0xA0, 0x27, 0x10, 0x39, 0xE6, 0xCB, 0x25, 0x8B, // .'.9..%.
/* 3F08 */ 0x77, 0xB9, 0x04, 0x68, 0x72, 0x44, 0x78, 0xB9, // w..hrDx.
/* 3F10 */ 0x04, 0x1F, 0xC4, 0xFF, 0xFF, 0x59, 0x01, 0xD6, // .....Y..
/* 3F18 */ 0xDD, 0x12, 0x98, 0x48, 0x7D, 0x67, 0x69, 0x08, // ...H}gi.
/* 3F20 */ 0x16, 0x7E, 0x0E, 0x42, 0x1D, 0x0A, 0x1C, 0xEC, // .~.B....
/* 3F28 */ 0x94, 0xA0, 0x63, 0x1B, 0xBB, 0x55, 0xF8, 0xBC, // ..c..U..
/* 3F30 */ 0xE1, 0xFB, 0x81, 0x07, 0xF4, 0x58, 0xF0, 0x5A, // .....X.Z
/* 3F38 */ 0x71, 0xE6, 0x8E, 0x72, 0x0C, 0x42, 0x85, 0xA0, // q..r.B..
/* 3F40 */ 0xD0, 0x29, 0xCD, 0xC7, 0x20, 0x2E, 0x1A, 0x8E, // .).. ...
/* 3F48 */ 0x82, 0xF8, 0xA0, 0xE0, 0x13, 0x18, 0x9C, 0x69, // .......i
/* 3F50 */ 0x1D, 0xC2, 0x19, 0x1D, 0x04, 0xE6, 0x80, 0x08, // ........
/* 3F58 */ 0xEE, 0x53, 0x1A, 0x70, 0x18, 0xEB, 0x41, 0x01, // .S.p..A.
/* 3F60 */ 0x93, 0x53, 0x1A, 0x70, 0xF9, 0xFF, 0x9F, 0x90, // .S.p....
/* 3F68 */ 0xC0, 0x15, 0xEB, 0x10, 0x09, 0xF4, 0x0E, 0x18, // ........
/* 3F70 */ 0xB8, 0x43, 0x24, 0x38, 0xAE, 0x0F, 0x38, 0x9C, // .C$8..8.
/* 3F78 */ 0xE7, 0x00, 0xFE, 0x92, 0xA0, 0x87, 0x09, 0xD4, // ........
/* 3F80 */ 0x88, 0x2C, 0xEC, 0x30, 0x81, 0x18, 0xE5, 0x71, // .,.0...q
/* 3F88 */ 0x07, 0x8D, 0xF0, 0xBC, 0x64, 0x9C, 0xD8, 0x27, // ....d..'
/* 3F90 */ 0xF7, 0x34, 0xE4, 0x39, 0x3D, 0x03, 0x79, 0x84, // .4.9=.y.
/* 3F98 */ 0x6F, 0x8C, 0x5C, 0xC2, 0x81, 0x02, 0x15, 0xFE, // o.\.....
/* 3FA0 */ 0x00, 0x0B, 0x0A, 0x27, 0x87, 0x48, 0xA8, 0x63, // ...'.H.c
/* 3FA8 */ 0x79, 0x9E, 0x00, 0xFB, 0x91, 0x05, 0xFE, 0x59, // y......Y
/* 3FB0 */ 0x81, 0x5F, 0x7E, 0x9E, 0x80, 0x12, 0xF8, 0xB0, // ._~.....
/* 3FB8 */ 0x00, 0xAE, 0xFF, 0xFF, 0x61, 0x01, 0x6E, 0xBC, // ....a.n.
/* 3FC0 */ 0x13, 0x22, 0xD0, 0x3B, 0x58, 0x81, 0xE7, 0xB0, // .".;X...
/* 3FC8 */ 0xC0, 0xCF, 0x06, 0xD8, 0x13, 0x9A, 0x4F, 0x02, // ......O.
/* 3FD0 */ 0xEC, 0x8A, 0x08, 0xE3, 0x80, 0xA0, 0x03, 0x03, // ........
/* 3FD8 */ 0x5A, 0xDA, 0x81, 0x01, 0x31, 0xE3, 0x98, 0x06, // Z...1...
/* 3FE0 */ 0x09, 0x7F, 0x08, 0x27, 0xC0, 0x47, 0xFC, 0x0C, // ...'.G..
/* 3FE8 */ 0x74, 0x2E, 0x47, 0x11, 0x22, 0xD8, 0x6B, 0x93, // t.G.".k.
/* 3FF0 */ 0x87, 0xA5, 0x03, 0x03, 0xEA, 0x80, 0xE8, 0x13, // ........
/* 3FF8 */ 0x83, 0x0F, 0x0C, 0x3C, 0x2E, 0x18, 0x05, 0xF1, // ...<....
/* 4000 */ 0x68, 0x1D, 0xE5, 0xC0, 0x80, 0x3E, 0x2D, 0xB1, // h....>-.
/* 4008 */ 0x49, 0x60, 0x4F, 0x0C, 0x80, 0x97, 0xFF, 0xFF, // I`O.....
/* 4010 */ 0x89, 0x01, 0xF8, 0x1C, 0x0F, 0xC1, 0x77, 0x62, // ......wb
/* 4018 */ 0x00, 0xDF, 0xFD, 0x00, 0x77, 0x61, 0xC0, 0x1D, // ....wa..
/* 4020 */ 0x06, 0x38, 0xB2, 0x2F, 0x89, 0x3E, 0xB1, 0xE0, // .8./.>..
/* 4028 */ 0x0F, 0x00, 0x3E, 0x31, 0xF8, 0x88, 0xCA, 0x87, // ..>1....
/* 4030 */ 0x80, 0x3B, 0x6F, 0x79, 0x08, 0xEC, 0x16, 0x8D, // .;oy....
/* 4038 */ 0x3F, 0xB2, 0x80, 0xF1, 0x8C, 0x0C, 0xDC, 0x8E, // ?.......
/* 4040 */ 0x54, 0xE0, 0x3B, 0x31, 0x80, 0xE3, 0xFF, 0x7F, // T.;1....
/* 4048 */ 0x62, 0x00, 0x47, 0xB8, 0x13, 0x03, 0xE8, 0xCE, // b.G.....
/* 4050 */ 0x86, 0x3E, 0x31, 0x80, 0xEB, 0xD0, 0xE7, 0xF3, // .>1.....
/* 4058 */ 0x29, 0xB8, 0x4E, 0x0C, 0xF0, 0x6E, 0x2C, 0x78, // ).N..n,x
/* 4060 */ 0x59, 0x07, 0x06, 0xD4, 0x05, 0xC0, 0x32, 0x4F, // Y.....2O
/* 4068 */ 0x2C, 0x88, 0xD1, 0x9E, 0x70, 0x90, 0x97, 0xC3, // ,...p...
/* 4070 */ 0xD3, 0x60, 0x87, 0x64, 0x5F, 0xA1, 0x30, 0x27, // .`.d_.0'
/* 4078 */ 0x06, 0x5F, 0x9C, 0x70, 0x40, 0x35, 0x5E, 0x04, // ._.p@5^.
/* 4080 */ 0xC9, 0x30, 0x7C, 0x31, 0xF4, 0xB9, 0x05, 0x18, // .0|1....
/* 4088 */ 0x9C, 0x1A, 0xF0, 0xE7, 0x16, 0xE0, 0xFE, 0xFF, // ........
/* 4090 */ 0x3F, 0x36, 0x80, 0x3B, 0xE6, 0xB1, 0x01, 0x74, // ?6.;...t
/* 4098 */ 0x16, 0x8E, 0x0D, 0xA0, 0x3B, 0xC9, 0xE2, 0x0E, // ....;...
/* 40A0 */ 0x6D, 0x60, 0xBC, 0x21, 0x60, 0x81, 0xDE, 0x10, // m`.!`...
/* 40A8 */ 0xB0, 0x77, 0x07, 0x2C, 0x41, 0x79, 0x67, 0x07, // .w.,Ayg.
/* 40B0 */ 0xD4, 0x79, 0xD3, 0x67, 0x07, 0xDC, 0xBD, 0x01, // .y.g....
/* 40B8 */ 0x7B, 0x9F, 0xF0, 0x04, 0x8E, 0xC0, 0x73, 0xF3, // {.....s.
/* 40C0 */ 0xDD, 0x01, 0x0C, 0x67, 0x38, 0x60, 0x30, 0x89, // ...g8`0.
/* 40C8 */ 0xC7, 0x61, 0x1F, 0x64, 0xD9, 0xD9, 0x01, 0xF8, // .a.d....
/* 40D0 */ 0xFC, 0xFF, 0xCF, 0x0E, 0xC0, 0xF3, 0xD0, 0xE1, // ........
/* 40D8 */ 0xB3, 0x03, 0xB8, 0x8E, 0xE2, 0x3E, 0x3B, 0x80, // .....>;.
/* 40E0 */ 0xEB, 0x38, 0xEC, 0xB3, 0x03, 0x98, 0x4F, 0x09, // .8....O.
/* 40E8 */ 0xD8, 0xF3, 0x03, 0xF8, 0x64, 0x9E, 0x1F, 0xA0, // ....d...
/* 40F0 */ 0x1C, 0xA5, 0xF8, 0xF9, 0x01, 0xF0, 0xF3, 0xFF, // ........
/* 40F8 */ 0x3F, 0x4F, 0x81, 0xEB, 0xFC, 0x00, 0xBC, 0x63, // ?O.....c
/* 4100 */ 0x9F, 0x1F, 0x40, 0xE7, 0xE1, 0xFC, 0x00, 0xBA, // ..@.....
/* 4108 */ 0x18, 0x07, 0x2A, 0xD0, 0x9D, 0x1F, 0xC0, 0x0E, // ..*.....
/* 4110 */ 0x6A, 0xA0, 0x77, 0xBB, 0x63, 0xB2, 0xAF, 0x11, // j.w.c...
/* 4118 */ 0x69, 0x08, 0xC7, 0xF2, 0x90, 0x69, 0xA4, 0x97, // i....i..
/* 4120 */ 0x05, 0x4B, 0x3A, 0x43, 0xA0, 0x0E, 0x00, 0x16, // .K:C....
/* 4128 */ 0x79, 0xA4, 0x41, 0xDD, 0x1D, 0xF0, 0x27, 0x2C, // y.A...',
/* 4130 */ 0x9C, 0x5A, 0x0C, 0x72, 0x92, 0xF0, 0x35, 0xFD, // .Z.r..5.
/* 4138 */ 0xC9, 0xD3, 0xA3, 0x38, 0x3B, 0x7E, 0xB8, 0x82, // ...8;~..
/* 4140 */ 0xFD, 0xFF, 0x3F, 0x5C, 0x81, 0x63, 0x12, 0xF8, // ..?\.c..
/* 4148 */ 0x13, 0x0D, 0xE0, 0x2D, 0xE4, 0x11, 0x02, 0x74, // ...-...t
/* 4150 */ 0xE0, 0x3E, 0x42, 0x80, 0x0B, 0xFE, 0x89, 0x06, // .>B.....
/* 4158 */ 0x6C, 0x57, 0x07, 0xFC, 0x21, 0x01, 0xA7, 0xFE, // lW..!...
/* 4160 */ 0x90, 0x40, 0xB1, 0x1E, 0x12, 0x60, 0x08, 0x55, // .@...`.U
/* 4168 */ 0x31, 0x12, 0x26, 0xFF, 0x79, 0x20, 0x69, 0x30, // 1.&.y i0
/* 4170 */ 0xA8, 0xD3, 0x8F, 0x4F, 0x05, 0xF8, 0x71, 0x1E, // ...O..q.
/* 4178 */ 0xE6, 0xD1, 0x1D, 0x18, 0x93, 0x04, 0x87, 0x3A, // .......:
/* 4180 */ 0x02, 0x78, 0x60, 0xAF, 0x9E, 0xFF, 0xFF, 0x67, // .x`....g
/* 4188 */ 0x0A, 0xCF, 0xD7, 0x33, 0x0B, 0xC9, 0xA4, 0x8D, // ...3....
/* 4190 */ 0x10, 0x25, 0x65, 0x2C, 0x1E, 0x8F, 0x86, 0xF3, // .%e,....
/* 4198 */ 0xAE, 0xE1, 0x93, 0xA0, 0x61, 0x12, 0x78, 0xF0, // ....a.x.
/* 41A0 */ 0x0C, 0x8D, 0x43, 0x63, 0x87, 0xE1, 0x21, 0x06, // ..Cc..!.
/* 41A8 */ 0x3B, 0x88, 0xA7, 0x0C, 0x9F, 0x70, 0xD8, 0x84, // ;....p..
/* 41B0 */ 0x4E, 0xF5, 0x51, 0xF5, 0x6D, 0xA1, 0x78, 0x54, // N.Q.m.xT
/* 41B8 */ 0x61, 0x34, 0x07, 0x45, 0x04, 0x8F, 0x1D, 0x34, // a4.E...4
/* 41C0 */ 0x60, 0xD6, 0x7C, 0x68, 0x20, 0x57, 0x60, 0x63, // `.|h W`c
/* 41C8 */ 0xB1, 0x51, 0xC7, 0x08, 0x75, 0xF0, 0x06, 0x3A, // .Q..u..:
/* 41D0 */ 0xF8, 0xB7, 0x81, 0x60, 0xC6, 0x8A, 0x12, 0x89, // ...`....
/* 41D8 */ 0x5D, 0x1B, 0x7D, 0x7E, 0xC3, 0x1E, 0x79, 0x8C, // ].}~..y.
/* 41E0 */ 0xF7, 0x16, 0xE1, 0xAB, 0x81, 0x09, 0xBA, 0x1F, // ........
/* 41E8 */ 0x92, 0x50, 0x22, 0xB4, 0x76, 0x1A, 0x11, 0xC6, // .P".v...
/* 41F0 */ 0xAB, 0x67, 0x9C, 0xB6, 0x04, 0x18, 0xC3, 0xD1, // .g......
/* 41F8 */ 0xE4, 0x8E, 0x2B, 0x4A, 0x9C, 0xDE, 0x46, 0xA3, // ..+J..F.
/* 4200 */ 0xEB, 0x44, 0x94, 0x40, 0xF1, 0x6A, 0x03, 0x13, // .D.@.j..
/* 4208 */ 0xCA, 0x61, 0x45, 0x88, 0x12, 0x32, 0x52, 0x9C, // .aE..2R.
/* 4210 */ 0x28, 0xC6, 0x3B, 0xA0, 0x70, 0xC7, 0xD8, 0xFE, // (.;.p...
/* 4218 */ 0xC1, 0x93, 0x2D, 0x45, 0xC7, 0x00, 0x47, 0x1A, // ..-E..G.
/* 4220 */ 0x0D, 0xEA, 0x64, 0xE1, 0x33, 0x81, 0xCF, 0x03, // ..d.3...
/* 4228 */ 0xA7, 0x75, 0x52, 0x46, 0x0F, 0xF2, 0xF0, 0x62, // .uRF...b
/* 4230 */ 0x9D, 0x87, 0x01, 0x32, 0x6C, 0x36, 0x34, 0x1F, // ...2l64.
/* 4238 */ 0x41, 0xE0, 0xB8, 0x06, 0xD4, 0xE9, 0xD9, 0x87, // A.......
/* 4240 */ 0x02, 0x7F, 0x59, 0x0C, 0xC7, 0x87, 0xE8, 0x13, // ..Y.....
/* 4248 */ 0x8C, 0x87, 0xE5, 0xC3, 0x11, 0x3F, 0x83, 0xC0, // .....?..
/* 4250 */ 0x1F, 0x8F, 0x4F, 0x01, 0x1E, 0xB8, 0x8F, 0x0E, // ..O.....
/* 4258 */ 0x64, 0x10, 0xA8, 0x91, 0xF9, 0xFF, 0x7F, 0xB6, // d.......
/* 4260 */ 0x66, 0xD3, 0x7A, 0x02, 0xF0, 0x19, 0xE1, 0xB0, // f.z.....
/* 4268 */ 0xD8, 0xA1, 0xD4, 0x67, 0x16, 0x8F, 0x07, 0xFC, // ...g....
/* 4270 */ 0xF7, 0x80, 0x47, 0x83, 0x08, 0x6F, 0x0C, 0x9E, // ..G..o..
/* 4278 */ 0xAF, 0x8F, 0x48, 0xEC, 0xE0, 0x8B, 0x3B, 0x2E, // ..H...;.
/* 4280 */ 0xF8, 0x84, 0x80, 0xBF, 0xA1, 0x3C, 0x8F, 0xB0, // .....<..
/* 4288 */ 0x80, 0x47, 0x58, 0x2A, 0xEA, 0x6C, 0x82, 0x3A, // .GX*.l.:
/* 4290 */ 0x54, 0xF8, 0x3C, 0xC1, 0x6E, 0x0D, 0x2F, 0x41, // T.<.n./A
/* 4298 */ 0x86, 0x08, 0xCB, 0x0E, 0x38, 0x1E, 0x1B, 0xFC, // ....8...
/* 42A0 */ 0xFB, 0x8C, 0x0F, 0x13, 0xE0, 0x38, 0x45, 0xC0, // .....8E.
/* 42A8 */ 0xB8, 0xDE, 0x58, 0xD7, 0x79, 0x18, 0x84, 0xC7, // ..X.y...
/* 42B0 */ 0x33, 0x8F, 0x15, 0x77, 0x1E, 0x31, 0xF0, 0x91, // 3..w.1..
/* 42B8 */ 0xF8, 0x50, 0xE0, 0x59, 0x7B, 0xAA, 0x3E, 0xC0, // .P.Y{.>.
/* 42C0 */ 0x30, 0xA0, 0x77, 0x88, 0x63, 0x7B, 0x6F, 0xF0, // 0.w.c{o.
/* 42C8 */ 0x29, 0x94, 0x0D, 0x17, 0x3C, 0x27, 0x03, 0x70, // )...<'.p
/* 42D0 */ 0x4C, 0xEB, 0x70, 0x61, 0xFF, 0xFF, 0x87, 0xCB, // L.pa....
/* 42D8 */ 0xC7, 0x85, 0x9D, 0xC5, 0x29, 0xB2, 0x71, 0xE1, // ....).q.
/* 42E0 */ 0xA0, 0xCE, 0xD8, 0x23, 0x06, 0xD7, 0xD9, 0xCE, // ...#....
/* 42E8 */ 0x23, 0xC6, 0x1D, 0x35, 0x7C, 0x58, 0x80, 0x01, // #..5|X..
/* 42F0 */ 0xFF, 0xAC, 0x71, 0x4A, 0xC7, 0xEB, 0x88, 0xE3, // ..qJ....
/* 42F8 */ 0x05, 0x15, 0xA0, 0xC7, 0x0B, 0xFF, 0x4C, 0xE8, // ......L.
/* 4300 */ 0xD3, 0x02, 0x58, 0x47, 0xC5, 0x8F, 0x0B, 0x60, // ..XG...`
/* 4308 */ 0xB1, 0x0A, 0xA4, 0x63, 0x4A, 0xA0, 0xA3, 0xF5, // ...cJ...
/* 4310 */ 0x9B, 0xC2, 0xA3, 0xC5, 0x8D, 0xCC, 0x77, 0x47, // ......wG
/* 4318 */ 0x7E, 0x2F, 0xF3, 0x34, 0x38, 0x4A, 0xE4, 0x63, // ~/.48J.c
/* 4320 */ 0x3F, 0xCC, 0x47, 0x60, 0x3E, 0x5C, 0xF0, 0x80, // ?.G`>\..
/* 4328 */ 0xFA, 0xB4, 0x00, 0x3C, 0x86, 0xE5, 0xFF, 0xFF, // ...<....
/* 4330 */ 0xB0, 0xD8, 0x64, 0x31, 0x28, 0x87, 0xC5, 0xEE, // ..d1(...
/* 4338 */ 0x74, 0x06, 0x3E, 0x60, 0x30, 0x9E, 0x16, 0xE0, // t.>`0...
/* 4340 */ 0x9C, 0x90, 0xD8, 0x54, 0x0E, 0xE3, 0x35, 0xE2, // ...T..5.
/* 4348 */ 0x11, 0x8F, 0x0D, 0x87, 0x9F, 0x16, 0xC0, 0x76, // .......v
/* 4350 */ 0x80, 0xF6, 0x69, 0x01, 0x78, 0x8C, 0x0A, 0x7B, // ..i.x..{
/* 4358 */ 0x49, 0xC5, 0x9C, 0x16, 0x80, 0xC3, 0x59, 0xC5, // I.....Y.
/* 4360 */ 0x0A, 0x27, 0x43, 0x6E, 0x11, 0xEC, 0x88, 0xE6, // .'Cn....
/* 4368 */ 0x11, 0x45, 0x78, 0x39, 0x64, 0x37, 0x21, 0xDF, // .Ex9d7!.
/* 4370 */ 0xAB, 0x7C, 0xA8, 0x63, 0xE3, 0x05, 0xCF, 0x39, // .|.c...9
/* 4378 */ 0xCD, 0xE3, 0x85, 0x3F, 0x8F, 0xE3, 0x05, 0xCB, // ...?....
/* 4380 */ 0xB8, 0x70, 0xFF, 0xFF, 0x71, 0xF1, 0xFB, 0x1C, // .p..q...
/* 4388 */ 0x1B, 0x17, 0x3B, 0xAA, 0x80, 0x63, 0xC0, 0x38, // ..;..c.8
/* 4390 */ 0x41, 0x03, 0x46, 0x1F, 0xDA, 0x7C, 0x5A, 0xC0, // A.F..|Z.
/* 4398 */ 0x0F, 0x1A, 0x1C, 0x47, 0x5C, 0x0F, 0x1A, 0x3C, // ...G\..<
/* 43A0 */ 0x27, 0x55, 0x0F, 0x1A, 0xFE, 0x69, 0xEE, 0x99, // 'U...i..
/* 43A8 */ 0x01, 0xAC, 0x03, 0x07, 0x3E, 0x87, 0x12, 0xDC, // ....>...
/* 43B0 */ 0x01, 0x13, 0x1E, 0x4A, 0xEC, 0xC0, 0x7D, 0xDE, // ...J..}.
/* 43B8 */ 0x15, 0x05, 0x71, 0xD8, 0xC6, 0x7F, 0x73, 0x7C, // ..q...s|
/* 43C0 */ 0xC6, 0x38, 0x80, 0x33, 0x30, 0xCA, 0x23, 0xB4, // .8.30.#.
/* 43C8 */ 0x51, 0xE3, 0x84, 0x78, 0x92, 0xE6, 0xC3, 0xC4, // Q..x....
/* 43D0 */ 0x0D, 0x82, 0xA3, 0x3E, 0x6F, 0xB2, 0x41, 0xBC, // ...>o.A.
/* 43D8 */ 0x72, 0x7A, 0x1E, 0x87, 0xE4, 0x43, 0x92, 0x11, // rz...C..
/* 43E0 */ 0x0E, 0xF1, 0x98, 0x1F, 0x10, 0x3D, 0x53, 0xCC, // .....=S.
/* 43E8 */ 0x59, 0x8E, 0xFF, 0xFF, 0x09, 0x1C, 0xEB, 0x04, // Y.......
/* 43F0 */ 0x49, 0x03, 0x1C, 0x11, 0x24, 0xF1, 0x39, 0x40, // I...$.9@
/* 43F8 */ 0x61, 0x7C, 0x88, 0x04, 0x5C, 0x1D, 0x4E, 0xF9, // a|..\.N.
/* 4400 */ 0x59, 0x09, 0x0C, 0x47, 0x01, 0xD8, 0xE7, 0x57, // Y..G...W
/* 4408 */ 0x86, 0x14, 0xEF, 0x04, 0x9E, 0x16, 0x0E, 0xE0, // ........
/* 4410 */ 0xFD, 0xDB, 0x07, 0x06, 0x13, 0xF8, 0x14, 0x09, // ........
/* 4418 */ 0xFB, 0xAA, 0x10, 0xF7, 0x25, 0xD2, 0x83, 0x7A, // ....%..z
/* 4420 */ 0x74, 0x7C, 0x70, 0x7C, 0x82, 0x7C, 0x7B, 0x3C, // t|p|.|{<
/* 4428 */ 0xA1, 0x48, 0xF1, 0xDE, 0x23, 0x0D, 0xF1, 0x08, // .H..#...
/* 4430 */ 0x69, 0x28, 0xE3, 0x05, 0x3D, 0xBA, 0x47, 0x82, // i(..=.G.
/* 4438 */ 0x28, 0x41, 0x22, 0x45, 0x0D, 0x13, 0x22, 0x54, // (A"E.."T
/* 4440 */ 0xA0, 0x10, 0x11, 0x8E, 0xD4, 0x50, 0x4F, 0x91, // .....PO.
/* 4448 */ 0x2C, 0xE2, 0x81, 0x40, 0x67, 0x0E, 0x9F, 0x22, // ,..@g.."
/* 4450 */ 0x81, 0xDF, 0xFF, 0xFF, 0x14, 0x09, 0xF8, 0x43, // .......C
/* 4458 */ 0x7B, 0x0E, 0x01, 0x06, 0xA7, 0x05, 0xDC, 0x41, // {......A
/* 4460 */ 0x04, 0xB8, 0x48, 0x7D, 0xD9, 0x68, 0xB4, 0x8E, // ..H}.h..
/* 4468 */ 0xFA, 0x28, 0xD0, 0x29, 0x9D, 0x1F, 0x5A, 0x1C, // .(.)..Z.
/* 4470 */ 0x9F, 0x4A, 0xA7, 0x74, 0x7E, 0xE8, 0x83, 0x71, // .J.t~..q
/* 4478 */ 0x88, 0xC7, 0xDE, 0xBD, 0x30, 0x58, 0x6F, 0x14, // ....0Xo.
/* 4480 */ 0x8E, 0x08, 0xAF, 0xC3, 0xA6, 0x87, 0xE1, 0x70, // .......p
/* 4488 */ 0x14, 0x3A, 0x8C, 0xF9, 0x8C, 0xCE, 0x0F, 0x40, // .:.....@
/* 4490 */ 0x86, 0x33, 0x88, 0x01, 0x9D, 0xE4, 0x30, 0x0A, // .3....0.
/* 4498 */ 0x8A, 0xFF, 0xFF, 0x8D, 0xD2, 0xB3, 0xF5, 0xF4, // ........
/* 44A0 */ 0x1E, 0x1F, 0x18, 0xA4, 0x0F, 0x06, 0xFC, 0xC0, // ........
/* 44A8 */ 0x62, 0x4C, 0xE3, 0x5B, 0xCD, 0xA9, 0x08, 0x05, // bL.[....
/* 44B0 */ 0xE6, 0x43, 0x3A, 0xE6, 0xD2, 0x08, 0x2E, 0x7D, // .C:....}
/* 44B8 */ 0x57, 0x74, 0x90, 0xA3, 0xF3, 0x80, 0x2B, 0xD5, // Wt....+.
/* 44C0 */ 0x68, 0x79, 0xA4, 0x73, 0x3E, 0x05, 0xF1, 0xC0, // hy.s>...
/* 44C8 */ 0x1C, 0x6A, 0xB4, 0xE8, 0x33, 0x94, 0x2F, 0x01, // .j..3./.
/* 44D0 */ 0xF0, 0x0E, 0x85, 0xB8, 0x83, 0x0A, 0x3F, 0xE6, // ......?.
/* 44D8 */ 0x83, 0x77, 0x44, 0x9E, 0x32, 0xB8, 0xA2, 0x0D, // .wD.2...
/* 44E0 */ 0x0D, 0x7D, 0xDA, 0xF1, 0xD0, 0xF0, 0xA7, 0x2F, // .}...../
/* 44E8 */ 0x70, 0x8C, 0x0E, 0xDC, 0x27, 0x07, 0xFF, 0xFF, // p...'...
/* 44F0 */ 0x47, 0x07, 0x2E, 0x81, 0xF7, 0x03, 0x90, 0xC3, // G.......
/* 44F8 */ 0x63, 0x4E, 0x8B, 0x1E, 0x94, 0xC7, 0xE3, 0x61, // cN.....a
/* 4500 */ 0xF1, 0xE3, 0x84, 0x8F, 0x4C, 0x0C, 0xFB, 0xB5, // ....L...
/* 4508 */ 0xC3, 0xA3, 0x3D, 0xC1, 0x97, 0x90, 0x07, 0x65, // ..=....e
/* 4510 */ 0x0C, 0xAC, 0x07, 0xCA, 0x61, 0x8D, 0x16, 0xF6, // ....a...
/* 4518 */ 0xF1, 0xE0, 0x91, 0xC5, 0xD7, 0x1D, 0x9F, 0x6D, // .......m
/* 4520 */ 0x19, 0xAC, 0x07, 0xEB, 0x33, 0x13, 0x78, 0x4E, // ....3.xN
/* 4528 */ 0x24, 0xEC, 0x59, 0xF2, 0x38, 0x80, 0x3D, 0xC6, // $.Y.8.=.
/* 4530 */ 0xC3, 0x39, 0x91, 0xE0, 0x9E, 0x28, 0x4C, 0xFC, // .9...(L.
/* 4538 */ 0x29, 0x05, 0x1D, 0xE8, 0x0D, 0x20, 0xCC, 0xA7, // ).... ..
/* 4540 */ 0x14, 0xB0, 0x8A, 0x3E, 0xA5, 0x50, 0x08, 0xCB, // ...>.P..
/* 4548 */ 0x85, 0x91, 0x58, 0x08, 0x1D, 0x34, 0xB8, 0x3C, // ..X..4.<
/* 4550 */ 0x38, 0x0A, 0xE2, 0x43, 0x93, 0xC3, 0x9C, 0x52, // 8..C...R
/* 4558 */ 0x40, 0x75, 0x6E, 0x80, 0x77, 0x4A, 0x61, 0x63, // @un.wJac
/* 4560 */ 0x67, 0xFF, 0xFF, 0x73, 0x03, 0xBC, 0x6B, 0x0A, // g..s..k.
/* 4568 */ 0xF8, 0x8E, 0x23, 0xC0, 0x69, 0x68, 0xE0, 0x38, // ..#.ih.8
/* 4570 */ 0x8E, 0x00, 0x3E, 0x46, 0x07, 0x8E, 0xE3, 0x08, // ..>F....
/* 4578 */ 0xE0, 0xE2, 0xFF, 0x7F, 0x1C, 0x81, 0x3B, 0x34, // ......;4
/* 4580 */ 0x7E, 0x1C, 0x01, 0x3E, 0x47, 0x0F, 0x76, 0x1C, // ~..>G.v.
/* 4588 */ 0x01, 0xAB, 0xE4, 0x17, 0x87, 0x41, 0xFC, 0x5C, // .....A.\
/* 4590 */ 0x90, 0x48, 0x18, 0xD4, 0xD9, 0x12, 0x70, 0x75, // .H....pu
/* 4598 */ 0xAC, 0x07, 0xF3, 0x85, 0x82, 0xCD, 0x9D, 0x1D, // ........
/* 45A0 */ 0x2A, 0xE1, 0x1F, 0x23, 0xA3, 0x76, 0x86, 0xA0, // *..#.v..
/* 45A8 */ 0x43, 0xA5, 0x07, 0x15, 0xE2, 0x65, 0xF2, 0xAD, // C....e..
/* 45B0 */ 0xF2, 0x48, 0x1E, 0x22, 0x02, 0x3D, 0x54, 0x32, // .H.".=T2
/* 45B8 */ 0x88, 0xA8, 0x51, 0xFE, 0xFF, 0x71, 0x5E, 0x26, // ..Q..q^&
/* 45C0 */ 0x83, 0x84, 0x32, 0xEA, 0x81, 0x45, 0x0C, 0xF8, // ..2..E..
/* 45C8 */ 0x22, 0xF8, 0x68, 0x19, 0x24, 0x7C, 0x8C, 0xD8, // ".h.$|..
/* 45D0 */ 0x07, 0xE0, 0x43, 0x25, 0x8B, 0xFC, 0x66, 0xD0, // ..C%..f.
/* 45D8 */ 0x49, 0xC0, 0x87, 0x4A, 0x80, 0x1F, 0x81, 0x0F, // I..J....
/* 45E0 */ 0x32, 0x68, 0x68, 0xBB, 0x1C, 0x2B, 0xB9, 0x15, // 2hh..+..
/* 45E8 */ 0x71, 0x82, 0xF1, 0x8E, 0xDA, 0xA0, 0x3A, 0xE8, // q.....:.
/* 45F0 */ 0x78, 0x64, 0xF0, 0x0F, 0x2E, 0xB8, 0x43, 0x04, // xd....C.
/* 45F8 */ 0xDC, 0x21, 0xB1, 0x1B, 0x04, 0x0E, 0xED, 0xFF, // .!......
/* 4600 */ 0x7F, 0x06, 0x3E, 0xD3, 0x80, 0xEB, 0x8C, 0x0D, // ..>.....
/* 4608 */ 0x1C, 0xF0, 0xA2, 0x45, 0xF4, 0xF9, 0xD4, 0x67, // ...E...g
/* 4610 */ 0x51, 0xE0, 0x71, 0x0D, 0xF0, 0x10, 0xF8, 0x59, // Q.q....Y
/* 4618 */ 0xC2, 0x43, 0xE0, 0x03, 0x78, 0x25, 0x3F, 0x43, // .C..x%?C
/* 4620 */ 0x9F, 0x79, 0x4E, 0x0C, 0x77, 0x6E, 0xE1, 0x60, // .yN.wn.`
/* 4628 */ 0xA7, 0xCC, 0x8F, 0x3E, 0x38, 0x85, 0x36, 0x7D, // ...>8.6}
/* 4630 */ 0x6A, 0x34, 0x6A, 0xD5, 0xA0, 0x4C, 0x8D, 0x32, // j4j..L.2
/* 4638 */ 0x0D, 0x6A, 0xF5, 0xA9, 0xD4, 0x98, 0xB1, 0xE6, // .j......
/* 4640 */ 0x2F, 0x02, 0x09, 0x7A, 0x3B, 0xE8, 0x6C, 0x60, // /..z;.l`
/* 4648 */ 0xF9, 0x20, 0x54, 0x36, 0x85, 0x40, 0x7C, 0xA2, // . T6.@|.
/* 4650 */ 0x31, 0x88, 0x05, 0x9E, 0x55, 0x05, 0xE2, 0x78, // 1...U..x
/* 4658 */ 0x20, 0x34, 0xD0, 0x1A, 0x04, 0xE2, 0x30, 0x26, // 4....0&
/* 4660 */ 0x40, 0x98, 0xF8, 0x93, 0xB8, 0x40, 0x2C, 0xF8, // @....@,.
/* 4668 */ 0x89, 0x20, 0x70, 0xF2, 0x44, 0x10, 0x88, 0xC5, // . p.D...
/* 4670 */ 0xD9, 0x00, 0x61, 0x92, 0x74, 0x1C, 0x3D, 0xA8, // ..a.t.=.
/* 4678 */ 0x0F, 0x10, 0x26, 0xE4, 0x1D, 0x20, 0x10, 0x8B, // ..&.. ..
/* 4680 */ 0x70, 0x02, 0xC2, 0x22, 0x80, 0x50, 0xD9, 0x4F, // p..".P.O
/* 4688 */ 0x07, 0x81, 0x58, 0xA6, 0x15, 0x10, 0x26, 0x51, // ..X...&Q
/* 4690 */ 0x0B, 0x08, 0xF5, 0x02, 0x42, 0x5F, 0x00, 0x02, // ....B_..
/* 4698 */ 0x21, 0x66, 0x86, 0x45, 0x9F, 0xA7, 0x3A, 0x2D, // !f.E..:-
/* 46A0 */ 0x11, 0x37, 0x43, 0xA1, 0xEB, 0xD6, 0x51, 0x95, // .7C...Q.
/* 46A8 */ 0xD8, 0x01, 0x61, 0xFF, 0x7F, 0x09, 0x7A, 0x40, // ..a...z@
/* 46B0 */ 0x58, 0xEC, 0x97, 0x84, 0x40, 0x2C, 0xDA, 0x10, // X...@,..
/* 46B8 */ 0x20, 0x75, 0x74, 0xC4, 0x60, 0xD2, 0x40, 0x34, // ut.`.@4
/* 46C0 */ 0x08, 0x62, 0x09, 0x88, 0x09, 0x06, 0x11, 0x90, // .b......
/* 46C8 */ 0x03, 0x78, 0x02, 0x62, 0x71, 0x40, 0x04, 0xE4, // .x.bq@..
/* 46D0 */ 0x80, 0xA6, 0x80, 0x58, 0x5C, 0x10, 0x01, 0x39, // ...X\..9
/* 46D8 */ 0xBC, 0x2B, 0x20, 0x26, 0xE5, 0x1D, 0x21, 0x20, // .+ &..!
/* 46E0 */ 0x0B, 0x7A, 0xFD, 0x0B, 0xC8, 0xF2, 0x40, 0x04, // .z....@.
/* 46E8 */ 0x64, 0x69, 0xCF, 0x10, 0x01, 0x59, 0x28, 0x88, // di...Y(.
/* 46F0 */ 0x06, 0x49, 0x3E, 0x33, 0x81, 0x88, 0x68, 0x10, // .I>3..h.
/* 46F8 */ 0x0D, 0x89, 0x3C, 0x83, 0x04, 0xE4, 0x08, 0x20, // ..<....
/* 4700 */ 0x02, 0x72, 0x8C, 0xC7, 0x4D, 0x20, 0x12, 0x0A, // .r..M ..
/* 4708 */ 0x44, 0x40, 0x0E, 0xF6, 0xA6, 0x10, 0x90, 0x63, // D@.....c
/* 4710 */ 0x82, 0x08, 0xC8, 0xD1, 0xD5, 0x01, 0x31, 0x21, // ......1!
/* 4718 */ 0xEE, 0x06, 0x42, 0xED, 0x0D, 0x84, 0x82, 0x08, // ..B.....
/* 4720 */ 0xC8, 0xC2, 0xFD, 0x01, 0xB1, 0x18, 0x20, 0x02, // ...... .
/* 4728 */ 0x72, 0xB8, 0x2F, 0x43, 0x20, 0x12, 0x15, 0x44, // r./C ..D
/* 4730 */ 0x83, 0x25, 0x0F, 0x08, 0x0D, 0x96, 0x80, 0x08, // .%......
/* 4738 */ 0xC8, 0xD1, 0x34, 0x02, 0xB1, 0xA0, 0x20, 0x3A, // ..4... :
/* 4740 */ 0x14, 0x90, 0x27, 0x94, 0x80, 0x2C, 0x0B, 0x44, // ..'..,.D
/* 4748 */ 0xC7, 0x00, 0xF2, 0x06, 0x09, 0x44, 0xE4, 0x82, // .....D..
/* 4750 */ 0x08, 0xC8, 0x51, 0xFE, 0x10, 0x81, 0x48, 0x30, // ..Q...H0
/* 4758 */ 0x10, 0x1D, 0x11, 0xC8, 0xD3, 0x43, 0x40, 0x16, // .....C@.
/* 4760 */ 0x07, 0xA2, 0x23, 0x03, 0x79, 0x50, 0x04, 0x22, // ..#.yP."
/* 4768 */ 0xD1, 0x40, 0x04, 0x64, 0x19, 0xBF, 0x8A, 0x40, // .@.d...@
/* 4770 */ 0x44, 0x14, 0x88, 0x00, 0xC9, 0xA3, 0x22, 0x20, // D....."
/* 4778 */ 0x03, 0xD1, 0xA9, 0x85, 0xA8, 0x05, 0x62, 0x72, // ......br
/* 4780 */ 0x40, 0x74, 0x7C, 0x20, 0xAF, 0x8D, 0x40, 0x44, // @t| ..@D
/* 4788 */ 0x3E, 0x88, 0x80, 0x1C, 0x51, 0x2F, 0x10, 0x0B, // >...Q/..
/* 4790 */ 0x0C, 0xA2, 0xC1, 0x90, 0x37, 0xC7, 0xC1, 0x30, // ....7..0
/* 4798 */ 0x10, 0x01, 0x59, 0xEC, 0x2B, 0x4B, 0x40, 0x96, // ..Y.+K@.
/* 47A0 */ 0x0E, 0x22, 0x20, 0x47, 0xFA, 0xED, 0x08, 0xC8, // ." G....
/* 47A8 */ 0x01, 0x41, 0x34, 0x78, 0xF2, 0xF5, 0x11, 0x90, // .A4x....
/* 47B0 */ 0xFF, 0xFF, 0x42, 0xFE, 0x51, 0x07, 0xC2, 0x54, // ..B.Q..T
/* 47B8 */ 0x0F, 0x84, 0x82, 0x08, 0xC8, 0x31, 0xDF, 0x51, // .....1.Q
/* 47C0 */ 0x02, 0x72, 0x68, 0x10, 0x01, 0x59, 0xD4, 0x73, // .rh..Y.s
/* 47C8 */ 0x24, 0x10, 0x91, 0x08, 0x22, 0x20, 0x07, 0x31, // $..." .1
/* 47D0 */ 0x0E, 0xC4, 0x62, 0x81, 0x68, 0x10, 0xE4, 0x89, // ..b.h...
/* 47D8 */ 0xA9, 0x41, 0x90, 0x2F, 0x88, 0x8E, 0x16, 0xE4, // .A./....
/* 47E0 */ 0xDD, 0x25, 0x20, 0x87, 0x00, 0x11, 0x90, 0xB3, // .% .....
/* 47E8 */ 0x3D, 0xB8, 0x1E, 0x02, 0x18, 0x88, 0x80, 0x1C, // =.......
/* 47F0 */ 0xFA, 0xBD, 0x24, 0x20, 0x4B, 0x50, 0x7F, 0xAC, // ..$ KP..
/* 47F8 */ 0xA0, 0xAF, 0x23, 0x01, 0x59, 0x20, 0x88, 0x80, // ..#.Y ..
/* 4800 */ 0x2C, 0x59, 0x3F, 0x10, 0x0B, 0x00, 0xA2, 0x01, // ,Y?.....
/* 4808 */ 0x92, 0x00, 0x03, 0xA4, 0x20, 0x02, 0x72, 0xDC, // .... .r.
/* 4810 */ 0x04, 0x40, 0x2C, 0x3C, 0x88, 0x06, 0x40, 0x2A, // .@,<..@*
/* 4818 */ 0x0C, 0x80, 0x82, 0xE8, 0x00, 0x41, 0x3A, 0x1C, // .....A:.
/* 4820 */ 0x20, 0x28, 0x88, 0x0E, 0x25, 0xA4, 0x04, 0x10, // (..%...
/* 4828 */ 0x8B, 0x07, 0xA2, 0x01, 0x91, 0x16, 0x03, 0xA2, // ........
/* 4830 */ 0x31, 0x80, 0x98, 0xBC, 0x1C, 0x40, 0x4C, 0x2C, // 1....@L,
/* 4838 */ 0x88, 0x0E, 0x1A, 0x24, 0xC8, 0x41, 0x83, 0x82, // ...$.A..
/* 4840 */ 0x68, 0xD0, 0xE4, 0x0D, 0xAE, 0x41, 0x13, 0x10, // h....A..
/* 4848 */ 0x01, 0x59, 0x4A, 0x15, 0x20, 0x26, 0x0C, 0x44, // .YJ. &.D
/* 4850 */ 0x07, 0x0C, 0xD2, 0xE5, 0x80, 0x41, 0x41, 0x04, // .....AA.
/* 4858 */ 0xE4, 0x38, 0x65, 0x80, 0x58, 0x38, 0x10, 0x0D, // .8e.X8..
/* 4860 */ 0x86, 0xB4, 0x19, 0x0C, 0x8D, 0x73, 0x98, 0xA0, // .....s..
/* 4868 */ 0x79, 0x80, 0x98, 0x32, 0x10, 0x01, 0x59, 0x6D, // y..2..Ym
/* 4870 */ 0x1F, 0x20, 0xA6, 0x1D, 0x44, 0x40, 0x4E, 0x55, // . ..D@NU
/* 4878 */ 0x08, 0x88, 0x65, 0x04, 0x11, 0x90, 0x53, 0x36, // ..e...S6
/* 4880 */ 0x02, 0x62, 0x99, 0x41, 0x04, 0x64, 0x1D, 0x99, // .b.A.d..
/* 4888 */ 0x80, 0x98, 0x2A, 0x10, 0x01, 0x59, 0xF1, 0x83, // ..*..Y..
/* 4890 */ 0x54, 0x40, 0xD6, 0x0F, 0x22, 0x60, 0x92, 0x0A, // T@.."`..
/* 4898 */ 0x98, 0x82, 0x08, 0xC8, 0x2A, 0x6A, 0x01, 0x31, // ....*j.1
/* 48A0 */ 0x4D, 0x20, 0x1A, 0x0C, 0xE9, 0x05, 0xC4, 0xFE, // M ......
/* 48A8 */ 0xFF, 0xDA, 0x41, 0x04, 0xE4, 0x4C, 0xC5, 0x80, // ..A..L..
/* 48B0 */ 0x58, 0x42, 0x10, 0x0D, 0x84, 0x54, 0x03, 0x61, // XB...T.a
/* 48B8 */ 0x29, 0x40, 0x68, 0xA2, 0x6C, 0x20, 0x2C, 0x69, // )@h.l ,i
/* 48C0 */ 0x39, 0x10, 0xA6, 0x33, 0x1D, 0x08, 0xD3, 0xDE, // 9..3....
/* 48C8 */ 0x0E, 0x90, 0xE6, 0x03, 0x61, 0x7A, 0xFA, 0x81, // ....az..
/* 48D0 */ 0x30, 0x2D, 0x01, 0x41, 0x98, 0xB6, 0x86, 0x20, // 0-.A...
/* 48D8 */ 0x2C, 0x19, 0x08, 0x4D, 0xF7, 0xA2, 0x14, 0x88, // ,..M....
/* 48E0 */ 0xB3, 0x77, 0x04, 0x61, 0xCA, 0x43, 0x82, 0xB0, // .w.a.C..
/* 48E8 */ 0x0C, 0x25, 0x41, 0x58, 0xC6, 0x98, 0x20, 0x4C, // .%AX.. L
/* 48F0 */ 0x61, 0x4D, 0x10, 0x9A, 0x13, 0x84, 0xE9, 0xEA, // aM......
/* 48F8 */ 0x09, 0xC2, 0xF4, 0x27, 0x05, 0x61, 0xE9, 0x41, // ...'.a.A
/* 4900 */ 0xA8, 0x8A, 0xA8, 0x20, 0x4C, 0x6B, 0xD7, 0x81, // ... Lk..
/* 4908 */ 0x51, 0x10, 0x9A, 0xF6, 0xC5, 0x2F, 0x10, 0xAB, // Q..../..
/* 4910 */ 0x8C, 0x3B, 0x0C, 0x0A, 0x42, 0x53, 0xD6, 0x05, // .;..BS..
/* 4918 */ 0x61, 0x9A, 0x0A, 0x0F, 0x8F, 0x82, 0xD0, 0x34, // a......4
/* 4920 */ 0x89, 0x07, 0x40, 0x2B, 0x0F, 0x94, 0x66, 0x06, // ..@+..f.
/* 4928 */ 0x61, 0x99, 0x3B, 0x0F, 0x9B, 0x29, 0x08, 0x0D, // a.;..)..
/* 4930 */ 0x44, 0x4B, 0x03, 0xD1, 0xD4, 0x40, 0xB4, 0x35, // DK...@.5
/* 4938 */ 0x10, 0x8D, 0x3D, 0x4C, 0x5A, 0x1B, 0x88, 0x29, // ..=LZ..)
/* 4940 */ 0xC9, 0x0D, 0xC4, 0x34, 0x04, 0x07, 0x62, 0x8A, // ...4..b.
/* 4948 */ 0x40, 0x04, 0x44, 0x92, 0x03, 0x51, 0x10, 0x01, // @.D..Q..
/* 4950 */ 0x39, 0x0B, 0x10, 0x4D, 0x06, 0x44, 0x35, 0x35, // 9..M.D55
/* 4958 */ 0x07, 0x62, 0x0A, 0x41, 0x74, 0xFC, 0x20, 0x40, // .b.At. @
/* 4960 */ 0x34, 0x29, 0x10, 0xCD, 0x54, 0xFD, 0x68, 0x40, // 4)..T.h@
/* 4968 */ 0x41, 0x74, 0x10, 0x20, 0xD9, 0x81, 0x98, 0x52, // At. ...R
/* 4970 */ 0x10, 0x0D, 0x95, 0x00, 0xD1, 0xC4, 0x40, 0x54, // ......@T
/* 4978 */ 0x6B, 0x77, 0x20, 0xA6, 0x1C, 0x44, 0x40, 0xD6, // kw ..D@.
/* 4980 */ 0x5C, 0x1E, 0x88, 0x25, 0x00, 0x11, 0x90, 0xFF, // \..%....
/* 4988 */ 0xFF, 0xD9, 0x81, 0xA8, 0x92, 0xF4, 0x07, 0x04, // ........
/* 4990 */ 0x1A, 0x1F, 0x88, 0xA9, 0x03, 0x11, 0x90, 0x73, // .......s
/* 4998 */ 0x01, 0xD1, 0x94, 0x40, 0x34, 0x65, 0xFE, 0x63, // ...@4e.c
/* 49A0 */ 0x04, 0x05, 0x11, 0x90, 0xF5, 0x1E, 0xE8, 0x04, // ........
/* 49A8 */ 0x64, 0xF5, 0x20, 0x02, 0x72, 0x72, 0x20, 0xFA, // d. .rr .
/* 49B0 */ 0xC7, 0xFA, 0xFA, 0x7A, 0x4C, 0x20, 0x20, 0x02, // ...zL .
/* 49B8 */ 0x72, 0x22, 0x20, 0x9A, 0x48, 0x01, 0x10, 0xCB, // r" .H...
/* 49C0 */ 0x07, 0xA2, 0x43, 0x03, 0x91, 0x00, 0xC4, 0xB2, // ..C.....
/* 49C8 */ 0x82, 0xE8, 0x40, 0x40, 0x34, 0x00, 0xB1, 0xDC, // ..@@4...
/* 49D0 */ 0x20, 0x1A, 0x08, 0xF1, 0x00, 0xC4, 0xD4, 0x83, // .......
/* 49D8 */ 0x08, 0xC8, 0xB9, 0x81, 0xA8, 0x0A, 0x11, 0x40, // .......@
/* 49E0 */ 0x4C, 0x83, 0x0A, 0x20, 0xA6, 0x08, 0x44, 0x40, // L.. ..D@
/* 49E8 */ 0x4E, 0x02, 0x44, 0x73, 0x01, 0x51, 0x45, 0x2E, // N.Ds.QE.
/* 49F0 */ 0x80, 0x98, 0x3E, 0x10, 0x1D, 0x22, 0x88, 0x0D, // ..>.."..
/* 49F8 */ 0x20, 0xA6, 0x17, 0x44, 0x07, 0x0C, 0xE2, 0x03, // ..D....
/* 4A00 */ 0x88, 0x25, 0x01, 0xD1, 0xA1, 0x80, 0x18, 0x01, // .%......
/* 4A08 */ 0x62, 0xC9, 0x40, 0x04, 0x44, 0x9C, 0x00, 0x51, // b.@.D..Q
/* 4A10 */ 0x10, 0x01, 0x11, 0x2B, 0x40, 0x14, 0x44, 0x40, // ...+@.D@
/* 4A18 */ 0xC4, 0x0B, 0x10, 0x05, 0xD1, 0x60, 0x89, 0x99, // .....`..
/* 4A20 */ 0xC1, 0x52, 0x10, 0x1D, 0x39, 0x88, 0x1A, 0x20, // .R..9..
/* 4A28 */ 0xA6, 0x0C, 0x44, 0x07, 0x04, 0x02, 0x44, 0x13, // ..D...D.
/* 4A30 */ 0x02, 0x51, 0x6D, 0x6E, 0x80, 0x98, 0x52, 0x10, // .Qmn..R.
/* 4A38 */ 0x1D, 0x08, 0x88, 0x1D, 0x20, 0xA6, 0x0E, 0x44, // .... ..D
/* 4A40 */ 0x07, 0x02, 0x02, 0x44, 0x53, 0x02, 0x51, 0x7D, // ...DS.Q}
/* 4A48 */ 0x7A, 0x80, 0x98, 0x5A, 0x10, 0x01, 0x39, 0x27, // z..Z..9'
/* 4A50 */ 0x10, 0x4D, 0x0D, 0x44, 0x55, 0x29, 0x1A, 0x0A, // .M.DU)..
/* 4A58 */ 0x05, 0xA1, 0x09, 0x1C, 0x81, 0x30, 0xC5, 0x92, // .....0..
/* 4A60 */ 0x40, 0x98, 0x72, 0x4B, 0x43, 0xA3, 0x9A, 0x40, // @.rKC..@
/* 4A68 */ 0xD8, 0xFF, 0x5F, 0xB7, 0x29, 0x10, 0x96, 0x1A, // .._.)...
/* 4A70 */ 0x84, 0x66, 0x54, 0x75, 0x2C, 0xA0, 0xAE, 0x40, // .fTu,..@
/* 4A78 */ 0x58, 0x72, 0x59, 0x20, 0x2C, 0xAD, 0x2D, 0x10, // XrY ,.-.
/* 4A80 */ 0x96, 0x55, 0xD7, 0x31, 0x80, 0x0A, 0x1B, 0x20, // .U.1...
/* 4A88 */ 0x35, 0x06, 0xC2, 0x54, 0x2A, 0x3B, 0x1C, 0x50, // 5..T*;.P
/* 4A90 */ 0x67, 0x43, 0xA1, 0xD2, 0x40, 0x98, 0x6A, 0x6B, // gC..@.jk
/* 4A98 */ 0x43, 0xA2, 0xDA, 0x40, 0x58, 0x1A, 0x6F, 0x20, // C..@X.o
/* 4AA0 */ 0x2C, 0x99, 0xB8, 0x21, 0x51, 0x77, 0x20, 0x4C, // ,..!Qw L
/* 4AA8 */ 0x81, 0xBC, 0x43, 0x01, 0xB5, 0x77, 0x28, 0xA0, // ..C..w(.
/* 4AB0 */ 0x20, 0x3A, 0x5C, 0x10, 0x7F, 0x40, 0x2C, 0x01, // :\..@,.
/* 4AB8 */ 0x88, 0x80, 0x2C, 0xD4, 0x20, 0x10, 0x53, 0x0D, // ..,. .S.
/* 4AC0 */ 0x22, 0x20, 0xA2, 0x10, 0x88, 0xC9, 0x06, 0x11, // " ......
/* 4AC8 */ 0x90, 0x85, 0x39, 0x04, 0x62, 0x32, 0x41, 0x74, // ..9.b2At
/* 4AD0 */ 0x2C, 0x22, 0x16, 0x81, 0x98, 0x68, 0x10, 0x1D, // ,"...h..
/* 4AD8 */ 0xB1, 0x88, 0x47, 0x20, 0xA6, 0x10, 0x44, 0x47, // ..G ..DG
/* 4AE0 */ 0x35, 0x02, 0x44, 0x73, 0x02, 0xD1, 0x60, 0x22, // 5.Ds..`"
/* 4AE8 */ 0x81, 0x58, 0x4C, 0x10, 0x01, 0x39, 0x84, 0x49, // .XL..9.I
/* 4AF0 */ 0x20, 0x16, 0x09, 0x44, 0x47, 0x42, 0xE2, 0x12, // ..DGB..
/* 4AF8 */ 0x88, 0x05, 0x02, 0xD1, 0x51, 0x8B, 0xD8, 0x04, // ....Q...
/* 4B00 */ 0x62, 0x19, 0x40, 0x04, 0x44, 0x74, 0x02, 0xB1, // b.@.Dt..
/* 4B08 */ 0x10, 0x20, 0x02, 0xB2, 0x7A, 0xA1, 0x40, 0x2C, // . ..z.@,
/* 4B10 */ 0x0A, 0x88, 0x80, 0x9C, 0xC3, 0x28, 0x10, 0x4B, // .....(.K
/* 4B18 */ 0x05, 0xA2, 0x03, 0x06, 0xB1, 0x3A, 0x70, 0x0A, // .....:p.
/* 4B20 */ 0x42, 0x15, 0x6B, 0x05, 0x61, 0x1A, 0xBD, 0x82, // B.k.a...
/* 4B28 */ 0x30, 0x4D, 0x62, 0x8F, 0x0D, 0xD4, 0x2C, 0x08, // 0Mb...,.
/* 4B30 */ 0xCB, 0x0F, 0x42, 0x33, 0xAB, 0x3D, 0x30, 0x50, // ..B3.=0P
/* 4B38 */ 0xB7, 0x20, 0x2C, 0x9F, 0x5C, 0x10, 0x96, 0xCA, // . ,.\...
/* 4B40 */ 0xEE, 0x51, 0x84, 0xEA, 0x3D, 0x58, 0x50, 0xBF, // .Q..=XP.
/* 4B48 */ 0x43, 0xA2, 0x8A, 0x41, 0x58, 0x76, 0x10, 0x2A, // C..AXv.*
/* 4B50 */ 0xF8, 0xF5, 0xAD, 0x21, 0xF9, 0xFF, 0xAF, 0x1E, // ...!....
/* 4B58 */ 0x44, 0x47, 0x00, 0x62, 0xF9, 0x08, 0x40, 0x41, // DG.b..@A
/* 4B60 */ 0x74, 0xAC, 0x24, 0x9E, 0x81, 0x98, 0x54, 0x10, // t.$...T.
/* 4B68 */ 0x01, 0x39, 0x24, 0x10, 0x8D, 0x0C, 0x44, 0xA3, // .9$...D.
/* 4B70 */ 0x9B, 0x06, 0x62, 0x42, 0x54, 0x0F, 0x9B, 0x82, // ..bBT...
/* 4B78 */ 0x68, 0xD8, 0x04, 0x88, 0x8A, 0x73, 0x3D, 0x00, // h....s=.
/* 4B80 */ 0x0A, 0xA2, 0x83, 0x24, 0x01, 0xA2, 0x22, 0x64, // ...$.."d
/* 4B88 */ 0x03, 0x31, 0x09, 0xBA, 0x81, 0x98, 0x20, 0x10, // .1.... .
/* 4B90 */ 0x1D, 0x24, 0x89, 0x70, 0x20, 0x26, 0x18, 0x44, // .$.p &.D
/* 4B98 */ 0x40, 0x8E, 0x0A, 0x44, 0x83, 0x03, 0xD1, 0x10, // @..D....
/* 4BA0 */ 0xC6, 0x8F, 0x04, 0x14, 0x44, 0x87, 0x33, 0xA2, // ....D.3.
/* 4BA8 */ 0x1C, 0x88, 0x89, 0x05, 0xD1, 0x00, 0x89, 0xF4, // ........
/* 4BB0 */ 0x01, 0x52, 0x10, 0x1D, 0xFC, 0x88, 0x77, 0x10, // .R....w.
/* 4BB8 */ 0x26, 0x50, 0x3C, 0x08, 0x93, 0x63, 0x1E, 0x84, // &P<..c..
/* 4BC0 */ 0x2D, 0x36, 0x08, 0x8B, 0x0C, 0x42, 0x23, 0xBA, // -6...B#.
/* 4BC8 */ 0x07, 0x61, 0xF1, 0xE4, 0x83, 0x50, 0xFB, 0x20, // .a...P.
/* 4BD0 */ 0x54, 0x3F, 0x08, 0xF5, 0x0F, 0xC2, 0xC2, 0x05, // T?......
/* 4BD8 */ 0x00, 0x61, 0x91, 0x0A, 0x80, 0xB0, 0x38, 0x09, // .a....8.
/* 4BE0 */ 0x40, 0x58, 0x90, 0x06, 0x20, 0x4C, 0x7E, 0x84, // @X.. L~.
/* 4BE8 */ 0x63, 0x00, 0xED, 0x00, 0xC2, 0xE2, 0x82, 0x50, // c......P
/* 4BF0 */ 0x8D, 0x25, 0x86, 0x49, 0x41, 0x74, 0xF8, 0x20, // .%.IAt.
/* 4BF8 */ 0x29, 0x0E, 0x2B, 0x14, 0x44, 0xC7, 0x04, 0x12, // ).+.D...
/* 4C00 */ 0xE3, 0xB0, 0x42, 0x41, 0x74, 0x58, 0x21, 0x40, // ..BAtX!@
/* 4C08 */ 0x34, 0x25, 0x10, 0xCD, 0x98, 0x03, 0x88, 0x25, // 4%.....%
/* 4C10 */ 0x06, 0xD1, 0x21, 0x89, 0xF4, 0x00, 0x62, 0xCA, // ..!...b.
/* 4C18 */ 0x41, 0x74, 0xFC, 0x20, 0x41, 0x80, 0x98, 0x1E, // At. A...
/* 4C20 */ 0x10, 0x0D, 0x80, 0x00, 0xD1, 0x94, 0x40, 0x3C, // ......@<
/* 4C28 */ 0x09, 0x10, 0x05, 0xD1, 0x41, 0x88, 0x44, 0x39, // ....A.D9
/* 4C30 */ 0x08, 0x51, 0x10, 0x01, 0xF9, 0xFF, 0xAF, 0xB8, // .Q......
/* 4C38 */ 0x0A, 0x10, 0xD3, 0x0F, 0xA2, 0xE3, 0x1A, 0xC9, // ........
/* 4C40 */ 0x02, 0xC4, 0x54, 0x81, 0xE8, 0xC8, 0x42, 0x80, // ..T...B.
/* 4C48 */ 0x68, 0x56, 0x20, 0x1E, 0x06, 0x88, 0x82, 0x08, // hV .....
/* 4C50 */ 0xC8, 0x6A, 0xE2, 0x1C, 0x25, 0x28, 0x08, 0x4D, // .j..%(.M
/* 4C58 */ 0x53, 0xE7, 0xA0, 0x42, 0xF3, 0x1C, 0x2C, 0x68, // S..B..,h
/* 4C60 */ 0x1F, 0x10, 0x96, 0x3E, 0xD0, 0x60, 0x69, 0xA2, // ...>.`i.
/* 4C68 */ 0x23, 0x11, 0x6D, 0x74, 0xAC, 0xA0, 0x91, 0x0E, // #.mt....
/* 4C70 */ 0x17, 0xB4, 0xD2, 0x60, 0x69, 0xA6, 0xA3, 0x06, // ...`i...
/* 4C78 */ 0xED, 0x74, 0xE0, 0xA0, 0xA5, 0x40, 0x98, 0xCE, // .t...@..
/* 4C80 */ 0x54, 0x07, 0x17, 0xDA, 0x0A, 0x98, 0xC6, 0x02, // T.......
/* 4C88 */ 0x61, 0x29, 0x6B, 0x1D, 0x6D, 0x68, 0xAE, 0x41, // a)k.mh.A
/* 4C90 */ 0xD1, 0x60, 0x03, 0xA1, 0xC5, 0x0E, 0x3A, 0x34, // .`....:4
/* 4C98 */ 0xD9, 0xB1, 0x89, 0x36, 0x03, 0xA2, 0xD9, 0x0E, // ...6....
/* 4CA0 */ 0x3B, 0x14, 0x84, 0xCA, 0x0D, 0x37, 0x48, 0xA6, // ;....7H.
/* 4CA8 */ 0x1D, 0x44, 0x87, 0x17, 0x52, 0xEE, 0xF0, 0x42, // .D..R..B
/* 4CB0 */ 0x41, 0x74, 0xC4, 0x20, 0xED, 0x8E, 0x18, 0x14, // At. ....
/* 4CB8 */ 0x44, 0x47, 0x0E, 0x02, 0x44, 0x23, 0x03, 0xD1, // DG..D#..
/* 4CC0 */ 0xB0, 0xF5, 0x80, 0x58, 0x74, 0x10, 0x1D, 0x75, // ...Xt..u
/* 4CC8 */ 0x49, 0xC1, 0x83, 0x03, 0x05, 0xA1, 0x32, 0x1A, // I.....2.
/* 4CD0 */ 0x02, 0x32, 0x51, 0x20, 0x02, 0x23, 0x40, 0x34, // .2Q .#@4
/* 4CD8 */ 0x1C, 0x10, 0x0D, 0x51, 0xF1, 0x98, 0x41, 0x41, // ...Q..AA
/* 4CE0 */ 0x74, 0xD4, 0x25, 0x1D, 0x81, 0x58, 0x28, 0x10, // t.%..X(.
/* 4CE8 */ 0x1D, 0x63, 0x49, 0x49, 0x20, 0x16, 0x0C, 0x44, // .cII ..D
/* 4CF0 */ 0x40, 0x0E, 0xD5, 0x12, 0x88, 0x45, 0x04, 0xD1, // @....E..
/* 4CF8 */ 0xD1, 0x83, 0xD4, 0x3C, 0x7A, 0x50, 0x10, 0x1D, // ...<zP..
/* 4D00 */ 0x6D, 0x49, 0x50, 0x20, 0x26, 0x0B, 0x44, 0x47, // mIP &.DG
/* 4D08 */ 0x56, 0x92, 0x14, 0x88, 0x49, 0x07, 0xD1, 0xD1, // V...I...
/* 4D10 */ 0x98, 0x54, 0x3D, 0x80, 0xD0, 0xAC, 0x20, 0xEC, // .T=... .
/* 4D18 */ 0xFF, 0x2F, 0xAB, 0xEB, 0xF1, 0x87, 0x86, 0x05, // ./......
/* 4D20 */ 0x61, 0x92, 0xCA, 0x82, 0xD0, 0xB4, 0x20, 0x4C, // a..... L
/* 4D28 */ 0x4C, 0x5B, 0x10, 0x1A, 0x77, 0xD0, 0xB4, 0x2E, // L[..w...
/* 4D30 */ 0x08, 0x93, 0x12, 0xF8, 0xC0, 0x41, 0x41, 0xA8, // .....AA.
/* 4D38 */ 0xA8, 0xC4, 0xC7, 0x20, 0x0A, 0xA2, 0x41, 0x90, // ... ..A.
/* 4D40 */ 0xC6, 0x47, 0x22, 0x0A, 0xA2, 0xC3, 0x08, 0x01, // .G".....
/* 4D48 */ 0xA2, 0x24, 0x8F, 0x24, 0x34, 0x33, 0x10, 0x93, // .$.$43..
/* 4D50 */ 0x03, 0xA2, 0x61, 0x12, 0x20, 0x1A, 0x11, 0x88, // ..a. ...
/* 4D58 */ 0xCA, 0xED, 0x0C, 0xC4, 0xC4, 0x83, 0xE8, 0x38, // .......8
/* 4D60 */ 0x42, 0x52, 0x1F, 0x04, 0x68, 0xEB, 0x03, 0x0C, // BR..h...
/* 4D68 */ 0x8D, 0x0D, 0xC2, 0xFE, 0xFF // .....
})
}
}
Device (HKDV)
{
Name (_HID, "LHK2019") // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
}
Device (WMIU)
{
Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */) // _HID: Hardware ID
Name (_UID, "LSK20") // _UID: Unique ID
Name (_WDG, Buffer (0x3C)
{
/* 0000 */ 0x74, 0x09, 0x6C, 0xCE, 0x07, 0x04, 0x50, 0x4F, // t.l...PO
/* 0008 */ 0x88, 0xBA, 0x4F, 0xC3, 0xB6, 0x55, 0x9A, 0xD8, // ..O..U..
/* 0010 */ 0x53, 0x4B, 0x01, 0x02, 0x0C, 0xDE, 0xC0, 0x8F, // SK......
/* 0018 */ 0xE4, 0xB4, 0xFD, 0x43, 0xB0, 0xF3, 0x88, 0x71, // ...C...q
/* 0020 */ 0x71, 0x1C, 0x12, 0x94, 0xD0, 0x00, 0x01, 0x08, // q.......
/* 0028 */ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, // !...f...
/* 0030 */ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, // ......).
/* 0038 */ 0x44, 0x41, 0x01, 0x00 // DA..
})
Method (WMSK, 3, NotSerialized)
{
If ((Arg1 == One))
{
If ((ToInteger (Arg2) == One))
{
Return (0x03)
}
ElseIf ((ToInteger (Arg2) == 0x02))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x03))
{
Return (0x02)
}
ElseIf ((ToInteger (Arg2) == 0x04))
{
Return (0x02)
}
ElseIf ((ToInteger (Arg2) == 0x05))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x06))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x07))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x08))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x09))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x0A))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x0B))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x0C))
{
If ((CNFG == One))
{
Return (0x15)
}
Else
{
Return (Zero)
}
}
ElseIf ((ToInteger (Arg2) == 0x0D))
{
Return (Zero)
}
ElseIf ((ToInteger (Arg2) == 0x0E))
{
Return (0x15)
}
ElseIf ((ToInteger (Arg2) == 0x0F))
{
Return (0x15)
}
Else
{
Return (Zero)
}
}
}
Method (_WED, 1, NotSerialized) // _Wxx: Wake Event, xx=0x00-0xFF
{
If ((Arg0 == 0xD0))
{
If ((LSKD == One))
{
Return (One)
}
ElseIf ((LSKD == 0x02))
{
Return (0x05)
}
ElseIf ((LSKD == 0x03))
{
Return (0x06)
}
ElseIf ((LSKD == 0x04))
{
If ((^^PCI0.LPC0.EC0.HKDB == Zero))
{
Return (0x02)
}
Else
{
Return (0x03)
}
}
ElseIf ((LSKD == 0x05))
{
Return (0x04)
}
ElseIf ((LSKD == 0x06))
{
Return (0x07)
}
ElseIf ((LSKD == 0x07))
{
Return (0x08)
}
ElseIf ((LSKD == 0x08))
{
Return (0x09)
}
ElseIf ((LSKD == 0x09))
{
Return (0x0A)
}
ElseIf ((LSKD == 0x0A))
{
Return (0x0B)
}
ElseIf ((LSKD == 0x0B))
{
Return (0x0C)
}
ElseIf ((LSKD == 0x0C))
{
Return (0x0D)
}
ElseIf ((LSKD == 0x0D))
{
Return (0x0E)
}
ElseIf ((LSKD == 0x0E))
{
Return (0x0F)
}
ElseIf ((LSKD == 0x0F))
{
If ((PANT & 0x20))
{
Return (0x10)
}
}
ElseIf ((LSKD == 0x13))
{
Return (0x14)
}
ElseIf ((LSKD == 0x14))
{
Return (0x15)
}
ElseIf ((LSKD == 0x15))
{
Return (0x16)
}
ElseIf ((LSKD == 0x16))
{
Return (0x17)
}
ElseIf ((LSKD == 0x17))
{
Return (0x18)
}
ElseIf ((LSKD == 0x18))
{
Return (0x19)
}
ElseIf ((LSKD == 0x19))
{
Return (0x1A)
}
ElseIf ((LSKD == 0x25))
{
Return (0x26)
}
ElseIf ((LSKD == 0x1A))
{
Return (0x1B)
}
ElseIf ((LSKD == 0x1B))
{
Return (0x1C)
}
ElseIf ((LSKD == 0x1C))
{
Return (0x1D)
}
ElseIf ((LSKD == 0x1D))
{
Return (0x1E)
}
ElseIf ((LSKD == 0x1E))
{
Return (0x1F)
}
ElseIf ((LSKD == 0x1F))
{
Return (0x20)
}
ElseIf ((LSKD == 0x20))
{
Return (0x21)
}
ElseIf ((LSKD == 0x21))
{
Return (0x22)
}
ElseIf ((LSKD == 0x22))
{
Return (0x23)
}
ElseIf ((LSKD == 0x23))
{
Return (0x24)
}
ElseIf ((LSKD == 0x24))
{
Return (0x25)
}
Else
{
Return (Zero)
}
}
}
Name (WQDA, Buffer (0x0418)
{
/* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, // FOMB....
/* 0008 */ 0x08, 0x04, 0x00, 0x00, 0x5E, 0x0C, 0x00, 0x00, // ....^...
/* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, // DS...}.T
/* 0018 */ 0xA8, 0x40, 0x86, 0x00, 0x01, 0x06, 0x18, 0x42, // .@.....B
/* 0020 */ 0x10, 0x05, 0x10, 0x8A, 0x28, 0x81, 0x42, 0x04, // ....(.B.
/* 0028 */ 0x8A, 0x40, 0xA4, 0x50, 0x30, 0x28, 0x0D, 0x20, // .@.P0(.
/* 0030 */ 0x92, 0x03, 0x21, 0x17, 0x4C, 0x4C, 0x80, 0x08, // ..!.LL..
/* 0038 */ 0x08, 0x79, 0x15, 0x60, 0x53, 0x80, 0x49, 0x10, // .y.`S.I.
/* 0040 */ 0xF5, 0xEF, 0x0F, 0x51, 0x12, 0x1C, 0x4A, 0x08, // ...Q..J.
/* 0048 */ 0x84, 0x24, 0x0A, 0x30, 0x2F, 0x40, 0xB7, 0x00, // .$.0/@..
/* 0050 */ 0xC3, 0x02, 0x6C, 0x0B, 0x30, 0x2D, 0xC0, 0x31, // ..l.0-.1
/* 0058 */ 0x24, 0x95, 0x06, 0x4E, 0x09, 0x2C, 0x05, 0x42, // $..N.,.B
/* 0060 */ 0x42, 0x05, 0x28, 0x17, 0xE0, 0x5B, 0x80, 0x76, // B.(..[.v
/* 0068 */ 0x44, 0x49, 0x16, 0x60, 0x19, 0x46, 0x04, 0x1E, // DI.`.F..
/* 0070 */ 0x45, 0x64, 0xA3, 0x71, 0x68, 0xEC, 0x30, 0x2C, // Ed.qh.0,
/* 0078 */ 0x13, 0x4C, 0x83, 0x38, 0x8C, 0xB2, 0x91, 0x45, // .L.8...E
/* 0080 */ 0xE0, 0x09, 0x75, 0x2A, 0x40, 0xAE, 0x00, 0x61, // ..u*@..a
/* 0088 */ 0x02, 0xC4, 0xA3, 0x0A, 0xA3, 0x39, 0x28, 0x22, // .....9("
/* 0090 */ 0x1A, 0x1A, 0x25, 0x66, 0x4C, 0x04, 0xB6, 0x73, // ..%fL..s
/* 0098 */ 0x6C, 0x8D, 0xE2, 0x34, 0x0A, 0x17, 0x20, 0x1D, // l..4.. .
/* 00A0 */ 0x43, 0x23, 0x38, 0xAE, 0x63, 0x30, 0x58, 0x90, // C#8.c0X.
/* 00A8 */ 0x43, 0x31, 0x44, 0x41, 0x02, 0xAC, 0xA2, 0x91, // C1DA....
/* 00B0 */ 0x61, 0x84, 0x08, 0x72, 0x7C, 0x81, 0xBA, 0xC4, // a..r|...
/* 00B8 */ 0x13, 0x88, 0xC7, 0xE4, 0x01, 0x18, 0x21, 0x4C, // ......!L
/* 00C0 */ 0x8B, 0xB0, 0x82, 0x36, 0x62, 0x02, 0xC3, 0x1E, // ...6b...
/* 00C8 */ 0x0A, 0xE6, 0x07, 0x20, 0x01, 0x9E, 0x05, 0x58, // ... ...X
/* 00D0 */ 0x1F, 0x23, 0x21, 0xB0, 0x7B, 0x01, 0xE2, 0x04, // .#!.{...
/* 00D8 */ 0x68, 0x1E, 0x8D, 0x46, 0x75, 0x9C, 0xC6, 0x88, // h..Fu...
/* 00E0 */ 0xD2, 0x96, 0x00, 0xC5, 0x23, 0x13, 0x4C, 0x88, // ....#.L.
/* 00E8 */ 0x28, 0x21, 0x3A, 0xC3, 0x13, 0x5A, 0x28, 0xC3, // (!:..Z(.
/* 00F0 */ 0x45, 0x89, 0x13, 0x25, 0x70, 0x84, 0xDE, 0x04, // E..%p...
/* 00F8 */ 0x18, 0x83, 0x20, 0x08, 0x81, 0x43, 0x54, 0x36, // .. ..CT6
/* 0100 */ 0x48, 0xA1, 0xB6, 0x3F, 0x08, 0x22, 0xC9, 0xC1, // H..?."..
/* 0108 */ 0x89, 0x80, 0x45, 0x1A, 0x0D, 0xEA, 0x14, 0x90, // ..E.....
/* 0110 */ 0xE0, 0xA9, 0xC0, 0x27, 0x82, 0x93, 0x3A, 0xAF, // ...'..:.
/* 0118 */ 0xA3, 0x3A, 0xEB, 0x20, 0xC1, 0x4F, 0xA4, 0xCE, // .:. .O..
/* 0120 */ 0xE3, 0x00, 0x19, 0x38, 0x9B, 0x9A, 0xD9, 0x75, // ...8...u
/* 0128 */ 0x3E, 0x80, 0xE0, 0x1A, 0x50, 0xFF, 0xFF, 0x79, // >...P..y
/* 0130 */ 0x3E, 0x16, 0xB0, 0x61, 0x86, 0xC3, 0x0C, 0xD1, // >..a....
/* 0138 */ 0x83, 0xF5, 0x04, 0x0E, 0x91, 0x01, 0x7A, 0x62, // ......zb
/* 0140 */ 0x4F, 0x04, 0x58, 0x87, 0x93, 0xD1, 0x71, 0xA0, // O.X...q.
/* 0148 */ 0x54, 0x01, 0x66, 0xC7, 0xAD, 0x49, 0x27, 0x38, // T.f..I'8
/* 0150 */ 0x1E, 0x9F, 0x03, 0x3C, 0x9F, 0x13, 0x4E, 0x60, // ...<..N`
/* 0158 */ 0xF9, 0x83, 0x40, 0x8D, 0xCC, 0xD0, 0x36, 0x38, // ..@...68
/* 0160 */ 0x2D, 0x1D, 0x04, 0x7C, 0x00, 0x30, 0x81, 0xC5, // -..|.0..
/* 0168 */ 0x1E, 0x26, 0xE8, 0x78, 0xC0, 0x7F, 0x00, 0x78, // .&.x...x
/* 0170 */ 0x3E, 0x88, 0xF0, 0xCE, 0xE0, 0xF9, 0x7A, 0x10, // >.....z.
/* 0178 */ 0x3A, 0x5B, 0xC8, 0xC9, 0x78, 0x50, 0xC7, 0x0A, // :[..xP..
/* 0180 */ 0x5F, 0x10, 0x30, 0xE0, 0x47, 0xFB, 0xC2, 0x10, // _.0.G...
/* 0188 */ 0xE6, 0xA5, 0x21, 0xEE, 0xC1, 0x5B, 0xEB, 0x15, // ..!..[..
/* 0190 */ 0x82, 0x10, 0x38, 0x34, 0x84, 0xFE, 0x1A, 0x16, // ..84....
/* 0198 */ 0x35, 0x78, 0x7A, 0xB2, 0xE0, 0x87, 0x0A, 0x06, // 5xz.....
/* 01A0 */ 0xCC, 0xC7, 0x73, 0x5A, 0x3E, 0x7B, 0x78, 0x78, // ..sZ>{xx
/* 01A8 */ 0xF0, 0x4F, 0x14, 0xC0, 0xE2, 0x3C, 0x81, 0xBB, // .O...<..
/* 01B0 */ 0x1C, 0xB0, 0x13, 0x05, 0x7E, 0xE0, 0xF0, 0x2F, // ....~../
/* 01B8 */ 0x15, 0x86, 0xF5, 0x45, 0xE2, 0x1D, 0x22, 0x81, // ...E..".
/* 01C0 */ 0xB1, 0x02, 0x63, 0xFE, 0xFF, 0xC0, 0x1E, 0xB9, // ..c.....
/* 01C8 */ 0xFD, 0x0A, 0x40, 0x08, 0x7E, 0x4A, 0x4F, 0x06, // ..@.~JO.
/* 01D0 */ 0xCF, 0x20, 0x11, 0x8E, 0xCA, 0xE8, 0x4F, 0x10, // . ....O.
/* 01D8 */ 0x7D, 0xCE, 0x5B, 0x10, 0xD1, 0x8E, 0xEA, 0x1C, // }.[.....
/* 01E0 */ 0x8E, 0x22, 0x54, 0x88, 0xB3, 0x30, 0x50, 0xB8, // ."T..0P.
/* 01E8 */ 0x60, 0x01, 0x8D, 0x93, 0xC0, 0x22, 0x87, 0x8A, // `...."..
/* 01F0 */ 0x1E, 0x04, 0x07, 0x3C, 0x87, 0x43, 0x0A, 0x7A, // ...<.C.z
/* 01F8 */ 0x10, 0x27, 0x13, 0xE5, 0x3C, 0x8E, 0xC9, 0xA7, // .'..<...
/* 0200 */ 0x14, 0x23, 0x1C, 0xD3, 0xC3, 0xC9, 0x53, 0x87, // .#....S.
/* 0208 */ 0x6F, 0x1B, 0x07, 0x7F, 0x5E, 0xC7, 0x7A, 0x88, // o...^.z.
/* 0210 */ 0x6C, 0xE0, 0x87, 0x80, 0x39, 0x5B, 0x78, 0x08, // l...9[x.
/* 0218 */ 0x7C, 0x00, 0x07, 0x74, 0x8A, 0x56, 0x3A, 0x31, // |..t.V:1
/* 0220 */ 0xE4, 0x79, 0x86, 0x8F, 0x19, 0x3B, 0x00, 0xAE, // .y...;..
/* 0228 */ 0xCA, 0x03, 0x08, 0x13, 0xFF, 0x34, 0x90, 0xB4, // .....4..
/* 0230 */ 0x37, 0x02, 0x85, 0xF1, 0x09, 0x07, 0x70, 0x05, // 7.....p.
/* 0238 */ 0xF4, 0x00, 0x01, 0x9E, 0xB3, 0x01, 0x5C, 0xEC, // ......\.
/* 0240 */ 0x93, 0x8F, 0x12, 0xE2, 0xED, 0x21, 0xFA, 0xB9, // .....!..
/* 0248 */ 0x9C, 0xCC, 0x2B, 0x84, 0x8F, 0x37, 0x98, 0xFF, // ..+..7..
/* 0250 */ 0xFF, 0xF1, 0x06, 0xD6, 0x05, 0xC6, 0xDA, 0xAE, // ........
/* 0258 */ 0x37, 0x64, 0x4A, 0xCF, 0x34, 0xEF, 0x36, 0x46, // 7dJ.4.6F
/* 0260 */ 0x39, 0x2C, 0xC3, 0x3C, 0xDE, 0xF8, 0x76, 0xD0, // 9,.<..v.
/* 0268 */ 0x1A, 0x8C, 0xEE, 0x36, 0xEC, 0x3C, 0x72, 0x12, // ...6.<r.
/* 0270 */ 0xA1, 0x18, 0xEE, 0x83, 0x44, 0x9C, 0xD8, 0xE1, // ....D...
/* 0278 */ 0x22, 0xC4, 0x7E, 0xE4, 0x30, 0xDE, 0xE3, 0x0D, // ".~.0...
/* 0280 */ 0x8B, 0x77, 0x1C, 0xD0, 0x31, 0xC4, 0xC7, 0x1B, // .w..1...
/* 0288 */ 0x80, 0x1F, 0xA7, 0x83, 0xC7, 0x12, 0xF0, 0x9F, // ........
/* 0290 */ 0x15, 0xF8, 0xA9, 0x04, 0x4C, 0xFF, 0xFF, 0x53, // ....L..S
/* 0298 */ 0x09, 0xFC, 0xC4, 0x0F, 0x02, 0x9D, 0x75, 0x9C, // ......u.
/* 02A0 */ 0x16, 0x44, 0x36, 0x16, 0x6B, 0x02, 0xC9, 0x82, // .D6.k...
/* 02A8 */ 0x50, 0xCE, 0x05, 0xCB, 0x23, 0xAE, 0x30, 0x8F, // P...#.0.
/* 02B0 */ 0x27, 0xF2, 0x39, 0x44, 0x7E, 0xA9, 0x88, 0x70, // '.9D~..p
/* 02B8 */ 0x06, 0xC7, 0x10, 0xE9, 0xB4, 0x62, 0x1C, 0xD8, // .....b..
/* 02C0 */ 0x2B, 0x87, 0xEF, 0x01, 0x4F, 0x16, 0x3C, 0x11, // +...O.<.
/* 02C8 */ 0xB0, 0x0E, 0x72, 0x3C, 0x0B, 0x85, 0x94, 0xD1, // ..r<....
/* 02D0 */ 0x68, 0x54, 0x1E, 0x84, 0xB5, 0xC0, 0x08, 0xCE, // hT......
/* 02D8 */ 0x20, 0x06, 0x74, 0x50, 0x08, 0x1D, 0x90, 0x70, // .tP...p
/* 02E0 */ 0x4A, 0x40, 0x34, 0xAD, 0xF7, 0x21, 0x76, 0xEA, // J@4..!v.
/* 02E8 */ 0xF1, 0xFD, 0xC8, 0x04, 0x53, 0xDD, 0x8D, 0xE8, // ....S...
/* 02F0 */ 0x3C, 0x7D, 0x23, 0xE0, 0xF7, 0x14, 0x9F, 0x11, // <}#.....
/* 02F8 */ 0x0C, 0x6E, 0x85, 0xF7, 0x0F, 0xD0, 0x8C, 0x38, // .n.....8
/* 0300 */ 0x88, 0x6F, 0x0C, 0x3E, 0x13, 0x78, 0xA3, 0x27, // .o.>.x.'
/* 0308 */ 0x82, 0x51, 0x73, 0x64, 0x42, 0x4D, 0xC3, 0x53, // .QsdBM.S
/* 0310 */ 0x7D, 0xB1, 0x31, 0x81, 0x75, 0x5D, 0x86, 0x40, // }.1.u].@
/* 0318 */ 0xA6, 0xEF, 0x98, 0x00, 0x0A, 0x20, 0x5F, 0x0A, // ..... _.
/* 0320 */ 0x7C, 0xD2, 0x79, 0x30, 0x60, 0x63, 0x78, 0xD8, // |.y0`cx.
/* 0328 */ 0x31, 0x9A, 0xD1, 0xB9, 0xE0, 0xC9, 0xA3, 0x24, // 1......$
/* 0330 */ 0x4E, 0x9E, 0x82, 0x78, 0xF2, 0x8E, 0x3F, 0x79, // N..x..?y
/* 0338 */ 0xF4, 0x9D, 0xC2, 0x87, 0x2B, 0x4E, 0xE0, 0xB8, // ....+N..
/* 0340 */ 0x63, 0xA7, 0x57, 0x10, 0xFC, 0x64, 0xFF, 0xFF, // c.W..d..
/* 0348 */ 0xA7, 0xF6, 0xA8, 0xE0, 0x59, 0xF8, 0xD2, 0x82, // ....Y...
/* 0350 */ 0x1B, 0x3C, 0xDC, 0x5B, 0xC6, 0x91, 0x87, 0x79, // .<.[...y
/* 0358 */ 0xA7, 0xF2, 0xE9, 0xCA, 0x60, 0x41, 0xC2, 0xBC, // ....`A..
/* 0360 */ 0x2F, 0xE0, 0x80, 0xDE, 0xEE, 0x5E, 0x1C, 0x0E, // /....^..
/* 0368 */ 0x37, 0xC4, 0xF9, 0x1E, 0x7A, 0x04, 0x1F, 0x3F, // 7...z..?
/* 0370 */ 0x7C, 0x66, 0xC0, 0x0D, 0x89, 0x5D, 0x03, 0xF8, // |f...]..
/* 0378 */ 0x68, 0x7C, 0x0D, 0xE0, 0xA3, 0xF4, 0x1D, 0x0B, // h|......
/* 0380 */ 0x7C, 0x02, 0xEF, 0x01, 0x20, 0x87, 0xC7, 0x84, // |... ...
/* 0388 */ 0x1F, 0x15, 0xBD, 0x67, 0x78, 0x5C, 0x7C, 0xC8, // ...gx\|.
/* 0390 */ 0xBE, 0x22, 0x31, 0xEC, 0x67, 0x0D, 0x5F, 0xD2, // ."1.g._.
/* 0398 */ 0x4E, 0xF0, 0x95, 0xE2, 0x85, 0x0D, 0x03, 0xEB, // N.......
/* 03A0 */ 0x43, 0x00, 0x87, 0x35, 0x5A, 0xD8, 0x43, 0x7E, // C..5Z.C~
/* 03A8 */ 0x49, 0xF1, 0x09, 0xC7, 0x33, 0x33, 0x46, 0x58, // I...33FX
/* 03B0 */ 0x1F, 0x04, 0x1C, 0xE6, 0x20, 0x00, 0x9A, 0x03, // .... ...
/* 03B8 */ 0x1B, 0xFE, 0x06, 0xE0, 0x4B, 0x40, 0x90, 0x37, // ....K@.7
/* 03C0 */ 0x91, 0xD3, 0x7D, 0xF2, 0x31, 0x2A, 0xBF, 0x11, // ..}.1*..
/* 03C8 */ 0xF0, 0xF3, 0x08, 0x16, 0x28, 0x88, 0x6F, 0x18, // ....(.o.
/* 03D0 */ 0x1E, 0xDB, 0x81, 0xC4, 0x86, 0x73, 0x2D, 0xC1, // .....s-.
/* 03D8 */ 0xFE, 0xFF, 0x09, 0x2A, 0xB4, 0xE9, 0x53, 0xA3, // ...*..S.
/* 03E0 */ 0x51, 0xAB, 0x06, 0x65, 0x6A, 0x94, 0x69, 0x50, // Q..ej.iP
/* 03E8 */ 0xAB, 0x4F, 0xA5, 0xC6, 0x8C, 0x99, 0xB8, 0xF0, // .O......
/* 03F0 */ 0xF9, 0x15, 0xA1, 0x11, 0x3B, 0x12, 0x08, 0x8D, // ....;...
/* 03F8 */ 0x48, 0x21, 0x10, 0x07, 0xFE, 0x71, 0x08, 0xC4, // H!...q..
/* 0400 */ 0x72, 0xEF, 0x61, 0xBA, 0x16, 0x11, 0x5A, 0x19, // r.a...Z.
/* 0408 */ 0x01, 0x91, 0x36, 0x10, 0x01, 0x59, 0xBB, 0x0A, // ..6..Y..
/* 0410 */ 0x20, 0x96, 0x04, 0x44, 0x40, 0xFE, 0xFF, 0x03 // ..D@...
})
}
}
Mutex (PSMX, 0x00)
}
}
OperationRegion (PIRQ, SystemIO, 0x0C00, 0x02)
Field (PIRQ, ByteAcc, NoLock, Preserve)
{
PIDX, 8,
PDAT, 8
}
IndexField (PIDX, PDAT, ByteAcc, NoLock, Preserve)
{
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8,
PIRE, 8,
PIRF, 8,
PIRG, 8,
PIRH, 8,
Offset (0x0C),
SIRA, 8,
SIRB, 8,
SIRC, 8,
SIRD, 8,
PIRS, 8,
Offset (0x13),
HDAD, 8,
Offset (0x17),
SDCL, 8,
Offset (0x1A),
SDIO, 8,
Offset (0x30),
USB1, 8,
Offset (0x34),
USB3, 8,
Offset (0x41),
SATA, 8,
Offset (0x62),
GIOC, 8,
Offset (0x70),
I2C0, 8,
I2C1, 8,
I2C2, 8,
I2C3, 8,
URT0, 8,
URT1, 8
}
Method (DSPI, 0, NotSerialized)
{
INTA (0x1F)
INTB (0x1F)
INTC (0x1F)
INTD (0x1F)
PIRE = 0x1F
PIRF = 0x1F
PIRG = 0x1F
PIRH = 0x1F
}
Method (INTA, 1, NotSerialized)
{
PIRA = Arg0
If (PICM)
{
HDAD = Arg0
SDCL = Arg0
}
}
Method (INTB, 1, NotSerialized)
{
PIRB = Arg0
}
Method (INTC, 1, NotSerialized)
{
PIRC = Arg0
If (PICM)
{
USB1 = Arg0
USB3 = Arg0
}
}
Method (INTD, 1, NotSerialized)
{
PIRD = Arg0
If (PICM)
{
SATA = Arg0
}
}
Name (PRS1, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,5,6,10,11}
})
Name (BUFA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{15}
})
Device (LNKA)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRA && (PIRA != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
INTA (0x1F)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRA) /* \_SB_.PIRA */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRA = Local0
}
}
Device (LNKB)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRB && (PIRB != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
INTB (0x1F)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRB) /* \_SB_.PIRB */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRB = Local0
}
}
Device (LNKC)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRC && (PIRC != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
INTC (0x1F)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRC) /* \_SB_.PIRC */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRC = Local0
}
}
Device (LNKD)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRD && (PIRD != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
INTD (0x1F)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRD) /* \_SB_.PIRD */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRD = Local0
}
}
Device (LNKE)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x05) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRE && (PIRE != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
PIRE = 0x1F
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRE) /* \_SB_.PIRE */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRE = Local0
}
}
Device (LNKF)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x06) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRF && (PIRF != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
PIRF = 0x1F
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRF) /* \_SB_.PIRF */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRF = Local0
}
}
Device (LNKG)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x07) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRG && (PIRG != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
PIRG = 0x1F
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRG) /* \_SB_.PIRG */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRG = Local0
}
}
Device (LNKH)
{
Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID
Name (_UID, 0x08) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PIRH && (PIRH != 0x1F)))
{
Return (0x0B)
}
Else
{
Return (0x09)
}
}
Method (_PRS, 0, NotSerialized) // _PRS: Possible Resource Settings
{
Return (PRS1) /* \_SB_.PRS1 */
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
PIRH = 0x1F
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateWordField (BUFA, One, IRQX)
IRQX = (One << PIRH) /* \_SB_.PIRH */
Return (BUFA) /* \_SB_.BUFA */
}
Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings
{
CreateWordField (Arg0, One, IRA)
FindSetRightBit (IRA, Local0)
Local0--
PIRH = Local0
}
}
Method (GSMI, 1, NotSerialized)
{
APMD = Arg0
APMC = 0xE4
Sleep (0x02)
}
Method (S80H, 1, NotSerialized)
{
P80H = Arg0
}
Method (BSMI, 1, NotSerialized)
{
APMD = Arg0
APMC = 0xBE
Sleep (One)
}
}
Name (TSOS, 0x75)
If (CondRefOf (\_OSI))
{
If (_OSI ("Windows 2009"))
{
TSOS = 0x50
}
If (_OSI ("Windows 2015"))
{
TSOS = 0x70
}
}
Scope (_SB)
{
OperationRegion (SMIC, SystemMemory, 0xFED80000, 0x00800000)
Field (SMIC, ByteAcc, NoLock, Preserve)
{
Offset (0x36A),
SMIB, 8
}
OperationRegion (SSMI, SystemIO, SMIB, 0x02)
Field (SSMI, AnyAcc, NoLock, Preserve)
{
SMIW, 16
}
OperationRegion (ECMC, SystemIO, 0x72, 0x02)
Field (ECMC, AnyAcc, NoLock, Preserve)
{
ECMI, 8,
ECMD, 8
}
IndexField (ECMI, ECMD, ByteAcc, NoLock, Preserve)
{
Offset (0x08),
FRTB, 32
}
OperationRegion (FRTP, SystemMemory, FRTB, 0x0100)
Field (FRTP, AnyAcc, NoLock, Preserve)
{
PEBA, 32,
, 5,
IC0E, 1,
IC1E, 1,
IC2E, 1,
IC3E, 1,
IC4E, 1,
IC5E, 1,
UT0E, 1,
UT1E, 1,
, 1,
, 1,
ST_E, 1,
UT2E, 1,
, 1,
EMMD, 2,
, 3,
XHCE, 1,
, 1,
, 1,
UT3E, 1,
ESPI, 1,
EMME, 1,
HFPE, 1,
Offset (0x08),
PCEF, 1,
, 4,
IC0D, 1,
IC1D, 1,
IC2D, 1,
IC3D, 1,
IC4D, 1,
IC5D, 1,
UT0D, 1,
UT1D, 1,
, 1,
, 1,
ST_D, 1,
UT2D, 1,
, 1,
EHCD, 1,
, 4,
XHCD, 1,
SD_D, 1,
, 1,
UT3D, 1,
, 1,
EMD3, 1,
, 2,
S03D, 1,
FW00, 16,
FW01, 32,
FW02, 16,
FW03, 32,
SDS0, 8,
SDS1, 8,
CZFG, 1,
Offset (0x20),
SD10, 32,
EH10, 32,
XH10, 32,
STBA, 32
}
OperationRegion (FCFG, SystemMemory, PEBA, 0x01000000)
Field (FCFG, DWordAcc, NoLock, Preserve)
{
Offset (0xA3044),
IPDE, 32,
IMPE, 32,
Offset (0xA3078),
, 2,
LDQ0, 1,
Offset (0xA30CB),
, 7,
AUSS, 1
}
OperationRegion (IOMX, SystemMemory, 0xFED80D00, 0x0100)
Field (IOMX, AnyAcc, NoLock, Preserve)
{
Offset (0x15),
IM15, 8,
IM16, 8,
Offset (0x1F),
IM1F, 8,
IM20, 8,
Offset (0x44),
IM44, 8,
Offset (0x46),
IM46, 8,
Offset (0x4A),
IM4A, 8,
IM4B, 8,
Offset (0x57),
IM57, 8,
IM58, 8,
Offset (0x68),
IM68, 8,
IM69, 8,
IM6A, 8,
IM6B, 8,
Offset (0x6D),
IM6D, 8
}
OperationRegion (FACR, SystemMemory, 0xFED81E00, 0x0100)
Field (FACR, AnyAcc, NoLock, Preserve)
{
Offset (0x80),
, 28,
RD28, 1,
, 1,
RQTY, 1,
Offset (0x84),
, 28,
SD28, 1,
, 1,
Offset (0xA0),
PG1A, 1
}
OperationRegion (EMMX, SystemMemory, 0xFEDD5800, 0x0130)
Field (EMMX, AnyAcc, NoLock, Preserve)
{
Offset (0xD0),
, 17,
FC18, 1,
FC33, 1,
, 7,
CD_T, 1,
WP_T, 1
}
OperationRegion (EMMB, SystemMemory, 0xFEDD5800, 0x0130)
Field (EMMB, AnyAcc, NoLock, Preserve)
{
Offset (0xA4),
E0A4, 32,
E0A8, 32,
Offset (0xB0),
E0B0, 32,
Offset (0xD0),
E0D0, 32,
Offset (0x116),
E116, 32
}
Name (SVBF, Buffer (0x0100)
{
0x00 // .
})
CreateDWordField (SVBF, Zero, S0A4)
CreateDWordField (SVBF, 0x04, S0A8)
CreateDWordField (SVBF, 0x08, S0B0)
CreateDWordField (SVBF, 0x0C, S0D0)
CreateDWordField (SVBF, 0x10, S116)
Method (SECR, 0, Serialized)
{
S116 = E116 /* \_SB_.E116 */
RQTY = Zero
RD28 = One
Local0 = SD28 /* \_SB_.SD28 */
While (Local0)
{
Local0 = SD28 /* \_SB_.SD28 */
}
}
Method (RECR, 0, Serialized)
{
E116 = S116 /* \_SB_.S116 */
}
OperationRegion (LUIE, SystemMemory, 0xFEDC0020, 0x04)
Field (LUIE, AnyAcc, NoLock, Preserve)
{
IER0, 1,
IER1, 1,
IER2, 1,
IER3, 1,
UOL0, 1,
UOL1, 1,
UOL2, 1,
UOL3, 1,
WUR0, 2,
WUR1, 2,
WUR2, 2,
WUR3, 2
}
Method (FRUI, 2, Serialized)
{
If ((Arg0 == Zero))
{
Arg1 = IUA0 /* \_SB_.IUA0 */
}
If ((Arg0 == One))
{
Arg1 = IUA1 /* \_SB_.IUA1 */
}
If ((Arg0 == 0x02))
{
Arg1 = IUA2 /* \_SB_.IUA2 */
}
If ((Arg0 == 0x03))
{
Arg1 = IUA3 /* \_SB_.IUA3 */
}
}
Method (FUIO, 1, Serialized)
{
If ((IER0 == One))
{
If ((WUR0 == Arg0))
{
Return (Zero)
}
}
If ((IER1 == One))
{
If ((WUR1 == Arg0))
{
Return (One)
}
}
If ((IER2 == One))
{
If ((WUR2 == Arg0))
{
Return (0x02)
}
}
If ((IER3 == One))
{
If ((WUR3 == Arg0))
{
Return (0x03)
}
}
Return (0x0F)
}
Method (SRAD, 2, Serialized)
{
Local0 = (Arg0 << One)
Local0 += 0xFED81E40
OperationRegion (ADCR, SystemMemory, Local0, 0x02)
Field (ADCR, ByteAcc, NoLock, Preserve)
{
ADTD, 2,
ADPS, 1,
ADPD, 1,
ADSO, 1,
ADSC, 1,
ADSR, 1,
ADIS, 1,
ADDS, 3
}
ADIS = One
ADSR = Zero
Stall (Arg1)
ADSR = One
ADIS = Zero
Stall (Arg1)
}
Method (DSAD, 2, Serialized)
{
Local0 = (Arg0 << One)
Local0 += 0xFED81E40
OperationRegion (ADCR, SystemMemory, Local0, 0x02)
Field (ADCR, ByteAcc, NoLock, Preserve)
{
ADTD, 2,
ADPS, 1,
ADPD, 1,
ADSO, 1,
ADSC, 1,
ADSR, 1,
ADIS, 1,
ADDS, 3
}
If ((Arg0 != ADTD))
{
If ((Arg1 == Zero))
{
ADTD = Zero
ADPD = One
Local0 = ADDS /* \_SB_.DSAD.ADDS */
While ((Local0 != 0x07))
{
Local0 = ADDS /* \_SB_.DSAD.ADDS */
}
}
If ((Arg1 == 0x03))
{
ADPD = Zero
Local0 = ADDS /* \_SB_.DSAD.ADDS */
While ((Local0 != Zero))
{
Local0 = ADDS /* \_SB_.DSAD.ADDS */
}
ADTD = 0x03
}
}
}
Method (HSAD, 2, Serialized)
{
Local3 = (One << Arg0)
Local0 = (Arg0 << One)
Local0 += 0xFED81E40
OperationRegion (ADCR, SystemMemory, Local0, 0x02)
Field (ADCR, ByteAcc, NoLock, Preserve)
{
ADTD, 2,
ADPS, 1,
ADPD, 1,
ADSO, 1,
ADSC, 1,
ADSR, 1,
ADIS, 1,
ADDS, 3
}
If ((Arg1 != ADTD))
{
If ((Arg1 == Zero))
{
PG1A = One
ADTD = Zero
ADPD = One
Local0 = ADDS /* \_SB_.HSAD.ADDS */
While ((Local0 != 0x07))
{
Local0 = ADDS /* \_SB_.HSAD.ADDS */
}
RQTY = One
RD28 = One
Local0 = SD28 /* \_SB_.SD28 */
While (!Local0)
{
Local0 = SD28 /* \_SB_.SD28 */
}
}
If ((Arg1 == 0x03))
{
RQTY = Zero
RD28 = One
Local0 = SD28 /* \_SB_.SD28 */
While (Local0)
{
Local0 = SD28 /* \_SB_.SD28 */
}
ADPD = Zero
Local0 = ADDS /* \_SB_.HSAD.ADDS */
While ((Local0 != Zero))
{
Local0 = ADDS /* \_SB_.HSAD.ADDS */
}
ADTD = 0x03
PG1A = Zero
}
}
}
OperationRegion (FPIC, SystemIO, 0x0C00, 0x02)
Field (FPIC, AnyAcc, NoLock, Preserve)
{
FPII, 8,
FPID, 8
}
IndexField (FPII, FPID, ByteAcc, NoLock, Preserve)
{
Offset (0xF4),
IUA0, 8,
IUA1, 8,
Offset (0xF8),
IUA2, 8,
IUA3, 8
}
Device (HFP1)
{
Name (_HID, "AMDI0060") // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (HFPE)
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0xFEC11000, // Address Base
0x00000100, // Address Length
)
})
Return (RBUF) /* \_SB_.HFP1._CRS.RBUF */
}
}
Device (GPIO)
{
Name (_HID, "AMDI0030") // _HID: Hardware ID
Name (_CID, "AMDI0030") // _CID: Compatible ID
Name (_UID, Zero) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
{
0x00000007,
}
Memory32Fixed (ReadWrite,
0xFED81500, // Address Base
0x00000400, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED81200, // Address Base
0x00000100, // Address Length
)
})
Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (FUR0)
{
Name (_HID, "AMDI0020") // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{3}
Memory32Fixed (ReadWrite,
0xFEDC9000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEDC7000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((UT0E == One))
{
If ((FUIO (Zero) != 0x0F))
{
Return (Zero)
}
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
}
Device (FUR1)
{
Name (_HID, "AMDI0020") // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{4}
Memory32Fixed (ReadWrite,
0xFEDCA000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEDC8000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((UT1E == One))
{
If ((FUIO (One) != 0x0F))
{
Return (Zero)
}
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
}
Device (FUR2)
{
Name (_HID, "AMDI0020") // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{3}
Memory32Fixed (ReadWrite,
0xFEDCE000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEDCC000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((UT2E == One))
{
If ((FUIO (0x02) != 0x0F))
{
Return (Zero)
}
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
}
Device (FUR3)
{
Name (_HID, "AMDI0020") // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{4}
Memory32Fixed (ReadWrite,
0xFEDCF000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEDCD000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((UT3E == One))
{
If ((FUIO (0x03) != 0x0F))
{
Return (Zero)
}
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
}
Device (I2CA)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{10}
Memory32Fixed (ReadWrite,
0xFEDC2000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC0E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x05, 0xC8)
}
}
Device (I2CB)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{11}
Memory32Fixed (ReadWrite,
0xFEDC3000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC1E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x06, 0xC8)
}
}
Device (I2CC)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{4}
Memory32Fixed (ReadWrite,
0xFEDC4000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC2E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x07, 0xC8)
}
}
Device (I2CD)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{6}
Memory32Fixed (ReadWrite,
0xFEDC5000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC3E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x08, 0xC8)
}
}
Device (I2CE)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{14}
Memory32Fixed (ReadWrite,
0xFEDC6000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC4E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x09, 0xC8)
}
}
Device (I2CF)
{
Name (_HID, "AMDI0010") // _HID: Hardware ID
Name (_UID, 0x05) // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IRQ (Edge, ActiveHigh, Exclusive, )
{15}
Memory32Fixed (ReadWrite,
0xFEDCB000, // Address Base
0x00001000, // Address Length
)
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If ((IC5E == One))
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (RSET, 0, NotSerialized)
{
SRAD (0x0A, 0xC8)
}
}
Method (EPIN, 0, NotSerialized)
{
IPDE = Zero
IMPE = Zero
IM15 = One
IM16 = One
IM20 = One
IM44 = One
IM46 = One
IM68 = One
IM69 = One
IM6A = One
IM6B = One
IM4A = One
IM58 = One
IM4B = One
IM57 = One
IM6D = One
IM1F = One
SECR ()
}
Name (NCRS, ResourceTemplate ()
{
Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
{
0x00000005,
}
Memory32Fixed (ReadWrite,
0xFEDD5000, // Address Base
0x00001000, // Address Length
)
})
Name (DCRS, ResourceTemplate ()
{
Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
{
0x00000005,
}
Memory32Fixed (ReadWrite,
0xFEDD5000, // Address Base
0x00001000, // Address Length
)
GpioInt (Edge, ActiveBoth, SharedAndWake, PullUp, 0x0BB8,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0044
}
GpioIo (Shared, PullUp, 0x0000, 0x0000, IoRestrictionNone,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0044
}
})
Name (AHID, "AMDI0040")
Name (ACID, "AMDI0040")
Name (SHID, 0x400DD041)
Name (SCID, "PCICC_080501")
Device (EMM0)
{
Method (_HID, 0, Serialized) // _HID: Hardware ID
{
If (EMMD)
{
Return (SHID) /* \_SB_.SHID */
}
Else
{
Return (AHID) /* \_SB_.AHID */
}
}
Method (_CID, 0, Serialized) // _CID: Compatible ID
{
If (EMMD)
{
Return (SCID) /* \_SB_.SCID */
}
Else
{
Return (ACID) /* \_SB_.ACID */
}
}
Name (_UID, Zero) // _UID: Unique ID
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
If (EMD3)
{
Return (DCRS) /* \_SB_.DCRS */
}
Else
{
Return (NCRS) /* \_SB_.NCRS */
}
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TSOS >= 0x70))
{
If (EMME)
{
Return (0x0F)
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
If (EMME)
{
EPIN ()
}
}
Method (_S0W, 0, NotSerialized) // _S0W: S0 Device Wake State
{
If ((EMD3 && EMME))
{
Return (0x04)
}
Else
{
Return (Zero)
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
If ((EMD3 && EMME))
{
HSAD (0x1C, Zero)
RECR ()
}
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
If ((EMD3 && EMME))
{
HSAD (0x1C, 0x03)
}
}
}
}
Scope (_SB.PCI0)
{
Device (UAR1)
{
Name (_HID, EisaId ("PNP0500") /* Standard PC COM Serial Port */) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Name (_DDN, "COM1") // _DDN: DOS Device Name
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((FUIO (Zero) != 0x0F))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x02E8, // Range Minimum
0x02E8, // Range Maximum
0x01, // Alignment
0x08, // Length
_Y09)
IRQNoFlags (_Y0A)
{3}
})
CreateByteField (BUF0, \_SB.PCI0.UAR1._CRS._Y09._MIN, IOLO) // _MIN: Minimum Base Address
CreateByteField (BUF0, 0x03, IOHI)
CreateByteField (BUF0, \_SB.PCI0.UAR1._CRS._Y09._MAX, IORL) // _MAX: Maximum Base Address
CreateByteField (BUF0, 0x05, IORH)
CreateWordField (BUF0, \_SB.PCI0.UAR1._CRS._Y0A._INT, IRQL) // _INT: Interrupts
Local0 = FUIO (Zero)
Switch (ToInteger (Local0))
{
Case (Zero)
{
IOLO = 0xE8
IOHI = 0x02
IORL = 0xE8
IORH = 0x02
}
Case (One)
{
IOLO = 0xF8
IOHI = 0x02
IORL = 0xF8
IORH = 0x02
}
Case (0x02)
{
IOLO = 0xE8
IOHI = 0x03
IORL = 0xE8
IORH = 0x03
}
Case (0x03)
{
IOLO = 0xF8
IOHI = 0x03
IORL = 0xF8
IORH = 0x03
}
}
Local1 = IUA0 /* \_SB_.IUA0 */
IRQL = (One << (Local1 & 0x0F))
Return (BUF0) /* \_SB_.PCI0.UAR1._CRS.BUF0 */
}
}
Device (UAR2)
{
Name (_HID, EisaId ("PNP0500") /* Standard PC COM Serial Port */) // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
Name (_DDN, "COM2") // _DDN: DOS Device Name
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((FUIO (One) != 0x0F))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x02F8, // Range Minimum
0x02F8, // Range Maximum
0x01, // Alignment
0x08, // Length
_Y0B)
IRQNoFlags (_Y0C)
{4}
})
CreateByteField (BUF0, \_SB.PCI0.UAR2._CRS._Y0B._MIN, IOLO) // _MIN: Minimum Base Address
CreateByteField (BUF0, 0x03, IOHI)
CreateByteField (BUF0, \_SB.PCI0.UAR2._CRS._Y0B._MAX, IORL) // _MAX: Maximum Base Address
CreateByteField (BUF0, 0x05, IORH)
CreateWordField (BUF0, \_SB.PCI0.UAR2._CRS._Y0C._INT, IRQL) // _INT: Interrupts
Local0 = FUIO (One)
Switch (ToInteger (Local0))
{
Case (Zero)
{
IOLO = 0xE8
IOHI = 0x02
IORL = 0xE8
IORH = 0x02
}
Case (One)
{
IOLO = 0xF8
IOHI = 0x02
IORL = 0xF8
IORH = 0x02
}
Case (0x02)
{
IOLO = 0xE8
IOHI = 0x03
IORL = 0xE8
IORH = 0x03
}
Case (0x03)
{
IOLO = 0xF8
IOHI = 0x03
IORL = 0xF8
IORH = 0x03
}
}
Local1 = IUA1 /* \_SB_.IUA1 */
IRQL = (One << (Local1 & 0x0F))
Return (BUF0) /* \_SB_.PCI0.UAR2._CRS.BUF0 */
}
}
Device (UAR3)
{
Name (_HID, EisaId ("PNP0500") /* Standard PC COM Serial Port */) // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
Name (_DDN, "COM3") // _DDN: DOS Device Name
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((FUIO (0x02) != 0x0F))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x03E8, // Range Minimum
0x03E8, // Range Maximum
0x01, // Alignment
0x08, // Length
_Y0D)
IRQNoFlags (_Y0E)
{3}
})
CreateByteField (BUF0, \_SB.PCI0.UAR3._CRS._Y0D._MIN, IOLO) // _MIN: Minimum Base Address
CreateByteField (BUF0, 0x03, IOHI)
CreateByteField (BUF0, \_SB.PCI0.UAR3._CRS._Y0D._MAX, IORL) // _MAX: Maximum Base Address
CreateByteField (BUF0, 0x05, IORH)
CreateWordField (BUF0, \_SB.PCI0.UAR3._CRS._Y0E._INT, IRQL) // _INT: Interrupts
Local0 = FUIO (0x02)
Switch (ToInteger (Local0))
{
Case (Zero)
{
IOLO = 0xE8
IOHI = 0x02
IORL = 0xE8
IORH = 0x02
}
Case (One)
{
IOLO = 0xF8
IOHI = 0x02
IORL = 0xF8
IORH = 0x02
}
Case (0x02)
{
IOLO = 0xE8
IOHI = 0x03
IORL = 0xE8
IORH = 0x03
}
Case (0x03)
{
IOLO = 0xF8
IOHI = 0x03
IORL = 0xF8
IORH = 0x03
}
}
Local1 = IUA2 /* \_SB_.IUA2 */
IRQL = (One << (Local1 & 0x0F))
Return (BUF0) /* \_SB_.PCI0.UAR3._CRS.BUF0 */
}
}
Device (UAR4)
{
Name (_HID, EisaId ("PNP0500") /* Standard PC COM Serial Port */) // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
Name (_DDN, "COM4") // _DDN: DOS Device Name
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((FUIO (0x03) != 0x0F))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x03F8, // Range Minimum
0x03F8, // Range Maximum
0x01, // Alignment
0x08, // Length
_Y0F)
IRQNoFlags (_Y10)
{4}
})
CreateByteField (BUF0, \_SB.PCI0.UAR4._CRS._Y0F._MIN, IOLO) // _MIN: Minimum Base Address
CreateByteField (BUF0, 0x03, IOHI)
CreateByteField (BUF0, \_SB.PCI0.UAR4._CRS._Y0F._MAX, IORL) // _MAX: Maximum Base Address
CreateByteField (BUF0, 0x05, IORH)
CreateWordField (BUF0, \_SB.PCI0.UAR4._CRS._Y10._INT, IRQL) // _INT: Interrupts
Local0 = FUIO (0x03)
Switch (ToInteger (Local0))
{
Case (Zero)
{
IOLO = 0xE8
IOHI = 0x02
IORL = 0xE8
IORH = 0x02
}
Case (One)
{
IOLO = 0xF8
IOHI = 0x02
IORL = 0xF8
IORH = 0x02
}
Case (0x02)
{
IOLO = 0xE8
IOHI = 0x03
IORL = 0xE8
IORH = 0x03
}
Case (0x03)
{
IOLO = 0xF8
IOHI = 0x03
IORL = 0xF8
IORH = 0x03
}
}
Local1 = IUA3 /* \_SB_.IUA3 */
IRQL = (One << (Local1 & 0x0F))
Return (BUF0) /* \_SB_.PCI0.UAR4._CRS.BUF0 */
}
}
}
Scope (_SB.FUR0)
{
Device (UART)
{
Name (_HID, "UTK0001") // _HID: Hardware ID
Name (_CID, "UARTTest") // _CID: Compatible ID
Name (_UID, Zero) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
UartSerialBusV2 (0x0001C200, DataBitsEight, StopBitsOne,
0xC0, LittleEndian, ParityTypeNone, FlowControlHardware,
0x0020, 0x0020, "\\_SB.FUR0",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.FUR0.UART._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.FUR1)
{
Device (UART)
{
Name (_HID, "UTK0001") // _HID: Hardware ID
Name (_CID, "UARTTest") // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
UartSerialBusV2 (0x0001C200, DataBitsEight, StopBitsOne,
0xC0, LittleEndian, ParityTypeNone, FlowControlHardware,
0x0020, 0x0020, "\\_SB.FUR1",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.FUR1.UART._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CA)
{
Device (WTP1)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK0001") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x007F, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.WTP1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MTP1)
{
Name (_HID, "STK0001") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB_.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.MTP1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WTP2)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK0002") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.WTP2._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MTP2)
{
Name (_HID, "STK0002") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB_.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.MTP2._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WTP3)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK0003") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.WTP3._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MTP3)
{
Name (_HID, "STK0003") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB_.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.MTP3._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WTP4)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK0004") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.WTP4._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MTP4)
{
Name (_HID, "STK0004") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x000222E0,
AddressingMode7Bit, "\\_SB_.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.MTP4._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MTP5)
{
Name (_HID, "STK0005") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00053020,
AddressingMode7Bit, "\\_SB_.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CA.MTP5._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CB)
{
Device (WT21)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00012") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF2") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x007F, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.WT21._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT21)
{
Name (_HID, "STK00012") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB_.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.MT21._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT22)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00022") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF2") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.WT22._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT22)
{
Name (_HID, "STK00022") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB_.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.MT22._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT23)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00032") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF2") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.WT23._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT23)
{
Name (_HID, "STK00032") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB_.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.MT23._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT24)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00042") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF2") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.WT24._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT24)
{
Name (_HID, "STK00042") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x000222E0,
AddressingMode7Bit, "\\_SB_.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.MT24._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT25)
{
Name (_HID, "STK00052") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00053020,
AddressingMode7Bit, "\\_SB_.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CB.MT25._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CC)
{
Device (WT31)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00013") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF3") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x007F, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.WT31._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT31)
{
Name (_HID, "STK00013") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB_.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.MT31._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT32)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00023") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF3") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.WT32._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT32)
{
Name (_HID, "STK00023") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB_.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.MT32._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT33)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00033") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF3") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.WT33._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT33)
{
Name (_HID, "STK00033") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB_.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.MT33._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT34)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00043") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF3") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.WT34._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT34)
{
Name (_HID, "STK00043") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x000222E0,
AddressingMode7Bit, "\\_SB_.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.MT34._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT35)
{
Name (_HID, "STK00053") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00053020,
AddressingMode7Bit, "\\_SB_.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CC.MT35._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CD)
{
Device (WT41)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00014") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF4") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x007F, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.WT41._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT41)
{
Name (_HID, "STK00014") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB_.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.MT41._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT42)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00024") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF4") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.WT42._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT42)
{
Name (_HID, "STK00024") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB_.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.MT42._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT43)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00034") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF4") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0012, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.WT43._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT43)
{
Name (_HID, "STK00034") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB_.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.MT43._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (WT44)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "STK00044") // _HID: Hardware ID
Name (_CID, "SPBTestKMDF4") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0013, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.WT44._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT44)
{
Name (_HID, "STK00044") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x000222E0,
AddressingMode7Bit, "\\_SB_.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.MT44._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Device (MT45)
{
Name (_HID, "STK00054") // _HID: Hardware ID
Name (_CID, "WITTTest") // _CID: Compatible ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00053020,
AddressingMode7Bit, "\\_SB_.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (RBUF) /* \_SB_.I2CD.MT45._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MWTT == Zero))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CA)
{
Device (NFC1)
{
Name (_HID, EisaId ("NXP8013")) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0029, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0045
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0057
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0059
}
})
Return (RBUF) /* \_SB_.I2CA.NFC1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (NFCS == Zero)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CB)
{
Device (NFC1)
{
Name (_HID, EisaId ("NXP8013")) // _HID: Hardware ID
Name (_UID, 0x02) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0029, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0045
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0057
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0059
}
})
Return (RBUF) /* \_SB_.I2CB.NFC1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (NFCS == One)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CC)
{
Device (NFC1)
{
Name (_HID, EisaId ("NXP8013")) // _HID: Hardware ID
Name (_UID, 0x03) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0029, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0045
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0057
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0059
}
})
Return (RBUF) /* \_SB_.I2CC.NFC1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (NFCS == 0x02)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CD)
{
Device (NFC1)
{
Name (_HID, EisaId ("NXP8013")) // _HID: Hardware ID
Name (_UID, 0x04) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0029, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0045
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0057
}
GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0059
}
})
Return (RBUF) /* \_SB_.I2CD.NFC1._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (NFCS == 0x03)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
Scope (_SB.I2CA)
{
Device (TPNL)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x004A, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CA.TPNL._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == Zero)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (Zero)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Device (ELAN)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CA.ELAN._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x10)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CB)
{
Device (TPNL)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x02) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x004A, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CB.TPNL._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == One)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (Zero)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Device (ELAN)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CB.ELAN._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x11)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CC)
{
Device (TPNL)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x03) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x004A, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CC.TPNL._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x02)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (Zero)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Device (ELAN)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CC.ELAN._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x12)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CD)
{
Device (TPNL)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x04) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x004A, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CD.TPNL._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x03)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (Zero)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Device (ELAN)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x000C
}
})
Return (RBUF) /* \_SB_.I2CD.ELAN._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPN == 0x13)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CA)
{
Device (TPDD)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x05) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0009
}
})
Return (RBUF) /* \_SB_.I2CA.TPDD._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPD == Zero)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (0x20)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CB)
{
Device (TPDD)
{
Name (_HID, "XXXX0000") // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_SUB, "XXXX0000") // _SUB: Subsystem ID
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
If ((TPTY == One))
{
_HID = "MSFT0001"
_SUB = "ELAN0001"
Return (Zero)
}
If ((TPTY == 0x02))
{
_HID = "MSFT0001"
_SUB = "SYNA0001"
Return (Zero)
}
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
If ((Arg2 == Zero))
{
If ((Arg1 == One))
{
Return (Buffer (One)
{
0x03 // .
})
}
}
If ((Arg2 == One))
{
If ((TPTY == One))
{
Return (One)
}
If ((TPTY == 0x02))
{
Return (0x20)
}
}
}
Return (Buffer (One)
{
0x00 // .
})
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((TPTY == Zero))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
If ((TPTY == One))
{
Name (SBFB, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
}
If ((TPTY == 0x02))
{
Name (SBFS, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
})
}
Name (SBFI, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0059
}
})
If ((TPTY == One))
{
Return (ConcatenateResTemplate (SBFB, SBFI))
}
If ((TPTY == 0x02))
{
Return (ConcatenateResTemplate (SBFS, SBFI))
}
}
Method (TPRD, 0, Serialized)
{
Return (^^^PCI0.LPC0.EC0.ECTP) /* \_SB_.PCI0.LPC0.EC0_.ECTP */
}
Method (TPWR, 1, Serialized)
{
^^^PCI0.LPC0.EC0.ECTP = Arg0
}
}
}
Scope (_SB.I2CC)
{
Device (TPDD)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x07) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0009
}
})
Return (RBUF) /* \_SB_.I2CC.TPDD._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPD == 0x02)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (0x20)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CD)
{
Device (TPDD)
{
Name (_HID, EisaId ("PNP0C50") /* HID Protocol Device (I2C bus) */) // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_UID, 0x08) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0009
}
})
Return (RBUF) /* \_SB_.I2CD.TPDD._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (THPD == 0x03)))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
{
If (Arg0){}
Else
{
}
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Return (0x20)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
}
Scope (_SB.I2CA)
{
Device (CMSR)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _HID: Hardware ID
Name (_CID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
I2CA
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (ALST == Zero)))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CA",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0090
}
})
Return (SBUF) /* \_SB_.I2CA.CMSR._CRS.SBUF */
}
Name (CPM0, Package (0x07)
{
0x7DB5,
One,
0x0F,
0x0840,
0x013B,
0x011D,
Zero
})
Name (CPM1, Package (0x03)
{
0x0898,
0x000186A0,
0x000186A0
})
Name (CPM2, Package (0x06)
{
0x61A8,
0x000186A0,
0x000186A0,
0x000186A0,
0x00030D40,
0x00186A00
})
Name (CPM3, Package (0x04)
{
Package (0x02)
{
0x3C,
0x0A
},
Package (0x02)
{
0x64,
0x0B
},
Package (0x02)
{
0x64,
0x1F40
},
Package (0x02)
{
0x01F4,
0x1F41
}
})
Name (CPM5, Package (0x07)
{
Zero,
0x000249F0,
0x0190,
0x03E8,
0x02,
0x32,
0x05
})
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("0703c6b6-1cca-4144-9fe7-4654f53a0bd9") /* Unknown UUID */))
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x03 // .
})
}
If ((Arg2 == One))
{
If ((ToInteger (Arg3) == Zero))
{
Return (CPM0) /* \_SB_.I2CA.CMSR.CPM0 */
}
If ((ToInteger (Arg3) == One))
{
Return (CPM1) /* \_SB_.I2CA.CMSR.CPM1 */
}
If ((ToInteger (Arg3) == 0x02))
{
Return (CPM2) /* \_SB_.I2CA.CMSR.CPM2 */
}
If ((ToInteger (Arg3) == 0x03))
{
Return (CPM3) /* \_SB_.I2CA.CMSR.CPM3 */
}
If ((ToInteger (Arg3) == 0x05))
{
Return (CPM5) /* \_SB_.I2CA.CMSR.CPM5 */
}
}
}
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Scope (_SB.I2CB)
{
Device (CMSR)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _HID: Hardware ID
Name (_CID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
I2CB
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (ALST == One)))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CB",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0090
}
})
Return (SBUF) /* \_SB_.I2CB.CMSR._CRS.SBUF */
}
Name (CPM0, Package (0x07)
{
0x7DB5,
One,
0x0F,
0x0840,
0x013B,
0x011D,
Zero
})
Name (CPM1, Package (0x03)
{
0x0898,
0x000186A0,
0x000186A0
})
Name (CPM2, Package (0x06)
{
0x61A8,
0x000186A0,
0x000186A0,
0x000186A0,
0x00030D40,
0x00186A00
})
Name (CPM3, Package (0x04)
{
Package (0x02)
{
0x3C,
0x0A
},
Package (0x02)
{
0x64,
0x0B
},
Package (0x02)
{
0x64,
0x1F40
},
Package (0x02)
{
0x01F4,
0x1F41
}
})
Name (CPM5, Package (0x07)
{
Zero,
0x000249F0,
0x0190,
0x03E8,
0x02,
0x32,
0x05
})
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("0703c6b6-1cca-4144-9fe7-4654f53a0bd9") /* Unknown UUID */))
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x03 // .
})
}
If ((Arg2 == One))
{
If ((ToInteger (Arg3) == Zero))
{
Return (CPM0) /* \_SB_.I2CB.CMSR.CPM0 */
}
If ((ToInteger (Arg3) == One))
{
Return (CPM1) /* \_SB_.I2CB.CMSR.CPM1 */
}
If ((ToInteger (Arg3) == 0x02))
{
Return (CPM2) /* \_SB_.I2CB.CMSR.CPM2 */
}
If ((ToInteger (Arg3) == 0x03))
{
Return (CPM3) /* \_SB_.I2CB.CMSR.CPM3 */
}
If ((ToInteger (Arg3) == 0x05))
{
Return (CPM5) /* \_SB_.I2CB.CMSR.CPM5 */
}
}
}
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Scope (_SB.I2CC)
{
Device (CMSR)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _HID: Hardware ID
Name (_CID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
I2CC
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (ALST == 0x02)))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CC",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0090
}
})
Return (SBUF) /* \_SB_.I2CC.CMSR._CRS.SBUF */
}
Name (CPM0, Package (0x07)
{
0x7DB5,
One,
0x0F,
0x0840,
0x013B,
0x011D,
Zero
})
Name (CPM1, Package (0x03)
{
0x0898,
0x000186A0,
0x000186A0
})
Name (CPM2, Package (0x06)
{
0x61A8,
0x000186A0,
0x000186A0,
0x000186A0,
0x00030D40,
0x00186A00
})
Name (CPM3, Package (0x04)
{
Package (0x02)
{
0x3C,
0x0A
},
Package (0x02)
{
0x64,
0x0B
},
Package (0x02)
{
0x64,
0x1F40
},
Package (0x02)
{
0x01F4,
0x1F41
}
})
Name (CPM5, Package (0x07)
{
Zero,
0x000249F0,
0x0190,
0x03E8,
0x02,
0x32,
0x05
})
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("0703c6b6-1cca-4144-9fe7-4654f53a0bd9") /* Unknown UUID */))
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x03 // .
})
}
If ((Arg2 == One))
{
If ((ToInteger (Arg3) == Zero))
{
Return (CPM0) /* \_SB_.I2CC.CMSR.CPM0 */
}
If ((ToInteger (Arg3) == One))
{
Return (CPM1) /* \_SB_.I2CC.CMSR.CPM1 */
}
If ((ToInteger (Arg3) == 0x02))
{
Return (CPM2) /* \_SB_.I2CC.CMSR.CPM2 */
}
If ((ToInteger (Arg3) == 0x03))
{
Return (CPM3) /* \_SB_.I2CC.CMSR.CPM3 */
}
If ((ToInteger (Arg3) == 0x05))
{
Return (CPM5) /* \_SB_.I2CC.CMSR.CPM5 */
}
}
}
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Scope (_SB.I2CD)
{
Device (CMSR)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _HID: Hardware ID
Name (_CID, "CPLM3218" /* Capella Micro CM3218x Ambient Light Sensor */) // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
I2CD
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((TPOS >= 0x60) & (ALST == 0x03)))
{
Return (0x0F)
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0090
}
})
Return (SBUF) /* \_SB_.I2CD.CMSR._CRS.SBUF */
}
Name (CPM0, Package (0x07)
{
0x7DB5,
One,
0x0F,
0x0840,
0x013B,
0x011D,
Zero
})
Name (CPM1, Package (0x03)
{
0x0898,
0x000186A0,
0x000186A0
})
Name (CPM2, Package (0x06)
{
0x61A8,
0x000186A0,
0x000186A0,
0x000186A0,
0x00030D40,
0x00186A00
})
Name (CPM3, Package (0x04)
{
Package (0x02)
{
0x3C,
0x0A
},
Package (0x02)
{
0x64,
0x0B
},
Package (0x02)
{
0x64,
0x1F40
},
Package (0x02)
{
0x01F4,
0x1F41
}
})
Name (CPM5, Package (0x07)
{
Zero,
0x000249F0,
0x0190,
0x03E8,
0x02,
0x32,
0x05
})
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("0703c6b6-1cca-4144-9fe7-4654f53a0bd9") /* Unknown UUID */))
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x03 // .
})
}
If ((Arg2 == One))
{
If ((ToInteger (Arg3) == Zero))
{
Return (CPM0) /* \_SB_.I2CD.CMSR.CPM0 */
}
If ((ToInteger (Arg3) == One))
{
Return (CPM1) /* \_SB_.I2CD.CMSR.CPM1 */
}
If ((ToInteger (Arg3) == 0x02))
{
Return (CPM2) /* \_SB_.I2CD.CMSR.CPM2 */
}
If ((ToInteger (Arg3) == 0x03))
{
Return (CPM3) /* \_SB_.I2CD.CMSR.CPM3 */
}
If ((ToInteger (Arg3) == 0x05))
{
Return (CPM5) /* \_SB_.I2CD.CMSR.CPM5 */
}
}
}
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Scope (_SB.I2CD)
{
Device (SPKR)
{
Name (_HID, "CLSA0100") // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0040, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
I2cSerialBusV2 (0x0041, ControllerInitiated, 0x000F4240,
AddressingMode7Bit, "\\_SB.I2CD",
0x00, ResourceConsumer, , Exclusive,
)
GpioIo (Exclusive, PullDown, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0006
}
GpioIo (Shared, PullUp, 0x0064, 0x0000, IoRestrictionInputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0054
}
GpioIo (Exclusive, PullUp, 0x0000, 0x0000, IoRestrictionInputOnly,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0091
}
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0x0064,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0054
}
})
Return (RBUF) /* \_SB_.I2CD.SPKR._CRS.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((MCSK == 0x04))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_DIS, 0, NotSerialized) // _DIS: Disable Device
{
}
}
}
}
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
2021-11-23 16:52 ` Takashi Iwai
2021-11-23 16:59 ` Pierre-Louis Bossart
@ 2021-11-23 17:15 ` Mark Brown
2 siblings, 0 replies; 28+ messages in thread
From: Mark Brown @ 2021-11-23 17:15 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Kailang Yang,
Shuming Fan, Pierre-Louis Bossart, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 652 bytes --]
On Tue, Nov 23, 2021 at 04:31:48PM +0000, Lucas Tanure wrote:
> S: Maintained
> F: Documentation/devicetree/bindings/sound/cirrus,cs*
> +F: sound/pci/hda/cs35l41*
> F: sound/soc/codecs/cs*
Perhaps just match anything starting with cs rather than just this part
number rather than needing to churn in future?
BTW I notice that the CC list for this series is *huge* and it's hard to
see why some of the people on CC are included - please think carefully
about who you're sending things to and why. People get a lot of mail
but there's no need to add to the flood, it makes it more likely that
things that are important will end up getting missed.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems
2021-11-23 17:06 ` tanureal
@ 2021-11-23 17:16 ` Pierre-Louis Bossart
0 siblings, 0 replies; 28+ messages in thread
From: Pierre-Louis Bossart @ 2021-11-23 17:16 UTC (permalink / raw)
To: tanureal, Rafael J.Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
On 11/23/21 11:06 AM, tanureal@opensource.cirrus.com wrote:
> On 11/23/21 4:59 PM, Pierre-Louis Bossart
> <pierre-louis.bossart@linux.intel.com> wrote:
>>
>> > +#ifdef CONFIG_ACPI
>> > +static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
>> > + {"CLSA0100", 0 },
>>
>> I could be wrong but this doesn't look like a legit ACPI _HID?
>>
>> Cirrus Logic can use 'CIR', "CLI", or 'CSC' PNP ID, or an PCI ID.
>>
>> in the past you used
>>
>> +#ifdef CONFIG_ACPI
>> +static const struct acpi_device_id cs35l41_acpi_match[] = {
>> + { "CSC3541", 0 }, /* Cirrus Logic PnP ID + part ID */
>> + {},
>> +};
>> +MODULE_DEVICE_TABLE(acpi, cs35l41_acpi_match);
>> +#endif
>>
>>
>>
>
> This ACPI _HID is already released, there is nothing I can do about it.
> Future devices will use 'CSC' PnP ID.
ok, add a comment then that you're adding support for an
already-released value that's not compliant.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code
2021-11-23 16:31 ` [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code Lucas Tanure
@ 2021-11-23 17:20 ` Mark Brown
0 siblings, 0 replies; 28+ messages in thread
From: Mark Brown @ 2021-11-23 17:20 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Kailang Yang,
Shuming Fan, Pierre-Louis Bossart, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 864 bytes --]
On Tue, Nov 23, 2021 at 04:31:41PM +0000, Lucas Tanure wrote:
> Move regmap configs to external include so CS35L41 HDA
> driver can re-use it.
>
> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
> ---
> include/sound/cs35l41.h | 6 +++++-
> sound/soc/codecs/cs35l41-i2c.c | 15 ---------------
> sound/soc/codecs/cs35l41-lib.c | 34 ++++++++++++++++++++++++++++++++--
> sound/soc/codecs/cs35l41-spi.c | 16 ----------------
> sound/soc/codecs/cs35l41.h | 6 ------
It looks like they actually end up in a .c file rather than an include
which is what I'd expect (and I don't see anything fishy like including
.c files).
> -const struct reg_default cs35l41_reg[CS35L41_MAX_CACHE_REG] = {
> +const struct reg_default cs35l41_reg[] = {
This isn't quite a straight move - it's worth calling that out in the
changelog.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code
2021-11-23 16:31 ` [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code Lucas Tanure
@ 2021-11-23 17:53 ` Mark Brown
2021-11-23 18:05 ` Charles Keepax
0 siblings, 1 reply; 28+ messages in thread
From: Mark Brown @ 2021-11-23 17:53 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Kailang Yang,
Shuming Fan, Pierre-Louis Bossart, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1060 bytes --]
On Tue, Nov 23, 2021 at 04:31:40PM +0000, Lucas Tanure wrote:
> --- a/sound/soc/codecs/Makefile
> +++ b/sound/soc/codecs/Makefile
> @@ -54,8 +54,8 @@ snd-soc-cs35l33-objs := cs35l33.o
> snd-soc-cs35l34-objs := cs35l34.o
> snd-soc-cs35l35-objs := cs35l35.o
> snd-soc-cs35l36-objs := cs35l36.o
> -snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-tables.o
> -snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-tables.o
> +snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-lib.o
> +snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-lib.o
> snd-soc-cs42l42-objs := cs42l42.o
> snd-soc-cs42l51-objs := cs42l51.o
> snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o
As was already called out on the HDA part of this patch I was expecting
this to be more like how we handle sharing the PXA2xx driver code
between the ASoC and AC'97 implementations - making it a library rather
than linking the object files directly into both drivers. I'm not sure
that the current approach would DTRT if one or both of the drivers is
built in.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies
2021-11-23 16:31 ` [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies Lucas Tanure
@ 2021-11-23 17:58 ` Mark Brown
2021-11-24 13:31 ` Mark Brown
0 siblings, 1 reply; 28+ messages in thread
From: Mark Brown @ 2021-11-23 17:58 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Kailang Yang,
Shuming Fan, Pierre-Louis Bossart, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 424 bytes --]
On Tue, Nov 23, 2021 at 04:31:42PM +0000, Lucas Tanure wrote:
> + ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, supplies);
> + if (ret != 0) {
> + dev_err(dev, "Failed to enable core supplies: %d\n", ret);
> + return ret;
> + }
Where's the matching disable, I didn't see anything in the HDA code? It
is there in cs35l41_remove() in the CODEC driver but there's nothing
sharing that bit of code here that I noticed.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device
2021-11-23 16:31 ` [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device Lucas Tanure
@ 2021-11-23 18:02 ` Charles Keepax
0 siblings, 0 replies; 28+ messages in thread
From: Charles Keepax @ 2021-11-23 18:02 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov, Jeremy Szu, Hui Wang, Werner Sembach,
Chris Chiu, Cameron Berkenpas, Sami Loone, Elia Devito,
Srinivas Kandagatla, Jack Yu, Arnd Bergmann, Lars-Peter Clausen,
Alexandre Belloni, alsa-devel, linux-acpi, patches,
platform-driver-x86, linux-kernel
On Tue, Nov 23, 2021 at 04:31:39PM +0000, Lucas Tanure wrote:
> Higher speeds are only supported when PLL is enabled, but
> the current driver doesn't enable PLL outside of stream
> use cases, so better to set the lowest SPI speed accepted
> by the entire device.
>
> Move the current frequency set to the spi sub-driver so
> the whole device can benefit from that speed.
>
> spi-max-frequency property could be used, but ACPI systems don't
> support it, so by setting it in the spi sub-driver probe
> both Device Trees and ACPI systems are supported.
>
> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
> ---
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Thanks,
Charles
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code
2021-11-23 17:53 ` Mark Brown
@ 2021-11-23 18:05 ` Charles Keepax
0 siblings, 0 replies; 28+ messages in thread
From: Charles Keepax @ 2021-11-23 18:05 UTC (permalink / raw)
To: Mark Brown
Cc: Lucas Tanure, Rafael J . Wysocki, Len Brown, Hans de Goede,
Mark Gross, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov, Jeremy Szu, Hui Wang, Werner Sembach,
Chris Chiu, Cameron Berkenpas, Sami Loone, Elia Devito,
Srinivas Kandagatla, Jack Yu, Arnd Bergmann, Lars-Peter Clausen,
Alexandre Belloni, alsa-devel, linux-acpi, patches,
platform-driver-x86, linux-kernel
On Tue, Nov 23, 2021 at 05:53:06PM +0000, Mark Brown wrote:
> On Tue, Nov 23, 2021 at 04:31:40PM +0000, Lucas Tanure wrote:
> > --- a/sound/soc/codecs/Makefile
> > +++ b/sound/soc/codecs/Makefile
> > @@ -54,8 +54,8 @@ snd-soc-cs35l33-objs := cs35l33.o
> > snd-soc-cs35l34-objs := cs35l34.o
> > snd-soc-cs35l35-objs := cs35l35.o
> > snd-soc-cs35l36-objs := cs35l36.o
> > -snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-tables.o
> > -snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-tables.o
> > +snd-soc-cs35l41-spi-objs := cs35l41-spi.o cs35l41.o cs35l41-lib.o
> > +snd-soc-cs35l41-i2c-objs := cs35l41-i2c.o cs35l41.o cs35l41-lib.o
> > snd-soc-cs42l42-objs := cs42l42.o
> > snd-soc-cs42l51-objs := cs42l51.o
> > snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o
>
> As was already called out on the HDA part of this patch I was expecting
> this to be more like how we handle sharing the PXA2xx driver code
> between the ASoC and AC'97 implementations - making it a library rather
> than linking the object files directly into both drivers. I'm not sure
> that the current approach would DTRT if one or both of the drivers is
> built in.
Yeah looking closer the Prince driver itself is kinda weird here
since it is building separate modules for SPI and I2C but
including cs25l41.o into both, rather than the more normal 3
modules approach.
I will have a look at doing a patch to fix that up, separately
from Lucas's series here.
Thanks,
Charles
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes
2021-11-23 17:11 ` Lucas tanure
@ 2021-11-23 18:35 ` Hans de Goede
2021-11-23 23:01 ` Andy Shevchenko
0 siblings, 1 reply; 28+ messages in thread
From: Hans de Goede @ 2021-11-23 18:35 UTC (permalink / raw)
To: Lucas tanure, Rafael J . Wysocki, Len Brown, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov
Cc: Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
Hi,
On 11/23/21 18:11, Lucas tanure wrote:
> On 11/23/21 17:05, Hans de Goede wrote:
>> Hi Lucas,
>>
>> On 11/23/21 17:31, Lucas Tanure wrote:
>>> The ACPI device with CLSA0100 is a sound card with multiple
>>> instances of CS35L41.
>>>
>>> We add an ID to the I2C multi instantiate list to enumerate
>>> all I2C slaves correctly.
>>>
>>> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
>>> ---
>>> drivers/acpi/scan.c | 1 +
>>> drivers/platform/x86/i2c-multi-instantiate.c | 7 +++++++
>>> 2 files changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
>>> index 2c80765670bc..16827a33e93b 100644
>>> --- a/drivers/acpi/scan.c
>>> +++ b/drivers/acpi/scan.c
>>> @@ -1708,6 +1708,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
>>> {"BSG2150", },
>>> {"INT33FE", },
>>> {"INT3515", },
>>> + {"CLSA0100", },
>>> {}
>>> };
>>> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
>>> index 4956a1df5b90..ed25a0adc656 100644
>>> --- a/drivers/platform/x86/i2c-multi-instantiate.c
>>> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
>>> @@ -147,6 +147,12 @@ static const struct i2c_inst_data int3515_data[] = {
>>> {}
>>> };
>>> +static const struct i2c_inst_data clsa0100_data[] = {
>>> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>> + { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>
>> This suggests that both amplifiers are using the same GPIO pin as shared
>> IRQ, is that correct ? Can you share an acpidump of the laptop's DSDT tables ?
>>
>> Regards,
>>
>> Hans
>>
>
> DSDT attached.
> Yes, both amps share the same IRQ gpio.
Thanks, this patch looks good to me:
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Regards,
Hans
>
>>
>>
>>
>>> + {}
>>> +};
>>> +
>>> /*
>>> * Note new device-ids must also be added to i2c_multi_instantiate_ids in
>>> * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
>>> @@ -155,6 +161,7 @@ static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
>>> { "BSG1160", (unsigned long)bsg1160_data },
>>> { "BSG2150", (unsigned long)bsg2150_data },
>>> { "INT3515", (unsigned long)int3515_data },
>>> + { "CLSA0100", (unsigned long)clsa0100_data },
>>> { }
>>> };
>>> MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
>>>
>>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes
2021-11-23 18:35 ` Hans de Goede
@ 2021-11-23 23:01 ` Andy Shevchenko
0 siblings, 0 replies; 28+ messages in thread
From: Andy Shevchenko @ 2021-11-23 23:01 UTC (permalink / raw)
To: Hans de Goede
Cc: Lucas tanure, Rafael J . Wysocki, Len Brown, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Mark Brown, Takashi Iwai,
Kailang Yang, Shuming Fan, Pierre-Louis Bossart, David Rhodes,
Vitaly Rodionov, Jeremy Szu, Hui Wang, Werner Sembach,
Chris Chiu, Cameron Berkenpas, Sami Loone, Elia Devito,
Srinivas Kandagatla, Jack Yu, Arnd Bergmann, Lars-Peter Clausen,
Alexandre Belloni, ALSA Development Mailing List,
ACPI Devel Maling List, patches, Platform Driver,
Linux Kernel Mailing List
On Tue, Nov 23, 2021 at 8:36 PM Hans de Goede <hdegoede@redhat.com> wrote:
> On 11/23/21 18:11, Lucas tanure wrote:
> > On 11/23/21 17:05, Hans de Goede wrote:
> >> On 11/23/21 17:31, Lucas Tanure wrote:
> >>> The ACPI device with CLSA0100 is a sound card with multiple
> >>> instances of CS35L41.
> >>>
> >>> We add an ID to the I2C multi instantiate list to enumerate
> >>> all I2C slaves correctly.
...
> >>> @@ -1708,6 +1708,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
> >>> {"BSG2150", },
> >>> {"INT33FE", },
> >>> {"INT3515", },
> >>> + {"CLSA0100", },
Can we keep it sorted, please?
Ditto for the other driver.
> >>> {}
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies
2021-11-23 17:58 ` Mark Brown
@ 2021-11-24 13:31 ` Mark Brown
0 siblings, 0 replies; 28+ messages in thread
From: Mark Brown @ 2021-11-24 13:31 UTC (permalink / raw)
To: Lucas Tanure
Cc: Rafael J . Wysocki, Len Brown, Hans de Goede, Mark Gross,
Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Kailang Yang,
Shuming Fan, Pierre-Louis Bossart, David Rhodes, Vitaly Rodionov,
Jeremy Szu, Hui Wang, Werner Sembach, Chris Chiu,
Cameron Berkenpas, Sami Loone, Elia Devito, Srinivas Kandagatla,
Jack Yu, Arnd Bergmann, Lars-Peter Clausen, Alexandre Belloni,
alsa-devel, linux-acpi, patches, platform-driver-x86,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 636 bytes --]
On Tue, Nov 23, 2021 at 05:58:59PM +0000, Mark Brown wrote:
> On Tue, Nov 23, 2021 at 04:31:42PM +0000, Lucas Tanure wrote:
> > + ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, supplies);
> > + if (ret != 0) {
> > + dev_err(dev, "Failed to enable core supplies: %d\n", ret);
> > + return ret;
> > + }
> Where's the matching disable, I didn't see anything in the HDA code? It
> is there in cs35l41_remove() in the CODEC driver but there's nothing
> sharing that bit of code here that I noticed.
Relatedly, given that the HDA stuff will most likely only be used on
ACPI systems are you sure it needs to handle regulators at all?
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: (subset) [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
` (10 preceding siblings ...)
2021-11-23 16:31 ` [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes Lucas Tanure
@ 2021-11-24 17:36 ` Mark Brown
11 siblings, 0 replies; 28+ messages in thread
From: Mark Brown @ 2021-11-24 17:36 UTC (permalink / raw)
To: Rafael J . Wysocki, Jaroslav Kysela, Hans de Goede, Kailang Yang,
Pierre-Louis Bossart, Len Brown, Shuming Fan, David Rhodes,
Takashi Iwai, Liam Girdwood, Mark Gross, Lucas Tanure,
Vitaly Rodionov
Cc: Arnd Bergmann, Alexandre Belloni, Lars-Peter Clausen, Chris Chiu,
Cameron Berkenpas, platform-driver-x86, Jeremy Szu, alsa-devel,
Hui Wang, linux-acpi, linux-kernel, Sami Loone, Werner Sembach,
Elia Devito, Srinivas Kandagatla, Jack Yu, patches
On Tue, 23 Nov 2021 16:31:38 +0000, Lucas Tanure wrote:
> Add support for laptops that have CS35L41 connected to an
> HDA codec by I2S and direct I2C/SPI connection to the CPU
>
> Hardware:
> - The 16ACHg6 laptop has two CS35L41 amplifiers, connected
> to Realtek ALC287 by an I2S bus and by and direct I2C to the CPU.
> - The ALC287 codec is connected to the CPU by an HDA bus.
> - The CS35L41 has a DSP which will require firmware to be loaded.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-linus
Thanks!
[01/11] ASoC: cs35l41: Set the max SPI speed for the whole device
commit: 872fc0b6bde8b2dd6891c740cd792d214255dca3
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2021-11-24 17:36 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-23 16:31 [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Lucas Tanure
2021-11-23 16:31 ` [PATCH 01/11] ASoC: cs35l41: Set the max SPI speed for the whole device Lucas Tanure
2021-11-23 18:02 ` Charles Keepax
2021-11-23 16:31 ` [PATCH 02/11] ASoC: cs35l41: Convert tables to shared source code Lucas Tanure
2021-11-23 17:53 ` Mark Brown
2021-11-23 18:05 ` Charles Keepax
2021-11-23 16:31 ` [PATCH 03/11] ASoC: cs35l41: Move regmap config struct to shared code Lucas Tanure
2021-11-23 17:20 ` Mark Brown
2021-11-23 16:31 ` [PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies Lucas Tanure
2021-11-23 17:58 ` Mark Brown
2021-11-24 13:31 ` Mark Brown
2021-11-23 16:31 ` [PATCH 05/11] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code Lucas Tanure
2021-11-23 16:31 ` [PATCH 06/11] ASoC: cs35l41: Move power initializations to reg_sequence Lucas Tanure
2021-11-23 16:31 ` [PATCH 07/11] ASoC: cs35l41: Create shared function for errata patches Lucas Tanure
2021-11-23 16:31 ` [PATCH 08/11] ASoC: cs35l41: Create shared function for setting channels Lucas Tanure
2021-11-23 16:31 ` [PATCH 09/11] ASoC: cs35l41: Create shared function for boost configuration Lucas Tanure
2021-11-23 16:31 ` [PATCH 10/11] hda: cs35l41: Add support for CS35L41 in HDA systems Lucas Tanure
2021-11-23 16:52 ` Takashi Iwai
2021-11-23 16:59 ` Pierre-Louis Bossart
2021-11-23 17:06 ` tanureal
2021-11-23 17:16 ` Pierre-Louis Bossart
2021-11-23 17:15 ` Mark Brown
2021-11-23 16:31 ` [PATCH 11/11] ACPI / scan: Create platform device for CLSA0100 ACPI nodes Lucas Tanure
2021-11-23 17:05 ` Hans de Goede
2021-11-23 17:11 ` Lucas tanure
2021-11-23 18:35 ` Hans de Goede
2021-11-23 23:01 ` Andy Shevchenko
2021-11-24 17:36 ` (subset) [PATCH v3 00/11] Add support for Legion 7 16ACHg6 laptop Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).