All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/05] orinoco: Agere/Lucent firmware download
@ 2007-09-12 21:09 Dave
  0 siblings, 0 replies; only message in thread
From: Dave @ 2007-09-12 21:09 UTC (permalink / raw)
  To: orinoco-devel, orinoco-users, linux-wireless, proski, hermes

Specify all three parameters to every Hermes command.

hermes_issue_cmd and hermes_docmd_wait now take two
more parameters.

orinoco.c and spectrum_cs.c updated to specify the
extra parameters.

Signed-off-by: David Kilroy <kilroyd@gmail.com>
---
diff --git a/drivers/net/wireless/hermes.c b/drivers/net/wireless/hermes.c
index 29d3910..d655f3f 100644
--- a/drivers/net/wireless/hermes.c
+++ b/drivers/net/wireless/hermes.c
@@ -87,7 +87,8 @@ MODULE_LICENSE("Dual MPL/GPL");
 
    Callable from any context.
 */
-static int hermes_issue_cmd(hermes_t *hw, u16 cmd, u16 param0)
+static int hermes_issue_cmd(hermes_t *hw, u16 cmd, u16 param0,
+			    u16 param1, u16 param2)
 {
 	int k = CMD_BUSY_TIMEOUT;
 	u16 reg;
@@ -103,8 +104,8 @@ static int hermes_issue_cmd(hermes_t *hw, u16 cmd, u16 param0)
 		return -EBUSY;
 	}
 
-	hermes_write_regn(hw, PARAM2, 0);
-	hermes_write_regn(hw, PARAM1, 0);
+	hermes_write_regn(hw, PARAM2, param2);
+	hermes_write_regn(hw, PARAM1, param1);
 	hermes_write_regn(hw, PARAM0, param0);
 	hermes_write_regn(hw, CMD, cmd);
 	
@@ -162,7 +163,7 @@ int hermes_init(hermes_t *hw)
 
 	/* We don't use hermes_docmd_wait here, because the reset wipes
 	   the magic constant in SWSUPPORT0 away, and it gets confused */
-	err = hermes_issue_cmd(hw, HERMES_CMD_INIT, 0);
+	err = hermes_issue_cmd(hw, HERMES_CMD_INIT, 0, 0, 0);
 	if (err)
 		return err;
 
@@ -208,7 +209,8 @@ int hermes_init(hermes_t *hw)
  * Returns: < 0 on internal error, 0 on success, > 0 on error returned by the firmware
  *
  * Callable from any context, but locking is your problem. */
