[PATCH 26/49] pcmcia: deprecate CS_BAD_VCC and CS_BAD_VPP

Dominik Brodowski linux at dominikbrodowski.net
Mon Oct 13 13:48:11 EDT 2008


They were either used to report that changing voltage is not allowed, or that
changing voltage failed.

Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
---
 drivers/pcmcia/ds.c              |    3 +--
 drivers/pcmcia/pcmcia_resource.c |   29 ++++++++++++++++++++---------
 include/pcmcia/cs.h              |    4 ++--
 3 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 4a658e2..f6ff121 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -82,8 +82,7 @@ static const lookup_t error_table[] = {
     { CS_BAD_PAGE,		"Bad page number" },
     { CS_BAD_SIZE,		"Bad size" },
     { CS_BAD_TYPE,		"Bad type" },
-    { CS_BAD_VCC,		"Bad Vcc" },
-    { CS_BAD_VPP,		"Bad Vpp" },
+    { -EIO,			"Input/Output error" },
     { CS_NO_CARD,		"No card present" },
     { -EINVAL,			"Bad parameter" },
     { CS_GENERAL_FAILURE,	"General failure" },
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 3b8b0e1..9b61265 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -291,20 +291,28 @@ int pcmcia_modify_configuration(struct pcmcia_device *p_dev,
 		s->ops->set_socket(s, &s->socket);
 	}
 
-	if (mod->Attributes & CONF_VCC_CHANGE_VALID)
-		return CS_BAD_VCC;
+	if (mod->Attributes & CONF_VCC_CHANGE_VALID) {
+		ds_dbg(s, 0, "changing Vcc is not allowed at this time\n");
+		return -EINVAL;
+	}
 
 	/* We only allow changing Vpp1 and Vpp2 to the same value */
 	if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) &&
 	    (mod->Attributes & CONF_VPP2_CHANGE_VALID)) {
 		if (mod->Vpp1 != mod->Vpp2)
-			return CS_BAD_VPP;
+			ds_dbg(s, 0, "Vpp1 and Vpp2 must be the same\n");
+			return -EINVAL;
 		s->socket.Vpp = mod->Vpp1;
-		if (s->ops->set_socket(s, &s->socket))
-			return CS_BAD_VPP;
+		if (s->ops->set_socket(s, &s->socket)) {
+			dev_printk(KERN_WARNING, &s->dev,
+				   "Unable to set VPP\n");
+			return -EIO;
+		}
 	} else if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) ||
-		   (mod->Attributes & CONF_VPP2_CHANGE_VALID))
-		return CS_BAD_VPP;
+		   (mod->Attributes & CONF_VPP2_CHANGE_VALID)) {
+		ds_dbg(s, 0, "changing Vcc is not allowed at this time\n");
+		return -EINVAL;
+	}
 
 	if (mod->Attributes & CONF_IO_CHANGE_WIDTH) {
 		pccard_io_map io_off = { 0, 0, 0, 0, 1 };
@@ -485,8 +493,11 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
 
 	/* Do power control.  We don't allow changes in Vcc. */
 	s->socket.Vpp = req->Vpp;
-	if (s->ops->set_socket(s, &s->socket))
-		return CS_BAD_VPP;
+	if (s->ops->set_socket(s, &s->socket)) {
+		dev_printk(KERN_WARNING, &s->dev,
+			   "Unable to set socket state\n");
+		return -EINVAL;
+	}
 
 	/* Pick memory or I/O card, DMA mode, interrupt */
 	c->IntType = req->IntType;
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h
index 6b51d27..5d1ed8e 100644
--- a/include/pcmcia/cs.h
+++ b/include/pcmcia/cs.h
@@ -300,8 +300,8 @@ typedef struct error_info_t {
 #define CS_BAD_SIZE		0x0a
 #define CS_BAD_SOCKET		-EINVAL
 #define CS_BAD_TYPE		0x0d
-#define CS_BAD_VCC		0x0e
-#define CS_BAD_VPP		0x0f
+#define CS_BAD_VCC		-EINVAL
+#define CS_BAD_VPP		-EINVAL
 #define CS_BAD_WINDOW		-ENODEV
 #define CS_WRITE_FAILURE	-EIO
 #define CS_NO_CARD		0x14
-- 
1.5.4.3




More information about the linux-pcmcia mailing list