Just a few style comments:
+static int zorro_esp_irq_pending(struct esp *); +static int cyber_esp_irq_pending(struct esp *); +static int fastlane_esp_irq_pending(struct esp *);
Please avoid forward declarations wherever possible.
+struct zorro_driver_data { + const char *name; + unsigned long offset; + unsigned long dma_offset; + int absolute; /* offset is absolute address */ + int scsi_option; + int (*irq_pending)(struct esp *esp); + void (*dma_invalidate)(struct esp *esp); + void (*send_dma_cmd)(struct esp *esp, u32 dma_addr, u32 esp_count, + u32 dma_count, int write, u8 cmd); +};
Please use different esp_driver_ops instances for the different board types.
+static const struct zorro_driver_data cyberstormI_data = { + .name = "CyberStormI", + .offset = 0xf400, + .dma_offset = 0xf800, + .absolute = 0, + .scsi_option = 0,
You can remove all the xero initializations on static data. Also please align the = signs with tabs in struct declarations.
+static dma_addr_t zorro_esp_map_single(struct esp *esp, void *buf, + size_t sz, int dir) +{ + return dma_map_single(esp->dev, buf, sz, dir); +} + +static int zorro_esp_map_sg(struct esp *esp, struct scatterlist *sg, + int num_sg, int dir) +{ + return dma_map_sg(esp->dev, sg, num_sg, dir); +} + +static void zorro_esp_unmap_single(struct esp *esp, dma_addr_t addr, + size_t sz, int dir) +{ + dma_unmap_single(esp->dev, addr, sz, dir); +} + +static void zorro_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, + int num_sg, int dir) +{ + dma_unmap_sg(esp->dev, sg, num_sg, dir); +}
These wrappers seem rather pointless.
+/* PIO macros as used in mac_esp.c. + * Note that addr and fifo arguments are local-scope variables declared + * in zorro_esp_send_pio_cmd(), the macros are only used in that function, + * and addr and fifo are referenced in each use of the macros so there + * is no need to pass them as macro parameters. + */
Please use normal Linux comment style: /* * Blah, blah, blah. */
+#define ZORRO_ESP_PIO_LOOP(operands, reg1) \ + { \ + asm volatile ( \ + "1: moveb " operands "\n" \ + " subqw #1,%1 \n" \ + " jbne 1b \n" \ + : "+a" (addr), "+r" (reg1) \ + : "a" (fifo)); \ + }
What is the point of the curly braces around the asm statement?
+static void zorro_esp_send_pio_cmd(struct esp *esp, u32 addr, u32 esp_count, + u32 dma_count, int write, u8 cmd) +{ + struct zorro_esp_priv *zep = dev_get_drvdata(esp->dev); + u8 __iomem *fifo = esp->regs + ESP_FDATA * 16; + u8 phase = esp->sreg & ESP_STAT_PMASK; + + cmd &= ~ESP_CMD_DMA; + + if (write) {
It seems like this routine would benefit from being split into a read and a write one.
+// Blizzard 1230/60 SCSI-IV DMA
/* ... */
+ /* Use PIO if transferring message bytes to esp->command_block_dma. + * PIO requires a virtual address, so substitute esp->command_block + * for addr. + */
Comment style, again.
+static struct esp_driver_ops zorro_esp_ops = {
should be marked const.
+ .esp_write8 = zorro_esp_write8,
Just use a space after the '='.
+ + if (zep->zorro3) { + /* Only Fastlane Z3 for now - add switch for correct struct + * dma_registers size if adding any more + */ + esp->dma_regs = ioremap_nocache(dmaaddr, + sizeof(struct fastlane_dma_registers)); + } else + esp->dma_regs = (void __iomem *)ZTWO_VADDR(dmaaddr);
doesn't this need a __force (and a comment on why it is ѕafe) to make sparse happy? -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html