Héritage gentoo ?
nan, archer pur sucre
(ou clavier anglophone) ?
Juste pour être chieur et un brin paranoïaque: j'aime pô quand tu proposes la copie directe dans le système de fichiers (plus propre/facile à maintenir par PKGBUILDS, pacman... tout ça...).

mon archive fait 88K mais bon, on est pas a 74M pres
Code : Tout sélectionner
# pacman -S base-devel
$ cd
$ wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.1.1.tar.bz2
$ tar xvjf linux-3.1.1.tar.bz2
$ cd linux-3.1.1
$ cat > via.patch << "EOF"
---
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 431c0d4..d8b4403 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -309,22 +309,26 @@ static void vt1708_start_hp_work(struct via_spec *spec)
{
if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
return;
+ if (!spec->active_streams)
+ return;
snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
!spec->vt1708_jack_detect);
- if (!delayed_work_pending(&spec->vt1708_hp_work))
+ if (spec->vt1708_jack_detect &&
+ !delayed_work_pending(&spec->vt1708_hp_work))
schedule_delayed_work(&spec->vt1708_hp_work,
msecs_to_jiffies(100));
}
-static void vt1708_stop_hp_work(struct via_spec *spec)
+static void vt1708_stop_hp_work(struct via_spec *spec, bool force)
{
if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
return;
if (snd_hda_get_bool_hint(spec->codec, "analog_loopback_hp_detect") == 1
&& !is_aa_path_mute(spec->codec))
return;
- snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
- !spec->vt1708_jack_detect);
+ if (spec->active_streams && !force)
+ return;
+ snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81, 1);
cancel_delayed_work_sync(&spec->vt1708_hp_work);
}
@@ -347,7 +351,7 @@ static int analog_input_switch_put(struct snd_kcontrol *kcontrol,
if (is_aa_path_mute(codec))
vt1708_start_hp_work(codec->spec);
else
- vt1708_stop_hp_work(codec->spec);
+ vt1708_stop_hp_work(codec->spec, false);
}
return change;
}
@@ -1188,7 +1192,7 @@ static int via_playback_multi_pcm_cleanup(struct hda_pcm_stream *hinfo,
snd_hda_multi_out_analog_cleanup(codec, &spec->multiout);
spec->active_streams &= ~STREAM_MULTI_OUT;
mutex_unlock(&spec->config_mutex);
- vt1708_stop_hp_work(spec);
+ vt1708_stop_hp_work(spec, false);
return 0;
}
@@ -1203,7 +1207,7 @@ static int via_playback_hp_pcm_cleanup(struct hda_pcm_stream *hinfo,
snd_hda_codec_setup_stream(codec, spec->hp_dac_nid, 0, 0, 0);
spec->active_streams &= ~STREAM_INDEP_HP;
mutex_unlock(&spec->config_mutex);
- vt1708_stop_hp_work(spec);
+ vt1708_stop_hp_work(spec, false);
return 0;
}
@@ -1598,7 +1602,7 @@ static void via_free(struct hda_codec *codec)
return;
via_free_kctls(codec);
- vt1708_stop_hp_work(spec);
+ vt1708_stop_hp_work(spec, true);
kfree(spec->bind_cap_vol);
kfree(spec->bind_cap_sw);
kfree(spec);
@@ -1725,7 +1729,7 @@ static void via_unsol_event(struct hda_codec *codec,
static int via_suspend(struct hda_codec *codec, pm_message_t state)
{
struct via_spec *spec = codec->spec;
- vt1708_stop_hp_work(spec);
+ vt1708_stop_hp_work(spec, true);
return 0;
}
#endif
@@ -2633,7 +2637,9 @@ static int vt1708_jack_detect_put(struct snd_kcontrol *kcontrol,
if (spec->vt1708_jack_detect) {
mute_aa_path(codec, 1);
notify_aa_path_ctls(codec);
- }
+ vt1708_start_hp_work(spec);
+ } else
+ vt1708_stop_hp_work(spec, false);
return change;
}
EOF
$ patch -Np1 < via.patch
$ wget http://projects.archlinux.org/svntogit/packages.git/plain/trunk/config?h=packages/linux -O .config
$ make oldconfig
$ make prepare
$ make modules_prepare
$ make M=sound/pci/hda/
# pacman -S linux
# mkdir /lib/modules/3.1.1-1-ARCH/updates
# cp -v /home/<gemini>/linux-3.1.1/sound/pci/hda/*.ko /lib/modules/3.1.1-1-ARCH/updates/
# depmod -a
# shutdown -r now
j'ai fait de tete, j'espere ne rien avoir oublie
/edit: gemini juste au cas ou, par convention # pour root et $ pour ton utilisateur. je suis gentil j'ai pas mis de $ devant chaque ligne du patch comme ca tu peux copier/coller le patch plus facilement.
/edit: FoolEcho, ca devrait resoudre le probleme de paranoia

par contre faire un PKGBUILD pour ca c'est un peu excessif (enfin si vraiment, dites le moi...) de toute facon, ce sont des fichiers qui sont voues a disparaitre en meme temps que le kernel 3.1.1-1-ARCH
/edit2000: pour creer mon archive, j'ai refait la config du stock kernel de arch pour n'inclure que les modules necessaires, ce qui n'est pas le cas avec la methode ci-dessus, ca change rien mais juste au cas ou
quelqu'un (

) se poserait la question