summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2008-03-23 05:13:45 +0000
committeryongari <yongari@FreeBSD.org>2008-03-23 05:13:45 +0000
commit7fea7ba914bcf75e3568e6864487e06c4e504245 (patch)
tree0c97427f81431b0e64f7aa60b65428c06a63709d
parent00b0cf0b1a63138fc9dccb07d253d6f08bf63f35 (diff)
downloadFreeBSD-src-7fea7ba914bcf75e3568e6864487e06c4e504245.zip
FreeBSD-src-7fea7ba914bcf75e3568e6864487e06c4e504245.tar.gz
Some RealTek chips are known to be buggy on DAC handling, so
disable DAC by default.
-rw-r--r--sys/dev/re/if_re.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 8cf2b7c..538a565 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -989,9 +989,14 @@ re_allocmem(dev, sc)
/*
* Allocate the parent bus DMA tag appropriate for PCI.
+ * In order to use DAC, RL_CPLUSCMD_PCI_DAC bit of RL_CPLUS_CMD
+ * register should be set. However some RealTek chips are known
+ * to be buggy on DAC handling, therefore disable DAC by limiting
+ * DMA address space to 32bit. PCIe variants of RealTek chips
+ * may not have the limitation but I took safer path.
*/
error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
- BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0,
NULL, NULL, &sc->rl_parent_tag);
if (error) {
OpenPOWER on IntegriCloud