-int hermes_docmd_wait(hermes_t *hw, u16 cmd, u16 parm0,
+int hermes_docmd_wait(hermes_t *hw, u16 cmd,
+		      u16 parm0, u16 parm1, u16 parm2,
 		      struct hermes_response *resp)
 {
 	int err;
@@ -216,7 +218,7 @@ int hermes_docmd_wait(hermes_t *hw, u16 cmd, u16 parm0,
 	u16 reg;
 	u16 status;
 
-	err = hermes_issue_cmd(hw, cmd, parm0);
+	err = hermes_issue_cmd(hw, cmd, parm0, parm1, parm2);
 	if (err) {
 		if (! hermes_present(hw)) {
 			if (net_ratelimit())
@@ -281,7 +283,7 @@ int hermes_allocate(hermes_t *hw, u16 size, u16 *fid)
 	if ( (size < HERMES_ALLOC_LEN_MIN) || (size > HERMES_ALLOC_LEN_MAX) )
 		return -EINVAL;
 
-	err = hermes_docmd_wait(hw, HERMES_CMD_ALLOC, size, NULL);
+	err = hermes_docmd_wait(hw, HERMES_CMD_ALLOC, size, 0, 0, NULL);
 	if (err) {
 		return err;
 	}
@@ -442,7 +444,7 @@ int hermes_read_ltv(hermes_t *hw, int bap, u16 rid, unsigned bufsize,
 	if ( (bufsize < 0) || (bufsize % 2) )
 		return -EINVAL;
 
-	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS, rid, NULL);
+	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS, rid, 0, 0, NULL);
 	if (err)
 		return err;
 
@@ -497,8 +499,8 @@ int hermes_write_ltv(hermes_t *hw, int bap, u16 rid,
 
 	hermes_write_bytes(hw, dreg, value, count << 1);
 
-	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS | HERMES_CMD_WRITE, 
-				rid, NULL);
+	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS | HERMES_CMD_WRITE,
+				rid, 0, 0, NULL);
 
 	return err;
 }
diff --git a/drivers/net/wireless/hermes.h b/drivers/net/wireless/hermes.h
index 8e3f0e3..0d38bf6 100644
--- a/drivers/net/wireless/hermes.h
+++ b/drivers/net/wireless/hermes.h
@@ -351,7 +351,8 @@ typedef struct hermes {
 /* Function prototypes */
 void hermes_struct_init(hermes_t *hw, void __iomem *address, int reg_spacing);
 int hermes_init(hermes_t *hw);
-int hermes_docmd_wait(hermes_t *hw, u16 cmd, u16 parm0,
+int hermes_docmd_wait(hermes_t *hw, u16 cmd,
+		      u16 parm0, u16 parm1, u16 parm2,
 		      struct hermes_response *resp);
 int hermes_allocate(hermes_t *hw, u16 size, u16 *fid);
 
@@ -380,20 +381,20 @@ static inline void hermes_set_irqmask(hermes_t *hw, u16 events)
 static inline int hermes_enable_port(hermes_t *hw, int port)
 {
 	return hermes_docmd_wait(hw, HERMES_CMD_ENABLE | (port << 8),
-				 0, NULL);
+				 0, 0, 0, NULL);
 }
 
 static inline int hermes_disable_port(hermes_t *hw, int port)
 {
 	return hermes_docmd_wait(hw, HERMES_CMD_DISABLE | (port << 8), 
-				 0, NULL);
+				 0, 0, 0, NULL);
 }
 
 /* Initiate an INQUIRE command (tallies or scan).  The result will come as an
  * information frame in __orinoco_ev_info() */
 static inline int hermes_inquire(hermes_t *hw, u16 rid)
 {
-	return hermes_docmd_wait(hw, HERMES_CMD_INQUIRE, rid, NULL);
+	return hermes_docmd_wait(hw, HERMES_CMD_INQUIRE, rid, 0, 0, NULL);
 }
 
 #define HERMES_BYTES_TO_RECLEN(n) ( (((n)+1)/2) + 1 )
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 062286d..fccc57a 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -513,7 +513,7 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
 	netif_stop_queue(dev);
 
 	err = hermes_docmd_wait(hw, HERMES_CMD_TX | HERMES_CMD_RECL,
-				txfid, NULL);
+				txfid, 0, 0, NULL);
 	if (err) {
 		netif_start_queue(dev);
 		if (net_ratelimit())
@@ -1777,12 +1777,12 @@ static int __orinoco_program_rids(struct net_device *dev)
 		/* Enable monitor mode */
 		dev->type = ARPHRD_IEEE80211;
 		err = hermes_docmd_wait(hw, HERMES_CMD_TEST | 
-					    HERMES_TEST_MONITOR, 0, NULL);
+					    HERMES_TEST_MONITOR, 0, 0, 0, NULL);
 	} else {
 		/* Disable monitor mode */
 		dev->type = ARPHRD_ETHER;
 		err = hermes_docmd_wait(hw, HERMES_CMD_TEST |
-					    HERMES_TEST_STOP, 0, NULL);
+					    HERMES_TEST_STOP, 0, 0, 0, NULL);
 	}
 	if (err)
 		return err;
@@ -3133,7 +3133,7 @@ static int orinoco_ioctl_setfreq(struct net_device *dev,
 		hermes_t *hw = &priv->hw;
 		err = hermes_docmd_wait(hw, HERMES_CMD_TEST |
 					    HERMES_TEST_SET_CHANNEL,
-					chan, NULL);
+					chan, 0, 0, NULL);
 	}
 	orinoco_unlock(priv, &flags);
 
diff --git a/drivers/net/wireless/spectrum_cs.c b/drivers/net/wireless/spectrum_cs.c
index af70460..b273362 100644
--- a/drivers/net/wireless/spectrum_cs.c
+++ b/drivers/net/wireless/spectrum_cs.c
@@ -354,7 +354,7 @@ spectrum_read_pda(hermes_t *hw, __le16 *pda, int pda_len)
 	int pda_size;
 
 	/* Issue command to read EEPROM */
-	ret = hermes_docmd_wait(hw, HERMES_CMD_READMIF, 0, NULL);
+	ret = hermes_docmd_wait(hw, HERMES_CMD_READMIF, 0, 0, 0, NULL);
 	if (ret)
 		return ret;
 


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-09-12 21:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-12 21:09 [PATCH 01/05] orinoco: Agere/Lucent firmware download Dave

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.