All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Roskin <proski-mXXj517/zsQ@public.gmane.org>
To: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: orinoco-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: [PATCH 10/21] orinoco replace hermes_write_words() with hermes_write_bytes()
Date: Fri, 07 Apr 2006 04:10:39 -0400	[thread overview]
Message-ID: <20060407081038.16107.39910.stgit@dv.roinet.com> (raw)
In-Reply-To: <20060407081019.16107.67672.stgit-fdEtzkpK75rby3iVrkZq2A@public.gmane.org>

From: Pavel Roskin <proski-mXXj517/zsQ@public.gmane.org>

The new function can write an odd number of bytes, thus making padding
unnecessary.

Signed-off-by: Pavel Roskin <proski-mXXj517/zsQ@public.gmane.org>
---

 drivers/net/wireless/hermes.c      |   17 ++++++++---------
 drivers/net/wireless/hermes.h      |    7 +++++--
 drivers/net/wireless/spectrum_cs.c |    7 +++----
 3 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/hermes.c b/drivers/net/wireless/hermes.c
index 456d934..be24f01 100644
--- a/drivers/net/wireless/hermes.c
+++ b/drivers/net/wireless/hermes.c
@@ -400,8 +400,7 @@ int hermes_bap_pread(hermes_t *hw, int b
 }
 
 /* Write a block of data to the chip's buffer, via the
- * BAP. Synchronization/serialization is the caller's problem. len
- * must be even.
+ * BAP. Synchronization/serialization is the caller's problem.
  *
  * Returns: < 0 on internal failure (errno), 0 on success, > 0 on error from firmware
  */
