From 6b2c88cf60eba01fcf6bb0892e3f8aaee8f6336a Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Sun, 20 Aug 2006 15:59:02 +0000 Subject: [PATCH] Fix booting without CD in drive. git-svn-id: svn://coreboot.org/openbios/openbios-devel@79 f158a5a8-5612-0410-a976-696ce0be7e32 --- drivers/esp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/esp.c b/drivers/esp.c index a7a753e..682bca3 100644 --- a/drivers/esp.c +++ b/drivers/esp.c @@ -118,7 +118,12 @@ do_command(esp_private_t *esp, sd_private_t *sd, int cmdlen, int replylen) // Check status status = esp->ll->regs[ESP_STATUS]; - if ((status & ESP_STAT_TCNT) != ESP_STAT_TCNT) + DPRINTF("do_command: id %d, cmd[0] 0x%x, status 0x%x\n", sd->id, esp->buffer[0], status); + + // Target didn't want all command data or went to status phase + // instead of data phase? + if ((status & ESP_STAT_TCNT) != ESP_STAT_TCNT + || (status & ESP_STAT_PMASK) == ESP_STATP) return status; // Get reply @@ -136,6 +141,8 @@ do_command(esp_private_t *esp, sd_private_t *sd, int cmdlen, int replylen) // Check status status = esp->ll->regs[ESP_STATUS]; + DPRINTF("do_command_reply: status 0x%x\n", status); + if ((status & ESP_STAT_TCNT) != ESP_STAT_TCNT) return status; else