Skip to content

Commit e1d695b

Browse files
committed
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: Takashi Iwai <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent 1d0e692 commit e1d695b

File tree

12 files changed

+244
-128
lines changed

12 files changed

+244
-128
lines changed

sound/hda/codecs/realtek/alc260.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ static const struct hda_model_fixup alc260_fixup_models[] = {
211211

212212
/*
213213
*/
214-
static int patch_alc260(struct hda_codec *codec)
214+
static int alc260_probe(struct hda_codec *codec, const struct hda_device_id *id)
215215
{
216216
struct alc_spec *spec;
217217
int err;
@@ -252,15 +252,28 @@ static int patch_alc260(struct hda_codec *codec)
252252
return 0;
253253

254254
error:
255-
alc_free(codec);
255+
snd_hda_gen_remove(codec);
256256
return err;
257257
}
258258

259+
static const struct hda_codec_ops alc260_codec_ops = {
260+
.probe = alc260_probe,
261+
.remove = snd_hda_gen_remove,
262+
.build_controls = alc_build_controls,
263+
.build_pcms = snd_hda_gen_build_pcms,
264+
.init = alc_init,
265+
.unsol_event = snd_hda_jack_unsol_event,
266+
.resume = alc_resume,
267+
.suspend = alc_suspend,
268+
.check_power_status = snd_hda_gen_check_power_status,
269+
.stream_pm = snd_hda_gen_stream_pm,
270+
};
271+
259272
/*
260273
* driver entries
261274
*/
262275
static const struct hda_device_id snd_hda_id_alc260[] = {
263-
HDA_CODEC_ENTRY(0x10ec0260, "ALC260", patch_alc260),
276+
HDA_CODEC_ID(0x10ec0260, "ALC260"),
264277
{} /* terminator */
265278
};
266279
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc260);
@@ -271,6 +284,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");
271284

272285
static struct hda_codec_driver alc260_driver = {
273286
.id = snd_hda_id_alc260,
287+
.ops = &alc260_codec_ops,
274288
};
275289

276290
module_hda_codec_driver(alc260_driver);

sound/hda/codecs/realtek/alc262.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ static const struct hda_model_fixup alc262_fixup_models[] = {
126126

127127
/*
128128
*/
129-
static int patch_alc262(struct hda_codec *codec)
129+
static int alc262_probe(struct hda_codec *codec, const struct hda_device_id *id)
130130
{
131131
struct alc_spec *spec;
132132
int err;
@@ -175,15 +175,28 @@ static int patch_alc262(struct hda_codec *codec)
175175
return 0;
176176

177177
error:
178-
alc_free(codec);
178+
snd_hda_gen_remove(codec);
179179
return err;
180180
}
181181

182+
static const struct hda_codec_ops alc262_codec_ops = {
183+
.probe = alc262_probe,
184+
.remove = snd_hda_gen_remove,
185+
.build_controls = alc_build_controls,
186+
.build_pcms = snd_hda_gen_build_pcms,
187+
.init = alc_init,
188+
.unsol_event = snd_hda_jack_unsol_event,
189+
.resume = alc_resume,
190+
.suspend = alc_suspend,
191+
.check_power_status = snd_hda_gen_check_power_status,
192+
.stream_pm = snd_hda_gen_stream_pm,
193+
};
194+
182195
/*
183196
* driver entries
184197
*/
185198
static const struct hda_device_id snd_hda_id_alc262[] = {
186-
HDA_CODEC_ENTRY(0x10ec0262, "ALC262", patch_alc262),
199+
HDA_CODEC_ID(0x10ec0262, "ALC262"),
187200
{} /* terminator */
188201
};
189202
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc262);
@@ -194,6 +207,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");
194207

195208
static struct hda_codec_driver alc262_driver = {
196209
.id = snd_hda_id_alc262,
210+
.ops = &alc262_codec_ops,
197211
};
198212

199213
module_hda_codec_driver(alc262_driver);

sound/hda/codecs/realtek/alc268.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ static int alc268_parse_auto_config(struct hda_codec *codec)
101101

