Re: [PATCH 11/18] pcmcia: do not use io_req_t when calling pcmcia_request_io()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey,

does this patch help? If not, could you please enable dynamic debug by
issuing

$ echo "module pcmcia +p" > /sys/kernel/debug/dynamic_debug/control

Thanks,
	Dominik


From: Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 30 Aug 2010 08:18:54 +0200
Subject: [PATCH] pcmcia: fix multifunction card handling in serial_cs.c

We shouldn't overwrite pre-set values, and we should also
set the port address to the beginning, and not the end of
the 8-port range.

Reported-by: Komuro <komurojun-mbn@xxxxxxxxx>
Signed-off-by: Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx>

diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index 141c695..dd0fa12 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -335,8 +335,6 @@ static int serial_probe(struct pcmcia_device *link)
 	info->p_dev = link;
 	link->priv = info;
 
-	link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
-	link->resource[0]->end = 8;
 	link->conf.Attributes = CONF_ENABLE_IRQ;
 	if (do_sound) {
 		link->conf.Attributes |= CONF_ENABLE_SPKR;
@@ -466,7 +464,7 @@ static int simple_config(struct pcmcia_device *link)
 		unsigned int port = 0;
 		if ((link->resource[1]->end != 0) &&
 			(resource_size(link->resource[1]) == 8)) {
-			port = link->resource[1]->end;
+			port = link->resource[1]->start;
 			info->slave = 1;
 		} else if ((info->manfid == MANFID_OSITECH) &&
 			(resource_size(link->resource[0]) == 0x40)) {
@@ -479,6 +477,9 @@ static int simple_config(struct pcmcia_device *link)
 		}
 	}
 
+	link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
+	link->resource[0]->end = 8;
+
 	/* First pass: look for a config entry that looks normal.
 	 * Two tries: without IO aliases, then with aliases */
 	for (try = 0; try < 4; try++)
@@ -558,6 +559,7 @@ static int multi_config(struct pcmcia_device *link)
 	int i, base2 = 0;
 
 	/* First, look for a generic full-sized window */
+	link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
 	link->resource[0]->end = info->multi * 8;
 	if (pcmcia_loop_config(link, multi_config_check, &base2)) {
 		/* If that didn't work, look for two windows */
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux