aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sunhme.h
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2007-12-16 18:30:08 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:07:09 -0500
commitf3ec33e587df02e25963755989cc473e3f07bf0d (patch)
tree5f176f664af9b9b8ad76ca5fdfd8fd68de6a1fe5 /drivers/net/sunhme.h
parentb710b43c306650261c01ad08100791afec78a7db (diff)
sunhme endianness annotations
This one is interesting - SBUS and PCI variants have opposite endianness in descriptors (SBUS is sparc-only, so there host-endian == big-endian). Solution: declare a bitwise type (hme32) and in accessor helpers do typechecking and force-casts (once we know that the type is right). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/sunhme.h')
-rw-r--r--drivers/net/sunhme.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/sunhme.h b/drivers/net/sunhme.h
index 90f446db9ba2..4da5539fac7b 100644
--- a/drivers/net/sunhme.h
+++ b/drivers/net/sunhme.h
@@ -302,9 +302,11 @@
302 * Always write the address first before setting the ownership 302 * Always write the address first before setting the ownership
303 * bits to avoid races with the hardware scanning the ring. 303 * bits to avoid races with the hardware scanning the ring.
304 */ 304 */
305typedef u32 __bitwise__ hme32;
306
305struct happy_meal_rxd { 307struct happy_meal_rxd {
306 u32 rx_flags; 308 hme32 rx_flags;
307 u32 rx_addr; 309 hme32 rx_addr;
308}; 310};
309 311
310#define RXFLAG_OWN 0x80000000 /* 1 = hardware, 0 = software */ 312#define RXFLAG_OWN 0x80000000 /* 1 = hardware, 0 = software */
@@ -313,8 +315,8 @@ struct happy_meal_rxd {
313#define RXFLAG_CSUM 0x0000ffff /* HW computed checksum */ 315#define RXFLAG_CSUM 0x0000ffff /* HW computed checksum */
314 316
315struct happy_meal_txd { 317struct happy_meal_txd {
316 u32 tx_flags; 318 hme32 tx_flags;
317 u32 tx_addr; 319 hme32 tx_addr;
318}; 320};
319 321
320#define TXFLAG_OWN 0x80000000 /* 1 = hardware, 0 = software */ 322#define TXFLAG_OWN 0x80000000 /* 1 = hardware, 0 = software */
@@ -400,7 +402,7 @@ struct happy_meal {
400 struct hmeal_init_block *happy_block; /* RX and TX descriptors (CPU addr) */ 402 struct hmeal_init_block *happy_block; /* RX and TX descriptors (CPU addr) */
401 403
402#if defined(CONFIG_SBUS) && defined(CONFIG_PCI) 404#if defined(CONFIG_SBUS) && defined(CONFIG_PCI)
403 u32 (*read_desc32)(u32 *); 405 u32 (*read_desc32)(hme32 *);
404 void (*write_txd)(struct happy_meal_txd *, u32, u32); 406 void (*write_txd)(struct happy_meal_txd *, u32, u32);
405 void (*write_rxd)(struct happy_meal_rxd *, u32, u32); 407 void (*write_rxd)(struct happy_meal_rxd *, u32, u32);
406 u32 (*dma_map)(void *, void *, long, int); 408 u32 (*dma_map)(void *, void *, long, int);