|
@@ -81,19 +81,6 @@ static int ide_bus_ok[CONFIG_SYS_IDE_MAXBUS];
|
|
block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE];
|
|
block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE];
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
|
-#ifdef CONFIG_IDE_LED
|
|
|
|
-# if !defined(CONFIG_BMS2003) && \
|
|
|
|
- !defined(CONFIG_CPC45) && \
|
|
|
|
- !defined(CONFIG_KUP4K) && \
|
|
|
|
- !defined(CONFIG_KUP4X)
|
|
|
|
-static void ide_led (uchar led, uchar status);
|
|
|
|
-#else
|
|
|
|
-extern void ide_led (uchar led, uchar status);
|
|
|
|
-#endif
|
|
|
|
-#else
|
|
|
|
-#define ide_led(a,b) /* dummy */
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_IDE_RESET
|
|
#ifdef CONFIG_IDE_RESET
|
|
static void ide_reset (void);
|
|
static void ide_reset (void);
|
|
#else
|
|
#else
|
|
@@ -290,6 +277,33 @@ int do_diskboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
+void __ide_led(uchar led, uchar status)
|
|
|
|
+{
|
|
|
|
+#if defined(CONFIG_IDE_LED) && defined(PER8_BASE) /* required by LED_PORT */
|
|
|
|
+ static uchar led_buffer; /* Buffer for current LED status */
|
|
|
|
+
|
|
|
|
+ uchar *led_port = LED_PORT;
|
|
|
|
+
|
|
|
|
+ if (status) /* switch LED on */
|
|
|
|
+ led_buffer |= led;
|
|
|
|
+ else /* switch LED off */
|
|
|
|
+ led_buffer &= ~led;
|
|
|
|
+
|
|
|
|
+ *led_port = led_buffer;
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ide_led(uchar led, uchar status)
|
|
|
|
+ __attribute__ ((weak, alias("__ide_led")));
|
|
|
|
+
|
|
|
|
+#ifndef CONFIG_IDE_LED /* define LED macros, they are not used anyways */
|
|
|
|
+# define DEVICE_LED(x) 0
|
|
|
|
+# define LED_IDE1 1
|
|
|
|
+# define LED_IDE2 2
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+/* ------------------------------------------------------------------------- */
|
|
|
|
+
|
|
inline void __ide_outb(int dev, int port, unsigned char val)
|
|
inline void __ide_outb(int dev, int port, unsigned char val)
|
|
{
|
|
{
|
|
debug("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
|
|
debug("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
|
|
@@ -442,9 +456,7 @@ void ide_init(void)
|
|
|
|
|
|
curr_device = -1;
|
|
curr_device = -1;
|
|
for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; ++i) {
|
|
for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; ++i) {
|
|
-#ifdef CONFIG_IDE_LED
|
|
|
|
int led = (IDE_BUS(i) == 0) ? LED_IDE1 : LED_IDE2;
|
|
int led = (IDE_BUS(i) == 0) ? LED_IDE1 : LED_IDE2;
|
|
-#endif
|
|
|
|
ide_dev_desc[i].type = DEV_TYPE_UNKNOWN;
|
|
ide_dev_desc[i].type = DEV_TYPE_UNKNOWN;
|
|
ide_dev_desc[i].if_type = IF_TYPE_IDE;
|
|
ide_dev_desc[i].if_type = IF_TYPE_IDE;
|
|
ide_dev_desc[i].dev = i;
|
|
ide_dev_desc[i].dev = i;
|
|
@@ -1145,27 +1157,6 @@ static void ide_reset(void)
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
|
-#if defined(CONFIG_IDE_LED) && \
|
|
|
|
- !defined(CONFIG_CPC45) && \
|
|
|
|
- !defined(CONFIG_KUP4K) && \
|
|
|
|
- !defined(CONFIG_KUP4X)
|
|
|
|
-
|
|
|
|
-static uchar led_buffer; /* Buffer for current LED status */
|
|
|
|
-
|
|
|
|
-static void ide_led(uchar led, uchar status)
|
|
|
|
-{
|
|
|
|
- uchar *led_port = LED_PORT;
|
|
|
|
-
|
|
|
|
- if (status) /* switch LED on */
|
|
|
|
- led_buffer |= led;
|
|
|
|
- else /* switch LED off */
|
|
|
|
- led_buffer &= ~led;
|
|
|
|
-
|
|
|
|
- *led_port = led_buffer;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#endif /* CONFIG_IDE_LED */
|
|
|
|
-
|
|
|
|
#if defined(CONFIG_OF_IDE_FIXUP)
|
|
#if defined(CONFIG_OF_IDE_FIXUP)
|
|
int ide_device_present(int dev)
|
|
int ide_device_present(int dev)
|
|
{
|
|
{
|