Added information in Troubleshooting about PnP devices that stop
working after u/g to 4.x
This commit is contained in:
parent
16084dbeb2
commit
c6f056f2c6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=8024
2 changed files with 220 additions and 2 deletions
|
|
@ -15,7 +15,7 @@
|
|||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.96 2000/09/24 07:01:50 kris Exp $</pubdate>
|
||||
<pubdate>$FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.97 2000/09/25 15:54:03 marko Exp $</pubdate>
|
||||
|
||||
<abstract>
|
||||
<para>This is the FAQ for FreeBSD versions 2.X, 3.X, and 4.X. All entries
|
||||
|
|
@ -3548,6 +3548,115 @@ timekeeping.</para>
|
|||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>My PnP card is no longer found (or found as
|
||||
<literal>unknown</literal>) since upgrading to FreeBSD 4.x</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>FreeBSD 4.x is now much more <emphasis>PnP-centric</emphasis>
|
||||
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.</para>
|
||||
|
||||
<para>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
|
||||
<literal>[]</literal> have been added to clarify the context.</para>
|
||||
|
||||
<blockquote>
|
||||
<para>The PNP bios preconfigured it [the modem] and left it
|
||||
laying around in port space, so [in 3.x] the old-style ISA
|
||||
probes <quote>found</quote> it there.</para>
|
||||
|
||||
<para>Under 4.0, the ISA code is much more PnP-centric. It was
|
||||
possible [in 3.x] for an ISA probe to find a
|
||||
<quote>stray</quote> 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.</para>
|
||||
</blockquote>
|
||||
|
||||
<para>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:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pnpinfo</userinput>
|
||||
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)</screen>
|
||||
|
||||
<para>[more TAG lines elided]</para>
|
||||
|
||||
<screen>
|
||||
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</screen>
|
||||
|
||||
<para>The information you require is in the <quote>Vendor ID</quote>
|
||||
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
|
||||
<filename>/usr/src/sys/isa/sio.c</filename>.</para>
|
||||
|
||||
<para>You should first make a backup of <filename>sio.c</filename>
|
||||
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 <filename>sio.c</filename> and search for the
|
||||
line</para>
|
||||
|
||||
<programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting>
|
||||
|
||||
<para>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 <emphasis>Device Description</emphasis>
|
||||
from the output of &man.pnpinfo.8;:</para>
|
||||
|
||||
<programlisting>
|
||||
{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 */
|
||||
</programlisting>
|
||||
|
||||
<para>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 <literal>sio</literal> device as it was
|
||||
under FreeBSD 3.x</para>
|
||||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.96 2000/09/24 07:01:50 kris Exp $</pubdate>
|
||||
<pubdate>$FreeBSD: doc/en_US.ISO_8859-1/books/faq/book.sgml,v 1.97 2000/09/25 15:54:03 marko Exp $</pubdate>
|
||||
|
||||
<abstract>
|
||||
<para>This is the FAQ for FreeBSD versions 2.X, 3.X, and 4.X. All entries
|
||||
|
|
@ -3548,6 +3548,115 @@ timekeeping.</para>
|
|||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>My PnP card is no longer found (or found as
|
||||
<literal>unknown</literal>) since upgrading to FreeBSD 4.x</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>FreeBSD 4.x is now much more <emphasis>PnP-centric</emphasis>
|
||||
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.</para>
|
||||
|
||||
<para>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
|
||||
<literal>[]</literal> have been added to clarify the context.</para>
|
||||
|
||||
<blockquote>
|
||||
<para>The PNP bios preconfigured it [the modem] and left it
|
||||
laying around in port space, so [in 3.x] the old-style ISA
|
||||
probes <quote>found</quote> it there.</para>
|
||||
|
||||
<para>Under 4.0, the ISA code is much more PnP-centric. It was
|
||||
possible [in 3.x] for an ISA probe to find a
|
||||
<quote>stray</quote> 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.</para>
|
||||
</blockquote>
|
||||
|
||||
<para>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:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pnpinfo</userinput>
|
||||
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)</screen>
|
||||
|
||||
<para>[more TAG lines elided]</para>
|
||||
|
||||
<screen>
|
||||
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</screen>
|
||||
|
||||
<para>The information you require is in the <quote>Vendor ID</quote>
|
||||
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
|
||||
<filename>/usr/src/sys/isa/sio.c</filename>.</para>
|
||||
|
||||
<para>You should first make a backup of <filename>sio.c</filename>
|
||||
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 <filename>sio.c</filename> and search for the
|
||||
line</para>
|
||||
|
||||
<programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting>
|
||||
|
||||
<para>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 <emphasis>Device Description</emphasis>
|
||||
from the output of &man.pnpinfo.8;:</para>
|
||||
|
||||
<programlisting>
|
||||
{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 */
|
||||
</programlisting>
|
||||
|
||||
<para>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 <literal>sio</literal> device as it was
|
||||
under FreeBSD 3.x</para>
|
||||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue