[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: