Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 939456ac authored by Folkert van Heusden's avatar Folkert van Heusden Committed by Jeff Garzik
Browse files

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: default avatarFolkert van Heusden <folkert@vanheusden.com>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 4eccccb3
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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);