diff options
| author | Wolfgang Denk <wd@pollux.denx.de> | 2005-08-06 01:56:59 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@pollux.denx.de> | 2005-08-06 01:56:59 +0200 | 
| commit | d06a5f7ebfdc6c5d27dc0e6acf441c0916eee176 (patch) | |
| tree | 5dc810aab913b8c7474df77528732f25e192e9e8 | |
| parent | f901a83b70a586cef89682843e2d16d6c7b2288a (diff) | |
| download | olio-uboot-2014.01-d06a5f7ebfdc6c5d27dc0e6acf441c0916eee176.tar.xz olio-uboot-2014.01-d06a5f7ebfdc6c5d27dc0e6acf441c0916eee176.zip | |
Add support for Altera NIOS DK1C20 board
Patch by Shlomo Kut, 13 Dec 2004
| -rw-r--r-- | CHANGELOG | 3 | ||||
| -rw-r--r-- | board/altera/dk1c20/dk1c20.c | 29 | ||||
| -rw-r--r-- | fs/fat/fat.c | 3 | ||||
| -rw-r--r-- | include/asm-nios/io.h | 101 | ||||
| -rw-r--r-- | include/configs/DK1C20.h | 28 | 
5 files changed, 161 insertions, 3 deletions
| @@ -2,6 +2,9 @@  Changes for U-Boot 1.1.3:  ====================================================================== +* Add support for Altera NIOS DK1C20 board +  Patch by Shlomo Kut, 13 Dec 2004 +  * Add support for ep8248 board    Patch by Yuli Barcohen, 12 Dec 2004 diff --git a/board/altera/dk1c20/dk1c20.c b/board/altera/dk1c20/dk1c20.c index fd8570682..98ee7a71c 100644 --- a/board/altera/dk1c20/dk1c20.c +++ b/board/altera/dk1c20/dk1c20.c @@ -2,6 +2,9 @@   * (C) Copyright 2003, Psyent Corporation <www.psyent.com>   * Scott McNutt <smcnutt@psyent.com>   * + * CompactFlash/IDE: + * (C) Copyright 2004, Shlomo Kut <skut@vyyo.com> + *   * See file CREDITS for list of people who contributed to this   * project.   * @@ -22,6 +25,7 @@   */  #include <common.h> +#include <nios-io.h>  #if	defined(CONFIG_SEVENSEG)  #include "../common/sevenseg.h"  #endif @@ -50,3 +54,28 @@ long int initdram (int board_type)  {  	return (0);  } + +#if (CONFIG_COMMANDS & CFG_CMD_IDE) +int ide_preinit (void) +{ +	nios_pio_t *present = (nios_pio_t *) CFG_CF_PRESENT; +	nios_pio_t *power = (nios_pio_t *) CFG_CF_POWER; +	nios_pio_t *atasel = (nios_pio_t *) CFG_CF_ATASEL; + +	/* setup data direction registers */ +	present->direction = NIOS_PIO_IN; +	power->direction = NIOS_PIO_OUT; +	atasel->direction = NIOS_PIO_OUT; + +	/* Check for presence of card */ +	if (present->data) +		return 1; +	printf ("Ok\n"); + +	/* Finish setup */ +	power->data = 1;	/* Turn on power FET */ +	atasel->data = 0;	/* Put in ATA mode */ + +	return 0; +} +#endif /* CONFIG_COMMANDS & CFG_CMD_IDE */ diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 7f991b25d..1a40a700c 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -722,6 +722,9 @@ long  do_fat_read (const char *filename, void *buffer, unsigned long maxsize,  	     int dols)  { +#if CONFIG_NIOS /* NIOS CPU cannot access big automatic arrays */ +    static +#endif      char fnamecopy[2048];      boot_sector bs;      volume_info volinfo; diff --git a/include/asm-nios/io.h b/include/asm-nios/io.h index 3cdb7039f..07499d966 100644 --- a/include/asm-nios/io.h +++ b/include/asm-nios/io.h @@ -1 +1,100 @@ -/*FIXME: Implement this! */ +/* + * (C) Copyright 2003, Psyent Corporation <www.psyent.com> + * Scott McNutt <smcnutt@psyent.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef __ASM_NIOS_IO_H_ +#define __ASM_NIOS_IO_H_ + +#define readb(addr)\ +	({unsigned char val;\ +	 asm volatile(  "	pfxio	0		\n"\ +		 	"	ld	%0, [%1]	\n"\ +			"	ext8d	%0, %1		\n"\ +			:"=r"(val) : "r" (addr)); val;}) + +#define readw(addr)\ +	({unsigned short val;\ +	 asm volatile(  "	pfxio	0		\n"\ +		 	"	ld	%0, [%1]	\n"\ +			"	ext16d	%0, %1		\n"\ +			:"=r"(val) : "r" (addr)); val;}) + +#define readl(addr)\ +	({unsigned long val;\ +	 asm volatile(  "	pfxio	0		\n"\ +		 	"	ld	%0, [%1]	\n"\ +			:"=r"(val) : "r" (addr)); val;}) + +#define writeb(addr,val)\ +	asm volatile (	"	fill8	%%r0, %1	\n"\ +			"	st8d	[%0], %%r0	\n"\ +			: : "r" (addr), "r" (val) : "r0") + +#define writew(addr,val)\ +	asm volatile (	"	fill16	%%r0, %1	\n"\ +			"	st16d	[%0], %%r0	\n"\ +			: : "r" (addr), "r" (val) : "r0") + +#define writel(addr,val)\ +	asm volatile (	"	st	[%0], %1	\n"\ +			: : "r" (addr), "r" (val)) + +#define inb(addr)	readb(addr) +#define inw(addr)	readw(addr) +#define inl(addr)	readl(addr) +#define outb(val,addr)	writeb(addr,val) +#define outw(val,addr)	writew(addr,val) +#define outl(val,addr)	writel(addr,val) + +static inline void insb (unsigned long port, void *dst, unsigned long count) +{ +	unsigned char *p = dst; +	while (count--) *p++ = inb (port); +} +static inline void insw (unsigned long port, void *dst, unsigned long count) +{ +	unsigned short *p = dst; +	while (count--) *p++ = inw (port); +} +static inline void insl (unsigned long port, void *dst, unsigned long count) +{ +	unsigned long *p = dst; +	while (count--) *p++ = inl (port); +} + +static inline void outsb (unsigned long port, const void *src, unsigned long count) +{ +	const unsigned char *p = src; +	while (count--) outb (*p++, port); +} + +static inline void outsw (unsigned long port, const void *src, unsigned long count) +{ +	const unsigned short *p = src; +	while (count--) outw (*p++, port); +} +static inline void outsl (unsigned long port, const void *src, unsigned long count) +{ +	const unsigned long *p = src; +	while (count--) outl (*p++, port); +} + +#endif /* __ASM_NIOS_IO_H_ */ diff --git a/include/configs/DK1C20.h b/include/configs/DK1C20.h index b758e94e7..14a09b6dd 100644 --- a/include/configs/DK1C20.h +++ b/include/configs/DK1C20.h @@ -3,6 +3,9 @@   * Scott McNutt <smcnutt@psyent.com>   * Stephan Linz <linz@li-pro.net>   * + * CompactFlash/IDE: + * (C) Copyright 2004, Shlomo Kut <skut@vyyo.com> + *   * See file CREDITS for list of people who contributed to this   * project.   * @@ -457,11 +460,9 @@  				 CFG_CMD_DTT	| \  				 CFG_CMD_EEPROM | \  				 CFG_CMD_ELF    | \ -				 CFG_CMD_FAT	| \  				 CFG_CMD_FDC	| \  				 CFG_CMD_FDOS	| \  				 CFG_CMD_HWFLOW	| \ -				 CFG_CMD_IDE	| \  				 CFG_CMD_I2C	| \  				 CFG_CMD_JFFS2	| \  				 CFG_CMD_KGDB	| \ @@ -482,6 +483,29 @@  #include <cmd_confdefs.h>  /*------------------------------------------------------------------------ + * COMPACT FLASH + *----------------------------------------------------------------------*/ +#if (CONFIG_COMMANDS & CFG_CMD_IDE) +#define CONFIG_IDE_PREINIT			/* Implement id_preinit	*/ +#define CFG_IDE_MAXBUS		1		/* 1 IDE bus		*/ +#define CFG_IDE_MAXDEVICE	1		/* 1 drive per IDE bus	*/ + +#define CFG_ATA_BASE_ADDR	0x00920a00	/* IDE/ATA base addr	*/ +#define CFG_ATA_IDE0_OFFSET	0x0000		/* IDE0 offset		*/ +#define CFG_ATA_DATA_OFFSET	0x0040		/* Data IO offset	*/ +#define CFG_ATA_REG_OFFSET	0x0040		/* Register offset	*/ +#define CFG_ATA_ALT_OFFSET	0x0100		/* Alternate reg offset	*/ +#define CFG_ATA_STRIDE          4		/* Width betwix addrs	*/ +#define CONFIG_DOS_PARTITION + +/* Board-specific cf regs */ +#define CFG_CF_PRESENT		0x009209b0	/* CF Present PIO base	*/ +#define CFG_CF_POWER		0x009209c0	/* CF Power FET PIO base*/ +#define CFG_CF_ATASEL		0x009209d0	/* CF ATASEL PIO base	*/ + +#endif /* CONFIG_COMMANDS & CFG_CMD_IDE */ + +/*------------------------------------------------------------------------   * KGDB   *----------------------------------------------------------------------*/  #if (CONFIG_COMMANDS & CFG_CMD_KGDB) |