Commit e1d695b4 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda/realtek: Rewrite to new probe method



Convert the Realtek codec drivers to use the new hda_codec_ops probe.
No functional changes.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250709160434.1859-12-tiwai@suse.de
parent 1d0e6926
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ static const struct hda_model_fixup alc260_fixup_models[] = {

/*
 */
static int patch_alc260(struct hda_codec *codec)
static int alc260_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
	struct alc_spec *spec;
	int err;
@@ -252,15 +252,28 @@ static int patch_alc260(struct hda_codec *codec)
	return 0;

 error:
	alc_free(codec);
	snd_hda_gen_remove(codec);
	return err;
}

static const struct hda_codec_ops alc260_codec_ops = {
	.probe = alc260_probe,
	.remove = snd_hda_gen_remove,
	.build_controls = alc_build_controls,
	.build_pcms = snd_hda_gen_build_pcms,
	.init = alc_init,
	.unsol_event = snd_hda_jack_unsol_event,
	.resume = alc_resume,
	.suspend = alc_suspend,
	.check_power_status = snd_hda_gen_check_power_status,
	.stream_pm = snd_hda_gen_stream_pm,
};

/*
 * driver entries
 */
static const struct hda_device_id snd_hda_id_alc260[] = {
	HDA_CODEC_ENTRY(0x10ec0260, "ALC260", patch_alc260),
	HDA_CODEC_ID(0x10ec0260, "ALC260"),
	{} /* terminator */
};
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc260);
@@ -271,6 +284,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");

static struct hda_codec_driver alc260_driver = {
	.id = snd_hda_id_alc260,
	.ops = &alc260_codec_ops,
};

module_hda_codec_driver(alc260_driver);
+17 −3
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ static const struct hda_model_fixup alc262_fixup_models[] = {

/*
 */
static int patch_alc262(struct hda_codec *codec)
static int alc262_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
	struct alc_spec *spec;
	int err;
@@ -175,15 +175,28 @@ static int patch_alc262(struct hda_codec *codec)
	return 0;

 error:
	alc_free(codec);
	snd_hda_gen_remove(codec);
	return err;
}

static const struct hda_codec_ops alc262_codec_ops = {
	.probe = alc262_probe,
	.remove = snd_hda_gen_remove,
	.build_controls = alc_build_controls,
	.build_pcms = snd_hda_gen_build_pcms,
	.init = alc_init,
	.unsol_event = snd_hda_jack_unsol_event,
	.resume = alc_resume,
	.suspend = alc_suspend,
	.check_power_status = snd_hda_gen_check_power_status,
	.stream_pm = snd_hda_gen_stream_pm,
};

/*
 * driver entries
 */
static const struct hda_device_id snd_hda_id_alc262[] = {
	HDA_CODEC_ENTRY(0x10ec0262, "ALC262", patch_alc262),
	HDA_CODEC_ID(0x10ec0262, "ALC262"),
	{} /* terminator */
};
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc262);
@@ -194,6 +207,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");

static struct hda_codec_driver alc262_driver = {
	.id = snd_hda_id_alc262,
	.ops = &alc262_codec_ops,
};

module_hda_codec_driver(alc262_driver);
+18 −4
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ static int alc268_parse_auto_config(struct hda_codec *codec)

/*
 */
static int patch_alc268(struct hda_codec *codec)
static int alc268_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
	struct alc_spec *spec;
	int i, err;
@@ -151,16 +151,29 @@ static int patch_alc268(struct hda_codec *codec)
	return 0;

 error:
	alc_free(codec);
	snd_hda_gen_remove(codec);
	return err;
}

static const struct hda_codec_ops alc268_codec_ops = {
	.probe = alc268_probe,
	.remove = snd_hda_gen_remove,
	.build_controls = alc_build_controls,
	.build_pcms = snd_hda_gen_build_pcms,
	.init = alc_init,
	.unsol_event = snd_hda_jack_unsol_event,
	.resume = alc_resume,
	.suspend = alc_suspend,
	.check_power_status = snd_hda_gen_check_power_status,
	.stream_pm = snd_hda_gen_stream_pm,
};

/*
 * driver entries
 */
static const struct hda_device_id snd_hda_id_alc268[] = {
	HDA_CODEC_ENTRY(0x10ec0267, "ALC267", patch_alc268),
	HDA_CODEC_ENTRY(0x10ec0268, "ALC268", patch_alc268),
	HDA_CODEC_ID(0x10ec0267, "ALC267"),
	HDA_CODEC_ID(0x10ec0268, "ALC268"),
	{} /* terminator */
};
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc268);
@@ -171,6 +184,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");

static struct hda_codec_driver alc268_driver = {
	.id = snd_hda_id_alc268,
	.ops = &alc268_codec_ops,
};

