On Tue, Oct 06, 2009 at 09:33:17AM +0200, Tom?? Bod??r wrote: > Without help.
can you try this? -- jake...@sdf.lonestar.org SDF Public Access UNIX System - http://sdf.lonestar.org Index: azalia.c =================================================================== RCS file: /cvs/src/sys/dev/pci/azalia.c,v retrieving revision 1.153 diff -u -p azalia.c --- azalia.c 14 Sep 2009 09:08:03 -0000 1.153 +++ azalia.c 6 Oct 2009 16:55:42 -0000 @@ -384,6 +384,11 @@ azalia_pci_attach(struct device *parent, struct device v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_PCI_HDBARL); v &= PCI_MAPREG_TYPE_MASK | PCI_MAPREG_MEM_TYPE_MASK; + /* According to ALSA, if ATI SB600 SMBus rev < 0x30, 64-bit + * is not supported. How to check SMBus rev from here? + */ + if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ATI_SBX00_HDA) + v &= ~PCI_MAPREG_MEM_TYPE_64BIT; if (pci_mapreg_map(pa, ICH_PCI_HDBARL, v, 0, &sc->iot, &sc->ioh, NULL, &sc->map_size, 0)) { printf(": can't map device i/o space\n"); @@ -663,6 +668,8 @@ azalia_get_ctrlr_caps(azalia_t *az) az->nostreams = HDA_GCAP_OSS(gcap); az->nbstreams = HDA_GCAP_BSS(gcap); az->ok64 = (gcap & HDA_GCAP_64OK) != 0; + if (PCI_PRODUCT(az->pciid) == PCI_PRODUCT_ATI_SBX00_HDA) + az->ok64 = 0; DPRINTF(("%s: host: %d output, %d input, and %d bidi streams\n", XNAME(az), az->nostreams, az->nistreams, az->nbstreams));