From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dirk Behme Date: Fri, 25 Dec 2009 19:57:55 +0100 Subject: [U-Boot] Remove board specific code from ENC28J60 network driver? In-Reply-To: <200912201505.51636.vapier@gentoo.org> References: <4B2E7B5B.3050603@googlemail.com> <200912201505.51636.vapier@gentoo.org> Message-ID: <4B350B33.3040702@googlemail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 20.12.2009 21:05, Mike Frysinger wrote: > On Sunday 20 December 2009 14:30:35 Dirk Behme wrote: >> For TI OMAP3 Beagle based Zippy expansion board from TinCanTools [1] >> I'm currently looking into reusing spi based ENC28J60 network driver >> >> drivers/net/enc28j60.c >> >> It seems to me that it uses LPC2292 specific macros >> >> IO1CLR, IO1SET and IO1DIR >> >> These macros are defined in >> >> asm-arm/arch-lpc2292/lpc2292_registers.h > > this is why we didnt bother trying to get this part working on Blackfin boards > under u-boot. it works fine for us under Linux, but the u-boot driver is a > joke. > >> From enc28j60.c: >> >> ... >> #define enc_enable() PUT32(IO1CLR, ENC_SPI_SLAVE_CS) >> #define enc_disable() PUT32(IO1SET, ENC_SPI_SLAVE_CS) >> ... >> >> ... >> /* configure GPIO */ >> (*((volatile unsigned long *) IO1DIR)) |= ENC_SPI_SLAVE_CS; >> (*((volatile unsigned long *) IO1DIR)) |= ENC_RESET; >> >> /* CS and RESET active low */ >> PUT32 (IO1SET, ENC_SPI_SLAVE_CS); >> PUT32 (IO1SET, ENC_RESET); >> ... >> >> Anybody with an idea how to move this code to some (LPC2292?) board >> specific files to make enc28j60.c more generic to be able to reuse it >> on other boards? > > unless the maintainers of the LPC2292 board are willing to help, i'd say just > avoid the issue: > - rename/move this driver to indicate it is specific to LPC2292 > - create a new driver based on the old one using the common SPI framework > > once it starts using the common SPI framework, i should be able to easily help > with testing on Blackfin boards. we have a little addon card that lets us > hook it up to a bunch of different boards. I started to convert the enc28j60.c to common SPI framework. Do you like to have a look at attachment (and maybe test it?)? It is compile tested only. And for the moment it just re-uses the existing driver. When we know that it basically works this way, doing it in a clean way as you describe above would be the next step. CONFIG_NET_MULTI is still missing, too. In your config file you have to set and configure #define CONFIG_xxx_SPI #define CONFIG_ENC28J60 #define CONFIG_ENC28J60_SPI_BUS 0 #define CONFIG_ENC28J60_SPI_CS 0 #define CONFIG_ENC28J60_SPI_CLK 1000000 #define CONFIG_CMD_NET for your board. Opinions, ideas, proposals etc? Best regards Dirk -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: enc28j60_convert_to_spi_framework_patch.txt Url: http://lists.denx.de/pipermail/u-boot/attachments/20091225/87b42fb5/attachment.txt