- 论坛徽章:
- 0
|
首先在这里说明,我在标题上说的“支持Nvidia nForce4 410主板”是指支持该主板上板载的网卡和声卡。
感谢iamqk在 http://bbs.chinaunix.net/viewthread.php?tid=718480 中给我的提示。
下边是我已经编译好的核心下dmesg的结果:
- Copyright (c) 1992-2006 The FreeBSD Project.
- Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
- The Regents of the University of California. All rights reserved.
- FreeBSD 6.1-PRERELEASE #0: Mon Mar 27 05:52:54 CST 2006
- root@:/usr/obj/usr/src/sys/FEELING
- ACPI APIC Table: <Nvidia AWRDACPI>
- Timecounter "i8254" frequency 1193182 Hz quality 0
- CPU: AMD Sempron(tm) Processor 2500+ (1400.01-MHz K8-class CPU)
- Origin = "AuthenticAMD" Id = 0x20fc2 Stepping = 2
- Features=0x78bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2>
- Features2=0x1<SSE3>
- AMD Features=0xe2500800<SYSCALL,NX,MMX+,<b25>,LM,3DNow+,3DNow>
- real memory = 1005518848 (958 MB)
- avail memory = 962912256 (918 MB)
- ioapic0 <Version 1.1> irqs 0-23 on motherboard
- acpi0: <Nvidia AWRDACPI> on motherboard
- acpi_bus_number: can't get _ADR
- acpi_bus_number: can't get _ADR
- acpi0: Power Button (fixed)
- acpi_bus_number: can't get _ADR
- acpi_bus_number: can't get _ADR
- acpi_bus_number: can't get _ADR
- acpi_bus_number: can't get _ADR
- acpi0: reservation of 1bf00000, 100000 (3) failed
- acpi0: reservation of 2bf00000, 100000 (3) failed
- acpi0: reservation of 3bf00000, 100000 (3) failed
- Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
- acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
- cpu0: <ACPI CPU> on acpi0
- acpi_throttle0: <ACPI CPU Throttling> on cpu0
- acpi_button0: <Power Button> on acpi0
- acpi_button1: <Sleep Button> on acpi0
- pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
- pci0: <ACPI PCI bus> on pcib0
- pci0: <memory, RAM> at device 0.0 (no driver attached)
- pci0: <memory, RAM> at device 0.1 (no driver attached)
- pci0: <memory, RAM> at device 0.2 (no driver attached)
- pci0: <memory, RAM> at device 0.3 (no driver attached)
- pci0: <memory, RAM> at device 0.4 (no driver attached)
- pci0: <memory, RAM> at device 0.5 (no driver attached)
- pci0: <memory, RAM> at device 0.6 (no driver attached)
- pci0: <memory, RAM> at device 0.7 (no driver attached)
- pcib1: <ACPI PCI-PCI bridge> at device 2.0 on pci0
- pci1: <ACPI PCI bus> on pcib1
- pcib2: <ACPI PCI-PCI bridge> at device 3.0 on pci0
- pci2: <ACPI PCI bus> on pcib2
- pcib3: <ACPI PCI-PCI bridge> at device 4.0 on pci0
- pci3: <ACPI PCI bus> on pcib3
- pci0: <display, VGA> at device 5.0 (no driver attached)
- pci0: <memory, RAM> at device 9.0 (no driver attached)
- isab0: <PCI-ISA bridge> at device 10.0 on pci0
- isa0: <ISA bus> on isab0
- pci0: <serial bus, SMBus> at device 10.1 (no driver attached)
- pci0: <memory, RAM> at device 10.2 (no driver attached)
- ohci0: <OHCI (generic) USB controller> mem 0xfe02f000-0xfe02ffff irq 21 at device 11.0 on pci0
- ohci0: [GIANT-LOCKED]
- usb0: OHCI version 1.0, legacy support
- usb0: SMM does not respond, resetting
- usb0: <OHCI (generic) USB controller> on ohci0
- usb0: USB revision 1.0
- uhub0: nVidia OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
- uhub0: 8 ports with 8 removable, self powered
- ehci0: <EHCI (generic) USB 2.0 controller> mem 0xfe02e000-0xfe02e0ff irq 22 at device 11.1 on pci0
- ehci0: [GIANT-LOCKED]
- usb1: waiting for BIOS to give up control
- usb1: timed out waiting for BIOS
- usb1: EHCI version 1.0
- usb1: companion controller, 8 ports each: usb0
- usb1: <EHCI (generic) USB 2.0 controller> on ehci0
- usb1: USB revision 2.0
- uhub1: nVidia EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
- uhub1: 8 ports with 8 removable, self powered
- atapci0: <nVidia nForce MCP51 UDMA133 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf400-0xf40f at device 13.0 on pci0
- ata0: <ATA channel 0> on atapci0
- ata1: <ATA channel 1> on atapci0
- atapci1: <nVidia nForce MCP51 SATA300 controller> port 0x9f0-0x9f7,0xbf0-0xbf3,0x970-0x977,0xb70-0xb73,0xe000-0xe00f mem 0xfe02d000-0xfe02dfff irq 23 at device 14.0 on pci0
- ata2: <ATA channel 0> on atapci1
- ata3: <ATA channel 1> on atapci1
- pcib4: <ACPI PCI-PCI bridge> at device 16.0 on pci0
- pci4: <ACPI PCI bus> on pcib4
- rl0: <RealTek 8139 10/100BaseTX> port 0xcc00-0xccff mem 0xfdbff000-0xfdbff0ff irq 18 at device 6.0 on pci4
- miibus0: <MII bus> on rl0
- rlphy0: <RealTek internal media interface> on miibus0
- rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
- rl0: Ethernet address: 00:e0:4c:f6:e5:c1
- pcm0: <nVidia nForce4 410> port 0xdc00-0xdcff,0xd800-0xd8ff mem 0xfe02c000-0xfe02cfff irq 20 at device 16.2 on pci0
- pcm0: <Avance Logic ALC655 AC97 Codec>
- nve0: <NVIDIA nForce MCP12 Networking Adapter> port 0xd400-0xd407 mem 0xfe02b000-0xfe02bfff irq 21 at device 20.0 on pci0
- nve0: Ethernet address 00:e0:4c:e4:30:fa
- miibus1: <MII bus> on nve0
- rlphy1: <RTL8201L 10/100 media interface> on miibus1
- rlphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
- nve0: Ethernet address: 00:e0:4c:e4:30:fa
- acpi_tz0: <Thermal Zone> on acpi0
- atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
- atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
- atkbd0: [GIANT-LOCKED]
- psm0: <PS/2 Mouse> irq 12 on atkbdc0
- psm0: [GIANT-LOCKED]
- psm0: model IntelliMouse, device ID 3
- sc0: <System console> at flags 0x100 on isa0
- sc0: VGA <16 virtual consoles, flags=0x300>
- vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
- Timecounter "TSC" frequency 1400011646 Hz quality 800
- Timecounters tick every 1.000 msec
- ipfw2 (+ipv6) initialized, divert loadable, rule-based forwarding disabled, default to accept, logging limited to 100 packets/entry by default
- ad0: 78533MB <IC35L080AVVA07 0 VA4OA52A> at ata0-master UDMA100
- ad4: 76319MB <Seagate ST380817AS 3.42> at ata2-master SATA150
- Trying to mount root from ufs:/dev/ad0s1a
- rl0: link state changed to UP
复制代码
里面我的声卡部分:
pcm0: <nVidia nForce4 410> port 0xdc00-0xdcff,0xd800-0xd8ff mem 0xfe02c000-0xfe02cfff irq 20 at device 16.2 on pci0
pcm0: <Avance Logic ALC655 AC97 Codec>
我的Nvidia板载网卡部分:
nve0: <NVIDIA nForce MCP12 Networking Adapter> port 0xd400-0xd407 mem 0xfe02b000-0xfe02bfff irq 21 at device 20.0 on pci0
nve0: Ethernet address 00:e0:4c:e4:30:fa
miibus1: <MII bus> on nve0
rlphy1: <RTL8201L 10/100 media interface> on miibus1
rlphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
nve0: Ethernet address: 00:e0:4c:e4:30:fa
然后来看看我的修改方法:
1. 先查看PCI信息: pciconf -lv,获得以下两条重要内容:
pcm0@pci0:16:2: class=0x040100 card=0x82131565 chip=0x026b10de rev=0xa2 hdr=0x00 vendor = 'NVIDIA Corporation'
class = multimedia
subclass = audio
nve0@pci0:20:0: class=0x068000 card=0x25011565 chip=0x026910de rev=0xa1 hdr=0x00 vendor = 'NVIDIA Corporation'
class = bridge
从freebsd的hareware文档上看,Nvidia nForce 4集成声卡在 snd_ich 中,因此我首先去 /usr/src/sys/dev/sound/pci/ich.h 去看看,发现其中并没有和pciconf输出相关的内容。然后我又打开了 /usr/src/sys/dev/sound/pci/ich.c,呵呵,原来都藏在这里阿:
#define NVIDIA_NFORCE 0x01b1
#define NVIDIA_NFORCE2 0x006a
#define NVIDIA_NFORCE2_400 0x008a
#define NVIDIA_NFORCE3 0x00da
#define NVIDIA_NFORCE3_250 0x00ea
#define NVIDIA_NFORCE4 0x0059
#define AMD_768 0x7445
#define AMD_8111 0x746d
因此我将上述内容改为了
#define NVIDIA_NFORCE 0x01b1
#define NVIDIA_NFORCE2 0x006a
#define NVIDIA_NFORCE2_400 0x008a
#define NVIDIA_NFORCE3 0x00da
#define NVIDIA_NFORCE3_250 0x00ea
#define NVIDIA_NFORCE4 0x0059
#define NVIDIA_NFORCE4_410 0x026b
#define AMD_768 0x7445
#define AMD_8111 0x746d
接着理所当然地修改随后的
{ NVIDIA_VENDORID, NVIDIA_NFORCE, 0,
"nVidia nForce" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE2, 0,
"nVidia nForce2" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE2_400, 0,
"nVidia nForce2 400" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE3, 0,
"nVidia nForce3" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE3_250, 0,
"nVidia nForce3 250" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE4, 0,
"nVidia nForce4" },
{ AMD_VENDORID, AMD_768, 0,
"AMD-768" },
{ AMD_VENDORID, AMD_8111, 0,
"AMD-8111" }
为
{ NVIDIA_VENDORID, NVIDIA_NFORCE, 0,
"nVidia nForce" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE2, 0,
"nVidia nForce2" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE2_400, 0,
"nVidia nForce2 400" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE3, 0,
"nVidia nForce3" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE3_250, 0,
"nVidia nForce3 250" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE4, 0,
"nVidia nForce4" },
{ NVIDIA_VENDORID, NVIDIA_NFORCE4_410, 0,
"nVidia nForce4 410" },
{ AMD_VENDORID, AMD_768, 0,
"AMD-768" },
{ AMD_VENDORID, AMD_8111, 0,
"AMD-8111" }
这样就加入了 nForce4 410板载ALC655 AC97的识别。
Nvidia板载网卡需要修改两个文件,在该文(http://www.freebsdchina.org/forum/viewtopic.php?p=156165#156165) 中已经详细描述,我在这里就不再重复了。
接着修改kernel配置文件,加入以下行:
- device sound
- device snd_ich
- device miibus
- device nve
复制代码
最后 cd /usr/src; make buildkernel && make installkernel 后重启就能够正常使用板载声卡和网卡了。
测试声卡工作的方法:
1. dmesg 查看是否有声卡信息
2. cat /dev/sndstat
3. cat 随便什么文件 > /dev/dsp 如果出现杂音则声卡已经正常工作 |
|