[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [microblaze-uclinux] SMSC LAN91C111



Hi Hans,

At Tue, 9 Mar 2004 15:58:26 -0700,
Hans Meyer wrote:
[...]
> Now I want to get the SMSC LAN91C111 lan chip to work. ..my choice of an
> affordable solution without $$$s for the license..
> I was happy to see that the driver for that chip is actually listed in the
> configuration.
> But after including the driver the network didn't work. I take it that there
> is some place where I need to map the hardware address of the LAN chip into
> the configuration?
> Is there anybody that has used this MAC/PHY already to point me in the right
> direction? Or are experiences with porting other MAC/PHY's applicable?

i haven't made it as generic as i want but here is a preliminary patch
you can look at if you wanna make smc91111.c work with microblaze,
well with SUZAKU in this case.

# if we have time, we should make generic big endian support in
# smc91111.c. suzaku_smc.h is really just a copy of mcfsmc.h

ps. next time you post, create a new thread instead of replying to
others.

regards,
--
         yashi

Index: smc91111.c
===================================================================
RCS file: /var/cvs/uClinux-2.4.x/drivers/net/smc91111.c,v
retrieving revision 1.6
diff -u -r1.6 smc91111.c
--- smc91111.c	2003/10/01 15:24:17	1.6
+++ smc91111.c	2004/03/23 01:47:50
@@ -86,6 +86,9 @@
 #include <asm/mcfsmc.h>
 #include <asm/coldfire.h>
 #include <asm/mcfsim.h>
+#elif defined(CONFIG_SUZAKU)
+#define CONFIG_SMC16BITONLY     1
+#include <asm/suzaku_smc.h>
 #else
 #include <asm/io.h>
 #endif
@@ -119,6 +122,7 @@
 # define USE_32_BIT 1
 #endif 
 
+#undef USE_32_BIT
 
 /*
  .the LAN91C111 can be at any of the following port addresses.  To change,
@@ -132,6 +136,9 @@
 static unsigned int smc_portlist[] = { 0x30600300, 0 };
 static unsigned int smc_irqlist[]  = { 68, 0 };
 unsigned char smc_defethaddr[] = { 0x00, 0xd0, 0xcf, 0x00, 0x01, 0x21 };
+#elif defined(CONFIG_SUZAKU)
+static unsigned int smc_portlist[] = { 0xffe00300, 0 };
+static unsigned int smc_irqlist[]  = { 2, 0 };
 #else
 static unsigned int smc_portlist[] __initdata =
    { 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
@@ -1008,7 +1015,7 @@
 
 	SET_MODULE_OWNER (dev);
 
-#if defined(CONFIG_COLDFIRE)
+#if defined(CONFIG_COLDFIRE) || defined(CONFIG_SUZAKU)
 {
 	static int index = 0;
 
@@ -1214,7 +1221,7 @@
 	   so I can access the base address register */
 	SMC_SELECT_BANK(1);
 	base_address_register = inw( ioaddr + BASE_REG );
-#if defined(CONFIG_M5249C3) || defined(CONFIG_GILBARCONAP) || defined(CONFIG_RTE_CB_ME2)
+#if defined(CONFIG_M5249C3) || defined(CONFIG_GILBARCONAP) || defined(CONFIG_RTE_CB_ME2) || defined(CONFIG_SUZAKU)
 	if ((ioaddr & 0xfff) != (base_address_register >> 3 & 0x3E0))
 #else
 	if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) )
@@ -1330,6 +1337,7 @@
 	/* now, reset the chip, and put it into a known state */
 	smc_reset( dev );
 
+#if !defined(CONFIG_SUZAKU)
 	/*
 	 . If dev->irq is 0, then the device has to be banged on to see
 	 . what the IRQ is.
@@ -1371,6 +1379,7 @@
 		 */
 		dev->irq = 9;
 	}
+#endif
 
 	/* now, print out the card info, in a short format.. */
 

Attachment: suzaku_smc.h
Description: Binary data