@@ -411,7 +410,7 @@ int hermes_bap_pwrite(hermes_t *hw, int 
 	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0;
 	int err = 0;
 
-	if ( (len < 0) || (len % 2) )
+	if (len < 0)
 		return -EINVAL;
 
 	err = hermes_bap_seek(hw, bap, id, offset);
@@ -419,7 +418,7 @@ int hermes_bap_pwrite(hermes_t *hw, int 
 		goto out;
 	
 	/* Actually do the transfer */
-	hermes_write_words(hw, dreg, buf, len/2);
+	hermes_write_bytes(hw, dreg, buf, len);
 
  out:	
 	return err;
@@ -427,7 +426,7 @@ int hermes_bap_pwrite(hermes_t *hw, int 
 
 /* Write a block of data to the chip's buffer with padding if
  * neccessary, via the BAP. Synchronization/serialization is the
- * caller's problem. len must be even.
+ * caller's problem.
  *
  * Returns: < 0 on internal failure (errno), 0 on success, > 0 on error from firmware
  */
@@ -437,7 +436,7 @@ int hermes_bap_pwrite_pad(hermes_t *hw, 
 	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0;
 	int err = 0;
 
-	if (len < 0 || len % 2 || data_len > len)
+	if (len < 0 || data_len > len)
 		return -EINVAL;
 
 	err = hermes_bap_seek(hw, bap, id, offset);
@@ -445,13 +444,13 @@ int hermes_bap_pwrite_pad(hermes_t *hw, 
 		goto out;
 
 	/* Transfer all the complete words of data */
-	hermes_write_words(hw, dreg, buf, data_len/2);
+	hermes_write_bytes(hw, dreg, buf, data_len);
 	/* If there is an odd byte left over pad and transfer it */
 	if (data_len & 1) {
 		u8 end[2];
 		end[1] = 0;
 		end[0] = ((unsigned char *)buf)[data_len - 1];
-		hermes_write_words(hw, dreg, end, 1);
+		hermes_write_bytes(hw, dreg, end, 2);
 		data_len ++;
 	}
 	/* Now send zeros for the padding */
@@ -534,7 +533,7 @@ int hermes_write_ltv(hermes_t *hw, int b
 
 	count = length - 1;
 
-	hermes_write_words(hw, dreg, value, count);
+	hermes_write_bytes(hw, dreg, value, count << 1);
 
 	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS | HERMES_CMD_WRITE, 
 				rid, NULL);
diff --git a/drivers/net/wireless/hermes.h b/drivers/net/wireless/hermes.h
index 34ccba2..e1b279e 100644
--- a/drivers/net/wireless/hermes.h
+++ b/drivers/net/wireless/hermes.h
@@ -408,10 +408,13 @@ static inline void hermes_read_words(str
 	ioread16_rep(hw->iobase + off, buf, count);
 }
 
-static inline void hermes_write_words(struct hermes *hw, int off, const void *buf, unsigned count)
+static inline void hermes_write_bytes(struct hermes *hw, int off,
+				      const char *buf, unsigned count)
 {
 	off = off << hw->reg_spacing;
-	iowrite16_rep(hw->iobase + off, buf, count);
+	iowrite16_rep(hw->iobase + off, buf, count >> 1);
+	if (unlikely(count & 1))
+		iowrite8(buf[count - 1], hw->iobase + off);
 }
 
 static inline void hermes_clear_words(struct hermes *hw, int off, unsigned count)
diff --git a/drivers/net/wireless/spectrum_cs.c b/drivers/net/wireless/spectrum_cs.c
index 14f4daa..c13a5b6 100644
--- a/drivers/net/wireless/spectrum_cs.c
+++ b/drivers/net/wireless/spectrum_cs.c
@@ -343,8 +343,7 @@ spectrum_plug_pdi(hermes_t *hw, struct p
 
 	/* do the actual plugging */
 	spectrum_aux_setaddr(hw, pdr_addr(pdr));
-	hermes_write_words(hw, HERMES_AUXDATA, pdi->data,
-			   pdi_len(pdi) / 2);
+	hermes_write_bytes(hw, HERMES_AUXDATA, pdi->data, pdi_len(pdi));
 
 	return 0;
 }
@@ -424,8 +423,8 @@ spectrum_load_blocks(hermes_t *hw, const
 
 	while (dblock_addr(blk) != BLOCK_END) {
 		spectrum_aux_setaddr(hw, blkaddr);
-		hermes_write_words(hw, HERMES_AUXDATA, blk->data,
-				   blklen / 2);
+		hermes_write_bytes(hw, HERMES_AUXDATA, blk->data,
+				   blklen);
 
 		blk = (struct dblock *) &blk->data[blklen];
 		blkaddr = dblock_addr(blk);



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

  parent reply	other threads:[~2006-04-07  8:10 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-07  8:10 [PATCH 01/21] orinoco: Remove useless CIS validation Pavel Roskin
     [not found] ` <20060407081019.16107.67672.stgit-fdEtzkpK75rby3iVrkZq2A@public.gmane.org>
2006-04-07  8:10   ` [PATCH 02/21] orinoco: remove PCMCIA audio support, it's useless for wireless cards Pavel Roskin
2006-04-07  8:10   ` [PATCH 03/21] orinoco: remove underscores from little-endian field names Pavel Roskin
2006-04-07  8:10   ` [PATCH 04/21] orinoco: fix truncating commsquality RID with the latest Symbol firmware Pavel Roskin
2006-04-07  8:10   ` [PATCH 05/21] orinoco: remove tracing code, it's unused Pavel Roskin
2006-04-07  8:10   ` [PATCH 06/21] orinoco: remove debug buffer code and userspace include support Pavel Roskin
2006-04-07  8:10   ` [PATCH 07/21] orinoco: Symbol card supported by spectrum_cs is LA4137, not LA4100 Pavel Roskin
2006-04-07  8:10   ` [PATCH 08/21] orinoco: optimize Tx exception handling in orinoco Pavel Roskin
2006-04-07  8:10   ` [PATCH 09/21] orinoco: orinoco_xmit() should only return valid symbolic constants Pavel Roskin
2006-04-07  8:10   ` Pavel Roskin [this message]
2006-04-07  8:10   ` [PATCH 11/21] orinoco: don't use any padding for Tx frames Pavel Roskin
2006-04-07  8:10   ` [PATCH 12/21] orinoco: refactor and clean up Tx error handling Pavel Roskin
2006-04-07  8:10   ` [PATCH 13/21] orinoco: simplify 802.3 encapsulation code Pavel Roskin
2006-04-07  8:10   ` [PATCH 14/21] orinoco: fix BAP0 offset error after several days of operation Pavel Roskin
2006-04-07  8:10   ` [PATCH 15/21] orinoco: delay FID allocation after firmware initialization Pavel Roskin
2006-04-07  8:10   ` [PATCH 16/21] orinoco_pci: disable device and free IRQ when suspending Pavel Roskin
     [not found]     ` <20060407081051.16107.87289.stgit-fdEtzkpK75rby3iVrkZq2A@public.gmane.org>
2006-04-07 21:24       ` Francois Romieu
     [not found]         ` <20060407212429.GA15720-lmTtMILVy1jWQcoT9B9Ug5SCg42XY1Uw0E9HWUfgJXw@public.gmane.org>
2006-04-07 22:12           ` Pavel Roskin
2006-04-07 23:08             ` Francois Romieu
2006-04-07  8:10   ` [PATCH 17/21] orinoco_pci: use pci_iomap() for resources Pavel Roskin
     [not found]     ` <20060407081053.16107.19347.stgit-fdEtzkpK75rby3iVrkZq2A@public.gmane.org>
2006-04-07 21:36       ` Francois Romieu
     [not found]         ` <20060407213619.GB15720-lmTtMILVy1jWQcoT9B9Ug5SCg42XY1Uw0E9HWUfgJXw@public.gmane.org>
2006-04-07 22:21           ` Pavel Roskin
2006-04-07 23:38             ` Francois Romieu
     [not found]               ` <20060407233819.GB15667-lmTtMILVy1jWQcoT9B9Ug5SCg42XY1Uw0E9HWUfgJXw@public.gmane.org>
2006-04-08  0:07                 ` Pavel Roskin
     [not found]                   ` <20060407200731.mqskowo8808gccs8-2RFepEojUI3Rd1RZctBqVdHuzzzSOjJt@public.gmane.org>
2006-04-08 15:00                     ` Jeff Garzik
2006-04-07  8:10   ` [PATCH 18/21] orinoco: support PCI suspend/resume for Nortel, PLX and TMD adaptors Pavel Roskin
2006-04-07  8:10   ` [PATCH 19/21] orinoco: reduce differences between PCI drivers, create orinoco_pci.h Pavel Roskin
     [not found]     ` <20060407081057.16107.82106.stgit-fdEtzkpK75rby3iVrkZq2A@public.gmane.org>
2006-04-07 22:10       ` Francois Romieu
     [not found]         ` <20060407221041.GC15720-lmTtMILVy1jWQcoT9B9Ug5SCg42XY1Uw0E9HWUfgJXw@public.gmane.org>
2006-04-07 22:43           ` Pavel Roskin
2006-04-07  8:11   ` [PATCH 20/21] orinoco: further comment cleanup in the PCI drivers Pavel Roskin
2006-04-07  8:11   ` [PATCH 21/21] orinoco: bump version to 0.15 Pavel Roskin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060407081038.16107.39910.stgit@dv.roinet.com \
    --to=proski-mxxj517/zsq@public.gmane.org \
    --cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=orinoco-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.