diff --git a/en_US.ISO8859-1/books/faq/book.sgml b/en_US.ISO8859-1/books/faq/book.sgml
index 97d0e430bb..ec93ea235b 100644
--- a/en_US.ISO8859-1/books/faq/book.sgml
+++ b/en_US.ISO8859-1/books/faq/book.sgml
@@ -15,7 +15,7 @@
- $FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.96 2000/09/24 07:01:50 kris Exp $
+ $FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.97 2000/09/25 15:54:03 marko Exp $
This is the FAQ for FreeBSD versions 2.X, 3.X, and 4.X. All entries
@@ -3548,6 +3548,115 @@ timekeeping.
+
+
+
+ My PnP card is no longer found (or found as
+ unknown) since upgrading to FreeBSD 4.x
+
+
+
+ FreeBSD 4.x is now much more PnP-centric
+ and this has had the side effect of some PnP devices (e.g. sound
+ cards and internal modems) not working even though they worked
+ under FreeBSD 3.x.
+
+ The reasons for this behaviour are explained by the following
+ e-mail, posted to the freebsd-questions mailing list by Peter Wemm,
+ in answer to a question about an internal modem that was no longer
+ found after an upgrade to FreeBSD 4.x (the comments in
+ [] have been added to clarify the context.
+
+
+ The PNP bios preconfigured it [the modem] and left it
+ laying around in port space, so [in 3.x] the old-style ISA
+ probes found
it there.
+
+ Under 4.0, the ISA code is much more PnP-centric. It was
+ possible [in 3.x] for an ISA probe to find a
+ stray
device and then for the PNP device id to
+ match and then fail due to resource conflicts. So, it disables
+ the programmable cards first so this double probing cannot
+ happen. It also means that it needs to know the PnP id's for
+ supported PnP hardware. Making this more user tweakable is on
+ the TODO list.
+
+
+ To get the device working again requires finding its PnP id
+ and adding it to the list that the ISA probes use to identify
+ PnP devices. This is obtained using &man.pnpinfo.8; to probe the
+ device, for example this is the output from &man.pnpinfo.8; for
+ an internal modem:
+
+ &prompt.root; pnpinfo
+Checking for Plug-n-Play devices...
+
+Card assigned CSN #1
+Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
+PnP Version 1.0, Vendor Version 0
+Device Description: Pace 56 Voice Internal Plug & Play Modem
+
+Logical Device ID: PMC2430 0x3024a341 #0
+ Device supports I/O Range Check
+TAG Start DF
+ I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
+ [16-bit addr]
+ IRQ: 4 - only one type (true/edge)
+
+ [more TAG lines elided]
+
+
+TAG End DF
+End Tag
+
+Successfully got 31 resources, 1 logical fdevs
+-- card select # 0x0001
+
+CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
+
+Logical device #0
+IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
+IRQ 5 0
+DMA 4 0
+IO range check 0x00 activate 0x01
+
+ The information you require is in the Vendor ID
+ line at the start of the output. The hexadecimal number in
+ parentheses (0x3024a341 in this example) is the PnP id and the
+ string immediately before this (PMC2430) is a unique ASCII
+ id. This information needs adding to the file
+ /usr/src/sys/isa/sio.c.
+
+ You should first make a backup of sio.c
+ just in case things go wrong. You will also need it to make the
+ patch to submit with your PR (you are going to submit a PR, aren't
+ you?) then edit sio.c and search for the
+ line
+
+ static struct isa_pnp_id sio_ids[] = {
+
+ then scroll down to find the correct place to add the entry
+ for your device. The entries look like this, and are sorted on
+ the ASCII Vendor ID string which should be included in the
+ comment to the right of the line of code along with all (if it
+ will fit) or part of the Device Description
+ from the output of &man.pnpinfo.8;:
+
+
+{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
+{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
+{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
+{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
+{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */
+
+
+ Add the hexadecimal Vendor ID for your device in the correct
+ place, save the file, rebuild your kernel, and reboot. Your device
+ should now be found as an sio device as it was
+ under FreeBSD 3.x
+
+
+
diff --git a/en_US.ISO_8859-1/books/faq/book.sgml b/en_US.ISO_8859-1/books/faq/book.sgml
index 97d0e430bb..ec93ea235b 100644
--- a/en_US.ISO_8859-1/books/faq/book.sgml
+++ b/en_US.ISO_8859-1/books/faq/book.sgml
@@ -15,7 +15,7 @@
- $FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.96 2000/09/24 07:01:50 kris Exp $
+ $FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.97 2000/09/25 15:54:03 marko Exp $
This is the FAQ for FreeBSD versions 2.X, 3.X, and 4.X. All entries
@@ -3548,6 +3548,115 @@ timekeeping.
+
+
+
+ My PnP card is no longer found (or found as
+ unknown) since upgrading to FreeBSD 4.x
+
+
+
+ FreeBSD 4.x is now much more PnP-centric
+ and this has had the side effect of some PnP devices (e.g. sound
+ cards and internal modems) not working even though they worked
+ under FreeBSD 3.x.
+
+ The reasons for this behaviour are explained by the following
+ e-mail, posted to the freebsd-questions mailing list by Peter Wemm,
+ in answer to a question about an internal modem that was no longer
+ found after an upgrade to FreeBSD 4.x (the comments in
+ [] have been added to clarify the context.
+
+
+ The PNP bios preconfigured it [the modem] and left it
+ laying around in port space, so [in 3.x] the old-style ISA
+ probes found
it there.
+
+ Under 4.0, the ISA code is much more PnP-centric. It was
+ possible [in 3.x] for an ISA probe to find a
+ stray
device and then for the PNP device id to
+ match and then fail due to resource conflicts. So, it disables
+ the programmable cards first so this double probing cannot
+ happen. It also means that it needs to know the PnP id's for
+ supported PnP hardware. Making this more user tweakable is on
+ the TODO list.
+
+
+ To get the device working again requires finding its PnP id
+ and adding it to the list that the ISA probes use to identify
+ PnP devices. This is obtained using &man.pnpinfo.8; to probe the
+ device, for example this is the output from &man.pnpinfo.8; for
+ an internal modem:
+
+ &prompt.root; pnpinfo
+Checking for Plug-n-Play devices...
+
+Card assigned CSN #1
+Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
+PnP Version 1.0, Vendor Version 0
+Device Description: Pace 56 Voice Internal Plug & Play Modem
+
+Logical Device ID: PMC2430 0x3024a341 #0
+ Device supports I/O Range Check
+TAG Start DF
+ I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
+ [16-bit addr]
+ IRQ: 4 - only one type (true/edge)
+
+ [more TAG lines elided]
+
+
+TAG End DF
+End Tag
+
+Successfully got 31 resources, 1 logical fdevs
+-- card select # 0x0001
+
+CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
+
+Logical device #0
+IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
+IRQ 5 0
+DMA 4 0
+IO range check 0x00 activate 0x01
+
+ The information you require is in the Vendor ID
+ line at the start of the output. The hexadecimal number in
+ parentheses (0x3024a341 in this example) is the PnP id and the
+ string immediately before this (PMC2430) is a unique ASCII
+ id. This information needs adding to the file
+ /usr/src/sys/isa/sio.c.
+
+ You should first make a backup of sio.c
+ just in case things go wrong. You will also need it to make the
+ patch to submit with your PR (you are going to submit a PR, aren't
+ you?) then edit sio.c and search for the
+ line
+
+ static struct isa_pnp_id sio_ids[] = {
+
+ then scroll down to find the correct place to add the entry
+ for your device. The entries look like this, and are sorted on
+ the ASCII Vendor ID string which should be included in the
+ comment to the right of the line of code along with all (if it
+ will fit) or part of the Device Description
+ from the output of &man.pnpinfo.8;:
+
+
+{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
+{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
+{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
+{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
+{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */
+
+
+ Add the hexadecimal Vendor ID for your device in the correct
+ place, save the file, rebuild your kernel, and reboot. Your device
+ should now be found as an sio device as it was
+ under FreeBSD 3.x
+
+
+