diff options
| author | Pavel Herrmann <morpheus.ibis@gmail.com> | 2012-10-09 07:01:56 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-10-17 07:59:08 -0700 | 
| commit | 8d1165e11a7aad00a2bbb05f20bacf021f6d1c12 (patch) | |
| tree | 0f87522d48fc98c0b67c6bf9482cb9efaad67537 | |
| parent | 94fa029a6d1fcf58c4cecc46326f766425bdb918 (diff) | |
| download | olio-uboot-2014.01-8d1165e11a7aad00a2bbb05f20bacf021f6d1c12.tar.xz olio-uboot-2014.01-8d1165e11a7aad00a2bbb05f20bacf021f6d1c12.zip | |
split mpc8xx hooks from cmd_ide.c
move most of mpc8xx hooks from cmd_ide.c into ide_preinit() and newly created
ide_init_postreset() (invoked after calling ide_reset after ide_preinit),
some cleanup to make checkpatch happy, enable IDE init hooks in configs of
affected boards.
confusingly, these hooks are used by more than just mpc8xx-based boards, and
therefore are placed in arch/ppc/lib/
note: checkpatch still emits warnings about using volatile
Signed-off-by: Pavel Herrmann <morpheus.ibis@gmail.com>
40 files changed, 287 insertions, 183 deletions
| diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index 965f9ea4a..808021c42 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile @@ -50,6 +50,7 @@ COBJS-y	+= cache.o  COBJS-y	+= extable.o  COBJS-y	+= interrupts.o  COBJS-$(CONFIG_CMD_KGDB) += kgdb.o +COBJS-${CONFIG_CMD_IDE} += ide.o  COBJS-y	+= time.o  # Workaround for local bus unaligned access problems diff --git a/arch/powerpc/lib/ide.c b/arch/powerpc/lib/ide.c new file mode 100644 index 000000000..139a94a5c --- /dev/null +++ b/arch/powerpc/lib/ide.c @@ -0,0 +1,201 @@ +/* + * (C) Copyright 2000-2011 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + * + */ + +/* Code taken from cmd_ide.c */ +#include <common.h> +#include <ata.h> +#include "ide.h" + +#ifdef CONFIG_IDE_8xx_DIRECT +#include <mpc8xx.h> +#include <pcmcia.h> +DECLARE_GLOBAL_DATA_PTR; + +/* Timings for IDE Interface + * + * SETUP / LENGTH / HOLD - cycles valid for 50 MHz clk + * 70	   165	    30	   PIO-Mode 0, [ns] + *  4	     9	     2		       [Cycles] + * 50	   125	    20	   PIO-Mode 1, [ns] + *  3	     7	     2		       [Cycles] + * 30	   100	    15	   PIO-Mode 2, [ns] + *  2	     6	     1		       [Cycles] + * 30	    80	    10	   PIO-Mode 3, [ns] + *  2	     5	     1		       [Cycles] + * 25	    70	    10	   PIO-Mode 4, [ns] + *  2	     4	     1		       [Cycles] + */ + +static const pio_config_t pio_config_ns[IDE_MAX_PIO_MODE+1] = { +    /*  Setup  Length  Hold  */ +	{ 70,	165,	30 },		/* PIO-Mode 0, [ns]	*/ +	{ 50,	125,	20 },		/* PIO-Mode 1, [ns]	*/ +	{ 30,	101,	15 },		/* PIO-Mode 2, [ns]	*/ +	{ 30,	 80,	10 },		/* PIO-Mode 3, [ns]	*/ +	{ 25,	 70,	10 },		/* PIO-Mode 4, [ns]	*/ +}; + +static pio_config_t pio_config_clk[IDE_MAX_PIO_MODE+1]; + +#ifndef CONFIG_SYS_PIO_MODE +#define CONFIG_SYS_PIO_MODE	0	/* use a relaxed default */ +#endif +static int pio_mode = CONFIG_SYS_PIO_MODE; + +/* Make clock cycles and always round up */ + +#define PCMCIA_MK_CLKS(t, T) (((t) * (T) + 999U) / 1000U) + +static void set_pcmcia_timing(int pmode) +{ +	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; +	volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia); +	ulong timings; + +	debug("Set timing for PIO Mode %d\n", pmode); + +	timings = PCMCIA_SHT(pio_config_clk[pmode].t_hold) +		| PCMCIA_SST(pio_config_clk[pmode].t_setup) +		| PCMCIA_SL(pio_config_clk[pmode].t_length); + +	/* +	 * IDE 0 +	 */ +	pcmp->pcmc_pbr0 = CONFIG_SYS_PCMCIA_PBR0; +#if (CONFIG_SYS_PCMCIA_POR0 != 0) +	pcmp->pcmc_por0 = CONFIG_SYS_PCMCIA_POR0 | timings; +#else +	pcmp->pcmc_por0 = CONFIG_SYS_PCMCIA_POR0; +#endif +	debug("PBR0: %08x  POR0: %08x\n", pcmp->pcmc_pbr0, pcmp->pcmc_por0); + +	pcmp->pcmc_pbr1 = CONFIG_SYS_PCMCIA_PBR1; +#if (CONFIG_SYS_PCMCIA_POR1 != 0) +	pcmp->pcmc_por1 = CONFIG_SYS_PCMCIA_POR1 | timings; +#else +	pcmp->pcmc_por1 = CONFIG_SYS_PCMCIA_POR1; +#endif +	debug("PBR1: %08x  POR1: %08x\n", pcmp->pcmc_pbr1, pcmp->pcmc_por1); + +	pcmp->pcmc_pbr2 = CONFIG_SYS_PCMCIA_PBR2; +#if (CONFIG_SYS_PCMCIA_POR2 != 0) +	pcmp->pcmc_por2 = CONFIG_SYS_PCMCIA_POR2 | timings; +#else +	pcmp->pcmc_por2 = CONFIG_SYS_PCMCIA_POR2; +#endif +	debug("PBR2: %08x  POR2: %08x\n", pcmp->pcmc_pbr2, pcmp->pcmc_por2); + +	pcmp->pcmc_pbr3 = CONFIG_SYS_PCMCIA_PBR3; +#if (CONFIG_SYS_PCMCIA_POR3 != 0) +	pcmp->pcmc_por3 = CONFIG_SYS_PCMCIA_POR3 | timings; +#else +	pcmp->pcmc_por3 = CONFIG_SYS_PCMCIA_POR3; +#endif +	debug("PBR3: %08x  POR3: %08x\n", pcmp->pcmc_pbr3, pcmp->pcmc_por3); + +	/* +	 * IDE 1 +	 */ +	pcmp->pcmc_pbr4 = CONFIG_SYS_PCMCIA_PBR4; +#if (CONFIG_SYS_PCMCIA_POR4 != 0) +	pcmp->pcmc_por4 = CONFIG_SYS_PCMCIA_POR4 | timings; +#else +	pcmp->pcmc_por4 = CONFIG_SYS_PCMCIA_POR4; +#endif +	debug("PBR4: %08x  POR4: %08x\n", pcmp->pcmc_pbr4, pcmp->pcmc_por4); + +	pcmp->pcmc_pbr5 = CONFIG_SYS_PCMCIA_PBR5; +#if (CONFIG_SYS_PCMCIA_POR5 != 0) +	pcmp->pcmc_por5 = CONFIG_SYS_PCMCIA_POR5 | timings; +#else +	pcmp->pcmc_por5 = CONFIG_SYS_PCMCIA_POR5; +#endif +	debug("PBR5: %08x  POR5: %08x\n", pcmp->pcmc_pbr5, pcmp->pcmc_por5); + +	pcmp->pcmc_pbr6 = CONFIG_SYS_PCMCIA_PBR6; +#if (CONFIG_SYS_PCMCIA_POR6 != 0) +	pcmp->pcmc_por6 = CONFIG_SYS_PCMCIA_POR6 | timings; +#else +	pcmp->pcmc_por6 = CONFIG_SYS_PCMCIA_POR6; +#endif +	debug("PBR6: %08x  POR6: %08x\n", pcmp->pcmc_pbr6, pcmp->pcmc_por6); + +	pcmp->pcmc_pbr7 = CONFIG_SYS_PCMCIA_PBR7; +#if (CONFIG_SYS_PCMCIA_POR7 != 0) +	pcmp->pcmc_por7 = CONFIG_SYS_PCMCIA_POR7 | timings; +#else +	pcmp->pcmc_por7 = CONFIG_SYS_PCMCIA_POR7; +#endif +	debug("PBR7: %08x  POR7: %08x\n", pcmp->pcmc_pbr7, pcmp->pcmc_por7); + +} + +int ide_preinit(void) +{ +	int i; +	/* Initialize PIO timing tables */ +	for (i = 0; i <= IDE_MAX_PIO_MODE; ++i) { +		pio_config_clk[i].t_setup = +			PCMCIA_MK_CLKS(pio_config_ns[i].t_setup, gd->bus_clk); +		pio_config_clk[i].t_length = +			PCMCIA_MK_CLKS(pio_config_ns[i].t_length, gd->bus_clk); +		pio_config_clk[i].t_hold = +			PCMCIA_MK_CLKS(pio_config_ns[i].t_hold, gd->bus_clk); +		debug("PIO Mode %d: setup=%2d ns/%d clk" "  len=%3d ns/%d clk" +			"  hold=%2d ns/%d clk\n", i, pio_config_ns[i].t_setup, +			pio_config_clk[i].t_setup, pio_config_ns[i].t_length, +			pio_config_clk[i].t_length, pio_config_ns[i].t_hold, +			pio_config_clk[i].t_hold); +	} + +	return 0; +} + +int ide_init_postreset(void) +{ +	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; +	volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia); + +	/* PCMCIA / IDE initialization for common mem space */ +	pcmp->pcmc_pgcrb = 0; + +	/* start in PIO mode 0 - most relaxed timings */ +	pio_mode = 0; +	set_pcmcia_timing(pio_mode); +	return 0; +} +#endif /* CONFIG_IDE_8xx_DIRECT */ + +#ifdef CONFIG_IDE_8xx_PCCARD +int ide_preinit(void) +{ +	ide_devices_found = 0; +	/* initialize the PCMCIA IDE adapter card */ +	pcmcia_on(); +	if (!ide_devices_found) +		return 1; +	udelay(1000000);/* 1 s */ +	return 0; +} +#endif diff --git a/arch/powerpc/lib/ide.h b/arch/powerpc/lib/ide.h new file mode 100644 index 000000000..9e8070291 --- /dev/null +++ b/arch/powerpc/lib/ide.h @@ -0,0 +1,31 @@ +/* + * (C) Copyright 2012 + * Pavel Herrmann <morpheus.ibis@gmail.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 _MPC8XX_IDE_H_ +#define _MPC8XX_IDE_H_ 1 + +#ifdef CONFIG_IDE_8xx_PCCARD +int pcmcia_on(void); +extern int ide_devices_found; +#endif +#endif diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 11e9eacf7..9bbdc5deb 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -53,10 +53,6 @@  # include <status_led.h>  #endif -#ifdef CONFIG_IDE_8xx_DIRECT -DECLARE_GLOBAL_DATA_PTR; -#endif -  #ifdef __PPC__  # define EIEIO		__asm__ volatile ("eieio")  # define SYNC		__asm__ volatile ("sync") @@ -65,45 +61,6 @@ DECLARE_GLOBAL_DATA_PTR;  # define SYNC		/* nothing */  #endif -#ifdef CONFIG_IDE_8xx_DIRECT -/* Timings for IDE Interface - * - * SETUP / LENGTH / HOLD - cycles valid for 50 MHz clk - * 70	   165	    30	   PIO-Mode 0, [ns] - *  4	     9	     2		       [Cycles] - * 50	   125	    20	   PIO-Mode 1, [ns] - *  3	     7	     2		       [Cycles] - * 30	   100	    15	   PIO-Mode 2, [ns] - *  2	     6	     1		       [Cycles] - * 30	    80	    10	   PIO-Mode 3, [ns] - *  2	     5	     1		       [Cycles] - * 25	    70	    10	   PIO-Mode 4, [ns] - *  2	     4	     1		       [Cycles] - */ - -const static pio_config_t pio_config_ns [IDE_MAX_PIO_MODE+1] = -{ -    /*	Setup  Length  Hold  */ -	{ 70,	165,	30 },		/* PIO-Mode 0, [ns]	*/ -	{ 50,	125,	20 },		/* PIO-Mode 1, [ns]	*/ -	{ 30,	101,	15 },		/* PIO-Mode 2, [ns]	*/ -	{ 30,	 80,	10 },		/* PIO-Mode 3, [ns]	*/ -	{ 25,	 70,	10 },		/* PIO-Mode 4, [ns]	*/ -}; - -static pio_config_t pio_config_clk [IDE_MAX_PIO_MODE+1]; - -#ifndef	CONFIG_SYS_PIO_MODE -#define	CONFIG_SYS_PIO_MODE	0		/* use a relaxed default */ -#endif -static int pio_mode = CONFIG_SYS_PIO_MODE; - -/* Make clock cycles and always round up */ - -#define PCMCIA_MK_CLKS( t, T ) (( (t) * (T) + 999U ) / 1000U ) - -#endif /* CONFIG_IDE_8xx_DIRECT */ -  /* ------------------------------------------------------------------------- */  /* Current I/O Device	*/ @@ -166,10 +123,6 @@ ulong atapi_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer);  #endif -#ifdef CONFIG_IDE_8xx_DIRECT -static void set_pcmcia_timing (int pmode); -#endif -  /* ------------------------------------------------------------------------- */  int do_ide(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) @@ -392,22 +345,14 @@ inline int ide_set_piomode(int pio_mode)  void ide_init(void)  { - -#ifdef CONFIG_IDE_8xx_DIRECT -	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; -	volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia); -#endif  	unsigned char c;  	int i, bus;  #ifdef CONFIG_IDE_8xx_PCCARD -	extern int pcmcia_on(void);  	extern int ide_devices_found;	/* Initialized in check_ide_device() */  #endif /* CONFIG_IDE_8xx_PCCARD */  #ifdef CONFIG_IDE_PREINIT -	extern int ide_preinit(void); -  	WATCHDOG_RESET();  	if (ide_preinit()) { @@ -416,40 +361,8 @@ void ide_init(void)  	}  #endif /* CONFIG_IDE_PREINIT */ -#ifdef CONFIG_IDE_8xx_PCCARD -	extern int pcmcia_on(void); -	extern int ide_devices_found;	/* Initialized in check_ide_device() */ -  	WATCHDOG_RESET(); -	ide_devices_found = 0; -	/* initialize the PCMCIA IDE adapter card */ -	pcmcia_on(); -	if (!ide_devices_found) -		return; -	udelay(1000000);	/* 1 s */ -#endif /* CONFIG_IDE_8xx_PCCARD */ - -	WATCHDOG_RESET(); - -#ifdef CONFIG_IDE_8xx_DIRECT -	/* Initialize PIO timing tables */ -	for (i = 0; i <= IDE_MAX_PIO_MODE; ++i) { -		pio_config_clk[i].t_setup = -			PCMCIA_MK_CLKS(pio_config_ns[i].t_setup, gd->bus_clk); -		pio_config_clk[i].t_length = -			PCMCIA_MK_CLKS(pio_config_ns[i].t_length, -				       gd->bus_clk); -		pio_config_clk[i].t_hold = -			PCMCIA_MK_CLKS(pio_config_ns[i].t_hold, gd->bus_clk); -		debug("PIO Mode %d: setup=%2d ns/%d clk" "  len=%3d ns/%d clk" -		      "  hold=%2d ns/%d clk\n", i, pio_config_ns[i].t_setup, -		      pio_config_clk[i].t_setup, pio_config_ns[i].t_length, -		      pio_config_clk[i].t_length, pio_config_ns[i].t_hold, -		      pio_config_clk[i].t_hold); -	} -#endif /* CONFIG_IDE_8xx_DIRECT */ -  	/*  	 * Reset the IDE just to be sure.  	 * Light LED's to show @@ -459,14 +372,14 @@ void ide_init(void)  	/* ATAPI Drives seems to need a proper IDE Reset */  	ide_reset(); -#ifdef CONFIG_IDE_8xx_DIRECT -	/* PCMCIA / IDE initialization for common mem space */ -	pcmp->pcmc_pgcrb = 0; +#ifdef CONFIG_IDE_INIT_POSTRESET +	WATCHDOG_RESET(); -	/* start in PIO mode 0 - most relaxed timings */ -	pio_mode = 0; -	set_pcmcia_timing(pio_mode); -#endif /* CONFIG_IDE_8xx_DIRECT */ +	if (ide_init_postreset()) { +		puts("ide_preinit_postreset failed\n"); +		return; +	} +#endif /* CONFIG_IDE_INIT_POSTRESET */  	/*  	 * Wait for IDE to get ready. @@ -568,95 +481,6 @@ block_dev_desc_t *ide_get_dev(int dev)  }  #endif - -#ifdef CONFIG_IDE_8xx_DIRECT - -static void set_pcmcia_timing(int pmode) -{ -	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; -	volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia); -	ulong timings; - -	debug("Set timing for PIO Mode %d\n", pmode); - -	timings = PCMCIA_SHT(pio_config_clk[pmode].t_hold) -		| PCMCIA_SST(pio_config_clk[pmode].t_setup) -		| PCMCIA_SL(pio_config_clk[pmode].t_length); - -	/* -	 * IDE 0 -	 */ -	pcmp->pcmc_pbr0 = CONFIG_SYS_PCMCIA_PBR0; -	pcmp->pcmc_por0 = CONFIG_SYS_PCMCIA_POR0 -#if (CONFIG_SYS_PCMCIA_POR0 != 0) -		| timings -#endif -		; -	debug("PBR0: %08x  POR0: %08x\n", pcmp->pcmc_pbr0, pcmp->pcmc_por0); - -	pcmp->pcmc_pbr1 = CONFIG_SYS_PCMCIA_PBR1; -	pcmp->pcmc_por1 = CONFIG_SYS_PCMCIA_POR1 -#if (CONFIG_SYS_PCMCIA_POR1 != 0) -		| timings -#endif -		; -	debug("PBR1: %08x  POR1: %08x\n", pcmp->pcmc_pbr1, pcmp->pcmc_por1); - -	pcmp->pcmc_pbr2 = CONFIG_SYS_PCMCIA_PBR2; -	pcmp->pcmc_por2 = CONFIG_SYS_PCMCIA_POR2 -#if (CONFIG_SYS_PCMCIA_POR2 != 0) -		| timings -#endif -		; -	debug("PBR2: %08x  POR2: %08x\n", pcmp->pcmc_pbr2, pcmp->pcmc_por2); - -	pcmp->pcmc_pbr3 = CONFIG_SYS_PCMCIA_PBR3; -	pcmp->pcmc_por3 = CONFIG_SYS_PCMCIA_POR3 -#if (CONFIG_SYS_PCMCIA_POR3 != 0) -		| timings -#endif -		; -	debug("PBR3: %08x  POR3: %08x\n", pcmp->pcmc_pbr3, pcmp->pcmc_por3); - -	/* -	 * IDE 1 -	 */ -	pcmp->pcmc_pbr4 = CONFIG_SYS_PCMCIA_PBR4; -	pcmp->pcmc_por4 = CONFIG_SYS_PCMCIA_POR4 -#if (CONFIG_SYS_PCMCIA_POR4 != 0) -		| timings -#endif -		; -	debug("PBR4: %08x  POR4: %08x\n", pcmp->pcmc_pbr4, pcmp->pcmc_por4); - -	pcmp->pcmc_pbr5 = CONFIG_SYS_PCMCIA_PBR5; -	pcmp->pcmc_por5 = CONFIG_SYS_PCMCIA_POR5 -#if (CONFIG_SYS_PCMCIA_POR5 != 0) -		| timings -#endif -		; -	debug("PBR5: %08x  POR5: %08x\n", pcmp->pcmc_pbr5, pcmp->pcmc_por5); - -	pcmp->pcmc_pbr6 = CONFIG_SYS_PCMCIA_PBR6; -	pcmp->pcmc_por6 = CONFIG_SYS_PCMCIA_POR6 -#if (CONFIG_SYS_PCMCIA_POR6 != 0) -		| timings -#endif -		; -	debug("PBR6: %08x  POR6: %08x\n", pcmp->pcmc_pbr6, pcmp->pcmc_por6); - -	pcmp->pcmc_pbr7 = CONFIG_SYS_PCMCIA_PBR7; -	pcmp->pcmc_por7 = CONFIG_SYS_PCMCIA_POR7 -#if (CONFIG_SYS_PCMCIA_POR7 != 0) -		| timings -#endif -		; -	debug("PBR7: %08x  POR7: %08x\n", pcmp->pcmc_pbr7, pcmp->pcmc_por7); - -} - -#endif /* CONFIG_IDE_8xx_DIRECT */ -  /* ------------------------------------------------------------------------- */  /* We only need to swap data if we are running on a big endian cpu. */ diff --git a/include/configs/CPC45.h b/include/configs/CPC45.h index fc226f198..e102c365c 100644 --- a/include/configs/CPC45.h +++ b/include/configs/CPC45.h @@ -480,6 +480,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/ICU862.h b/include/configs/ICU862.h index 81f219c9b..b58b6f638 100644 --- a/include/configs/ICU862.h +++ b/include/configs/ICU862.h @@ -349,6 +349,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/IVML24.h b/include/configs/IVML24.h index f98a66bf2..092fcf064 100644 --- a/include/configs/IVML24.h +++ b/include/configs/IVML24.h @@ -318,6 +318,8 @@   * IDE/ATA stuff   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */ +#define CONFIG_IDE_INIT_POSTRESET	1	/* Use postreset IDE hook */  #define CONFIG_IDE_8xx_DIRECT	1	/* PCMCIA interface required	*/  #define CONFIG_IDE_RESET	1	/* reset for ide supported	*/ diff --git a/include/configs/IVMS8.h b/include/configs/IVMS8.h index d6e9b2381..38837cab4 100644 --- a/include/configs/IVMS8.h +++ b/include/configs/IVMS8.h @@ -312,6 +312,8 @@   * IDE/ATA stuff   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */ +#define CONFIG_IDE_INIT_POSTRESET	1	/* Use postreset IDE hook */  #define CONFIG_IDE_8xx_DIRECT	1	/* PCMCIA interface required	*/  #define CONFIG_IDE_RESET	1	/* reset for ide supported	*/ diff --git a/include/configs/KUP4K.h b/include/configs/KUP4K.h index c0035e65d..dae9b8c07 100644 --- a/include/configs/KUP4K.h +++ b/include/configs/KUP4K.h @@ -353,6 +353,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/KUP4X.h b/include/configs/KUP4X.h index 5084cccad..cceee9674 100644 --- a/include/configs/KUP4X.h +++ b/include/configs/KUP4X.h @@ -366,6 +366,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/MBX.h b/include/configs/MBX.h index e8d0cd775..7145cc444 100644 --- a/include/configs/MBX.h +++ b/include/configs/MBX.h @@ -276,6 +276,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/NETTA.h b/include/configs/NETTA.h index 604938d8b..074e01f0f 100644 --- a/include/configs/NETTA.h +++ b/include/configs/NETTA.h @@ -629,6 +629,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/NSCU.h b/include/configs/NSCU.h index 9f462f4b5..f4184fcd8 100644 --- a/include/configs/NSCU.h +++ b/include/configs/NSCU.h @@ -318,6 +318,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h index 9befacbab..868a0b804 100644 --- a/include/configs/R360MPI.h +++ b/include/configs/R360MPI.h @@ -329,6 +329,7 @@   */  #if 1 +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/RPXClassic.h b/include/configs/RPXClassic.h index b215c2d64..3595200c4 100644 --- a/include/configs/RPXClassic.h +++ b/include/configs/RPXClassic.h @@ -314,6 +314,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/RPXlite.h b/include/configs/RPXlite.h index 8ffb014fe..563abea95 100644 --- a/include/configs/RPXlite.h +++ b/include/configs/RPXlite.h @@ -249,6 +249,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/RPXlite_DW.h b/include/configs/RPXlite_DW.h index f8bcf0fae..67ab1e962 100644 --- a/include/configs/RPXlite_DW.h +++ b/include/configs/RPXlite_DW.h @@ -335,6 +335,7 @@   * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/RRvision.h b/include/configs/RRvision.h index 671d52168..e2b22f0ba 100644 --- a/include/configs/RRvision.h +++ b/include/configs/RRvision.h @@ -329,6 +329,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/SPD823TS.h b/include/configs/SPD823TS.h index cffeb1144..72ea217e5 100644 --- a/include/configs/SPD823TS.h +++ b/include/configs/SPD823TS.h @@ -303,6 +303,8 @@   * IDE/ATA stuff   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */ +#define CONFIG_IDE_INIT_POSTRESET	1	/* Use postreset IDE hook */  #define CONFIG_IDE_8xx_DIRECT	1	/* PCMCIA interface required	*/  #define CONFIG_IDE_LED		1	/* LED   for ide supported	*/  #define CONFIG_IDE_RESET	1	/* reset for ide supported	*/ diff --git a/include/configs/TK885D.h b/include/configs/TK885D.h index 4176c7fe5..623cb6636 100644 --- a/include/configs/TK885D.h +++ b/include/configs/TK885D.h @@ -343,6 +343,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/TQM823L.h b/include/configs/TQM823L.h index a01b4a6be..9fac5d15c 100644 --- a/include/configs/TQM823L.h +++ b/include/configs/TQM823L.h @@ -335,6 +335,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM823M.h b/include/configs/TQM823M.h index 1da4acd45..932f158b2 100644 --- a/include/configs/TQM823M.h +++ b/include/configs/TQM823M.h @@ -331,6 +331,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM850L.h b/include/configs/TQM850L.h index 1c054f0bc..eb08de281 100644 --- a/include/configs/TQM850L.h +++ b/include/configs/TQM850L.h @@ -320,6 +320,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM850M.h b/include/configs/TQM850M.h index 46066dfb4..bf3a76ca8 100644 --- a/include/configs/TQM850M.h +++ b/include/configs/TQM850M.h @@ -322,6 +322,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM855L.h b/include/configs/TQM855L.h index dd2da9410..43dd64356 100644 --- a/include/configs/TQM855L.h +++ b/include/configs/TQM855L.h @@ -324,6 +324,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM855M.h b/include/configs/TQM855M.h index 95bc4d964..e7fd2db28 100644 --- a/include/configs/TQM855M.h +++ b/include/configs/TQM855M.h @@ -359,6 +359,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM860L.h b/include/configs/TQM860L.h index 487666ce5..81e1b91ee 100644 --- a/include/configs/TQM860L.h +++ b/include/configs/TQM860L.h @@ -323,6 +323,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM860M.h b/include/configs/TQM860M.h index e8b77ea71..ed496a182 100644 --- a/include/configs/TQM860M.h +++ b/include/configs/TQM860M.h @@ -324,6 +324,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM862L.h b/include/configs/TQM862L.h index 334b7ecc1..1559336ec 100644 --- a/include/configs/TQM862L.h +++ b/include/configs/TQM862L.h @@ -327,6 +327,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM862M.h b/include/configs/TQM862M.h index 1e2ad40d9..61dcf627d 100644 --- a/include/configs/TQM862M.h +++ b/include/configs/TQM862M.h @@ -328,6 +328,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/TQM866M.h b/include/configs/TQM866M.h index a13c16aa5..7d0ae99cb 100644 --- a/include/configs/TQM866M.h +++ b/include/configs/TQM866M.h @@ -356,6 +356,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/TQM885D.h b/include/configs/TQM885D.h index 7df76fbf0..7941631b5 100644 --- a/include/configs/TQM885D.h +++ b/include/configs/TQM885D.h @@ -341,6 +341,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/atc.h b/include/configs/atc.h index 75f950b94..538a16752 100644 --- a/include/configs/atc.h +++ b/include/configs/atc.h @@ -482,6 +482,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/c2mon.h b/include/configs/c2mon.h index 566c42b6b..41ff00847 100644 --- a/include/configs/c2mon.h +++ b/include/configs/c2mon.h @@ -302,6 +302,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h index ab8605303..df4978161 100644 --- a/include/configs/lwmon.h +++ b/include/configs/lwmon.h @@ -494,6 +494,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/quantum.h b/include/configs/quantum.h index 4f246510f..072bd9c7e 100644 --- a/include/configs/quantum.h +++ b/include/configs/quantum.h @@ -317,6 +317,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card Adapter */  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE	 not supported	*/ diff --git a/include/configs/svm_sc8xx.h b/include/configs/svm_sc8xx.h index 91686d66a..2b24997f8 100644 --- a/include/configs/svm_sc8xx.h +++ b/include/configs/svm_sc8xx.h @@ -359,6 +359,8 @@  #undef	CONFIG_IDE_8xx_PCCARD		/* Use IDE with PC Card	Adapter	*/ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */ +#define CONFIG_IDE_INIT_POSTRESET	1	/* Use postreset IDE hook */  #define	CONFIG_IDE_8xx_DIRECT	1	/* Direct IDE    not supported	*/  #undef	CONFIG_IDE_LED			/* LED   for ide not supported	*/  #undef	CONFIG_IDE_RESET		/* reset for ide not supported	*/ diff --git a/include/configs/uc100.h b/include/configs/uc100.h index 8c8fb5ae6..450c98bd3 100644 --- a/include/configs/uc100.h +++ b/include/configs/uc100.h @@ -331,6 +331,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/configs/virtlab2.h b/include/configs/virtlab2.h index 4bb96cc1a..c2c0d1d24 100644 --- a/include/configs/virtlab2.h +++ b/include/configs/virtlab2.h @@ -329,6 +329,7 @@   *-----------------------------------------------------------------------   */ +#define CONFIG_IDE_PREINIT	1	/* Use preinit IDE hook */  #define	CONFIG_IDE_8xx_PCCARD	1	/* Use IDE with PC Card	Adapter	*/  #undef	CONFIG_IDE_8xx_DIRECT		/* Direct IDE    not supported	*/ diff --git a/include/ide.h b/include/ide.h index 95dcbdd36..3a08425ee 100644 --- a/include/ide.h +++ b/include/ide.h @@ -54,6 +54,14 @@ void ide_init(void);  ulong ide_read(int device, ulong blknr, lbaint_t blkcnt, void *buffer);  ulong ide_write(int device, ulong blknr, lbaint_t blkcnt, const void *buffer); +#ifdef CONFIG_IDE_PREINIT +int ide_preinit(void); +#endif + +#ifdef CONFIG_IDE_INIT_POSTRESET +int ide_init_postreset(void); +#endif +  #if defined(CONFIG_OF_IDE_FIXUP)  int ide_device_present(int dev);  #endif |