102102
/*
103103
*/
104-
static int patch_alc268(struct hda_codec *codec)
104+
static int alc268_probe(struct hda_codec *codec, const struct hda_device_id *id)
105105
{
106106
struct alc_spec *spec;
107107
int i, err;
@@ -151,16 +151,29 @@ static int patch_alc268(struct hda_codec *codec)
151151
return 0;
152152

153153
error:
154-
alc_free(codec);
154+
snd_hda_gen_remove(codec);
155155
return err;
156156
}
157157

158+
static const struct hda_codec_ops alc268_codec_ops = {
159+
.probe = alc268_probe,
160+
.remove = snd_hda_gen_remove,
161+
.build_controls = alc_build_controls,
162+
.build_pcms = snd_hda_gen_build_pcms,
163+
.init = alc_init,
164+
.unsol_event = snd_hda_jack_unsol_event,
165+
.resume = alc_resume,
166+
.suspend = alc_suspend,
167+
.check_power_status = snd_hda_gen_check_power_status,
168+
.stream_pm = snd_hda_gen_stream_pm,
169+
};
170+
158171
/*
159172
* driver entries
160173
*/
161174
static const struct hda_device_id snd_hda_id_alc268[] = {
162-
HDA_CODEC_ENTRY(0x10ec0267, "ALC267", patch_alc268),
163-
HDA_CODEC_ENTRY(0x10ec0268, "ALC268", patch_alc268),
175+
HDA_CODEC_ID(0x10ec0267, "ALC267"),
176+
HDA_CODEC_ID(0x10ec0268, "ALC268"),
164177
{} /* terminator */
165178
};
166179
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc268);
@@ -171,6 +184,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");
171184

172185
static struct hda_codec_driver alc268_driver = {
173186
.id = snd_hda_id_alc268,
187+
.ops = &alc268_codec_ops,
174188
};
175189

176190
module_hda_codec_driver(alc268_driver);

sound/hda/codecs/realtek/alc269.c

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@ static int alc269_resume(struct hda_codec *codec)
992992
msleep(150);
993993
}
994994

995-
codec->patch_ops.init(codec);
995+
snd_hda_codec_init(codec);
996996

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

7845-
static void alc269_free(struct hda_codec *codec)
7845+
static void alc269_remove(struct hda_codec *codec)
78467846
{
78477847
struct alc_spec *spec = codec->spec;
78487848

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

7852-
alc_free(codec);
7852+
snd_hda_gen_remove(codec);
78537853
}
78547854

78557855
/*
78567856
*/
7857-
static int patch_alc269(struct hda_codec *codec)
7857+
static int alc269_probe(struct hda_codec *codec, const struct hda_device_id *id)
78587858
{
78597859
struct alc_spec *spec;
78607860
int err;
@@ -7868,9 +7868,6 @@ static int patch_alc269(struct hda_codec *codec)
78687868
codec->power_save_node = 0;
78697869
spec->en_3kpull_low = true;
78707870

7871-
codec->patch_ops.suspend = alc269_suspend;
7872-
codec->patch_ops.resume = alc269_resume;
7873-
codec->patch_ops.free = alc269_free;
78747871
spec->shutup = alc_default_shutup;
78757872
spec->init_hook = alc_default_init;
78767873

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

80708067
error:
8071-
alc_free(codec);
8068+
alc269_remove(codec);
80728069
return err;
80738070
}
80748071

