The Linux Kernel Mailing List
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox