aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/hamradio/baycom_ser_fdx.c
diff options
context:
space:
mode:
authorFolkert van Heusden <folkert@vanheusden.com>2007-03-26 21:47:23 -0800
committerJeff Garzik <jeff@garzik.org>2007-04-28 11:01:02 -0400
commit939456ac51dd0b6b2b5653823b5655a790e72769 (patch)
tree297f6f5c9c20929c197eb9e8fa355394427c0be3 /drivers/net/hamradio/baycom_ser_fdx.c
parent4eccccb36223be5271b550a9ba4722a1e72c9312 (diff)
downloadkernel_samsung_smdk4412-939456ac51dd0b6b2b5653823b5655a790e72769.zip
kernel_samsung_smdk4412-939456ac51dd0b6b2b5653823b5655a790e72769.tar.gz
kernel_samsung_smdk4412-939456ac51dd0b6b2b5653823b5655a790e72769.tar.bz2
baycom_ser_fdx: also allow i/o ports >= 0x1000 and enhanced failure logging
The baycom_ser_fdx driver did not allow i/o ports >= 0x1000. Now that there are pci cards (with rs232 ports) which use for example 0xb800 this limit should not exists. Also, for non kernel coders find the cause of problems was challenging so I added extra logging. Signed-off-by: Folkert van Heusden <folkert@vanheusden.com> Cc: Jeff Garzik <jeff@garzik.org> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/hamradio/baycom_ser_fdx.c')
-rw-r--r--drivers/net/hamradio/baycom_ser_fdx.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c
index 30baf6e..17ac697 100644
--- a/drivers/net/hamradio/baycom_ser_fdx.c
+++ b/drivers/net/hamradio/baycom_ser_fdx.c
@@ -415,11 +415,18 @@ static int ser12_open(struct net_device *dev)
if (!dev || !bc)
return -ENXIO;
- if (!dev->base_addr || dev->base_addr > 0x1000-SER12_EXTENT ||
- dev->irq < 2 || dev->irq > 15)
+ if (!dev->base_addr || dev->base_addr > 0xffff-SER12_EXTENT ||
+ dev->irq < 2 || dev->irq > NR_IRQS) {
+ printk(KERN_INFO "baycom_ser_fdx: invalid portnumber (max %u) "
+ "or irq (2 <= irq <= %d)\n",
+ 0xffff-SER12_EXTENT, NR_IRQS);
return -ENXIO;
- if (bc->baud < 300 || bc->baud > 4800)
+ }
+ if (bc->baud < 300 || bc->baud > 4800) {
+ printk(KERN_INFO "baycom_ser_fdx: invalid baudrate "
+ "(300...4800)\n");
return -EINVAL;
+ }
if (!request_region(dev->base_addr, SER12_EXTENT, "baycom_ser_fdx")) {
printk(KERN_WARNING "BAYCOM_SER_FSX: I/O port 0x%04lx busy \n",
dev->base_addr);