8072+
static const struct hda_codec_ops alc269_codec_ops = {
8073+
.probe = alc269_probe,
8074+
.remove = alc269_remove,
8075+
.build_controls = alc_build_controls,
8076+
.build_pcms = snd_hda_gen_build_pcms,
8077+
.init = alc_init,
8078+
.unsol_event = snd_hda_jack_unsol_event,
8079+
.suspend = alc269_suspend,
8080+
.resume = alc269_resume,
8081+
.check_power_status = snd_hda_gen_check_power_status,
8082+
.stream_pm = snd_hda_gen_stream_pm,
8083+
};
8084+
80758085
/*
80768086
* driver entries
80778087
*/
80788088
static const struct hda_device_id snd_hda_id_alc269[] = {
8079-
HDA_CODEC_ENTRY(0x10ec0215, "ALC215", patch_alc269),
8080-
HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269),
8081-
HDA_CODEC_ENTRY(0x10ec0222, "ALC222", patch_alc269),
8082-
HDA_CODEC_ENTRY(0x10ec0225, "ALC225", patch_alc269),
8083-
HDA_CODEC_ENTRY(0x10ec0230, "ALC236", patch_alc269),
8084-
HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269),
8085-
HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269),
8086-
HDA_CODEC_ENTRY(0x10ec0234, "ALC234", patch_alc269),
8087-
HDA_CODEC_ENTRY(0x10ec0235, "ALC233", patch_alc269),
8088-
HDA_CODEC_ENTRY(0x10ec0236, "ALC236", patch_alc269),
8089-
HDA_CODEC_ENTRY(0x10ec0245, "ALC245", patch_alc269),
8090-
HDA_CODEC_ENTRY(0x10ec0255, "ALC255", patch_alc269),
8091-
HDA_CODEC_ENTRY(0x10ec0256, "ALC256", patch_alc269),
8092-
HDA_CODEC_ENTRY(0x10ec0257, "ALC257", patch_alc269),
8093-
HDA_CODEC_ENTRY(0x10ec0269, "ALC269", patch_alc269),
8094-
HDA_CODEC_ENTRY(0x10ec0270, "ALC270", patch_alc269),
8095-
HDA_CODEC_ENTRY(0x10ec0274, "ALC274", patch_alc269),
8096-
HDA_CODEC_ENTRY(0x10ec0275, "ALC275", patch_alc269),
8097-
HDA_CODEC_ENTRY(0x10ec0276, "ALC276", patch_alc269),
8098-
HDA_CODEC_ENTRY(0x10ec0280, "ALC280", patch_alc269),
8099-
HDA_CODEC_ENTRY(0x10ec0282, "ALC282", patch_alc269),
8100-
HDA_CODEC_ENTRY(0x10ec0283, "ALC283", patch_alc269),
8101-
HDA_CODEC_ENTRY(0x10ec0284, "ALC284", patch_alc269),
8102-
HDA_CODEC_ENTRY(0x10ec0285, "ALC285", patch_alc269),
8103-
HDA_CODEC_ENTRY(0x10ec0286, "ALC286", patch_alc269),
8104-
HDA_CODEC_ENTRY(0x10ec0287, "ALC287", patch_alc269),
8105-
HDA_CODEC_ENTRY(0x10ec0288, "ALC288", patch_alc269),
8106-
HDA_CODEC_ENTRY(0x10ec0289, "ALC289", patch_alc269),
8107-
HDA_CODEC_ENTRY(0x10ec0290, "ALC290", patch_alc269),
8108-
HDA_CODEC_ENTRY(0x10ec0292, "ALC292", patch_alc269),
8109-
HDA_CODEC_ENTRY(0x10ec0293, "ALC293", patch_alc269),
8110-
HDA_CODEC_ENTRY(0x10ec0294, "ALC294", patch_alc269),
8111-
HDA_CODEC_ENTRY(0x10ec0295, "ALC295", patch_alc269),
8112-
HDA_CODEC_ENTRY(0x10ec0298, "ALC298", patch_alc269),
8113-
HDA_CODEC_ENTRY(0x10ec0299, "ALC299", patch_alc269),
8114-
HDA_CODEC_ENTRY(0x10ec0300, "ALC300", patch_alc269),
8115-
HDA_CODEC_ENTRY(0x10ec0623, "ALC623", patch_alc269),
8116-
HDA_CODEC_ENTRY(0x10ec0700, "ALC700", patch_alc269),
8117-
HDA_CODEC_ENTRY(0x10ec0701, "ALC701", patch_alc269),
8118-
HDA_CODEC_ENTRY(0x10ec0703, "ALC703", patch_alc269),
8119-
HDA_CODEC_ENTRY(0x10ec0711, "ALC711", patch_alc269),
8120-
HDA_CODEC_ENTRY(0x19e58326, "HW8326", patch_alc269),
8089+
HDA_CODEC_ID(0x10ec0215, "ALC215"),
8090+
HDA_CODEC_ID(0x10ec0221, "ALC221"),
8091+
HDA_CODEC_ID(0x10ec0222, "ALC222"),
8092+
HDA_CODEC_ID(0x10ec0225, "ALC225"),
8093+
HDA_CODEC_ID(0x10ec0230, "ALC236"),
8094+
HDA_CODEC_ID(0x10ec0231, "ALC231"),
8095+
HDA_CODEC_ID(0x10ec0233, "ALC233"),
8096+
HDA_CODEC_ID(0x10ec0234, "ALC234"),
8097+
HDA_CODEC_ID(0x10ec0235, "ALC233"),
8098+
HDA_CODEC_ID(0x10ec0236, "ALC236"),
8099+
HDA_CODEC_ID(0x10ec0245, "ALC245"),
8100+
HDA_CODEC_ID(0x10ec0255, "ALC255"),
8101+
HDA_CODEC_ID(0x10ec0256, "ALC256"),
8102+
HDA_CODEC_ID(0x10ec0257, "ALC257"),
8103+
HDA_CODEC_ID(0x10ec0269, "ALC269"),
8104+
HDA_CODEC_ID(0x10ec0270, "ALC270"),
8105+
HDA_CODEC_ID(0x10ec0274, "ALC274"),
8106+
HDA_CODEC_ID(0x10ec0275, "ALC275"),
8107+
HDA_CODEC_ID(0x10ec0276, "ALC276"),
8108+
HDA_CODEC_ID(0x10ec0280, "ALC280"),
8109+
HDA_CODEC_ID(0x10ec0282, "ALC282"),
8110+
HDA_CODEC_ID(0x10ec0283, "ALC283"),
8111+
HDA_CODEC_ID(0x10ec0284, "ALC284"),
8112+
HDA_CODEC_ID(0x10ec0285, "ALC285"),
8113+
HDA_CODEC_ID(0x10ec0286, "ALC286"),
8114+
HDA_CODEC_ID(0x10ec0287, "ALC287"),
8115+
HDA_CODEC_ID(0x10ec0288, "ALC288"),
8116+
HDA_CODEC_ID(0x10ec0289, "ALC289"),
8117+
HDA_CODEC_ID(0x10ec0290, "ALC290"),
8118+
HDA_CODEC_ID(0x10ec0292, "ALC292"),
8119+
HDA_CODEC_ID(0x10ec0293, "ALC293"),
8120+
HDA_CODEC_ID(0x10ec0294, "ALC294"),
8121+
HDA_CODEC_ID(0x10ec0295, "ALC295"),
8122+
HDA_CODEC_ID(0x10ec0298, "ALC298"),
8123+
HDA_CODEC_ID(0x10ec0299, "ALC299"),
8124+
HDA_CODEC_ID(0x10ec0300, "ALC300"),
8125+
HDA_CODEC_ID(0x10ec0623, "ALC623"),
8126+
HDA_CODEC_ID(0x10ec0700, "ALC700"),
8127+
HDA_CODEC_ID(0x10ec0701, "ALC701"),
8128+
HDA_CODEC_ID(0x10ec0703, "ALC703"),
8129+
HDA_CODEC_ID(0x10ec0711, "ALC711"),
8130+
HDA_CODEC_ID(0x19e58326, "HW8326"),
81218131
{} /* terminator */
81228132
};
81238133
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc269);
@@ -8129,6 +8139,7 @@ MODULE_IMPORT_NS("SND_HDA_SCODEC_COMPONENT");
81298139

81308140
static struct hda_codec_driver alc269_driver = {
81318141
.id = snd_hda_id_alc269,
8142+
.ops = &alc269_codec_ops,
81328143
};
81338144

81348145
module_hda_codec_driver(alc269_driver);

sound/hda/codecs/realtek/alc662.c

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = {
994994

995995
/*
996996
*/
997-
static int patch_alc662(struct hda_codec *codec)
997+
static int alc662_probe(struct hda_codec *codec, const struct hda_device_id *id)
998998
{
999999
struct alc_spec *spec;
10001000
int err;
@@ -1067,26 +1067,39 @@ static int patch_alc662(struct hda_codec *codec)
10671067
return 0;
10681068

10691069
error:
1070-
alc_free(codec);
1070+
snd_hda_gen_remove(codec);
10711071
return err;
10721072
}
10731073

1074+
static const struct hda_codec_ops alc662_codec_ops = {
1075+
.probe = alc662_probe,
1076+
.remove = snd_hda_gen_remove,
1077+
.build_controls = alc_build_controls,
1078+
.build_pcms = snd_hda_gen_build_pcms,
1079+
.init = alc_init,
1080+
.unsol_event = snd_hda_jack_unsol_event,
1081+
.resume = alc_resume,
1082+
.suspend = alc_suspend,
1083+
.check_power_status = snd_hda_gen_check_power_status,
1084+
.stream_pm = snd_hda_gen_stream_pm,
1085+
};
1086+
10741087
/*
10751088
* driver entries
10761089
*/
10771090
static const struct hda_device_id snd_hda_id_alc662[] = {
1078-
HDA_CODEC_ENTRY(0x10ec0272, "ALC272", patch_alc662),
1079-
HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100101, "ALC662 rev1", patch_alc662),
1080-
HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100300, "ALC662 rev3", patch_alc662),
1081-
HDA_CODEC_ENTRY(0x10ec0663, "ALC663", patch_alc662),
1082-
HDA_CODEC_ENTRY(0x10ec0665, "ALC665", patch_alc662),
1083-
HDA_CODEC_ENTRY(0x10ec0667, "ALC667", patch_alc662),
1084-
HDA_CODEC_ENTRY(0x10ec0668, "ALC668", patch_alc662),
1085-
HDA_CODEC_ENTRY(0x10ec0670, "ALC670", patch_alc662),
1086-
HDA_CODEC_ENTRY(0x10ec0671, "ALC671", patch_alc662),
1087-
HDA_CODEC_ENTRY(0x10ec0867, "ALC891", patch_alc662),
1088-
HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662),
1089-
HDA_CODEC_ENTRY(0x10ec0897, "ALC897", patch_alc662),
1091+
HDA_CODEC_ID(0x10ec0272, "ALC272"),
1092+
HDA_CODEC_ID_REV(0x10ec0662, 0x100101, "ALC662 rev1"),
1093+
HDA_CODEC_ID_REV(0x10ec0662, 0x100300, "ALC662 rev3"),
1094+
HDA_CODEC_ID(0x10ec0663, "ALC663"),
1095+
HDA_CODEC_ID(0x10ec0665, "ALC665"),
1096+
HDA_CODEC_ID(0x10ec0667, "ALC667"),
1097+
HDA_CODEC_ID(0x10ec0668, "ALC668"),
1098+
HDA_CODEC_ID(0x10ec0670, "ALC670"),
1099+
HDA_CODEC_ID(0x10ec0671, "ALC671"),
1100+
HDA_CODEC_ID(0x10ec0867, "ALC891"),
1101+
HDA_CODEC_ID(0x10ec0892, "ALC892"),
1102+
HDA_CODEC_ID(0x10ec0897, "ALC897"),
10901103
{} /* terminator */
10911104
};
10921105
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc662);
@@ -1097,6 +1110,7 @@ MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");
10971110

10981111
static struct hda_codec_driver alc662_driver = {
10991112
.id = snd_hda_id_alc662,
1113+
.ops = &alc662_codec_ops,
11001114
};
11011115

11021116
module_hda_codec_driver(alc662_driver);

0 commit comments

Comments
 (0)