diff options
author | yongari <yongari@FreeBSD.org> | 2008-03-23 05:13:45 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2008-03-23 05:13:45 +0000 |
commit | 7fea7ba914bcf75e3568e6864487e06c4e504245 (patch) | |
tree | 0c97427f81431b0e64f7aa60b65428c06a63709d | |
parent | 00b0cf0b1a63138fc9dccb07d253d6f08bf63f35 (diff) | |
download | FreeBSD-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.c | 7 |
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) { |