|
24 | 24 | #define IDISP_VID_INTEL 0x80860000
|
25 | 25 |
|
26 | 26 | /* load the legacy HDA codec driver */
|
27 |
| -#ifdef MODULE |
28 |
| -static void hda_codec_load_module(struct hda_codec *codec) |
| 27 | +static int hda_codec_load_module(struct hda_codec *codec) |
29 | 28 | {
|
| 29 | +#ifdef MODULE |
30 | 30 | char alias[MODULE_NAME_LEN];
|
31 | 31 | const char *module = alias;
|
32 | 32 |
|
33 | 33 | snd_hdac_codec_modalias(&codec->core, alias, sizeof(alias));
|
34 | 34 | dev_dbg(&codec->core.dev, "loading codec module: %s\n", module);
|
35 | 35 | request_module(module);
|
36 |
| -} |
37 |
| -#else |
38 |
| -static void hda_codec_load_module(struct hda_codec *codec) {} |
39 | 36 | #endif
|
| 37 | + return device_attach(hda_codec_dev(codec)); |
| 38 | +} |
40 | 39 |
|
41 | 40 | /* enable controller wake up event for all codecs with jack connectors */
|
42 | 41 | void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev)
|
@@ -129,10 +128,16 @@ static int hda_codec_probe(struct snd_sof_dev *sdev, int address)
|
129 | 128 | if ((mach_params && mach_params->common_hdmi_codec_drv) ||
|
130 | 129 | (resp & 0xFFFF0000) != IDISP_VID_INTEL) {
|
131 | 130 | hdev->type = HDA_DEV_LEGACY;
|
132 |
| - hda_codec_load_module(&hda_priv->codec); |
| 131 | + ret = hda_codec_load_module(&hda_priv->codec); |
| 132 | + /* |
| 133 | + * handle ret==0 (no driver bound) as an error, but pass |
| 134 | + * other return codes without modification |
| 135 | + */ |
| 136 | + if (ret == 0) |
| 137 | + ret = -ENOENT; |
133 | 138 | }
|
134 | 139 |
|
135 |
| - return 0; |
| 140 | + return ret; |
136 | 141 | #else
|
137 | 142 | hdev = devm_kzalloc(sdev->dev, sizeof(*hdev), GFP_KERNEL);
|
138 | 143 | if (!hdev)
|
|
0 commit comments