Date: Mon, 16 Feb 1998 12:26:16 -0600 From: Steve Gericke <steveg@comtrol.com> To: freebsd-bugs@FreeBSD.ORG Cc: steveg@rocket.comtrol.com, stevee@rocket.comtrol.com Subject: freebsd snapshot 3.0 current: rp.c & makefile changes Message-ID: <2.2.32.19980216182616.0069ed70@comtrol.com>
index | next in thread | raw e-mail
Hello FreeBSD:
I problem was reported to me that our Comtrol's RocketPort product only
supports 32 ports. I have found this to be true and have changed pre
FreeBSD 3.0
to correct this.
I have also made changes to our FreeBSD 3.0 code to reflect this. Our product
now supports up to 128 RocketPort ports with 4 controller cards.
1. I have include the diff for rp.c that is needed. The rp.c I took off
of the 3.0 current dated 2/9/98 (size 55391)
1110,1112c1110
< count = 0;
< for(i=0;i<unit;i++)
< count += rp_num_ports[i];
---
> count = unit * 32; /* board times max ports per card SG */
1226,1228c1224
< count = 0;
< for(i=0;i<unit;i++)
< count += rp_num_ports[i];
---
> count = unit * 32; /* board # times max ports per card SG */
1309c1305
< int unit, i, port, mynor, flags;
---
> int unit, i, port, mynor, umynor, flags; /* SG */
1314c1310,1313
< mynor = MINOR_MAGIC(dev);
---
>
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
1318,1320d1316
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1458c1454
< int oldspl, unit, mynor, port, status, i;
---
> int oldspl, unit, mynor, umynor, port, status, i; /* SG */
1463,1466c1459,1463
< mynor = MINOR_MAGIC(dev);
< unit = 0;
< unit = minor_to_unit[mynor];
< port = mynor;
---
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
> unit = minor_to_unit[mynor]; /* SG */
>
1469,1470d1465
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1534c1529,1534
< int unit, i, mynor, port, error = 0;
---
> int unit, i, mynor, umynor, port, error = 0; /* SG */
>
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
> unit = minor_to_unit[mynor]; /* SG */
1536d1535
< mynor = MINOR_MAGIC(dev);
1539,1543d1537
< unit = 0;
< unit = minor_to_unit[mynor];
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1559c1553,1558
< int unit, i, mynor, port, error = 0;
---
> int unit, i, mynor, port, umynor, error = 0; /* SG */
>
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
> unit = minor_to_unit[mynor]; /* SG */
1561d1559
< mynor = MINOR_MAGIC(dev);
1564,1568d1561
< unit = 0;
< unit = minor_to_unit[mynor];
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1604c1597
< int unit, mynor, port;
---
> int unit, mynor, port, umynor; /* SG */
1612c1605,1607
< mynor = MINOR_MAGIC(dev);
---
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
1614,1616d1608
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1816c1808
< int unit, i, mynor, port;
---
> int unit, i, mynor, port, umynor; /* SG */
1820c1812,1816
< mynor = MINOR_MAGIC(tp->t_dev);
---
>
> umynor = (((minor(tp->t_dev) >> 16) -1) * 32); /* SG */
> port = (minor(tp->t_dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
>
1822,1824d1817
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
1953c1946
< int unit, i, mynor, port;
---
> int unit, i, mynor, port, umynor; /* SG */
1958c1951,1954
< mynor = MINOR_MAGIC(tp->t_dev);
---
>
> umynor = (((minor(tp->t_dev) >> 16) -1) * 32); /* SG */
> port = (minor(tp->t_dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
1960,1962d1955
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
2014c2007
< int unit, mynor, port;
---
> int unit, mynor, port, umynor; /* SG */
2019c2012,2014
< mynor = MINOR_MAGIC(tp->t_dev);
---
> umynor = (((minor(tp->t_dev) >> 16) -1) * 32); /* SG */
> port = (minor(tp->t_dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
2021,2023d2015
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
2056c2048,2053
< int unit, i, port, mynor;
---
> int unit, i, port, mynor, umynor; /* SG */
>
> umynor = (((minor(dev) >> 16) -1) * 32); /* SG */
> port = (minor(dev) & 0x1f); /* SG */
> mynor = (port + umynor); /* SG */
> unit = minor_to_unit[mynor]; /* SG */
2058d2054
< mynor = MINOR_MAGIC(dev);
2061,2064d2056
< unit = minor_to_unit[mynor];
< port = mynor;
< for(i=0;i<unit;i++)
< port -= rp_num_ports[i];
2. I have changed the MAKEDEV file for ttyR and cuaR.
The following code is a replacement:
# Rocketport multiport serial card.
# Creates devices for all cards at one time.
#
ttyR?)
major=81
BOARD=1; MINOR=65536; Rnum=0
MINOR=`expr $BOARD \* 65536`
dmesg | grep ^RocketPort[0-4] > /tmp/rp_list
controllers=`awk '{print $1}' < /tmp/rp_list`
rm -f /dev/ttyR*; rm -f /dev/ttyiR*; rm -f /dev/ttylR*
for i in $controllers;do
ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'`
echo -n "Creating $ndevices devices for $i: "
for dev in `jot $ndevices 0`;do
mknod /dev/ttyR$Rnum c $major $MINOR
mknod /dev/ttylR$Rnum c $major `expr $MINOR + 32`
mknod /dev/ttyiR$Rnum c $major `expr $MINOR + 64`
Rnum=`expr $Rnum + 1`
MINOR=`expr $MINOR + 1`
done
BOARD=`expr $BOARD + 1`
MINOR=`expr $BOARD \* 65536`
echo " "
done
chown root.wheel /dev/ttyR*
ls /dev/ttyR*
;;
cuaR?)
major=81
BOARD=1; MINOR=65536; Rnum=0
MINOR=`expr $BOARD \* 65536`
dmesg | grep ^RocketPort[0-4] > /tmp/rp_list
controllers=`awk '{print $1}' < /tmp/rp_list`
rm -f /dev/cuaR*; rm -f /dev/cuaiR*; rm -f /dev/cualR*
for i in $controllers;do
ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'`
echo -n "Creating $ndevices devices for $i: "
for dev in `jot $ndevices 0`;do
mknod /dev/cuaR$Rnum c $major `expr $MINOR + 128`
mknod /dev/cualR$Rnum c $major `expr $MINOR + 128 + 32`
mknod /dev/cuaiR$Rnum c $major `expr $MINOR + 128 + 64`
Rnum=`expr $Rnum + 1`
MINOR=`expr $MINOR + 1`
done
BOARD=`expr $BOARD + 1`
MINOR=`expr $BOARD \* 65536`
echo " "
done
chown uucp.dialer /dev/cuaR*
ls /dev/cuaR*
umask 77
;;
I have tested these changes with up to 4 RocketPort cards PCI and ISA.
If you need any follow up help pleae contact me at: steveg@comtrol.com
Thanks for all of your help !!!
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2.2.32.19980216182616.0069ed70>
