All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: "Christopher Höner" <christopher-hoener@web.de>
Cc: linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org,
	perex@perex.cz, tiwai@suse.com
Subject: Re: [PATCH v2] ALSA: hda/realtek: Enable internal speakers on Razer Blade 16 (2025)
Date: Mon, 22 Jun 2026 10:55:38 +0200	[thread overview]
Message-ID: <87ldc7dkdx.wl-tiwai@suse.de> (raw)
In-Reply-To: <20260621205711.11127-1-christopher-hoener@web.de>

On Sun, 21 Jun 2026 22:57:11 +0200,
Christopher Höner wrote:
> 
> On the Razer Blade 16 (2025) (Realtek ALC298, PCI SSID 1a58:300e) the
> internal speakers are driven through an external smart amplifier whose
> crossover, voicing and protection live in a DSP reached over a vendor
> coef mailbox on NID 0x20.  Both speaker pins are fed from one DAC
> through a mixer and the amplifier does the crossover.  The BIOS leaves
> the tweeter pin (NID 0x14) disabled (default config 0x411111f0), so the
> tweeters are not exposed and the amplifier is never programmed for this
> machine under Linux.
> 
> Add a fixup for the machine that:
> 
>   - re-exposes the tweeter pin (NID 0x14) as an internal speaker in the
>     same association (2) as the woofer (NID 0x17), so the controls come
>     out as "Speaker"/"Bass Speaker", with auto-mute on headphone
>     insertion;
> 
>   - pins every output to a fixed converter via preferred_dacs so the
>     routing does not depend on the generic parser's DAC-allocation
>     heuristics: both speaker pins share DAC 0x03 (the only converter
>     that drives the woofer on this machine) through the mixer, while the
>     headphone (NID 0x21) keeps DAC 0x02.  Without a fixed assignment the
>     parser brings up only one speaker pin and leaves the other silent;
> 
>   - wakes the external amp, programs its DSP over the NID-0x20 mailbox
>     at init (boot and resume) and parks it; it is woken again for
>     playback and parked afterwards from a pcm_playback_hook, like the
>     existing Samsung and LG Gram amplifier fixups.
> 
> The DSP sequence was obtained by capturing the Windows driver's HD-audio
> traffic via QEMU/VFIO passthrough of the controller and reducing it to
> the NID-0x20 writes this machine needs; everything else the parser
> rebuilds.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=207423
> Signed-off-by: Christopher Höner <christopher-hoener@web.de>
> ---
> Changes in v2:
>   - Bring up both speaker pins via preferred_dacs instead of explicit
>     SET_CONNECT_SEL/SET_POWER_STATE/SET_PIN_WIDGET_CONTROL/amp verbs at
>     init.  All three output pins are pinned to fixed converters
>     (headphone NID 0x21 -> DAC 0x02, both speaker pins -> DAC 0x03), so
>     the generic parser routes, powers and unmutes them and the routing
>     no longer depends on its DAC-allocation heuristics.  This also drops
>     the hardcoded NID 0x17 connection-select value questioned in v1.
>   - Drop the codec-coef preamble that the captured trace replayed before
>     the DSP body: the standard codec init already establishes that state
>     on this machine, so the preamble is redundant.  Init now wakes the
>     amp, programs the DSP body and parks it.
>   - Reduce the per-playback wake and park to the three coef writes that
>     select the amp's run/idle state (ea00, c121, f109); the rest of the
>     captured wake/park was constant context the Windows driver re-sends
>     on every transition.
>   - Explain in a comment why the NID-0x20 mailbox stream uses
>     snd_hda_codec_write() rather than alc_process_coef_fw(); drop a
>     duplicated comment and correct the init comment.
>   - Limit the quirk to PCI SSID 1a58:300e.
>   - Tested from cold boot, warm reboot, S3 resume and a full power cycle
>     on Linux 7.1.1.
> 
> Notes (not part of the commit message - for reviewers):
> 
>   * Scope: this fixup covers only PCI SSID 1a58:300e (the 2025 model).
>     Other Razer Blade models use a similar design but are not tested
>     here and are intentionally left out.
> 
>   * Speaker pin sequence: the woofer (NID 0x17) is sequenced ahead of
>     the tweeter (NID 0x14) in association 2 (sequence 0 vs 1) so the
>     parser treats the woofer as the primary speaker channel.
> 
>   * The fixup pins all output pins with preferred_dacs instead of letting
>     the parser allocate converters and overriding the result.  Both
>     speaker pins share DAC 0x03 (each routed through mixer 0x0d); the
>     headphone keeps DAC 0x02.  DAC 0x03 is required: of the woofer pin's
>     three sources -- mixer 0x0c (DAC 0x02), mixer 0x0d (DAC 0x03) and the
>     digital converter 0x06 -- only DAC 0x03 drives the woofer on
>     hardware; DAC 0x02 and converter 0x06 both leave it silent (which is
>     also why the Windows converter map, tweeter on 0x02 and woofer on
>     0x06, cannot be reused on Linux).  Pinning all pins also keeps the
>     routing stable if the parser's allocation heuristics change in a
>     later kernel.
> 
>   * On WRITE_COEF()/alc_process_coef_fw(): the plain coefficient writes
>     already go through alc_write_coef_idx().  The amp programming is not
>     a list of independent coefficients, though -- each step streams four
>     PROC_COEF words into a single coef index (0x23) on NID 0x20 to reach
>     the external DSP, which alc_process_coef_fw() (one value per index)
>     cannot express.  The plain coefs and mailbox writes share one
>     order-dependent table.
> 
>   * Tested on Linux 7.1.1 on a Razer Blade 16 2025 (RZ09-0528): both
>     internal speakers play (tweeter and woofer), auto-mute works on
>     headphone insertion, the amplifier powers up on playback and parks on
>     idle, and audio survives suspend/resume and a cold boot.
> 
>   * The init table is the captured DSP body, kept verbatim and in order
>     (the writes are ordered, with phase-dependent repeats); only the
>     redundant preamble and the constant wake/park padding were removed.
>     It could be moved to a request_firmware() blob the way other
>     smart-amp codecs load their data if that is preferred -- guidance
>     welcome.
> 
>   * The captured sequence is the OS-level programming only and contains
>     no DSP coefficient-bank loads; those appear to be primed by the
>     platform firmware at power-on.  Cold boot and S3 are covered;
>     hibernation (S4) should be too, as the firmware re-primes on the
>     power cycle, but is worth confirming.
> 
>  sound/hda/codecs/realtek/alc269.c | 828 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 828 insertions(+)
> 
> diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
> index 5d09baa..91a6115 100644
> --- a/sound/hda/codecs/realtek/alc269.c
> +++ b/sound/hda/codecs/realtek/alc269.c
> @@ -4041,6 +4041,8 @@ enum {
>  	ALC298_FIXUP_SAMSUNG_AMP_V2_2_AMPS,
>  	ALC298_FIXUP_SAMSUNG_AMP_V2_4_AMPS,
>  	ALC298_FIXUP_LG_GRAM_STYLE_14,
> +	ALC298_FIXUP_RAZER_BLADE16_PINS,
> +	ALC298_FIXUP_RAZER_BLADE16,
>  	ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET,
>  	ALC256_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET,
>  	ALC295_FIXUP_ASUS_MIC_NO_PRESENCE,
> @@ -4205,7 +4207,832 @@ static void alc287_fixup_lenovo_yoga_book_9i(struct hda_codec *codec,
>  	__snd_hda_apply_fixup(codec, id, action, 0);
>  }
>  
> +/*
> + * Razer Blade 16 (2025): Realtek ALC298 driving an external smart amp.
> + * Crossover, voicing and speaker protection live in an external DSP reached
> + * through a vendor-coef mailbox on NID 0x20.  The Windows driver programs the
> + * DSP at boot and powers it up/down around playback; this replays the same
> + * traffic.  The sequence was captured from the Windows driver via QEMU/VFIO
> + * passthrough of the HD-audio controller and reduced to the NID-0x20 traffic
> + * (everything else the HDA parser rebuilds).  NID 0x14, the BIOS-disabled
> + * tweeter pin, is re-exposed via a pin-config override so the parser drives it
> + * as a normal internal speaker (shared volume/mute, auto-mute on headphone
> + * insertion).
> + *
> + * Each table entry is either a plain codec coef write or an external-DSP
> + * mailbox write:
> + *   strobe == 0:  coef[addr] = lo
> + *   strobe != 0:  amp[addr]  = (hi << 16) | lo, bank selected on port 0x89 and
> + *                 committed by the strobe opcode.
> + */
> +struct alc298_rb16_op {
> +	u16 bank;	/* mailbox bank (port 0x89); unused for a plain coef */
> +	u16 addr;	/* mailbox register, or plain coef index */
> +	u16 hi;		/* mailbox high word; unused for a plain coef */
> +	u16 lo;		/* mailbox low word, or plain coef value */
> +	u16 strobe;	/* mailbox commit opcode; 0 marks a plain coef write */
> +};
> +
> +/*
> + * Run one op-table.  A plain coef write (strobe == 0) uses the normal
> + * codec coef registers via alc_write_coef_idx().  A mailbox op selects
> + * a bank, then streams four PROC_COEF words (addr/hi/lo/commit) into a
> + * single coef index (0x23) on node 0x20 to reach the external DSP --
> + * that one-index/many-words form is why the mailbox cannot be written
> + * as an alc_process_coef_fw() table (which is one value per index).
> + */
> +static void alc298_rb16_apply(struct hda_codec *codec,
> +			      const struct alc298_rb16_op *seq, int num)
> +{
> +	int i;
> +
> +	for (i = 0; i < num; i++) {
> +		if (!seq[i].strobe) {
> +			alc_write_coef_idx(codec, seq[i].addr, seq[i].lo);
> +			continue;
> +		}
> +		alc_write_coef_idx(codec, 0x89, seq[i].bank);
> +		snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_COEF_INDEX, 0x23);
> +		snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, seq[i].addr);
> +		snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, seq[i].hi);
> +		snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, seq[i].lo);
> +		snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, seq[i].strobe);
> +	}
> +}
> +
> +/* program the external DSP at init; the amp is woken/parked separately */
> +static const struct alc298_rb16_op alc298_rb16_amp_init[] = {
> +	{ 0x0000, 0xc000, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xea00, 0x0000, 0x0047, 0xb031 },
> +	{ 0x0000, 0xf20d, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xf212, 0x0000, 0x003e, 0xb031 },
> +	{ 0x0000, 0xc001, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xc003, 0x0000, 0x0022, 0xb031 },
> +	{ 0x0000, 0xc004, 0x0000, 0x0044, 0xb031 },
> +	{ 0x0000, 0xc005, 0x0000, 0x0044, 0xb031 },
> +	{ 0x0000, 0xc007, 0x0000, 0x0064, 0xb031 },
> +	{ 0x0000, 0xc00e, 0x0000, 0x00e7, 0xb031 },
> +	{ 0x0000, 0xf223, 0x0000, 0x007f, 0xb031 },
> +	{ 0x0000, 0xf224, 0x0000, 0x00db, 0xb031 },
> +	{ 0x0000, 0xf225, 0x0000, 0x00ee, 0xb031 },
> +	{ 0x0000, 0xf226, 0x0000, 0x003f, 0xb031 },
> +	{ 0x0000, 0xf227, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xf21a, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xf242, 0x0000, 0x003c, 0xb031 },
> +	{ 0x0000, 0xc120, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xc125, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xc321, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xc200, 0x0000, 0x00d8, 0xb031 },
> +	{ 0x0000, 0xc201, 0x0000, 0x0027, 0xb031 },
> +	{ 0x0000, 0xc202, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xc400, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xc401, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xc402, 0x0000, 0x00e0, 0xb031 },
> +	{ 0x0000, 0xc403, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xc404, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xc406, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xc407, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xc408, 0x0000, 0x003f, 0xb031 },
> +	{ 0x0000, 0xc300, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xc125, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xdf00, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xdf5f, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xdf60, 0x0000, 0x00a7, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x0084, 0xb031 },
> +	{ 0x0000, 0xc206, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xf10a, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xf10b, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xf104, 0x0000, 0x00f4, 0xb031 },
> +	{ 0x0000, 0xf105, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x00e0, 0xb031 },
> +	{ 0x0000, 0xf10b, 0x0000, 0x005c, 0xb031 },
> +	{ 0x0000, 0xf104, 0x0000, 0x00f4, 0xb031 },
> +	{ 0x0000, 0xf105, 0x0000, 0x0004, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x0065, 0xb031 },
> +	{ 0x0000, 0xf10b, 0x0000, 0x005c, 0xb031 },
> +	{ 0x0000, 0xf104, 0x0000, 0x00f7, 0xb031 },
> +	{ 0x0000, 0xf105, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x0006, 0xb031 },
> +	{ 0x0000, 0xf10b, 0x0000, 0x005c, 0xb031 },
> +	{ 0x0000, 0xf104, 0x0000, 0x00f7, 0xb031 },
> +	{ 0x0000, 0xf105, 0x0000, 0x0031, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xf10b, 0x0000, 0x005c, 0xb031 },
> +	{ 0x0000, 0xe706, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xe707, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xe806, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xe807, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xce04, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xce05, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xce06, 0x0000, 0x0031, 0xb031 },
> +	{ 0x0000, 0xce07, 0x0000, 0x00b4, 0xb031 },
> +	{ 0x0000, 0xcf04, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xcf05, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xcf06, 0x0000, 0x0031, 0xb031 },
> +	{ 0x0000, 0xcf07, 0x0000, 0x00b4, 0xb031 },
> +	{ 0x0000, 0xce60, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xc130, 0x0000, 0x0051, 0xb031 },
> +	{ 0x0000, 0xe000, 0x0000, 0x00a8, 0xb031 },
> +	{ 0x4100, 0x1888, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xc121, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xea00, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xf800, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xca00, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xca10, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xca02, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xca12, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xed00, 0x0000, 0x0090, 0xb031 },
> +	{ 0x0000, 0xcc2c, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc2d, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xcc2e, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xcc2f, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xcd2c, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd2d, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xcd2e, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xcd2f, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xcc24, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc25, 0x0000, 0x0051, 0xb031 },
> +	{ 0x0000, 0xcc26, 0x0000, 0x00eb, 0xb031 },
> +	{ 0x0000, 0xcc27, 0x0000, 0x0085, 0xb031 },
> +	{ 0x0000, 0xcd24, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd25, 0x0000, 0x0051, 0xb031 },
> +	{ 0x0000, 0xcd26, 0x0000, 0x00eb, 0xb031 },
> +	{ 0x0000, 0xcd27, 0x0000, 0x0085, 0xb031 },
> +	{ 0x0000, 0xcc20, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc21, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc22, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xcd20, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd21, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd22, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xcc16, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xcc17, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd16, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xcd17, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc29, 0x0000, 0x005d, 0xb031 },
> +	{ 0x0000, 0xcc2a, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xcd29, 0x0000, 0x005d, 0xb031 },
> +	{ 0x0000, 0xcd2a, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xcc31, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xcc32, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc33, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc34, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd31, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xcd32, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd33, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd34, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc36, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xcc37, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcc38, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcc39, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcd36, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xcd37, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcd38, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcd39, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xcc09, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc0a, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xcc0b, 0x0000, 0x007c, 0xb031 },
> +	{ 0x0000, 0xcc0c, 0x0000, 0x005b, 0xb031 },
> +	{ 0x0000, 0xcd09, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd0a, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xcd0b, 0x0000, 0x007c, 0xb031 },
> +	{ 0x0000, 0xcd0c, 0x0000, 0x005b, 0xb031 },
> +	{ 0x0000, 0xcc0e, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcc0f, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xcc10, 0x0000, 0x003e, 0xb031 },
> +	{ 0x0000, 0xcc11, 0x0000, 0x002d, 0xb031 },
> +	{ 0x0000, 0xcd0e, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcd0f, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xcd10, 0x0000, 0x003e, 0xb031 },
> +	{ 0x0000, 0xcd11, 0x0000, 0x002d, 0xb031 },
> +	{ 0x0000, 0xccd6, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xccd7, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xcdd6, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcdd7, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xccd8, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xccd9, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xcdd8, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcdd9, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xccda, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xccdb, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xcdda, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xcddb, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xc320, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xc321, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xe604, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xdd00, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xdc19, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdc1a, 0x0000, 0x006a, 0xb031 },
> +	{ 0x0000, 0xdc1b, 0x0000, 0x00aa, 0xb031 },
> +	{ 0x0000, 0xdc1c, 0x0000, 0x00ab, 0xb031 },
> +	{ 0x0000, 0xdc1d, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdc1e, 0x0000, 0x0027, 0xb031 },
> +	{ 0x0000, 0xdc1f, 0x0000, 0x0062, 0xb031 },
> +	{ 0x0000, 0xdc20, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xde19, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xde1a, 0x0000, 0x006a, 0xb031 },
> +	{ 0x0000, 0xde1b, 0x0000, 0x00aa, 0xb031 },
> +	{ 0x0000, 0xde1c, 0x0000, 0x00ab, 0xb031 },
> +	{ 0x0000, 0xde1d, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xde1e, 0x0000, 0x0027, 0xb031 },
> +	{ 0x0000, 0xde1f, 0x0000, 0x0062, 0xb031 },
> +	{ 0x0000, 0xde20, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xdb32, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdd32, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdb33, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xdd33, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xdb34, 0x0000, 0x001a, 0xb031 },
> +	{ 0x0000, 0xdd34, 0x0000, 0x001a, 0xb031 },
> +	{ 0x0000, 0xdb15, 0x0000, 0x00ef, 0xb031 },
> +	{ 0x0000, 0xdd15, 0x0000, 0x00ef, 0xb031 },
> +	{ 0x0000, 0xdb17, 0x0000, 0x003f, 0xb031 },
> +	{ 0x0000, 0xdd17, 0x0000, 0x003f, 0xb031 },
> +	{ 0x0000, 0xdb94, 0x0000, 0x0070, 0xb031 },
> +	{ 0x0000, 0xdd94, 0x0000, 0x0070, 0xb031 },
> +	{ 0x0000, 0xdb19, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xdd19, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x001c, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xdb04, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xdb05, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xdd04, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xdd05, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xdbbb, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xdbbc, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xdbbd, 0x0000, 0x00f3, 0xb031 },
> +	{ 0x0000, 0xdbbe, 0x0000, 0x00cf, 0xb031 },
> +	{ 0x0000, 0xddbb, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xddbc, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xddbd, 0x0000, 0x00f3, 0xb031 },
> +	{ 0x0000, 0xddbe, 0x0000, 0x00cf, 0xb031 },
> +	{ 0x0000, 0xdb01, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xdd01, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xdb08, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xdd08, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xdc52, 0x0000, 0x00ef, 0xb031 },
> +	{ 0x0000, 0xde52, 0x0000, 0x00ef, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x00cc, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x009c, 0xb031 },
> +	{ 0x0000, 0xdf0a, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xdf0b, 0x0000, 0x007f, 0xb031 },
> +	{ 0x0000, 0xc851, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xc951, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xdf01, 0x0000, 0x0073, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x009c, 0xb031 },
> +	{ 0x0000, 0xf800, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xebcb, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xeb10, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb11, 0x0000, 0x00bb, 0xb031 },
> +	{ 0x0000, 0xeb12, 0x0000, 0x00ab, 0xb031 },
> +	{ 0x0000, 0xeb13, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xeb14, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb15, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xeb16, 0x0000, 0x0069, 0xb031 },
> +	{ 0x0000, 0xeb21, 0x0000, 0x0011, 0xb031 },
> +	{ 0x0000, 0xeb22, 0x0000, 0x00c2, 0xb031 },
> +	{ 0x0000, 0xeb23, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xeb24, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb25, 0x0000, 0x00bd, 0xb031 },
> +	{ 0x0000, 0xeb26, 0x0000, 0x0055, 0xb031 },
> +	{ 0x0000, 0xeb27, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xeb28, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb29, 0x0000, 0x003c, 0xb031 },
> +	{ 0x0000, 0xeb2a, 0x0000, 0x0051, 0xb031 },
> +	{ 0x0000, 0xeb2b, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xeb30, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb31, 0x0000, 0x004f, 0xb031 },
> +	{ 0x0000, 0xeb32, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xeb33, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xeb34, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb35, 0x0000, 0x00bb, 0xb031 },
> +	{ 0x0000, 0xeb36, 0x0000, 0x0024, 0xb031 },
> +	{ 0x0000, 0xeb37, 0x0000, 0x0068, 0xb031 },
> +	{ 0x0000, 0xeb40, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb41, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xeb42, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xeb43, 0x0000, 0x00e8, 0xb031 },
> +	{ 0x0000, 0xeb44, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb45, 0x0000, 0x004f, 0xb031 },
> +	{ 0x0000, 0xeb46, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xeb47, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xeb48, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb49, 0x0000, 0x00c5, 0xb031 },
> +	{ 0x0000, 0xeb4a, 0x0000, 0x0032, 0xb031 },
> +	{ 0x0000, 0xeb4b, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xeb50, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb51, 0x0000, 0x008a, 0xb031 },
> +	{ 0x0000, 0xeb52, 0x0000, 0x00b4, 0xb031 },
> +	{ 0x0000, 0xeb53, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xeb54, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb55, 0x0000, 0x007d, 0xb031 },
> +	{ 0x0000, 0xeb56, 0x0000, 0x00d9, 0xb031 },
> +	{ 0x0000, 0xeb57, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xeb60, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xeb61, 0x0000, 0x00e7, 0xb031 },
> +	{ 0x0000, 0xeb62, 0x0000, 0x00b5, 0xb031 },
> +	{ 0x0000, 0xeb63, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xeb64, 0x0000, 0x00fa, 0xb031 },
> +	{ 0x0000, 0xeb65, 0x0000, 0x0086, 0xb031 },
> +	{ 0x0000, 0xeb66, 0x0000, 0x00a8, 0xb031 },
> +	{ 0x0000, 0xeb67, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xeb68, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xeb69, 0x0000, 0x009a, 0xb031 },
> +	{ 0x0000, 0xeb6a, 0x0000, 0x002f, 0xb031 },
> +	{ 0x0000, 0xeb6b, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xebb6, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeb70, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xeb71, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xeb72, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xeb73, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xeb74, 0x0000, 0x0006, 0xb031 },
> +	{ 0x0000, 0xeb75, 0x0000, 0x0050, 0xb031 },
> +	{ 0x0000, 0xeb76, 0x0000, 0x002c, 0xb031 },
> +	{ 0x0000, 0xeb77, 0x0000, 0x0050, 0xb031 },
> +	{ 0x0000, 0xeb80, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb81, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xeb82, 0x0000, 0x0016, 0xb031 },
> +	{ 0x0000, 0xeb83, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xeb84, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xeb85, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xeb86, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xeb87, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xeb88, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xeb89, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xeb8a, 0x0000, 0x0016, 0xb031 },
> +	{ 0x0000, 0xeb8b, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xebb8, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeb90, 0x0000, 0x00fc, 0xb031 },
> +	{ 0x0000, 0xeb91, 0x0000, 0x008b, 0xb031 },
> +	{ 0x0000, 0xeb92, 0x0000, 0x00bd, 0xb031 },
> +	{ 0x0000, 0xeb93, 0x0000, 0x0064, 0xb031 },
> +	{ 0x0000, 0xeb94, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xeb95, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xeb96, 0x0000, 0x00e7, 0xb031 },
> +	{ 0x0000, 0xeb97, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xeba0, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeba1, 0x0000, 0x0091, 0xb031 },
> +	{ 0x0000, 0xeba2, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xeba3, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xeba4, 0x0000, 0x00f6, 0xb031 },
> +	{ 0x0000, 0xeba5, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeba6, 0x0000, 0x0093, 0xb031 },
> +	{ 0x0000, 0xeba7, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xeba8, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xeba9, 0x0000, 0x0087, 0xb031 },
> +	{ 0x0000, 0xebaa, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xebab, 0x0000, 0x006c, 0xb031 },
> +	{ 0x0000, 0xebc3, 0x0000, 0x00ff, 0xb031 },
> +	{ 0x0000, 0xebc4, 0x0000, 0x00fc, 0xb031 },
> +	{ 0x0000, 0xeb00, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xeb01, 0x0000, 0x00a9, 0xb031 },
> +	{ 0x0000, 0xeb02, 0x0000, 0x00df, 0xb031 },
> +	{ 0x0000, 0xeb03, 0x0000, 0x007b, 0xb031 },
> +	{ 0x0000, 0xeb05, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xeb06, 0x0000, 0x005a, 0xb031 },
> +	{ 0x0000, 0xeb07, 0x0000, 0x0004, 0xb031 },
> +	{ 0x0000, 0xebc0, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xd0cb, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xd0b0, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xd010, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd011, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xd012, 0x0000, 0x0092, 0xb031 },
> +	{ 0x0000, 0xd013, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd014, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd015, 0x0000, 0x00f6, 0xb031 },
> +	{ 0x0000, 0xd016, 0x0000, 0x0072, 0xb031 },
> +	{ 0x0000, 0xd017, 0x0000, 0x00b0, 0xb031 },
> +	{ 0x0000, 0xd020, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd021, 0x0000, 0x00fb, 0xb031 },
> +	{ 0x0000, 0xd022, 0x0000, 0x0037, 0xb031 },
> +	{ 0x0000, 0xd023, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd024, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd025, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xd026, 0x0000, 0x0090, 0xb031 },
> +	{ 0x0000, 0xd027, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xd028, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd029, 0x0000, 0x00fb, 0xb031 },
> +	{ 0x0000, 0xd02a, 0x0000, 0x0037, 0xb031 },
> +	{ 0x0000, 0xd02b, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd0c3, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd0c4, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xd0c0, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xce6a, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xce63, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xce64, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xce60, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x00cc, 0xb031 },
> +	{ 0x0000, 0xdb04, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xdb05, 0x0000, 0x0006, 0xb031 },
> +	{ 0x0000, 0xcc00, 0x0000, 0x00c1, 0xb031 },
> +	{ 0x0000, 0xca02, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xca00, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xca62, 0x0000, 0x0077, 0xb031 },
> +	{ 0x0000, 0xca65, 0x0000, 0x0082, 0xb031 },
> +	{ 0x0000, 0xca68, 0x0000, 0x00c2, 0xb031 },
> +	{ 0x0000, 0xca75, 0x0000, 0x003a, 0xb031 },
> +	{ 0x0000, 0xca7b, 0x0000, 0x006f, 0xb031 },
> +	{ 0x0000, 0xca00, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xca02, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc860, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc861, 0x0000, 0x00e5, 0xb031 },
> +	{ 0x0000, 0xc862, 0x0000, 0x00eb, 0xb031 },
> +	{ 0x0000, 0xc863, 0x0000, 0x00c6, 0xb031 },
> +	{ 0x0000, 0xc864, 0x0000, 0x00ba, 0xb031 },
> +	{ 0x0000, 0xc865, 0x0000, 0x0061, 0xb031 },
> +	{ 0x0000, 0xc867, 0x0000, 0x0017, 0xb031 },
> +	{ 0x0000, 0xc868, 0x0000, 0x00ed, 0xb031 },
> +	{ 0x0000, 0xc869, 0x0000, 0x003c, 0xb031 },
> +	{ 0x0000, 0xc86a, 0x0000, 0x008a, 0xb031 },
> +	{ 0x0000, 0xc86b, 0x0000, 0x00e2, 0xb031 },
> +	{ 0x0000, 0xc875, 0x0000, 0x003a, 0xb031 },
> +	{ 0x0000, 0xc87b, 0x0000, 0x006f, 0xb031 },
> +	{ 0x0000, 0xc836, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc8a0, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc833, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xc834, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xc83f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc83e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc83a, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xc83b, 0x0000, 0x0089, 0xb031 },
> +	{ 0x0000, 0xc830, 0x0000, 0x0013, 0xb031 },
> +	{ 0x0000, 0xc826, 0x0000, 0x00d1, 0xb031 },
> +	{ 0x0000, 0xc890, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc823, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc824, 0x0000, 0x0004, 0xb031 },
> +	{ 0x0000, 0xc82f, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xc82e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc820, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xc816, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc880, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xc813, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xc814, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xc81f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc81e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc81a, 0x0000, 0x0066, 0xb031 },
> +	{ 0x0000, 0xc81b, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc810, 0x0000, 0x000d, 0xb031 },
> +	{ 0x0000, 0xc846, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc8d0, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc844, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xc84f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc84e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc84a, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc84b, 0x0000, 0x0056, 0xb031 },
> +	{ 0x0000, 0xc800, 0x0000, 0x00b0, 0xb031 },
> +	{ 0x0000, 0xc851, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xc500, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc501, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc502, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xc503, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc504, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xc505, 0x0000, 0x00da, 0xb031 },
> +	{ 0x0000, 0xc506, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xc507, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc510, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xc511, 0x0000, 0x00da, 0xb031 },
> +	{ 0x0000, 0xc512, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xc513, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc514, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc515, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc516, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xc517, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc518, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xc541, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xd250, 0x0000, 0x0087, 0xb031 },
> +	{ 0x0000, 0xd251, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xd264, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x009c, 0xb031 },
> +	{ 0x0000, 0xf800, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xecb0, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xec10, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec11, 0x0000, 0x00bb, 0xb031 },
> +	{ 0x0000, 0xec12, 0x0000, 0x00ab, 0xb031 },
> +	{ 0x0000, 0xec13, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xec14, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec15, 0x0000, 0x004c, 0xb031 },
> +	{ 0x0000, 0xec16, 0x0000, 0x0069, 0xb031 },
> +	{ 0x0000, 0xec21, 0x0000, 0x0011, 0xb031 },
> +	{ 0x0000, 0xec22, 0x0000, 0x00c2, 0xb031 },
> +	{ 0x0000, 0xec23, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xec24, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec25, 0x0000, 0x00bd, 0xb031 },
> +	{ 0x0000, 0xec26, 0x0000, 0x0055, 0xb031 },
> +	{ 0x0000, 0xec27, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xec28, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec29, 0x0000, 0x003c, 0xb031 },
> +	{ 0x0000, 0xec2a, 0x0000, 0x0051, 0xb031 },
> +	{ 0x0000, 0xec2b, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xecb2, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xec30, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec31, 0x0000, 0x004f, 0xb031 },
> +	{ 0x0000, 0xec32, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xec33, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xec34, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec35, 0x0000, 0x00bb, 0xb031 },
> +	{ 0x0000, 0xec36, 0x0000, 0x0024, 0xb031 },
> +	{ 0x0000, 0xec37, 0x0000, 0x0068, 0xb031 },
> +	{ 0x0000, 0xec40, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec41, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xec42, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xec43, 0x0000, 0x00e8, 0xb031 },
> +	{ 0x0000, 0xec44, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec45, 0x0000, 0x004f, 0xb031 },
> +	{ 0x0000, 0xec46, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xec47, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xec48, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec49, 0x0000, 0x00c5, 0xb031 },
> +	{ 0x0000, 0xec4a, 0x0000, 0x0032, 0xb031 },
> +	{ 0x0000, 0xec4b, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xecb4, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xec50, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec51, 0x0000, 0x008a, 0xb031 },
> +	{ 0x0000, 0xec52, 0x0000, 0x00b4, 0xb031 },
> +	{ 0x0000, 0xec53, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xec54, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec55, 0x0000, 0x007d, 0xb031 },
> +	{ 0x0000, 0xec56, 0x0000, 0x00d9, 0xb031 },
> +	{ 0x0000, 0xec57, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xec60, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xec61, 0x0000, 0x00e7, 0xb031 },
> +	{ 0x0000, 0xec62, 0x0000, 0x00b5, 0xb031 },
> +	{ 0x0000, 0xec63, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xec64, 0x0000, 0x00fa, 0xb031 },
> +	{ 0x0000, 0xec65, 0x0000, 0x0086, 0xb031 },
> +	{ 0x0000, 0xec66, 0x0000, 0x00a8, 0xb031 },
> +	{ 0x0000, 0xec67, 0x0000, 0x0040, 0xb031 },
> +	{ 0x0000, 0xec68, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xec69, 0x0000, 0x009a, 0xb031 },
> +	{ 0x0000, 0xec6a, 0x0000, 0x002f, 0xb031 },
> +	{ 0x0000, 0xec6b, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xecb6, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xec70, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xec71, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xec72, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xec73, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xec74, 0x0000, 0x0006, 0xb031 },
> +	{ 0x0000, 0xec75, 0x0000, 0x0050, 0xb031 },
> +	{ 0x0000, 0xec76, 0x0000, 0x002c, 0xb031 },
> +	{ 0x0000, 0xec77, 0x0000, 0x0050, 0xb031 },
> +	{ 0x0000, 0xec80, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec81, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xec82, 0x0000, 0x0016, 0xb031 },
> +	{ 0x0000, 0xec83, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xec84, 0x0000, 0x00f5, 0xb031 },
> +	{ 0x0000, 0xec85, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xec86, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xec87, 0x0000, 0x00d0, 0xb031 },
> +	{ 0x0000, 0xec88, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xec89, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xec8a, 0x0000, 0x0016, 0xb031 },
> +	{ 0x0000, 0xec8b, 0x0000, 0x0028, 0xb031 },
> +	{ 0x0000, 0xecb8, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xec90, 0x0000, 0x00fc, 0xb031 },
> +	{ 0x0000, 0xec91, 0x0000, 0x008b, 0xb031 },
> +	{ 0x0000, 0xec92, 0x0000, 0x00bd, 0xb031 },
> +	{ 0x0000, 0xec93, 0x0000, 0x0064, 0xb031 },
> +	{ 0x0000, 0xec94, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xec95, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xec96, 0x0000, 0x00e7, 0xb031 },
> +	{ 0x0000, 0xec97, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xeca0, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeca1, 0x0000, 0x0091, 0xb031 },
> +	{ 0x0000, 0xeca2, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xeca3, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xeca4, 0x0000, 0x00f6, 0xb031 },
> +	{ 0x0000, 0xeca5, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xeca6, 0x0000, 0x0093, 0xb031 },
> +	{ 0x0000, 0xeca7, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xeca8, 0x0000, 0x0003, 0xb031 },
> +	{ 0x0000, 0xeca9, 0x0000, 0x0087, 0xb031 },
> +	{ 0x0000, 0xecaa, 0x0000, 0x0099, 0xb031 },
> +	{ 0x0000, 0xecab, 0x0000, 0x006c, 0xb031 },
> +	{ 0x0000, 0xebc3, 0x0000, 0x00ff, 0xb031 },
> +	{ 0x0000, 0xebc4, 0x0000, 0x00fc, 0xb031 },
> +	{ 0x0000, 0xec00, 0x0000, 0x0005, 0xb031 },
> +	{ 0x0000, 0xec01, 0x0000, 0x00a9, 0xb031 },
> +	{ 0x0000, 0xec02, 0x0000, 0x00df, 0xb031 },
> +	{ 0x0000, 0xec03, 0x0000, 0x007b, 0xb031 },
> +	{ 0x0000, 0xec05, 0x0000, 0x0079, 0xb031 },
> +	{ 0x0000, 0xec06, 0x0000, 0x005a, 0xb031 },
> +	{ 0x0000, 0xec07, 0x0000, 0x0004, 0xb031 },
> +	{ 0x0000, 0xebc0, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xd1b0, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xd110, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd111, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xd112, 0x0000, 0x0092, 0xb031 },
> +	{ 0x0000, 0xd113, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd114, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd115, 0x0000, 0x00f6, 0xb031 },
> +	{ 0x0000, 0xd116, 0x0000, 0x0072, 0xb031 },
> +	{ 0x0000, 0xd117, 0x0000, 0x00b0, 0xb031 },
> +	{ 0x0000, 0xd120, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd121, 0x0000, 0x00fb, 0xb031 },
> +	{ 0x0000, 0xd122, 0x0000, 0x0037, 0xb031 },
> +	{ 0x0000, 0xd123, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd124, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd125, 0x0000, 0x0009, 0xb031 },
> +	{ 0x0000, 0xd126, 0x0000, 0x0090, 0xb031 },
> +	{ 0x0000, 0xd127, 0x0000, 0x0020, 0xb031 },
> +	{ 0x0000, 0xd128, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xd129, 0x0000, 0x00fb, 0xb031 },
> +	{ 0x0000, 0xd12a, 0x0000, 0x0037, 0xb031 },
> +	{ 0x0000, 0xd12b, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd0c3, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd0c4, 0x0000, 0x000c, 0xb031 },
> +	{ 0x0000, 0xd0c0, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xce63, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xce64, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xce60, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x00cc, 0xb031 },
> +	{ 0x0000, 0xdd04, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xdd05, 0x0000, 0x0006, 0xb031 },
> +	{ 0x0000, 0xca12, 0x0000, 0x000f, 0xb031 },
> +	{ 0x0000, 0xca10, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xca82, 0x0000, 0x0077, 0xb031 },
> +	{ 0x0000, 0xca85, 0x0000, 0x0082, 0xb031 },
> +	{ 0x0000, 0xca88, 0x0000, 0x00c2, 0xb031 },
> +	{ 0x0000, 0xca95, 0x0000, 0x003a, 0xb031 },
> +	{ 0x0000, 0xca9b, 0x0000, 0x006f, 0xb031 },
> +	{ 0x0000, 0xca10, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xca12, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc960, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc961, 0x0000, 0x00e5, 0xb031 },
> +	{ 0x0000, 0xc962, 0x0000, 0x00eb, 0xb031 },
> +	{ 0x0000, 0xc963, 0x0000, 0x00c6, 0xb031 },
> +	{ 0x0000, 0xc964, 0x0000, 0x00ba, 0xb031 },
> +	{ 0x0000, 0xc965, 0x0000, 0x0061, 0xb031 },
> +	{ 0x0000, 0xc967, 0x0000, 0x0017, 0xb031 },
> +	{ 0x0000, 0xc968, 0x0000, 0x00ed, 0xb031 },
> +	{ 0x0000, 0xc969, 0x0000, 0x003c, 0xb031 },
> +	{ 0x0000, 0xc96a, 0x0000, 0x008a, 0xb031 },
> +	{ 0x0000, 0xc96b, 0x0000, 0x00e2, 0xb031 },
> +	{ 0x0000, 0xc975, 0x0000, 0x003a, 0xb031 },
> +	{ 0x0000, 0xc97b, 0x0000, 0x006f, 0xb031 },
> +	{ 0x0000, 0xc936, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc9a0, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc933, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xc934, 0x0000, 0x0002, 0xb031 },
> +	{ 0x0000, 0xc93f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc93e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc93a, 0x0000, 0x0076, 0xb031 },
> +	{ 0x0000, 0xc93b, 0x0000, 0x0089, 0xb031 },
> +	{ 0x0000, 0xc930, 0x0000, 0x0013, 0xb031 },
> +	{ 0x0000, 0xc926, 0x0000, 0x00d1, 0xb031 },
> +	{ 0x0000, 0xc990, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc923, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc924, 0x0000, 0x0004, 0xb031 },
> +	{ 0x0000, 0xc92f, 0x0000, 0x0018, 0xb031 },
> +	{ 0x0000, 0xc92e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc920, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xc916, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc980, 0x0000, 0x00e1, 0xb031 },
> +	{ 0x0000, 0xc913, 0x0000, 0x0000, 0xb031 },
> +	{ 0x0000, 0xc914, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xc91f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc91e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc91a, 0x0000, 0x0066, 0xb031 },
> +	{ 0x0000, 0xc91b, 0x0000, 0x0078, 0xb031 },
> +	{ 0x0000, 0xc910, 0x0000, 0x000d, 0xb031 },
> +	{ 0x0000, 0xc946, 0x0000, 0x00f9, 0xb031 },
> +	{ 0x0000, 0xc9d0, 0x0000, 0x00f1, 0xb031 },
> +	{ 0x0000, 0xc944, 0x0000, 0x0001, 0xb031 },
> +	{ 0x0000, 0xc94f, 0x0000, 0x0014, 0xb031 },
> +	{ 0x0000, 0xc94e, 0x0000, 0x0094, 0xb031 },
> +	{ 0x0000, 0xc94a, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc94b, 0x0000, 0x0056, 0xb031 },
> +	{ 0x0000, 0xc951, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xc600, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc601, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc602, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xc603, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc604, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xc605, 0x0000, 0x00da, 0xb031 },
> +	{ 0x0000, 0xc606, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xc607, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc610, 0x0000, 0x0007, 0xb031 },
> +	{ 0x0000, 0xc611, 0x0000, 0x00da, 0xb031 },
> +	{ 0x0000, 0xc612, 0x0000, 0x000e, 0xb031 },
> +	{ 0x0000, 0xc613, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc614, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xc615, 0x0000, 0x0026, 0xb031 },
> +	{ 0x0000, 0xc616, 0x0000, 0x004a, 0xb031 },
> +	{ 0x0000, 0xc617, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xc618, 0x0000, 0x0008, 0xb031 },
> +	{ 0x0000, 0xc541, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xc802, 0x0000, 0x00d2, 0xb031 },
> +	{ 0x0000, 0xc902, 0x0000, 0x00d2, 0xb031 },
> +	{ 0x0000, 0xc800, 0x0000, 0x00f0, 0xb031 },
> +	{ 0x0000, 0xd250, 0x0000, 0x0087, 0xb031 },
> +	{ 0x0000, 0xd252, 0x0000, 0x0030, 0xb031 },
> +	{ 0x0000, 0xd264, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xce60, 0x0000, 0x00e3, 0xb031 },
> +	{ 0x0000, 0xdf00, 0x0000, 0x0010, 0xb031 },
> +	{ 0x0000, 0xdbb5, 0x0041, 0xd27f, 0xb037 },
> +	{ 0x0000, 0xddb5, 0x0040, 0x6e3b, 0xb037 },
> +	{ 0x0000, 0xdb93, 0x0000, 0x009e, 0xb033 },
> +	{ 0x0000, 0xdd93, 0x0000, 0x009e, 0xb033 },
> +	{ 0x0000, 0xdb12, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xdd12, 0x0000, 0x00c0, 0xb031 },
> +	{ 0x0000, 0xdb08, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xdd08, 0x0000, 0x0080, 0xb031 },
> +	{ 0x0000, 0xdb00, 0x0000, 0x00cc, 0xb031 },
> +	{ 0x0000, 0xc203, 0x0000, 0x009c, 0xb031 },
> +	{ 0x0000, 0x0010, 0x0000, 0x0f21, 0x0000 },
> +};
> +
> +/* wake the amp (ea00=0x43, c121=0x0b, f109=0xe0) */
> +static const struct alc298_rb16_op alc298_rb16_amp_wake[] = {
> +	{ 0x0000, 0xea00, 0x0000, 0x0043, 0xb031 },
> +	{ 0x0000, 0xc121, 0x0000, 0x000b, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x00e0, 0xb031 },
> +};
> +
> +/* park the amp (ea00=0x47, c121=0x0a, f109=0xa0) */
> +static const struct alc298_rb16_op alc298_rb16_amp_sleep[] = {
> +	{ 0x0000, 0xea00, 0x0000, 0x0047, 0xb031 },
> +	{ 0x0000, 0xc121, 0x0000, 0x000a, 0xb031 },
> +	{ 0x0000, 0xf109, 0x0000, 0x00a0, 0xb031 },
> +};

