From: Geert Uytterhoeven Mac SCSI fixes (from Matthias Urlichs): - Inline functions need to be defined before being used. - out_8() takes an address and a value, not the other way round. drivers/scsi/mac_scsi.c | 102 ++++++++++++++++++++++++------------------------ 1 files changed, 53 insertions(+), 49 deletions(-) diff -puN drivers/scsi/mac_scsi.c~68k-360 drivers/scsi/mac_scsi.c --- 25/drivers/scsi/mac_scsi.c~68k-360 2004-01-01 13:42:50.000000000 -0800 +++ 25-akpm/drivers/scsi/mac_scsi.c 2004-01-01 13:42:50.000000000 -0800 @@ -74,9 +74,6 @@ extern void via_scsi_clear(void); static void mac_scsi_reset_boot(struct Scsi_Host *instance); #endif -static __inline__ char macscsi_read(struct Scsi_Host *instance, int reg); -static __inline__ void macscsi_write(struct Scsi_Host *instance, int reg, int value); - static int setup_called = 0; static int setup_can_queue = -1; static int setup_cmd_per_lun = -1; @@ -102,6 +99,52 @@ static volatile unsigned char *mac_scsi_ static volatile unsigned char *mac_scsi_drq = NULL; static volatile unsigned char *mac_scsi_nodrq = NULL; + +/* + * NCR 5380 register access functions + */ + +#if 0 +/* Debug versions */ +#define CTRL(p,v) (*ctrl = (v)) + +static char macscsi_read(struct Scsi_Host *instance, int reg) +{ + int iobase = instance->io_port; + int i; + int *ctrl = &((struct NCR5380_hostdata *)instance->hostdata)->ctrl; + + CTRL(iobase, 0); + i = in_8(iobase + (reg<<4)); + CTRL(iobase, 0x40); + + return i; +} + +static void macscsi_write(struct Scsi_Host *instance, int reg, int value) +{ + int iobase = instance->io_port; + int *ctrl = &((struct NCR5380_hostdata *)instance->hostdata)->ctrl; + + CTRL(iobase, 0); + out_8(iobase + (reg<<4), value); + CTRL(iobase, 0x40); +} +#else + +/* Fast versions */ +static __inline__ char macscsi_read(struct Scsi_Host *instance, int reg) +{ + return in_8(instance->io_port + (reg<<4)); +} + +static __inline__ void macscsi_write(struct Scsi_Host *instance, int reg, int value) +{ + out_8(instance->io_port + (reg<<4), value); +} +#endif + + /* * Function : mac_scsi_setup(char *str) * @@ -163,18 +206,20 @@ static int __init mac_scsi_setup(char *s if (ints[5] >= 0) setup_use_pdma = ints[5]; } -#endif +#endif /* SUPPORT_TAGS */ -#endif +#endif /* DRIVER_SETUP */ return 1; } __setup("mac5380=", mac_scsi_setup); /* - * XXX: status debug + * If you want to find the instance with (k)gdb ... */ +#if NDEBUG static struct Scsi_Host *default_instance; +#endif /* * Function : int macscsi_detect(Scsi_Host_Template * tpnt) @@ -223,7 +268,9 @@ int macscsi_detect(Scsi_Host_Template * /* Once we support multiple 5380s (e.g. DuoDock) we'll do something different here */ instance = scsi_register (tpnt, sizeof(struct NCR5380_hostdata)); +#if NDEBUG default_instance = instance; +#endif if (macintosh_config->ident == MAC_MODEL_IIFX) { mac_scsi_regp = via1+0x8000; @@ -331,49 +378,6 @@ const char * macscsi_info (struct Scsi_H return ""; } -/* - * NCR 5380 register access functions - */ - -/* Debug versions -#define CTRL(p,v) (*ctrl = (v)) - -static char macscsi_read(struct Scsi_Host *instance, int reg) -{ - int iobase = instance->io_port; - int i; - int *ctrl = &((struct NCR5380_hostdata *)instance->hostdata)->ctrl; - - CTRL(iobase, 0); - i = in_8(iobase + (reg<<4)); - CTRL(iobase, 0x40); - - return i; -} - -static void macscsi_write(struct Scsi_Host *instance, int reg, int value) -{ - int iobase = instance->io_port; - int *ctrl = &((struct NCR5380_hostdata *)instance->hostdata)->ctrl; - - CTRL(iobase, 0); - out_8(value, iobase + (reg<<4)); - CTRL(iobase, 0x40); -} -*/ - -/* Fast versions */ -static __inline__ char macscsi_read(struct Scsi_Host *instance, int reg) -{ - return in_8(instance->io_port + (reg<<4)); -} - -static __inline__ void macscsi_write(struct Scsi_Host *instance, int reg, int value) -{ - out_8(value, instance->io_port + (reg<<4)); -} - - /* Pseudo-DMA: (Ove Edlund) The code attempts to catch bus errors that occur if one for example _