module_hda_codec_driver(alc268_driver);
+61 −50
Original line number Diff line number Diff line
@@ -992,7 +992,7 @@ static int alc269_resume(struct hda_codec *codec)
		msleep(150);
	}

	codec->patch_ops.init(codec);
	snd_hda_codec_init(codec);

	if (spec->codec_variant == ALC269_TYPE_ALC269VB)
		alc269vb_toggle_power_output(codec, 1);
@@ -7842,19 +7842,19 @@ static void alc269_fill_coef(struct hda_codec *codec)
	alc_update_coef_idx(codec, 0x4, 0, 1<<11);
}

static void alc269_free(struct hda_codec *codec)
static void alc269_remove(struct hda_codec *codec)
{
	struct alc_spec *spec = codec->spec;

	if (spec)
		hda_component_manager_free(&spec->comps, &comp_master_ops);

	alc_free(codec);
	snd_hda_gen_remove(codec);
}

/*
 */
static int patch_alc269(struct hda_codec *codec)
static int alc269_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
	struct alc_spec *spec;
	int err;
@@ -7868,9 +7868,6 @@ static int patch_alc269(struct hda_codec *codec)
	codec->power_save_node = 0;
	spec->en_3kpull_low = true;

	codec->patch_ops.suspend = alc269_suspend;
	codec->patch_ops.resume = alc269_resume;
	codec->patch_ops.free = alc269_free;
	spec->shutup = alc_default_shutup;
	spec->init_hook = alc_default_init;

@@ -8068,56 +8065,69 @@ static int patch_alc269(struct hda_codec *codec)
	return 0;

 error:
	alc_free(codec);
	alc269_remove(codec);
	return err;
}

static const struct hda_codec_ops alc269_codec_ops = {
	.probe = alc269_probe,
	.remove = alc269_remove,
	.build_controls = alc_build_controls,
	.build_pcms = snd_hda_gen_build_pcms,
	.init = alc_init,
	.unsol_event = snd_hda_jack_unsol_event,
	.suspend = alc269_suspend,
	.resume = alc269_resume,
	.check_power_status = snd_hda_gen_check_power_status,
	.stream_pm = snd_hda_gen_stream_pm,
};

/*
 * driver entries
 */
static const struct hda_device_id snd_hda_id_alc269[] = {
	HDA_CODEC_ENTRY(0x10ec0215, "ALC215", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0222, "ALC222", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0225, "ALC225", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0230, "ALC236", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0234, "ALC234", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0235, "ALC233", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0236, "ALC236", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0245, "ALC245", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0255, "ALC255", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0256, "ALC256", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0257, "ALC257", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0269, "ALC269", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0270, "ALC270", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0274, "ALC274", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0275, "ALC275", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0276, "ALC276", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0280, "ALC280", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0282, "ALC282", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0283, "ALC283", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0284, "ALC284", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0285, "ALC285", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0286, "ALC286", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0287, "ALC287", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0288, "ALC288", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0289, "ALC289", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0290, "ALC290", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0292, "ALC292", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0293, "ALC293", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0294, "ALC294", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0295, "ALC295", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0298, "ALC298", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0299, "ALC299", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0300, "ALC300", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0623, "ALC623", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0700, "ALC700", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0701, "ALC701", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0703, "ALC703", patch_alc269),
	HDA_CODEC_ENTRY(0x10ec0711, "ALC711", patch_alc269),
	HDA_CODEC_ENTRY(0x19e58326, "HW8326", patch_alc269),
	HDA_CODEC_ID(0x10ec0215, "ALC215"),
	HDA_CODEC_ID(0x10ec0221, "ALC221"),
	HDA_CODEC_ID(0x10ec0222, "ALC222"),
	HDA_CODEC_ID(0x10ec0225, "ALC225"),
	HDA_CODEC_ID(0x10ec0230, "ALC236"),
	HDA_CODEC_ID(0x10ec0231, "ALC231"),
	HDA_CODEC_ID(0x10ec0233, "ALC233"),
	HDA_CODEC_ID(0x10ec0234, "ALC234"),
	HDA_CODEC_ID(0x10ec0235, "ALC233"),
	HDA_CODEC_ID(0x10ec0236, "ALC236"),
	HDA_CODEC_ID(0x10ec0245, "ALC245"),
	HDA_CODEC_ID(0x10ec0255, "ALC255"),
	HDA_CODEC_ID(0x10ec0256, "ALC256"),
	HDA_CODEC_ID(0x10ec0257, "ALC257"),
	HDA_CODEC_ID(0x10ec0269, "ALC269"),
	HDA_CODEC_ID(0x10ec0270, "ALC270"),
	HDA_CODEC_ID(0x10ec0274, "ALC274"),
	HDA_CODEC_ID(0x10ec0275, "ALC275"),
	HDA_CODEC_ID(0x10ec0276, "ALC276"),
	HDA_CODEC_ID(0x10ec0280, "ALC280"),
	HDA_CODEC_ID(0x10ec0282, "ALC282"),
	HDA_CODEC_ID(0x10ec0283, "ALC283"),
	HDA_CODEC_ID(0x10ec0284, "ALC284"),
	HDA_CODEC_ID(0x10ec0285, "ALC285"),
	HDA_CODEC_ID(0x10ec0286, "ALC286"),
	HDA_CODEC_ID(0x10ec0287, "ALC287"),
	HDA_CODEC_ID(0x10ec0288, "ALC288"),
	HDA_CODEC_ID(0x10ec0289, "ALC289"),
	HDA_CODEC_ID(0x10ec0290, "ALC290"),
	HDA_CODEC_ID(0x10ec0292, "ALC292"),
	HDA_CODEC_ID(0x10ec0293, "ALC293"),
	HDA_CODEC_ID(0x10ec0294, "ALC294"),
	HDA_CODEC_ID(0x10ec0295, "ALC295"),
	HDA_CODEC_ID(0x10ec0298, "ALC298"),
	HDA_CODEC_ID(0x10ec0299, "ALC299"),
	HDA_CODEC_ID(0x10ec0300, "ALC300"),
	HDA_CODEC_ID(0x10ec0623, "ALC623"),
	HDA_CODEC_ID(0x10ec0700, "ALC700"),
	HDA_CODEC_ID(0x10ec0701, "ALC701"),
	HDA_CODEC_ID(0x10ec0703, "ALC703"),
	HDA_CODEC_ID(0x10ec0711, "ALC711"),
	HDA_CODEC_ID(0x19e58326, "HW8326"),
	{} /* terminator */
};
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc269);
@@ -8129,6 +8139,7 @@ MODULE_IMPORT_NS("SND_HDA_SCODEC_COMPONENT");

