Re: alsa immer noch kaputt...
Rico wrote:
> Thomas Besser schrieb:
>> Meinst du das was in /etc/modprobe.d/ drin ist oder /etc/modutils?
>>
> ich denk modprobe.d - dort stehen die parameter drin, mit denen module
> geladen werden (denk ich zumindest) ... die von alsa sind bei
> modprobe.d/sound. Falls es dort aber noch sie ne old... datei gibt ..
> guck mal rein und kommentiere falls vorhanden die snd- zeilen raus.
Also ich hab jetzt mal /etc nach "intel8x0" durchsucht.
ThessyMobil:/etc# grep -r "intel8x0*" *
discover.d/alsa-base:# skip snd-intel8x0m
hotplug/blacklist.d/alsa-base:# snd-intel8x0m
modprobe.d/alsa-base:install snd-intel8x0 /sbin/modprobe --ignore-ins
tall snd-intel8x0 $CMDLINE_OPTS && /lib/alsa/modprobe-post-install sn
d-intel8x0
modprobe.d/alsa-base:options snd-intel8x0m index=-2
modprobe.d/alsa-base-blacklist:# blacklist snd-intel8x0m
modules.conf:post-install snd-intel8x0 /lib/alsa/modprobe-post-instal
l snd-intel8x0
modules.conf:options snd-intel8x0m index=-2
modules.conf:# alias snd-intel8x0m off
modules.conf.old:post-install snd-intel8x0 /lib/alsa/modprobe-post-in
stall snd-intel8x0
modules.conf.old:options snd-intel8x0m index=-2
modules.conf.old:# alias snd-intel8x0m off
modutils/alsa-base:post-install snd-intel8x0 /lib/alsa/modprobe-post-
install snd-intel8x0
modutils/alsa-base:options snd-intel8x0m index=-2
modutils/alsa-base-blacklist:# alias snd-intel8x0m off
Ich blicke jetzt gar nicht mehr durch. Früher waren solche Sachen IMO in
modules.conf definiert.
Kann mich bitte erleuchten, was von den Sachen nun wirklich ausgelesen wird?
Wird die modules.conf denn noch benötigt oder macht das nur noch
modprobe.d? Was machen die modutils?
Und könnte das ganze was mit hotplug bzw. udev zu tun haben?
>> ThessyMobil:~# dmesg | grep ALSA
>> ALSA sound/pci/ac97/ac97_codec.c:1898: AC'97 2 does not respond - RESET
>> ALSA sound/pci/ac97/ac97_codec.c:1907: AC'97 2 access is not valid
>> [0xffffffff], removing mixer.
>> ALSA sound/pci/intel8x0.c:2129: Unable to initialize codec #2
>
> hmm ... wenn man mal nach "ac97_codec.c does not respond - RESET" sucht,
> kommen paar Treffer mehr bei google. Aber sonst kann ich dir leider auch
> nich weiterhelfen. bin kein Programmierer.
Ich leider auch nicht, aber vielleicht kann einer, der hier mitliest, mit
den betreffenden Zeilen im Quellecode was anfangen, um herauszufinden,
woran es denn grundsätzlich krankt:
1806 /**
1807 * snd_ac97_mixer - create an Codec97 component
1808 * @bus: the AC97 bus which codec is attached to
1809 * @template: the template of ac97, including index, callbacks and
1810 * the private data.
1811 * @rac97: the pointer to store the new ac97 instance.
1812 *
1813 * Creates an Codec97 component. An struct snd_ac97 instance is
newly
1814 * allocated and initialized from the template. The codec
1815 * is then initialized by the standard procedure.
1816 *
1817 * The template must include the codec number (num) and address
(addr),
1818 * and the private data (private_data).
1819 *
1820 * The ac97 instance is registered as a low-level device, so you
don't
1821 * have to release it manually.
1822 *
1823 * Returns zero if successful, or a negative error code on failure.
1824 */
1825 int snd_ac97_mixer(struct snd_ac97_bus *bus, struct
snd_ac97_template *template, struct snd_ac97 **rac97)
1826 {
1827 int err;
1828 struct snd_ac97 *ac97;
1829 struct snd_card *card;
1830 char name[64];
1831 unsigned long end_time;
1832 unsigned int reg;
1833 const struct ac97_codec_id *pid;
1834 static struct snd_device_ops ops = {
1835 .dev_free = snd_ac97_dev_free,
1836 .dev_register = snd_ac97_dev_register,
1837 .dev_unregister = snd_ac97_dev_unregister,
1838 };
1839
1840 snd_assert(rac97 != NULL, return -EINVAL);
1841 *rac97 = NULL;
1842 snd_assert(bus != NULL && template != NULL, return -EINVAL);
1843 snd_assert(template->num < 4 && bus->codec[template->num] ==
NULL, return -EINVAL);
1844
1845 card = bus->card;
1846 ac97 = kzalloc(sizeof(*ac97), GFP_KERNEL);
1847 if (ac97 == NULL)
1848 return -ENOMEM;
1849 ac97->private_data = template->private_data;
1850 ac97->private_free = template->private_free;
1851 ac97->bus = bus;
1852 ac97->pci = template->pci;
1853 ac97->num = template->num;
1854 ac97->addr = template->addr;
1855 ac97->scaps = template->scaps;
1856 ac97->limited_regs = template->limited_regs;
1857 memcpy(ac97->reg_accessed, template->reg_accessed,
sizeof(ac97->reg_accessed));
1858 bus->codec[ac97->num] = ac97;
1859 init_MUTEX(&ac97->reg_mutex);
1860 init_MUTEX(&ac97->page_mutex);
1861
1862 #ifdef CONFIG_PCI
1863 if (ac97->pci) {
1864 pci_read_config_word(ac97->pci,
PCI_SUBSYSTEM_VENDOR_ID, &ac97->subsystem_vendor);
1865 pci_read_config_word(ac97->pci, PCI_SUBSYSTEM_ID,
&ac97->subsystem_device);
1866 }
1867 #endif
1868 if (bus->ops->reset) {
1869 bus->ops->reset(ac97);
1870 goto __access_ok;
1871 }
1872
1873 ac97->id = snd_ac97_read(ac97, AC97_VENDOR_ID1) << 16;
1874 ac97->id |= snd_ac97_read(ac97, AC97_VENDOR_ID2);
1875 if (ac97->id && ac97->id != (unsigned int)-1) {
1876 pid = look_for_codec_id(snd_ac97_codec_ids,
ac97->id);
1877 if (pid && (pid->flags & AC97_DEFAULT_POWER_OFF))
1878 goto __access_ok;
1879 }
1880
1881 /* reset to defaults */
1882 if (!(ac97->scaps & AC97_SCAP_SKIP_AUDIO))
1883 snd_ac97_write(ac97, AC97_RESET, 0);
1884 if (!(ac97->scaps & AC97_SCAP_SKIP_MODEM))
1885 snd_ac97_write(ac97, AC97_EXTENDED_MID, 0);
1886 if (bus->ops->wait)
1887 bus->ops->wait(ac97);
1888 else {
1889 udelay(50);
1890 if (ac97->scaps & AC97_SCAP_SKIP_AUDIO)
1891 err = ac97_reset_wait(ac97, HZ/2, 1);
1892 else {
1893 err = ac97_reset_wait(ac97, HZ/2, 0);
1894 if (err < 0)
1895 err = ac97_reset_wait(ac97, HZ/2,
1);
1896 }
1897 if (err < 0) {
1898 snd_printk(KERN_WARNING "AC'97 %d does not
respond - RESET\n", ac97->num);
1899 /* proceed anyway - it's often non-critical
*/
1900 }
1901 }
1902 __access_ok:
1903 ac97->id = snd_ac97_read(ac97, AC97_VENDOR_ID1) << 16;
1904 ac97->id |= snd_ac97_read(ac97, AC97_VENDOR_ID2);
1905 if (! (ac97->scaps & AC97_SCAP_DETECT_BY_VENDOR) &&
1906 (ac97->id == 0x00000000 || ac97->id == 0xffffffff)) {
1907 snd_printk(KERN_ERR "AC'97 %d access is not valid
[0x%x], removing mixer.\n", ac97->num, ac97->id);
1908 snd_ac97_free(ac97);
1909 return -EIO;
1910 }
Gruß
Thomas
Reply to: