diff options
Diffstat (limited to 'drivers/net/mac8390.c')
| -rw-r--r-- | drivers/net/mac8390.c | 57 | 
1 files changed, 29 insertions, 28 deletions
diff --git a/drivers/net/mac8390.c b/drivers/net/mac8390.c index 1136c9a22b6..3832fa4961d 100644 --- a/drivers/net/mac8390.c +++ b/drivers/net/mac8390.c @@ -157,6 +157,8 @@ static void dayna_block_output(struct net_device *dev, int count,  #define memcpy_fromio(a, b, c)	memcpy((a), (void *)(b), (c))  #define memcpy_toio(a, b, c)	memcpy((void *)(a), (b), (c)) +#define memcmp_withio(a, b, c)	memcmp((a), (void *)(b), (c)) +  /* Slow Sane (16-bit chunk memory read/write) Cabletron uses this */  static void slow_sane_get_8390_hdr(struct net_device *dev,  				   struct e8390_pkt_hdr *hdr, int ring_page); @@ -164,8 +166,8 @@ static void slow_sane_block_input(struct net_device *dev, int count,  				  struct sk_buff *skb, int ring_offset);  static void slow_sane_block_output(struct net_device *dev, int count,  				   const unsigned char *buf, int start_page); -static void word_memcpy_tocard(void *tp, const void *fp, int count); -static void word_memcpy_fromcard(void *tp, const void *fp, int count); +static void word_memcpy_tocard(unsigned long tp, const void *fp, int count); +static void word_memcpy_fromcard(void *tp, unsigned long fp, int count);  static enum mac8390_type __init mac8390_ident(struct nubus_dev *dev)  { @@ -245,9 +247,9 @@ static enum mac8390_access __init mac8390_testio(volatile unsigned long membase)  	unsigned long outdata = 0xA5A0B5B0;  	unsigned long indata =  0x00000000;  	/* Try writing 32 bits */ -	memcpy(membase, &outdata, 4); +	memcpy_toio(membase, &outdata, 4);  	/* Now compare them */ -	if (memcmp((char *)&outdata, (char *)membase, 4) == 0) +	if (memcmp_withio(&outdata, membase, 4) == 0)  		return ACCESS_32;  	/* Write 16 bit output */  	word_memcpy_tocard(membase, &outdata, 4); @@ -554,7 +556,7 @@ static int __init mac8390_initdev(struct net_device *dev,  	case MAC8390_APPLE:  		switch (mac8390_testio(dev->mem_start)) {  		case ACCESS_UNKNOWN: -			pr_info("Don't know how to access card memory!\n"); +			pr_err("Don't know how to access card memory!\n");  			return -ENODEV;  			break; @@ -641,12 +643,13 @@ static int __init mac8390_initdev(struct net_device *dev,  static int mac8390_open(struct net_device *dev)  { +	int err; +  	__ei_open(dev); -	if (request_irq(dev->irq, __ei_interrupt, 0, "8390 Ethernet", dev)) { -		pr_info("%s: unable to get IRQ %d.\n", dev->name, dev->irq); -		return -EAGAIN; -	} -	return 0; +	err = request_irq(dev->irq, __ei_interrupt, 0, "8390 Ethernet", dev); +	if (err) +		pr_err("%s: unable to get IRQ %d\n", dev->name, dev->irq); +	return err;  }  static int mac8390_close(struct net_device *dev) @@ -731,7 +734,7 @@ static void sane_get_8390_hdr(struct net_device *dev,  			      struct e8390_pkt_hdr *hdr, int ring_page)  {  	unsigned long hdr_start = (ring_page - WD_START_PG)<<8; -	memcpy_fromio((void *)hdr, (char *)dev->mem_start + hdr_start, 4); +	memcpy_fromio(hdr, dev->mem_start + hdr_start, 4);  	/* Fix endianness */  	hdr->count = swab16(hdr->count);  } @@ -745,14 +748,13 @@ static void sane_block_input(struct net_device *dev, int count,  	if (xfer_start + count > ei_status.rmem_end) {  		/* We must wrap the input move. */  		int semi_count = ei_status.rmem_end - xfer_start; -		memcpy_fromio(skb->data, (char *)dev->mem_start + xfer_base, +		memcpy_fromio(skb->data, dev->mem_start + xfer_base,  			      semi_count);  		count -= semi_count; -		memcpy_toio(skb->data + semi_count, -			    (char *)ei_status.rmem_start, count); -	} else { -		memcpy_fromio(skb->data, (char *)dev->mem_start + xfer_base, +		memcpy_fromio(skb->data + semi_count, ei_status.rmem_start,  			      count); +	} else { +		memcpy_fromio(skb->data, dev->mem_start + xfer_base, count);  	}  } @@ -761,7 +763,7 @@ static void sane_block_output(struct net_device *dev, int count,  {  	long shmem = (start_page - WD_START_PG)<<8; -	memcpy_toio((char *)dev->mem_start + shmem, buf, count); +	memcpy_toio(dev->mem_start + shmem, buf, count);  }  /* dayna block input/output */ @@ -812,7 +814,7 @@ static void slow_sane_get_8390_hdr(struct net_device *dev,  				   int ring_page)  {  	unsigned long hdr_start = (ring_page - WD_START_PG)<<8; -	word_memcpy_fromcard(hdr, (char *)dev->mem_start + hdr_start, 4); +	word_memcpy_fromcard(hdr, dev->mem_start + hdr_start, 4);  	/* Register endianism - fix here rather than 8390.c */  	hdr->count = (hdr->count&0xFF)<<8|(hdr->count>>8);  } @@ -826,15 +828,14 @@ static void slow_sane_block_input(struct net_device *dev, int count,  	if (xfer_start + count > ei_status.rmem_end) {  		/* We must wrap the input move. */  		int semi_count = ei_status.rmem_end - xfer_start; -		word_memcpy_fromcard(skb->data, -				     (char *)dev->mem_start + xfer_base, +		word_memcpy_fromcard(skb->data, dev->mem_start + xfer_base,  				     semi_count);  		count -= semi_count;  		word_memcpy_fromcard(skb->data + semi_count, -				     (char *)ei_status.rmem_start, count); +				     ei_status.rmem_start, count);  	} else { -		word_memcpy_fromcard(skb->data, -				     (char *)dev->mem_start + xfer_base, count); +		word_memcpy_fromcard(skb->data, dev->mem_start + xfer_base, +				     count);  	}  } @@ -843,12 +844,12 @@ static void slow_sane_block_output(struct net_device *dev, int count,  {  	long shmem = (start_page - WD_START_PG)<<8; -	word_memcpy_tocard((char *)dev->mem_start + shmem, buf, count); +	word_memcpy_tocard(dev->mem_start + shmem, buf, count);  } -static void word_memcpy_tocard(void *tp, const void *fp, int count) +static void word_memcpy_tocard(unsigned long tp, const void *fp, int count)  { -	volatile unsigned short *to = tp; +	volatile unsigned short *to = (void *)tp;  	const unsigned short *from = fp;  	count++; @@ -858,10 +859,10 @@ static void word_memcpy_tocard(void *tp, const void *fp, int count)  		*to++ = *from++;  } -static void word_memcpy_fromcard(void *tp, const void *fp, int count) +static void word_memcpy_fromcard(void *tp, unsigned long fp, int count)  {  	unsigned short *to = tp; -	const volatile unsigned short *from = fp; +	const volatile unsigned short *from = (const void *)fp;  	count++;  	count /= 2;  |