It's way too big to embed into alc269.c.  Please put into another file
and include it, instead.

> +
> +static void alc298_rb16_pcm_hook(struct hda_pcm_stream *hinfo,
> +				 struct hda_codec *codec,
> +				 struct snd_pcm_substream *substream,
> +				 int action)
> +{
> +	/* power the external amp only while a stream is running */
> +	switch (action) {
> +	case HDA_GEN_PCM_ACT_PREPARE:
> +		alc298_rb16_apply(codec, alc298_rb16_amp_wake,
> +				  ARRAY_SIZE(alc298_rb16_amp_wake));
> +		break;
> +	case HDA_GEN_PCM_ACT_CLEANUP:
> +		alc298_rb16_apply(codec, alc298_rb16_amp_sleep,
> +				  ARRAY_SIZE(alc298_rb16_amp_sleep));
> +		break;
> +	}
> +}

Any reason this must be a PCM hook?  The amp control could be done via
the normal power control path by simply setting
codec->power_save_node=1; then the power up of each widget is
optimized depending on the used path dynamically via runtime PM.


thanks,

Takashi

      reply	other threads:[~2026-06-22  8:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-20 14:41 [PATCH] ALSA: hda/realtek: Enable internal speakers on Razer Blade 16 (2025) Christopher Höner
2026-06-21 20:57 ` [PATCH v2] " Christopher Höner
2026-06-22  8:55   ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ldc7dkdx.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=christopher-hoener@web.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.