Actually correct and still right, but PNP ISA cards aren't relevant
anymore. Noted by: imp Approved by: bcr (mentor)
This commit is contained in:
parent
e8b50cb82d
commit
d42d1b16af
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=40596
1 changed files with 0 additions and 130 deletions
|
@ -2610,136 +2610,6 @@ bindkey ^[[3~ delete-char # for xterm</programlisting>
|
|||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question id="pnp-not-found">
|
||||
<para>Why is my PnP card not found (or found as
|
||||
<literal>unknown</literal>)?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>The reasons for this behavior are explained by the
|
||||
following email, posted to the &a.questions; by &a.peter;, in
|
||||
answer to a question about an internal modem that was no
|
||||
longer found after an upgrade to
|
||||
&os; 4.<replaceable>X</replaceable> (the comments in
|
||||
<literal>[]</literal> have been added to clarify the
|
||||
context).</para>
|
||||
|
||||
<note>
|
||||
<para>The contents of this quotation has been updated from
|
||||
its original text.</para>
|
||||
</note>
|
||||
|
||||
<blockquote>
|
||||
<para>The PNP bios preconfigured it [the modem] and left it
|
||||
laying around in port space, so [in
|
||||
3.<replaceable>X</replaceable>] 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.<replaceable>X</replaceable>] 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 IDs 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 <literal>Vendor
|
||||
ID</literal> line at the start of the output. The
|
||||
hexadecimal number in parentheses
|
||||
(<literal>0x3024a341</literal> in this example) is the PnP
|
||||
ID and the string immediately before this
|
||||
(<literal>PMC2430</literal>) is a unique ASCII ID.</para>
|
||||
|
||||
<para>Alternatively, if &man.pnpinfo.8; does not list the card
|
||||
in question, &man.pciconf.8; can be used instead. This is
|
||||
part of the output from <command>pciconf -vl</command> for
|
||||
an onboard sound chip:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pciconf -vl</userinput>
|
||||
chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
|
||||
vendor = 'Intel Corporation'
|
||||
device = '82801AA 8xx Chipset AC'97 Audio Controller'
|
||||
class = multimedia
|
||||
subclass = audio</screen>
|
||||
|
||||
<para>Here, you would use the <varname>chip</varname> value,
|
||||
<literal>0x24158086</literal>.</para>
|
||||
|
||||
<para>This information (<literal>Vendor ID</literal> or
|
||||
<varname>chip</varname> value) needs adding to the file
|
||||
<filename>/usr/src/sys/dev/sio/sio_isa.c</filename>.</para>
|
||||
|
||||
<para>You should first make a backup of
|
||||
<filename>sio_isa.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, are you not?) then edit
|
||||
<filename>sio_isa.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
|
||||
<devicename>sio</devicename> device.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question id="nlist-failed">
|
||||
<para>Why do I get the error <errorname>nlist
|
||||
|
|
Loading…
Reference in a new issue