# Re: Unidentified subject!

```> Can you explain me what is the meaning of the number
> 1076 involved in the sentence.
>
> if (\$dev == '1076')

Look in the "**" line below:

# cat ~/bin/vscom
#!/usr/bin/perl -w

\$state = 0;
open( PCI, "/proc/pci") || die("cannot open /proc/pci");
while (<PCI>) {
if (m/Bus.*, device.*, function/) { \$state = 0; next; }
**    if (m/Vendor id=10b5\. Device id=([0-9a-f]+)/) { \$state = 1; \$dev = \$1; next; }
if (\$state == 1 && m/IRQ (\d+)/) { \$irq = \$1; next; }
if (\$state == 1 && m,I/O at (0x[0-9a-f]+),) { \$state = 2; \$io1 = \$1; next; }
if (\$state == 2 && m,I/O at (0x[0-9a-f]+),) { \$state = 3; \$io2 = \$1; next; }
if (\$state == 3 && m,I/O at (0x[0-9a-f]+),) { \$state = 4; \$io3 = \$1; last; }
}
close(PCI);

print( "dev \$dev, irq \$irq, io \$io1, \$io2, \$io3\n" );
\$io = hex(\$io2);
if (\$dev == '1076') {
for (\$ix = 0; \$ix < 8; \$ix++ ) {
\$num = 4 + \$ix;
\$str = sprintf("%#04x", \$io);

\$cmd = "setserial /dev/ttyS\$num port \$str irq \$irq uart 16550A baud_base 921600 ^fourport spd_normal";
print "\$cmd\n"; system \$cmd;

\$cmd = "stty -F /dev/ttyS\$num crtscts -ixon";
print "\$cmd\n"; system \$cmd;

#\$a = 64 + \$num;
#\$cmd = "mknod /dev/ttyS\$num c 4 \$a";
#system "chown root:dialout /dev/ttyS\$num";
#system "chmod 666 /dev/ttyS\$num";

\$io += 8;
}
\$cmd = "setserial /dev/ttyS4 set_multiport port1 \$io3 mask1 0xff match1 0xff";
print "\$cmd\n"; system \$cmd;
}
system "setserial -gb /dev/ttyS? /dev/ttyS[1-9]?"

It is the pci device number:

\$ lspci
...
00:14.0 Serial controller: PLX Technology, Inc. VScom 800 8 port serial adaptor (rev 02)
...
\$ lspci -s 00:14.0 -n
00:14.0 Class 0700: 10b5:1076 (rev 02)

It also shows up in:

\$ find . -type f -name \*.h | xargs grep 1076
./include/linux/pci_ids.h:#define PCI_DEVICE_ID_PLX_SPCOM800    0x1076
...

and:

\$ egrep -B2  '[[:space:]]1076' /usr/share/misc/pci.ids
10b5  PLX Technology, Inc.
0001  i960 PCI bus interface
1076  VScom 800 8 port serial adaptor

The script don't work with e.g. 2.4.22, since todays kernels apparently
gives you text, not numbers:

\$ cat /proc/pci
...
Bus  0, device  20, function  0:
Serial controller: PLX Technology, Inc. VScom 800 8 port serial adaptor (rev 2).
IRQ 12.
Non-prefetchable 32 bit memory at 0xe4000000 [0xe400007f].
I/O at 0xdc00 [0xdc7f].
I/O at 0xe000 [0xe03f].
I/O at 0xe400 [0xe407].
...

and it could be rewritten using lspci instead:

\$ lspci -d 10b5:1076 -vn
00:14.0 Class 0700: 10b5:1076 (rev 02)
Subsystem: 10b5:1076
Flags: medium devsel, IRQ 12
Memory at e4000000 (32-bit, non-prefetchable) [size=128]
I/O ports at dc00 [size=128]
I/O ports at e000 [size=64]
I/O ports at e400 [size=8]
Expansion ROM at <unassigned> [disabled] [size=2K]

Regards,
/Karl

-----------------------------------------------------------------------
Karl Hammar                    Aspö Data               karl@aspodata.se
Lilla Aspö 2340                                                Networks
S-742 94 Östhammar          +46  173 140 57                   Computers
Sweden                     +46  70 511 97 84                 Consulting
-----------------------------------------------------------------------

```