static struct hda_codec_driver alc269_driver = {
	.id = snd_hda_id_alc269,
	.ops = &alc269_codec_ops,
};

module_hda_codec_driver(alc269_driver);
+28 −14
Original line number Diff line number Diff line
@@ -994,7 +994,7 @@ static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = {

/*
 */
static int patch_alc662(struct hda_codec *codec)
static int alc662_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
	struct alc_spec *spec;
	int err;
@@ -1067,26 +1067,39 @@ static int patch_alc662(struct hda_codec *codec)
	return 0;

 error:
	alc_free(codec);
	snd_hda_gen_remove(codec);
	return err;
}

static const struct hda_codec_ops alc662_codec_ops = {
	.probe = alc662_probe,
	.remove = snd_hda_gen_remove,
	.build_controls = alc_build_controls,
	.build_pcms = snd_hda_gen_build_pcms,
	.init = alc_init,
	.unsol_event = snd_hda_jack_unsol_event,
	.resume = alc_resume,
	.suspend = alc_suspend,
	.check_power_status = snd_hda_gen_check_power_status,
	.stream_pm = snd_hda_gen_stream_pm,
};

/*
 * driver entries
 */
static const struct hda_device_id snd_hda_id_alc662[] = {
	HDA_CODEC_ENTRY(0x10ec0272, "ALC272", patch_alc662),
	HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100101, "ALC662 rev1", patch_alc662),
	HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100300, "ALC662 rev3", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0663, "ALC663", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0665, "ALC665", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0667, "ALC667", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0668, "ALC668", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0670, "ALC670", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0671, "ALC671", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0867, "ALC891", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662),
	HDA_CODEC_ENTRY(0x10ec0897, "ALC897", patch_alc662),
	HDA_CODEC_ID(0x10ec0272, "ALC272"),
	HDA_CODEC_ID_REV(0x10ec0662, 0x100101, "ALC662 rev1"),
	HDA_CODEC_ID_REV(0x10ec0662, 0x100300, "ALC662 rev3"),
	HDA_CODEC_ID(0x10ec0663, "ALC663"),
	HDA_CODEC_ID(0x10ec0665, "ALC665"),
	HDA_CODEC_ID(0x10ec0667, "ALC667"),
	HDA_CODEC_ID(0x10ec0668, "ALC668"),
	HDA_CODEC_ID(0x10ec0670, "ALC670"),
	HDA_CODEC_ID(0x10ec0671, "ALC671"),
	HDA_CODEC_ID(0x10ec0867, "ALC891"),
	HDA_CODEC_ID(0x10ec0892, "ALC892"),
	HDA_CODEC_ID(0x10ec0897, "ALC897"),
	{} /* terminator */
};
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc662);
@@ -1097,6 +1110,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");

static struct hda_codec_driver alc662_driver = {
	.id = snd_hda_id_alc662,
	.ops = &alc662_codec_ops,
};

module_hda_codec_driver(alc662_driver);
Loading