aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorFolkert van Heusden <folkert@vanheusden.com>2007-03-27 01:47:23 -0400
committerJeff Garzik <jeff@garzik.org>2007-04-28 11:01:02 -0400
commit939456ac51dd0b6b2b5653823b5655a790e72769 (patch)
tree297f6f5c9c20929c197eb9e8fa355394427c0be3 /drivers
parent4eccccb36223be5271b550a9ba4722a1e72c9312 (diff)
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')
-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 30baf6ecfc63..17ac6975d70d 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)
415 415
416 if (!dev || !bc) 416 if (!dev || !bc)
417 return -ENXIO; 417 return -ENXIO;
418 if (!dev->base_addr || dev->base_addr > 0x1000-SER12_EXTENT || 418 if (!dev->base_addr || dev->base_addr > 0xffff-SER12_EXTENT ||
419 dev->irq < 2 || dev->irq > 15) 419 dev->irq < 2 || dev->irq > NR_IRQS) {
420 printk(KERN_INFO "baycom_ser_fdx: invalid portnumber (max %u) "
421 "or irq (2 <= irq <= %d)\n",
422 0xffff-SER12_EXTENT, NR_IRQS);
420 return -ENXIO; 423 return -ENXIO;
421 if (bc->baud < 300 || bc->baud > 4800) 424 }
425 if (bc->baud < 300 || bc->baud > 4800) {
426 printk(KERN_INFO "baycom_ser_fdx: invalid baudrate "
427 "(300...4800)\n");
422 return -EINVAL; 428 return -EINVAL;
429 }
423 if (!request_region(dev->base_addr, SER12_EXTENT, "baycom_ser_fdx")) { 430 if (!request_region(dev->base_addr, SER12_EXTENT, "baycom_ser_fdx")) {
424 printk(KERN_WARNING "BAYCOM_SER_FSX: I/O port 0x%04lx busy \n", 431 printk(KERN_WARNING "BAYCOM_SER_FSX: I/O port 0x%04lx busy \n",
425 dev->base_addr); 432 dev->base_addr);