This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

HAL - improve IDE handling


This improves boot time when RedBoot has IDE support 
included but the actual device may be missing.

-- 
Gary Thomas <gary@mlbassoc.com>
MLB Associates
Index: redboot/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/redboot/current/ChangeLog,v
retrieving revision 1.131
diff -u -5 -p -r1.131 ChangeLog
--- redboot/current/ChangeLog	20 Sep 2003 14:35:58 -0000	1.131
+++ redboot/current/ChangeLog	20 Sep 2003 19:20:05 -0000
@@ -1,7 +1,11 @@
 2003-09-20  Gary Thomas  <gary@mlbassoc.com>
 
+	* src/fs/ide.c: Improve IDE handling by having init function return
+	actual number of controllers detected.  This avoids really long times
+	for startup if the controller is missing.
+
 	* src/net/bootp.c: Rework to use full DHCP protocol.  Previously,
 	once an offer came in, RedBoot was happy, without actually making
 	the address reservation and waiting for the final acknowledgement.
 	Also, added CDL to enable/disable DHCP.  BUG #1000053
 
Index: redboot/current/src/fs/ide.c
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/redboot/current/src/fs/ide.c,v
retrieving revision 1.7
diff -u -5 -p -r1.7 ide.c
--- redboot/current/src/fs/ide.c	14 Feb 2003 16:31:40 -0000	1.7
+++ redboot/current/src/fs/ide.c	20 Sep 2003 17:42:31 -0000
@@ -406,22 +406,22 @@ static void
 ide_init(void)
 {
     cyg_uint32 buf[SECTOR_SIZE/sizeof(cyg_uint32)], u32;
     cyg_uint16 u16;
     cyg_uint8 u8;
-    int i, j;
+    int i, j, num_controllers;
     disk_t disk;
     struct ide_priv *priv;
 
 #define DEV_INIT_VAL ((j << 4) | 0xA0)
 
-    HAL_IDE_INIT();
+    num_controllers = HAL_IDE_INIT();
 
     CYGACC_CALL_IF_DELAY_US(5);
 
     priv = ide_privs;
-    for (i = 0; i < HAL_IDE_NUM_CONTROLLERS; i++) {
+    for (i = 0; i < num_controllers; i++) {
 
 	// soft reset the devices on this controller
 	if (!ide_reset(i))
 	    continue;
 
Index: hal/arm/xscale/picasso/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/arm/xscale/picasso/current/ChangeLog,v
retrieving revision 1.1
diff -u -5 -p -r1.1 ChangeLog
--- hal/arm/xscale/picasso/current/ChangeLog	22 Aug 2003 15:19:53 -0000	1.1
+++ hal/arm/xscale/picasso/current/ChangeLog	20 Sep 2003 19:20:41 -0000
@@ -1,5 +1,9 @@
+2003-09-20  Gary Thomas  <gary@mlbassoc.com>
+
+	* src/picasso_ide.c: IDE init needs to return number of controllers found.
+
 2003-08-22  Gary Thomas  <gary@mind.be>
 
 	* src/xilinx-load.c: 
 	* src/vga_support.c: 
 	* src/picasso_pci_bitstream.h: 
Index: hal/arm/xscale/picasso/current/src/picasso_ide.c
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/arm/xscale/picasso/current/src/picasso_ide.c,v
retrieving revision 1.1
diff -u -5 -p -r1.1 picasso_ide.c
--- hal/arm/xscale/picasso/current/src/picasso_ide.c	22 Aug 2003 15:19:53 -0000	1.1
+++ hal/arm/xscale/picasso/current/src/picasso_ide.c	20 Sep 2003 17:41:16 -0000
@@ -106,11 +106,11 @@ void 
 cyg_hal_plf_ide_write_control(int ctlr, cyg_uint32 reg, cyg_uint8 val)
 {
     pci_io_write_8(ide_ctrl[ctlr].ctl_bar + reg, val);
 }
 
-void 
+int
 cyg_hal_plf_ide_init(void)
 {
     int i;
     cyg_pci_device_id ide_dev = CYG_PCI_NULL_DEVID;
     cyg_pci_device ide_info;
@@ -127,11 +127,13 @@ cyg_hal_plf_ide_init(void)
 #endif
         for (i = 0;  i < MAX_IDE;  i++) {
             ide_ctrl[i].cmd_bar = ide_info.base_map[(2*i)+0] & 0xFFFFFFFE;
             ide_ctrl[i].ctl_bar = ide_info.base_map[(2*i)+1] & 0xFFFFFFFE;
         }
+        return HAL_IDE_NUM_CONTROLLERS;
     } else {
         diag_printf("Can't find IDE controller!\n");
+        return 0;
     }
 }
 
 #endif // CYGPKG_IO_PCI
Index: hal/arm/xscale/uE250/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/arm/xscale/uE250/current/ChangeLog,v
retrieving revision 1.10
diff -u -5 -p -r1.10 ChangeLog
--- hal/arm/xscale/uE250/current/ChangeLog	8 Aug 2003 19:29:11 -0000	1.10
+++ hal/arm/xscale/uE250/current/ChangeLog	20 Sep 2003 19:20:54 -0000
@@ -1,5 +1,9 @@
+2003-09-20  Gary Thomas  <gary@mlbassoc.com>
+
+	* src/uE250_ide.c: IDE init needs to return number of controllers found.
+
 2003-08-08  Gary Thomas  <gary@mind.be>
 
 	* src/uE250_pci.c: 
 	* src/uE250_misc.c: Improve PCI initialization, including support
 	for external bus masters.
Index: hal/arm/xscale/uE250/current/src/uE250_ide.c
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/arm/xscale/uE250/current/src/uE250_ide.c,v
retrieving revision 1.1
diff -u -5 -p -r1.1 uE250_ide.c
--- hal/arm/xscale/uE250/current/src/uE250_ide.c	21 Feb 2003 18:17:33 -0000	1.1
+++ hal/arm/xscale/uE250/current/src/uE250_ide.c	20 Sep 2003 17:41:36 -0000
@@ -106,11 +106,11 @@ void 
 cyg_hal_plf_ide_write_control(int ctlr, cyg_uint32 reg, cyg_uint8 val)
 {
     pci_io_write_8(ide_ctrl[ctlr].ctl_bar + reg, val);
 }
 
-void 
+int
 cyg_hal_plf_ide_init(void)
 {
     int i;
     cyg_pci_device_id ide_dev = CYG_PCI_NULL_DEVID;
     cyg_pci_device ide_info;
@@ -127,11 +127,13 @@ cyg_hal_plf_ide_init(void)
 #endif
         for (i = 0;  i < MAX_IDE;  i++) {
             ide_ctrl[i].cmd_bar = ide_info.base_map[(2*i)+0] & 0xFFFFFFFE;
             ide_ctrl[i].ctl_bar = ide_info.base_map[(2*i)+1] & 0xFFFFFFFE;
         }
+        return HAL_IDE_NUM_CONTROLLERS;
     } else {
         diag_printf("Can't find IDE controller!\n");
+        return 0;
     }
 }
 
 #endif // CYGPKG_IO_PCI
Index: hal/i386/pcmb/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/i386/pcmb/current/ChangeLog,v
retrieving revision 1.18
diff -u -5 -p -r1.18 ChangeLog
--- hal/i386/pcmb/current/ChangeLog	24 Jul 2003 20:24:01 -0000	1.18
+++ hal/i386/pcmb/current/ChangeLog	20 Sep 2003 19:21:06 -0000
@@ -1,5 +1,9 @@
+2003-09-20  Gary Thomas  <gary@mlbassoc.com>
+
+	* include/pcmb_io.h: IDE init needs to return number of controllers found.
+
 2003-07-23  Nick Garnett  <nickg@balti.calivar.com>
 
 	* include/pcmb_serial.h: Fixed bogus test on
 	CYGSEM_HAL_I386_PCMB_SCREEN_SUPPORT defined to test
 	CYGINT_HAL_I386_PCMB_SCREEN_SUPPORT > 0 instead.
Index: hal/i386/pcmb/current/include/pcmb_io.h
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/i386/pcmb/current/include/pcmb_io.h,v
retrieving revision 1.9
diff -u -5 -p -r1.9 pcmb_io.h
--- hal/i386/pcmb/current/include/pcmb_io.h	14 Aug 2002 13:19:11 -0000	1.9
+++ hal/i386/pcmb/current/include/pcmb_io.h	20 Sep 2003 17:39:13 -0000
@@ -216,11 +216,11 @@ CYG_MACRO_END
 // IDE interface macros
 //
 #define HAL_IDE_NUM_CONTROLLERS 2
 
 // Initialize the IDE controller(s).
-#define HAL_IDE_INIT()
+#define HAL_IDE_INIT() (HAL_IDE_NUM_CONTROLLERS)
 
 #define __PCMB_IDE_PRI_CMD   0x1f0
 #define __PCMB_IDE_PRI_CTL   0x3f4
 #define __PCMB_IDE_SEC_CMD   0x170
 #define __PCMB_IDE_SEC_CTL   0x374
Index: hal/mips/malta/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/mips/malta/current/ChangeLog,v
retrieving revision 1.4
diff -u -5 -p -r1.4 ChangeLog
--- hal/mips/malta/current/ChangeLog	24 Jul 2003 20:24:03 -0000	1.4
+++ hal/mips/malta/current/ChangeLog	20 Sep 2003 19:21:14 -0000
@@ -1,5 +1,9 @@
+2003-09-20  Gary Thomas  <gary@mlbassoc.com>
+
+	* src/plf_misc.c: IDE init needs to return number of controllers found.
+
 2003-07-18  Nick Garnett  <nickg@balti.calivar.com>
 
 	* cdl/hal_mips_malta.cdl:
         Changed values for CYGNUM_HAL_RTC_NUMERATOR,
         CYGNUM_HAL_RTC_DENOMINATOR and CYGNUM_HAL_RTC_PERIOD to
Index: hal/mips/malta/current/src/plf_misc.c
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/mips/malta/current/src/plf_misc.c,v
retrieving revision 1.2
diff -u -5 -p -r1.2 plf_misc.c
--- hal/mips/malta/current/src/plf_misc.c	23 May 2002 23:03:31 -0000	1.2
+++ hal/mips/malta/current/src/plf_misc.c	20 Sep 2003 17:40:46 -0000
@@ -448,20 +448,22 @@ void cyg_hal_plf_pci_cfg_write_byte (cyg
 
 
 /*------------------------------------------------------------------------*/
 /* IDE support                                                            */
 
-void cyg_hal_plf_ide_init(void)
+int
+cyg_hal_plf_ide_init(void)
 {
     cyg_uint32 v;
 
     // enable IDE
     v = cyg_hal_plf_pci_cfg_read_dword(0, CYG_PCI_DEV_MAKE_DEVFN(_PIIX4_PCI_ID,_PIIX4_IDE),
                                        CYG_PCI_CFG_PIIX4_IDETIM);
     v |= (CYG_PCI_CFG_PIIX4_IDETIM_IDE << 16) | CYG_PCI_CFG_PIIX4_IDETIM_IDE;
     cyg_hal_plf_pci_cfg_write_dword(0, CYG_PCI_DEV_MAKE_DEVFN(_PIIX4_PCI_ID,_PIIX4_IDE),
                                     CYG_PCI_CFG_PIIX4_IDETIM, v);
+    return HAL_IDE_NUM_CONTROLLERS;
 }
 
 
 /*------------------------------------------------------------------------*/
 /* End of plf_misc.c                                                      */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]