Lines Matching refs:esp
48 #define esp_read8(REG) mac_esp_read8(esp, REG)
49 #define esp_write8(VAL, REG) mac_esp_write8(esp, VAL, REG)
52 struct esp *esp; member
57 static struct esp *esp_chips[2];
59 #define MAC_ESP_GET_PRIV(esp) ((struct mac_esp_priv *) \ argument
61 (esp->dev)))
63 static inline void mac_esp_write8(struct esp *esp, u8 val, unsigned long reg) in mac_esp_write8() argument
65 nubus_writeb(val, esp->regs + reg * 16); in mac_esp_write8()
68 static inline u8 mac_esp_read8(struct esp *esp, unsigned long reg) in mac_esp_read8() argument
70 return nubus_readb(esp->regs + reg * 16); in mac_esp_read8()
77 static dma_addr_t mac_esp_map_single(struct esp *esp, void *buf, in mac_esp_map_single() argument
83 static int mac_esp_map_sg(struct esp *esp, struct scatterlist *sg, in mac_esp_map_sg() argument
93 static void mac_esp_unmap_single(struct esp *esp, dma_addr_t addr, in mac_esp_unmap_single() argument
99 static void mac_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, in mac_esp_unmap_sg() argument
105 static void mac_esp_reset_dma(struct esp *esp) in mac_esp_reset_dma() argument
110 static void mac_esp_dma_drain(struct esp *esp) in mac_esp_dma_drain() argument
115 static void mac_esp_dma_invalidate(struct esp *esp) in mac_esp_dma_invalidate() argument
120 static int mac_esp_dma_error(struct esp *esp) in mac_esp_dma_error() argument
122 return MAC_ESP_GET_PRIV(esp)->error; in mac_esp_dma_error()
125 static inline int mac_esp_wait_for_empty_fifo(struct esp *esp) in mac_esp_wait_for_empty_fifo() argument
127 struct mac_esp_priv *mep = MAC_ESP_GET_PRIV(esp); in mac_esp_wait_for_empty_fifo()
146 static inline int mac_esp_wait_for_dreq(struct esp *esp) in mac_esp_wait_for_dreq() argument
148 struct mac_esp_priv *mep = MAC_ESP_GET_PRIV(esp); in mac_esp_wait_for_dreq()
230 static void mac_esp_send_pdma_cmd(struct esp *esp, u32 addr, u32 esp_count, in mac_esp_send_pdma_cmd() argument
233 struct mac_esp_priv *mep = MAC_ESP_GET_PRIV(esp); in mac_esp_send_pdma_cmd()
238 scsi_esp_cmd(esp, ESP_CMD_FLUSH); in mac_esp_send_pdma_cmd()
243 scsi_esp_cmd(esp, cmd); in mac_esp_send_pdma_cmd()
251 if (mac_esp_wait_for_dreq(esp)) in mac_esp_send_pdma_cmd()
263 if (mac_esp_wait_for_empty_fifo(esp)) in mac_esp_send_pdma_cmd()
277 static inline unsigned int mac_esp_wait_for_fifo(struct esp *esp) in mac_esp_wait_for_fifo() argument
295 static inline int mac_esp_wait_for_intr(struct esp *esp) in mac_esp_wait_for_intr() argument
297 struct mac_esp_priv *mep = MAC_ESP_GET_PRIV(esp); in mac_esp_wait_for_intr()
301 esp->sreg = esp_read8(ESP_STATUS); in mac_esp_wait_for_intr()
302 if (esp->sreg & ESP_STAT_INTR) in mac_esp_wait_for_intr()
308 printk(KERN_ERR PFX "IRQ timeout (sreg %02x)\n", esp->sreg); in mac_esp_wait_for_intr()
346 static void mac_esp_send_pio_cmd(struct esp *esp, u32 addr, u32 esp_count, in mac_esp_send_pio_cmd() argument
349 struct mac_esp_priv *mep = MAC_ESP_GET_PRIV(esp); in mac_esp_send_pio_cmd()
350 u8 *fifo = esp->regs + ESP_FDATA * 16; in mac_esp_send_pio_cmd()
356 scsi_esp_cmd(esp, cmd); in mac_esp_send_pio_cmd()
361 n = mac_esp_wait_for_fifo(esp); in mac_esp_send_pio_cmd()
374 if (mac_esp_wait_for_intr(esp)) in mac_esp_send_pio_cmd()
377 if (((esp->sreg & ESP_STAT_PMASK) != ESP_DIP) && in mac_esp_send_pio_cmd()
378 ((esp->sreg & ESP_STAT_PMASK) != ESP_MIP)) in mac_esp_send_pio_cmd()
381 esp->ireg = esp_read8(ESP_INTRPT); in mac_esp_send_pio_cmd()
382 if ((esp->ireg & (ESP_INTR_DC | ESP_INTR_BSERV)) != in mac_esp_send_pio_cmd()
386 scsi_esp_cmd(esp, ESP_CMD_TI); in mac_esp_send_pio_cmd()
389 scsi_esp_cmd(esp, ESP_CMD_FLUSH); in mac_esp_send_pio_cmd()
396 scsi_esp_cmd(esp, cmd); in mac_esp_send_pio_cmd()
401 if (mac_esp_wait_for_intr(esp)) in mac_esp_send_pio_cmd()
404 if (((esp->sreg & ESP_STAT_PMASK) != ESP_DOP) && in mac_esp_send_pio_cmd()
405 ((esp->sreg & ESP_STAT_PMASK) != ESP_MOP)) in mac_esp_send_pio_cmd()
408 esp->ireg = esp_read8(ESP_INTRPT); in mac_esp_send_pio_cmd()
409 if ((esp->ireg & (ESP_INTR_DC | ESP_INTR_BSERV)) != in mac_esp_send_pio_cmd()
425 scsi_esp_cmd(esp, ESP_CMD_TI); in mac_esp_send_pio_cmd()
430 static int mac_esp_irq_pending(struct esp *esp) in mac_esp_irq_pending() argument
437 static u32 mac_esp_dma_length_limit(struct esp *esp, u32 dma_addr, u32 dma_len) in mac_esp_dma_length_limit() argument
488 struct esp *esp; in esp_mac_probe() local
498 host = scsi_host_alloc(tpnt, sizeof(struct esp)); in esp_mac_probe()
506 esp = shost_priv(host); in esp_mac_probe()
508 esp->host = host; in esp_mac_probe()
509 esp->dev = dev; in esp_mac_probe()
511 esp->command_block = kzalloc(16, GFP_KERNEL); in esp_mac_probe()
512 if (!esp->command_block) in esp_mac_probe()
514 esp->command_block_dma = (dma_addr_t)esp->command_block; in esp_mac_probe()
516 esp->scsi_id = 7; in esp_mac_probe()
517 host->this_id = esp->scsi_id; in esp_mac_probe()
518 esp->scsi_id_mask = 1 << esp->scsi_id; in esp_mac_probe()
523 mep->esp = esp; in esp_mac_probe()
528 esp->cfreq = 16500000; in esp_mac_probe()
529 esp->regs = (void __iomem *)MAC_ESP_REGS_QUADRA; in esp_mac_probe()
530 mep->pdma_io = esp->regs + MAC_ESP_PDMA_IO_OFFSET; in esp_mac_probe()
534 esp->cfreq = 25000000; in esp_mac_probe()
535 esp->regs = (void __iomem *)(MAC_ESP_REGS_QUADRA2 + in esp_mac_probe()
537 mep->pdma_io = esp->regs + MAC_ESP_PDMA_IO_OFFSET; in esp_mac_probe()
546 esp->cfreq = 25000000; in esp_mac_probe()
547 esp->regs = (void __iomem *)MAC_ESP_REGS_QUADRA3; in esp_mac_probe()
553 esp->ops = &mac_esp_ops; in esp_mac_probe()
558 esp->flags = ESP_FLAG_DISABLE_SYNC; in esp_mac_probe()
565 esp_chips[dev->id] = esp; in esp_mac_probe()
575 err = scsi_esp_register(esp, &dev->dev); in esp_mac_probe()
583 free_irq(host->irq, esp); in esp_mac_probe()
587 kfree(esp->command_block); in esp_mac_probe()
597 struct esp *esp = mep->esp; in esp_mac_remove() local
598 unsigned int irq = esp->host->irq; in esp_mac_remove()
600 scsi_esp_unregister(esp); in esp_mac_remove()
608 kfree(esp->command_block); in esp_mac_remove()
610 scsi_host_put(esp->host); in esp_mac_remove()