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));

Reply via email to