patch-2.2.18 linux/drivers/scsi/mac_esp.c
Next file: linux/drivers/scsi/mac_esp.h
Previous file: linux/drivers/scsi/mac_NCR5380.c
Back to the patch index
Back to the overall index
- Lines: 133
- Date:
Fri Oct 13 23:52:23 2000
- Orig file:
v2.2.17/drivers/scsi/mac_esp.c
- Orig date:
Fri Apr 21 12:46:28 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/drivers/scsi/mac_esp.c linux/drivers/scsi/mac_esp.c
@@ -28,14 +28,13 @@
#include "NCR53C9x.h"
#include "mac_esp.h"
-#include "../../arch/m68k/mac/via6522.h" /* huh? */
-
#include <asm/io.h>
#include <asm/setup.h>
#include <asm/irq.h>
#include <asm/macints.h>
#include <asm/machw.h>
+#include <asm/mac_via.h>
#include <asm/pgtable.h>
@@ -59,10 +58,15 @@
static void dma_setup(struct NCR_ESP * esp, __u32 addr, int count, int write);
static void dma_setup_quick(struct NCR_ESP * esp, __u32 addr, int count, int write);
-
static int esp_dafb_dma_irq_p(struct NCR_ESP * espdev);
static int esp_iosb_dma_irq_p(struct NCR_ESP * espdev);
+volatile unsigned char cmd_buffer[16];
+ /* This is where all commands are put
+ * before they are transfered to the ESP chip
+ * via PIO.
+ */
+
static int esp_initialized = 0;
static int setup_num_esps = -1;
@@ -287,6 +291,9 @@
unsigned long timeout;
#endif
+ if (esp_initialized > 0)
+ return -ENODEV;
+
/* what do we have in this machine... */
if (MACHW_PRESENT(MAC_SCSI_96)) {
chipspresent ++;
@@ -358,10 +365,13 @@
} /* chipnum == 0 */
-
/* use pio for command bytes; pio for message/data: TBI */
esp->do_pio_cmds = 1;
+ /* Set the command buffer */
+ esp->esp_command = (volatile unsigned char*) cmd_buffer;
+ esp->esp_command_dvma = (volatile unsigned char*) cmd_buffer;
+
/* various functions */
esp->dma_bytes_sent = &dma_bytes_sent;
esp->dma_can_transfer = &dma_can_transfer;
@@ -400,8 +410,7 @@
esp->irq = IRQ_MAC_SCSI;
- request_irq(IRQ_MAC_SCSI, esp_intr, 0, "Mac ESP SCSI", esp);
- request_irq(IRQ_MAC_SCSIDRQ, fake_drq, 0, "Mac ESP DRQ", esp);
+ request_irq(esp->irq, esp_intr, 0, "Mac ESP SCSI", esp);
if (macintosh_config->scsi_type == MAC_SCSI_QUADRA) {
esp->cfreq = 16500000;
@@ -411,10 +420,8 @@
} else { /* chipnum == 1 */
-
- esp->irq = IRQ_MAC_SCSIDRQ;
-
- request_irq(IRQ_MAC_SCSIDRQ, esp_intr, 0, "Mac ESP SCSI 2", esp);
+ esp->irq = IRQ_MAC_SCSI;
+ request_irq(esp->irq, esp_intr, 0, "Mac ESP SCSI 2", esp);
esp->cfreq = 25000000;
@@ -469,7 +476,7 @@
static int esp_dafb_dma_irq_p(struct NCR_ESP * esp)
{
unsigned int ret;
- int sreg = esp->eregs->esp_status;
+ int sreg = esp_read(esp->eregs->esp_status);
#ifdef DEBUG_MAC_ESP
printk("mac_esp: esp_dafb_dma_irq_p dafb %d irq %d\n",
@@ -510,7 +517,7 @@
static int esp_iosb_dma_irq_p(struct NCR_ESP * esp)
{
int ret = mac_irq_pending(IRQ_MAC_SCSI) || mac_irq_pending(IRQ_MAC_SCSIDRQ);
- int sreg = esp->eregs->esp_status;
+ int sreg = esp_read(esp->eregs->esp_status);
#ifdef DEBUG_MAC_ESP
printk("mac_esp: dma_irq_p drq %d irq %d sreg %x curr %p disc %p\n",
@@ -599,13 +606,13 @@
static void dma_ints_off(struct NCR_ESP * esp)
{
- mac_turnoff_irq(esp->irq);
+ mac_disable_irq(esp->irq);
}
static void dma_ints_on(struct NCR_ESP * esp)
{
- mac_turnon_irq(esp->irq);
+ mac_enable_irq(esp->irq);
}
/*
@@ -614,7 +621,7 @@
static int dma_irq_p(struct NCR_ESP * esp)
{
- int i = esp->eregs->esp_status;
+ int i = esp_read(esp->eregs->esp_status);
#ifdef DEBUG_MAC_ESP
printk("mac_esp: dma_irq_p status %d\n", i);
@@ -629,7 +636,7 @@
* Copied from iosb_dma_irq_p()
*/
int ret = mac_irq_pending(IRQ_MAC_SCSI) || mac_irq_pending(IRQ_MAC_SCSIDRQ);
- int sreg = esp->eregs->esp_status;
+ int sreg = esp_read(esp->eregs->esp_status);
#ifdef DEBUG_MAC_ESP
printk("mac_esp: dma_irq_p drq %d irq %d sreg %x curr %p disc %p\n",
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)