Move scsi_print_msg to SPI code
Subsystems (7)
PATCH 1/1 Move scsi_print_msg to SPI code
scsi_print_msg got the transfer period translation to nanoseconds wrong. We have the right code to do this in scsi_transport_spi.c, but we can't guarantee that'll be linked in. scsi_print_msg is a bit of a misnomer anyway, since these messages are actually SPI messages, not SAM.
So I've moved scsi_print_msg to scsi_transport_spi.c and renamed it to spi_print_msg. All drivers that use scsi_print_msg() got converted, and the Kconfig was adjusted to link in the SPI transport code for those drivers. Note that those drivers haven't been converted to use the SPI transport code ... but surely it's just a matter of time.
This patch doesn't actually apply to anything except the current parisc-linux CVS tree. I'm expecting feedback, and I'll submit something that applies after adjusting for feedback.
Index: drivers/scsi/53c700.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/53c700.c,v retrieving revision 1.20
scsi/53c700.c +3 -3
@@ -858,7 +858,7 @@ process_extended_message(struct Scsi_Hosprintk (KERN_INFO "scsi%d (%d:%d): Unexpected message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
@@ -888,7 +888,7 @@ process_message(struct Scsi_Host *host,#ifdef NCR_700_DEBUG printk ("scsi%d (%d:%d): message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );#endif
@@ -940,7 +940,7 @@ process_message(struct Scsi_Host *host, host->host_no, pun, lun, NCR_700_phase[(dsps & 0xf00) >> 8]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
Index: drivers/scsi/53c7xx.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/53c7xx.c,v retrieving revision 1.8
scsi/53c7xx.c +4 -3
@@ -282,6 +282,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "53c7xx.h" #include <linux/stat.h> #include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *hprintk ("scsi%d : status " , host->host_no);scsi_print_status (status);printk ("\nscsi%d : message " , host->host_no); -scsi_print_msg (&msg); +spi_print_msg (&msg);printk ("\n" ); }else if (hostdata->test_completed ==3 ) { printk("scsi%d : test 2 no connection with target %d\n",
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Hoprintk ("scsi%d : received message" , host->host_no);if (c)printk (" from target %d lun %d " , c->device->id, c->device->lun); -scsi_print_msg ((unsigned char *) hostdata->msg_buf); +spi_print_msg ((unsigned char *) hostdata->msg_buf);printk ("\n" ); }
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 * i >0 && !check_address ((unsigned long ) ptr,1 ); ptr += len, i -= len) {printk (" " ); - len =scsi_print_msg (ptr); + len =spi_print_msg (ptr);printk ("\n" );if (!len)break ;
Index: drivers/scsi/Kconfig
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/Kconfig,v retrieving revision 1.45
scsi/Kconfig +13 -0
@@ -336,6 +336,7 @@ config SCSI_ACARD config SCSI_AHA152X tristate "Adaptec AHA152X/2825 support" depends on ISA && SCSI && !64BIT + select SCSI_SPI_ATTRS ---help--- This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT config SCSI_DMX3191D tristate "DMX3191D SCSI support" depends on PCI && SCSI + select SCSI_SPI_ATTRS help This is support for Domex DMX3191D SCSI Host Adapters.
@@ -632,6 +634,7 @@ config SCSI_DMX3191D config SCSI_DTC3280 tristate "DTC3180/3280 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS help This is support for DTC 3180/3280 SCSI Host Adapters. Please read the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH config SCSI_GENERIC_NCR5380 tristate "Generic NCR5380/53c400 SCSI PIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using PIO. Most boards such as the Trantor T130 fit this
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380 config SCSI_GENERIC_NCR5380_MMIO tristate "Generic NCR5380/53c400 SCSI MMIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using memory mapped I/O.
@@ -1255,6 +1260,7 @@ config SCSI_MCA_53C9X config SCSI_PAS16 tristate "PAS16 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.10 of the SCSI-HOWTO, available from
@@ -1424,6 +1430,7 @@ config SCSI_DC390T config SCSI_T128 tristate "Trantor T128/T128F/T228 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.11 of the SCSI-HOWTO, available from
@@ -1682,6 +1689,7 @@ config OKTAGON_SCSI config ATARI_SCSI tristate "Atari native SCSI support" depends on ATARI && SCSI && BROKEN + select SCSI_SPI_ATTRS ---help--- If you have an Atari with built-in NCR5380 SCSI controller (TT, Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1723,6 +1731,7 @@ config TT_DMA_EMUL config MAC_SCSI bool "Macintosh NCR5380 SCSI" depends on MAC && SCSI=y + select SCSI_SPI_ATTRS help This is the NCR 5380 SCSI controller included on most of the 68030 based Macintoshes. If you have one of these say Y and read the
@@ -1744,6 +1753,7 @@ config SCSI_MAC_ESP config MVME147_SCSI bool "WD33C93 SCSI driver for MVME147" depends on MVME147 && SCSI=y + select SCSI_SPI_ATTRS help Support for the on-board SCSI controller on the Motorola MVME147 single-board computer.
@@ -1751,6 +1761,7 @@ config MVME147_SCSI config MVME16x_SCSI bool "NCR53C710 SCSI driver for MVME16x" depends on MVME16x && SCSI && BROKEN + select SCSI_SPI_ATTRS help The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1759,6 +1770,7 @@ config MVME16x_SCSI config BVME6000_SCSI bool "NCR53C710 SCSI driver for BVME6000" depends on BVME6000 && SCSI && BROKEN + select SCSI_SPI_ATTRS help The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1775,6 +1787,7 @@ config SCSI_NCR53C7xx_FAST config SUN3_SCSI tristate "Sun3 NCR5380 SCSI" depends on SUN3 && SCSI && BROKEN + select SCSI_SPI_ATTRS help This option will enable support for the OBIO (onboard io) NCR5380 SCSI controller found in the Sun 3/50 and 3/60, as well as for
Index: drivers/scsi/NCR5380.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/NCR5380.c,v retrieving revision 1.14
scsi/NCR5380.c +4 -3
@@ -87,6 +87,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #ifndef NDEBUG #define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk ("scsi%d: rejecting message " , instance->host_no); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsiif (!(msg[0 ] &0x80 )) {printk (KERN_ERR "scsi%d : expecting IDENTIFY message, got " , instance->host_no); -scsi_print_msg (msg); +spi_print_msg (msg); abort =1 ; }else {/* Accept message by clearing ACK */
Index: drivers/scsi/aha152x.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/aha152x.c,v retrieving revision 1.17
scsi/aha152x.c +4 -3
@@ -259,6 +259,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "aha152x.h"
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *s#if defined(AHA152X_DEBUG )if (HOSTDATA (shpnt)->debug & debug_msgi) {printk (INFO_LEAD "inbound message %02x " ,CMDINFO (CURRENT_SC ),MSGI (0 )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); }#endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *sbreak ;printk (INFO_LEAD ,CMDINFO (CURRENT_SC )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); ticks = (MSGI (3 ) *4 +49 ) /50 ;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *int i;printk (DEBUG_LEAD "messages( " ,CMDINFO (CURRENT_SC )); -for (i=0 ; i<MSGOLEN ; i+=scsi_print_msg (&MSGO (i)),printk (" " )) +for (i=0 ; i<MSGOLEN ; i+=spi_print_msg (&MSGO (i)),printk (" " )) ;printk (")\n" ); }
Index: drivers/scsi/atari_NCR5380.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/atari_NCR5380.c,v retrieving revision 1.5
scsi/atari_NCR5380.c +4 -3
@@ -74,6 +74,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #if (NDEBUG &NDEBUG_LISTS )#define LIST (x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
Index: drivers/scsi/constants.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/constants.c,v retrieving revision 1.13
scsi/constants.c +0 -113
119 lines not on this page · raw message
Index: drivers/scsi/ncr53c8xx.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/ncr53c8xx.c,v retrieving revision 1.37
scsi/ncr53c8xx.c +1 -1
@@ -3701,7 +3701,7 @@ static void ncr_print_msg(struct ccb *cp {PRINT_ADDR (cp->cmd,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printk ("\n" ); }
Index: drivers/scsi/scsi_transport_spi.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/scsi_transport_spi.c,v retrieving revision 1.23
scsi/scsi_transport_spi.c +138 -5
179 lines not on this page · raw message
Index: drivers/scsi/sun3_NCR5380.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/sun3_NCR5380.c,v retrieving revision 1.5
scsi/sun3_NCR5380.c +4 -3
@@ -70,6 +70,7 @@* */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> /* * Further development / testing that should be done :
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
Index: drivers/scsi/arm/Kconfig
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/arm/Kconfig,v retrieving revision 1.2
scsi/arm/Kconfig +1 -0
@@ -4,6 +4,7 @@ config SCSI_ACORNSCSI_3 tristate "Acorn SCSI card (aka30) support" depends on ARCH_ACORN && SCSI && BROKEN + select SCSI_SPI_ATTRS help This enables support for the Acorn SCSI card (aka30). If you have an Acorn system with one of these, say Y. If unsure, say N.
Index: drivers/scsi/arm/acornscsi.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/arm/acornscsi.c,v retrieving revision 1.9
scsi/arm/acornscsi.c +4 -3
@@ -152,6 +152,7 @@#include "../scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "acornscsi.h" #include "msgqueue.h" #include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host host->scsi.last_message = msg->msg[0 ];#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg->msg); +spi_print_msg (msg->msg);#endif break ;
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *hostwhile ((msg =msgqueue_getmsg (&host->scsi.msgs, msgnr++)) !=NULL ) {unsigned int i;#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg); +spi_print_msg (msg);#endif i =0 ;if (acornscsi_write_pio (host, msg->msg, &i, msg->length,1000000 ))
@@ -1488,7 +1489,7 @@ void acornscsi_message(AS_Host *host)#if (DEBUG &DEBUG_MESSAGES )printk ("scsi%d.%c: message in: " , host->host->host_no,acornscsi_target (host)); -scsi_print_msg (message); +spi_print_msg (message);printk ("\n" );#endif
Index: drivers/scsi/sym53c8xx_2/sym_hipd.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/sym53c8xx_2/sym_hipd.c,v retrieving revision 1.75
scsi/sym53c8xx_2/sym_hipd.c +2 -3
@@ -40,7 +40,6 @@#include <linux/slab.h> #include <asm/param.h> /* for timeouts in units of HZ */ -#include <scsi/scsi_dbg.h> #include "sym_glue.h" #include "sym_nvram.h"
@@ -75,7 +74,7 @@ static void sym_print_msg(struct sym_ccb {sym_print_addr (cp->cmd,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
@@ -84,7 +83,7 @@ static void sym_print_nego_msg(struct systruct sym_tcb *tp = &np->target[target];dev_info (&tp->starget->dev,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
Index: include/scsi/scsi_dbg.h
===================================================================
RCS file: /var/cvs/linux-2.6/include/scsi/scsi_dbg.h,v retrieving revision 1.4
scsi/scsi_dbg.h +0 -1
@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const chaextern void scsi_print_driverbyte (int );extern void scsi_print_hostbyte (int );extern void scsi_print_status (unsigned char ); -extern int scsi_print_msg (const unsigned char *);extern const char *scsi_sense_key_string (unsigned char );extern const char *scsi_extd_sense_format (unsigned char ,unsigned char );
Index: include/scsi/scsi_transport_spi.h
===================================================================
RCS file: /var/cvs/linux-2.6/include/scsi/scsi_transport_spi.h,v retrieving revision 1.8
scsi/scsi_transport_spi.h +1 -0
@@ -143,5 +143,6 @@ void spi_release_transport(struct scsi_tvoid spi_schedule_dv_device (struct scsi_device *);void spi_dv_device (struct scsi_device *);void spi_display_xfer_agreement (struct scsi_target *); +int spi_print_msg (const unsigned char *);#endif /* SCSI_TRANSPORT_SPI_H */
Quoted 10 lines · Matthew Wilcox
scsi_print_msggot the transfer period translation to nanoseconds wrong. We have the right code to do this inscsi_transport_spi.c, but we can't guarantee that'll be linked in.scsi_print_msgis a bit of a misnomer anyway, since these messages are actually SPI messages, not SAM.So I've moved
scsi_print_msgtoscsi_transport_spi.cand renamed it tospi_print_msg. All drivers that usescsi_print_msg()got converted, and theKconfigwas adjusted to link in the SPI transport code for those drivers. Note that those drivers haven't been converted to use the SPI transport code ... but surely it's just a matter of time.
Strong ACK, though I think your change here should be split up: the patch to link against SPI should be separated from the scsi_print_msg() change.
This change will make it easier to start marginalizing SPI. Eventually all SPI drivers will link against the SPI transport class, and this is the necessary first step.
Jeff
Quoted 3 lines · Jeff Garzik
Strong ACK, though I think your change here should be split up: the patch to link against SPI should be separated from the
scsi_print_msg()change.
OK. Here's a series of 5 patches which do this. First I move scsi_print_msg from constants.c to scsi_transport_spi.c, then I change its name and convert all drivers to the new name. Then I fix all its bugs ;-)
From: Matthew Wilcox <[email protected]>
scsi_print_msg() is an SPI-specific concept. This patch moves it from constants.c to scsi_transport_spi.c and updates the Kconfig to link in the SPI class for the drivers which use scsi_print_msg().
---
drivers/scsi/Kconfig | 13 ++++ drivers/scsi/arm/Kconfig | 1 drivers/scsi/constants.c | 108 ------------------------------------- drivers/scsi/scsi_transport_spi.c | 109 +++++++++++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 108 deletions(-)
4e52663676a39a4d8b1ef3dba470785a98f92e6b
drivers/scsi/Kconfig +13 -0
@@ -336,6 +336,7 @@ config SCSI_ACARD config SCSI_AHA152X tristate "Adaptec AHA152X/2825 support" depends on ISA && SCSI && !64BIT + select SCSI_SPI_ATTRS ---help--- This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT config SCSI_DMX3191D tristate "DMX3191D SCSI support" depends on PCI && SCSI + select SCSI_SPI_ATTRS help This is support for Domex DMX3191D SCSI Host Adapters.
@@ -632,6 +634,7 @@ config SCSI_DMX3191D config SCSI_DTC3280 tristate "DTC3180/3280 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS help This is support for DTC 3180/3280 SCSI Host Adapters. Please read the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH config SCSI_GENERIC_NCR5380 tristate "Generic NCR5380/53c400 SCSI PIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using PIO. Most boards such as the Trantor T130 fit this
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380 config SCSI_GENERIC_NCR5380_MMIO tristate "Generic NCR5380/53c400 SCSI MMIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using memory mapped I/O.
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X config SCSI_PAS16 tristate "PAS16 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.10 of the SCSI-HOWTO, available from
@@ -1423,6 +1429,7 @@ config SCSI_DC390T config SCSI_T128 tristate "Trantor T128/T128F/T228 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.11 of the SCSI-HOWTO, available from
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI config ATARI_SCSI tristate "Atari native SCSI support" depends on ATARI && SCSI && BROKEN + select SCSI_SPI_ATTRS ---help--- If you have an Atari with built-in NCR5380 SCSI controller (TT, Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL config MAC_SCSI bool "Macintosh NCR5380 SCSI" depends on MAC && SCSI=y + select SCSI_SPI_ATTRS help This is the NCR 5380 SCSI controller included on most of the 68030 based Macintoshes. If you have one of these say Y and read the
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP config MVME147_SCSI bool "WD33C93 SCSI driver for MVME147" depends on MVME147 && SCSI=y + select SCSI_SPI_ATTRS help Support for the on-board SCSI controller on the Motorola MVME147 single-board computer.
@@ -1750,6 +1760,7 @@ config MVME147_SCSI config MVME16x_SCSI bool "NCR53C710 SCSI driver for MVME16x" depends on MVME16x && SCSI && BROKEN + select SCSI_SPI_ATTRS help The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI config BVME6000_SCSI bool "NCR53C710 SCSI driver for BVME6000" depends on BVME6000 && SCSI && BROKEN + select SCSI_SPI_ATTRS help The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST config SUN3_SCSI tristate "Sun3 NCR5380 SCSI" depends on SUN3 && SCSI && BROKEN + select SCSI_SPI_ATTRS help This option will enable support for the OBIO (onboard io) NCR5380 SCSI controller found in the Sun 3/50 and 3/60, as well as for
drivers/scsi/arm/Kconfig +1 -0
@@ -4,6 +4,7 @@ config SCSI_ACORNSCSI_3 tristate "Acorn SCSI card (aka30) support" depends on ARCH_ACORN && SCSI && BROKEN + select SCSI_SPI_ATTRS help This enables support for the Acorn SCSI card (aka30). If you have an Acorn system with one of these, say Y. If unsure, say N.
drivers/scsi/constants.c +0 -108
114 lines not on this page · raw message
drivers/scsi/scsi_transport_spi.c +109 -0
121 lines not on this page · raw message
Signature · 1 line
0.99.9.GIT
From: Matthew Wilcox <[email protected]>
Rename scsi_print_msg to spi_print_msg and move its prototype from scsi_dbg.h to scsi_transport_spi.h
---
drivers/scsi/53c700.c | 6 +++--- drivers/scsi/53c7xx.c | 7 ++++--- drivers/scsi/NCR5380.c | 7 ++++--- drivers/scsi/aha152x.c | 7 ++++--- drivers/scsi/arm/acornscsi.c | 7 ++++--- drivers/scsi/atari_NCR5380.c | 7 ++++--- drivers/scsi/scsi_transport_spi.c | 8 ++++---- drivers/scsi/sun3_NCR5380.c | 7 ++++--- drivers/scsi/sym53c8xx_2/sym_hipd.c | 4 ++-- include/scsi/scsi_dbg.h | 1 - include/scsi/scsi_transport_spi.h | 1 + 11 files changed, 34 insertions(+), 28 deletions(-)
967aaca5d5dd9e8a5d85f0fd79aa86340b149df8
drivers/scsi/53c700.c +3 -3
@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Hosprintk (KERN_INFO "scsi%d (%d:%d): Unexpected message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
@@ -887,7 +887,7 @@ process_message(struct Scsi_Host *host,#ifdef NCR_700_DEBUG printk ("scsi%d (%d:%d): message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );#endif
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host, host->host_no, pun, lun, NCR_700_phase[(dsps & 0xf00) >> 8]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
drivers/scsi/53c7xx.c +4 -3
@@ -282,6 +282,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "53c7xx.h" #include <linux/stat.h> #include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *hprintk ("scsi%d : status " , host->host_no);scsi_print_status (status);printk ("\nscsi%d : message " , host->host_no); -scsi_print_msg (&msg); +spi_print_msg (&msg);printk ("\n" ); }else if (hostdata->test_completed ==3 ) { printk("scsi%d : test 2 no connection with target %d\n",
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Hoprintk ("scsi%d : received message" , host->host_no);if (c)printk (" from target %d lun %d " , c->device->id, c->device->lun); -scsi_print_msg ((unsigned char *) hostdata->msg_buf); +spi_print_msg ((unsigned char *) hostdata->msg_buf);printk ("\n" ); }
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 * i >0 && !check_address ((unsigned long ) ptr,1 ); ptr += len, i -= len) {printk (" " ); - len =scsi_print_msg (ptr); + len =spi_print_msg (ptr);printk ("\n" );if (!len)break ;
drivers/scsi/NCR5380.c +4 -3
@@ -87,6 +87,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #ifndef NDEBUG #define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk ("scsi%d: rejecting message " , instance->host_no); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsiif (!(msg[0 ] &0x80 )) {printk (KERN_ERR "scsi%d : expecting IDENTIFY message, got " , instance->host_no); -scsi_print_msg (msg); +spi_print_msg (msg); abort =1 ; }else {/* Accept message by clearing ACK */
drivers/scsi/aha152x.c +4 -3
@@ -259,6 +259,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "aha152x.h"
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *s#if defined(AHA152X_DEBUG )if (HOSTDATA (shpnt)->debug & debug_msgi) {printk (INFO_LEAD "inbound message %02x " ,CMDINFO (CURRENT_SC ),MSGI (0 )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); }#endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *sbreak ;printk (INFO_LEAD ,CMDINFO (CURRENT_SC )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); ticks = (MSGI (3 ) *4 +49 ) /50 ;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *int i;printk (DEBUG_LEAD "messages( " ,CMDINFO (CURRENT_SC )); -for (i=0 ; i<MSGOLEN ; i+=scsi_print_msg (&MSGO (i)),printk (" " )) +for (i=0 ; i<MSGOLEN ; i+=spi_print_msg (&MSGO (i)),printk (" " )) ;printk (")\n" ); }
drivers/scsi/arm/acornscsi.c +4 -3
@@ -152,6 +152,7 @@#include "../scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "acornscsi.h" #include "msgqueue.h" #include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host host->scsi.last_message = msg->msg[0 ];#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg->msg); +spi_print_msg (msg->msg);#endif break ;
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *hostwhile ((msg =msgqueue_getmsg (&host->scsi.msgs, msgnr++)) !=NULL ) {unsigned int i;#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg); +spi_print_msg (msg);#endif i =0 ;if (acornscsi_write_pio (host, msg->msg, &i, msg->length,1000000 ))
@@ -1488,7 +1489,7 @@ void acornscsi_message(AS_Host *host)#if (DEBUG &DEBUG_MESSAGES )printk ("scsi%d.%c: message in: " , host->host->host_no,acornscsi_target (host)); -scsi_print_msg (message); +spi_print_msg (message);printk ("\n" );#endif
drivers/scsi/atari_NCR5380.c +4 -3
@@ -74,6 +74,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #if (NDEBUG &NDEBUG_LISTS )#define LIST (x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
drivers/scsi/scsi_transport_spi.c +4 -4
@@ -1072,7 +1072,7 @@ static const char * const extended_msgs[#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *)) -int scsi_print_msg (const unsigned char *msg) +int spi_print_msg (const unsigned char *msg) {int len =0 , i;if (msg[0 ] ==EXTENDED_MESSAGE ) {
@@ -1125,11 +1125,11 @@ int scsi_print_msg (const unsigned charprintk ("reserved" ); return len; } -EXPORT_SYMBOL (scsi_print_msg); +EXPORT_SYMBOL (spi_print_msg);#else /* ifndef CONFIG_SCSI_CONSTANTS */ -int scsi_print_msg (const unsigned char *msg) +int spi_print_msg (const unsigned char *msg) {int len =0 , i;
@@ -1153,7 +1153,7 @@ int scsi_print_msg (const unsigned charprintk ("%02x " , msg[0 ]); return len; } -EXPORT_SYMBOL (scsi_print_msg); +EXPORT_SYMBOL (spi_print_msg);#endif /* ! CONFIG_SCSI_CONSTANTS */ #define SETUP_ATTRIBUTE (field) \
drivers/scsi/sun3_NCR5380.c +4 -3
@@ -70,6 +70,7 @@* */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> /* * Further development / testing that should be done :
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
drivers/scsi/sym53c8xx_2/sym_hipd.c +2 -2
@@ -75,7 +75,7 @@ static void sym_print_msg(struct sym_ccb {sym_print_addr (cp->cmd,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
@@ -84,7 +84,7 @@ static void sym_print_nego_msg(struct systruct sym_tcb *tp = &np->target[target];dev_info (&tp->starget->dev,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
include/scsi/scsi_dbg.h +0 -1
@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const chaextern void scsi_print_driverbyte (int );extern void scsi_print_hostbyte (int );extern void scsi_print_status (unsigned char ); -extern int scsi_print_msg (const unsigned char *);extern const char *scsi_sense_key_string (unsigned char );extern const char *scsi_extd_sense_format (unsigned char ,unsigned char );
include/scsi/scsi_transport_spi.h +1 -0
@@ -146,5 +146,6 @@ void spi_release_transport(struct scsi_tvoid spi_schedule_dv_device (struct scsi_device *);void spi_dv_device (struct scsi_device *);void spi_display_xfer_agreement (struct scsi_target *); +int spi_print_msg (const unsigned char *);#endif /* SCSI_TRANSPORT_SPI_H */
Signature · 1 line
0.99.9.GIT
From: Matthew Wilcox <[email protected]>
A missing comma meant that "Ordered Queue Tag" and "Ignore Wide Residue" were being concatenated together.
---
drivers/scsi/scsi_transport_spi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
bf55571883d8fc9e9b1e2fd238d9760dacb4f914
drivers/scsi/scsi_transport_spi.c +1 -1
@@ -1060,7 +1060,7 @@ static const char * const one_byte_msgs[#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *))static const char *const two_byte_msgs[] = { -/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" +/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" ,/* 0x23 */ "Ignore Wide Residue" };#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))
Signature · 1 line
0.99.9.GIT
From: Matthew Wilcox <[email protected]>
Replace the custom NO_*_MSGS definitions with uses of ARRAY_SIZE. This fixes a bug in the definition of NO_EXTENDED_MSGS.
---
drivers/scsi/scsi_transport_spi.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)
a7469c6472f85b42be4953e6b64a5dcb2dd96d6f
drivers/scsi/scsi_transport_spi.c +3 -6
@@ -1057,19 +1057,16 @@ static const char * const one_byte_msgs[/* 0x0c */ "Bus device reset" ,"Abort Tag" ,"Clear Queue" , /* 0x0f */ "Initiate Recovery", "Release Recovery" }; -#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *))static const char *const two_byte_msgs[] = {/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" ,/* 0x23 */ "Ignore Wide Residue" }; -#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))static const char *const extended_msgs[] = {/* 0x00 */ "Modify Data Pointer" ,"Synchronous Data Transfer Request" ,/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" }; -#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))int spi_print_msg (const unsigned char *msg)
@@ -1077,7 +1074,7 @@ int spi_print_msg(const unsigned char *mint len =0 , i;if (msg[0 ] ==EXTENDED_MESSAGE ) { len =3 + msg[1 ]; -if (msg[2 ] <NO_EXTENDED_MSGS ) +if (msg[2 ] <ARRAY_SIZE (extended_msgs))printk ("%s " , extended_msgs[msg[2 ]]);else printk ("Extended Message, reserved code (0x%02x) ",
@@ -1107,14 +1104,14 @@ int spi_print_msg(const unsigned char *m len =1 ;/* Normal One byte */ }else if (msg[0 ] <0x1f ) { -if (msg[0 ] <NO_ONE_BYTE_MSGS ) +if (msg[0 ] <ARRAY_SIZE (one_byte_msgs))printk (one_byte_msgs[msg[0 ]]);else printk ("reserved (%02x) " , msg[0 ]); len =1 ;/* Two byte */ }else if (msg[0 ] <=0x2f ) { -if ((msg[0 ] -0x20 ) <NO_TWO_BYTE_MSGS ) +if ((msg[0 ] -0x20 ) <ARRAY_SIZE (two_byte_msgs))printk ("%s %02x " , two_byte_msgs[msg[0 ] -0x20 ], msg[1 ]);else
Signature · 1 line
0.99.9.GIT
From: Matthew Wilcox <[email protected]>
Introduce a new helper, print_nego() to handle SDTR/WDTR/PPR. Split out the guts of show_spi_transport_period_helper() into period_to_str() and use it in print_nego to get the period factor conversion right.
---
drivers/scsi/scsi_transport_spi.c | 36 +++++++++++++++++++++++++++++------- 1 files changed, 29 insertions(+), 7 deletions(-)
550d3fc8c8d8c8d4f660d95fd480c2ab028138a8
drivers/scsi/scsi_transport_spi.c +29 -7
@@ -379,9 +379,7 @@ static CLASS_DEVICE_ATTR(revalidate, S_I/* Translate the period into ns according to the current spec * for SDTR/PPR messages */ -static ssize_t -show_spi_transport_period_helper (struct class_device *cdev,char *buf, -int period) +static int period_to_str (char *buf,int period) {int len, picosec;
@@ -399,6 +397,14 @@ show_spi_transport_period_helper(struct len =sprint_frac (buf, picosec,1000 ); } +return len; +} + +static ssize_t +show_spi_transport_period_helper (struct class_device *cdev,char *buf, +int period) +{ +int len =period_to_str (buf, period); buf[len++] ='\n' ; buf[len] ='\0' ;return len;
@@ -1065,9 +1071,23 @@ static const char * const two_byte_msgs[static const char *const extended_msgs[] = {/* 0x00 */ "Modify Data Pointer" ,"Synchronous Data Transfer Request" , -/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" +/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" , +/* 0x04 */ "Parallel Protocol Request" }; +void print_nego (const unsigned char *msg,int per,int off,int width) +{ +if (per) { +char buf[20 ]; +period_to_str (buf, msg[per]); +printk ("period = %s ns " , buf); + } + +if (off) +printk ("offset = %d " , msg[off]); +if (width) +printk ("width = %d " ,8 << msg[width]); +}int spi_print_msg (const unsigned char *msg) {
@@ -1085,11 +1105,13 @@ int spi_print_msg(const unsigned char *m (msg[4] << 16) | (msg[5] << 8) | msg[6]);break ;case EXTENDED_SDTR : -printk ("period = %d ns, offset = %d" , - (int ) msg[3 ] *4 , (int ) msg[4 ]); +print_nego (msg,3 ,4 ,0 );break ;case EXTENDED_WDTR : -printk ("width = 2^%d bytes" , msg[3 ]); +print_nego (msg,0 ,0 ,3 ); +break ; +case EXTENDED_PPR : +print_nego (msg,3 ,5 ,6 );break ;default :for (i =2 ; i < len; ++i)
Signature · 1 line
0.99.9.GIT
PATCH 1/5 Move scsi_print_msg to SPI class
In reply to Matthew Wilcoxscsi_print_msg() is an SPI-specific concept. This patch moves it from constants.c to scsi_transport_spi.c and updates the Kconfig to link in the SPI class for the drivers which use scsi_print_msg().
---
drivers/scsi/Kconfig | 13 ++++ drivers/scsi/arm/Kconfig | 1 drivers/scsi/constants.c | 108 ------------------------------------- drivers/scsi/scsi_transport_spi.c | 109 +++++++++++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 108 deletions(-)
4e52663676a39a4d8b1ef3dba470785a98f92e6b
drivers/scsi/Kconfig +13 -0
@@ -336,6 +336,7 @@ config SCSI_ACARD config SCSI_AHA152X tristate "Adaptec AHA152X/2825 support" depends on ISA && SCSI && !64BIT + select SCSI_SPI_ATTRS ---help--- This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT config SCSI_DMX3191D tristate "DMX3191D SCSI support" depends on PCI && SCSI + select SCSI_SPI_ATTRS help This is support for Domex DMX3191D SCSI Host Adapters.
@@ -632,6 +634,7 @@ config SCSI_DMX3191D config SCSI_DTC3280 tristate "DTC3180/3280 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS help This is support for DTC 3180/3280 SCSI Host Adapters. Please read the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH config SCSI_GENERIC_NCR5380 tristate "Generic NCR5380/53c400 SCSI PIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using PIO. Most boards such as the Trantor T130 fit this
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380 config SCSI_GENERIC_NCR5380_MMIO tristate "Generic NCR5380/53c400 SCSI MMIO support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is a driver for the old NCR 53c80 series of SCSI controllers on boards using memory mapped I/O.
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X config SCSI_PAS16 tristate "PAS16 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.10 of the SCSI-HOWTO, available from
@@ -1423,6 +1429,7 @@ config SCSI_DC390T config SCSI_T128 tristate "Trantor T128/T128F/T228 SCSI support" depends on ISA && SCSI + select SCSI_SPI_ATTRS ---help--- This is support for a SCSI host adapter. It is explained in section 3.11 of the SCSI-HOWTO, available from
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI config ATARI_SCSI tristate "Atari native SCSI support" depends on ATARI && SCSI && BROKEN + select SCSI_SPI_ATTRS ---help--- If you have an Atari with built-in NCR5380 SCSI controller (TT, Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL config MAC_SCSI bool "Macintosh NCR5380 SCSI" depends on MAC && SCSI=y + select SCSI_SPI_ATTRS help This is the NCR 5380 SCSI controller included on most of the 68030 based Macintoshes. If you have one of these say Y and read the
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP config MVME147_SCSI bool "WD33C93 SCSI driver for MVME147" depends on MVME147 && SCSI=y + select SCSI_SPI_ATTRS help Support for the on-board SCSI controller on the Motorola MVME147 single-board computer.
@@ -1750,6 +1760,7 @@ config MVME147_SCSI config MVME16x_SCSI bool "NCR53C710 SCSI driver for MVME16x" depends on MVME16x && SCSI && BROKEN + select SCSI_SPI_ATTRS help The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI config BVME6000_SCSI bool "NCR53C710 SCSI driver for BVME6000" depends on BVME6000 && SCSI && BROKEN + select SCSI_SPI_ATTRS help The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 SCSI controller chip. Almost everyone using one of these boards
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST config SUN3_SCSI tristate "Sun3 NCR5380 SCSI" depends on SUN3 && SCSI && BROKEN + select SCSI_SPI_ATTRS help This option will enable support for the OBIO (onboard io) NCR5380 SCSI controller found in the Sun 3/50 and 3/60, as well as for
drivers/scsi/arm/Kconfig +1 -0
@@ -4,6 +4,7 @@ config SCSI_ACORNSCSI_3 tristate "Acorn SCSI card (aka30) support" depends on ARCH_ACORN && SCSI && BROKEN + select SCSI_SPI_ATTRS help This enables support for the Acorn SCSI card (aka30). If you have an Acorn system with one of these, say Y. If unsure, say N.
drivers/scsi/constants.c +0 -108
114 lines not on this page · raw message
drivers/scsi/scsi_transport_spi.c +109 -0
121 lines not on this page · raw message
Signature · 1 line
0.99.9.GIT
PATCH 2/5 Rename scsi_print_msg to spi_print_msg
In reply to Matthew WilcoxRename scsi_print_msg to spi_print_msg and move its prototype from scsi_dbg.h to scsi_transport_spi.h
---
drivers/scsi/53c700.c | 6 +++--- drivers/scsi/53c7xx.c | 7 ++++--- drivers/scsi/NCR5380.c | 7 ++++--- drivers/scsi/aha152x.c | 7 ++++--- drivers/scsi/arm/acornscsi.c | 7 ++++--- drivers/scsi/atari_NCR5380.c | 7 ++++--- drivers/scsi/scsi_transport_spi.c | 8 ++++---- drivers/scsi/sun3_NCR5380.c | 7 ++++--- drivers/scsi/sym53c8xx_2/sym_hipd.c | 4 ++-- include/scsi/scsi_dbg.h | 1 - include/scsi/scsi_transport_spi.h | 1 + 11 files changed, 34 insertions(+), 28 deletions(-)
967aaca5d5dd9e8a5d85f0fd79aa86340b149df8
drivers/scsi/53c700.c +3 -3
@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Hosprintk (KERN_INFO "scsi%d (%d:%d): Unexpected message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
@@ -887,7 +887,7 @@ process_message(struct Scsi_Host *host,#ifdef NCR_700_DEBUG printk ("scsi%d (%d:%d): message %s: " , host->host_no, pun, lun, NCR_700_phase[(dsps &0xf00 ) >>8 ]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );#endif
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host, host->host_no, pun, lun, NCR_700_phase[(dsps & 0xf00) >> 8]); -scsi_print_msg (hostdata->msgin); +spi_print_msg (hostdata->msgin);printk ("\n" );/* just reject it */ hostdata->msgout[0 ] =A_REJECT_MSG ;
drivers/scsi/53c7xx.c +4 -3
@@ -282,6 +282,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "53c7xx.h" #include <linux/stat.h> #include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *hprintk ("scsi%d : status " , host->host_no);scsi_print_status (status);printk ("\nscsi%d : message " , host->host_no); -scsi_print_msg (&msg); +spi_print_msg (&msg);printk ("\n" ); }else if (hostdata->test_completed ==3 ) { printk("scsi%d : test 2 no connection with target %d\n",
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Hoprintk ("scsi%d : received message" , host->host_no);if (c)printk (" from target %d lun %d " , c->device->id, c->device->lun); -scsi_print_msg ((unsigned char *) hostdata->msg_buf); +spi_print_msg ((unsigned char *) hostdata->msg_buf);printk ("\n" ); }
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 * i >0 && !check_address ((unsigned long ) ptr,1 ); ptr += len, i -= len) {printk (" " ); - len =scsi_print_msg (ptr); + len =spi_print_msg (ptr);printk ("\n" );if (!len)break ;
drivers/scsi/NCR5380.c +4 -3
@@ -87,6 +87,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #ifndef NDEBUG #define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk ("scsi%d: rejecting message " , instance->host_no); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsiif (!(msg[0 ] &0x80 )) {printk (KERN_ERR "scsi%d : expecting IDENTIFY message, got " , instance->host_no); -scsi_print_msg (msg); +spi_print_msg (msg); abort =1 ; }else {/* Accept message by clearing ACK */
drivers/scsi/aha152x.c +4 -3
@@ -259,6 +259,7 @@#include "scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "aha152x.h"
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *s#if defined(AHA152X_DEBUG )if (HOSTDATA (shpnt)->debug & debug_msgi) {printk (INFO_LEAD "inbound message %02x " ,CMDINFO (CURRENT_SC ),MSGI (0 )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); }#endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *sbreak ;printk (INFO_LEAD ,CMDINFO (CURRENT_SC )); -scsi_print_msg (&MSGI (0 )); +spi_print_msg (&MSGI (0 ));printk ("\n" ); ticks = (MSGI (3 ) *4 +49 ) /50 ;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *int i;printk (DEBUG_LEAD "messages( " ,CMDINFO (CURRENT_SC )); -for (i=0 ; i<MSGOLEN ; i+=scsi_print_msg (&MSGO (i)),printk (" " )) +for (i=0 ; i<MSGOLEN ; i+=spi_print_msg (&MSGO (i)),printk (" " )) ;printk (")\n" ); }
drivers/scsi/arm/acornscsi.c +4 -3
@@ -152,6 +152,7 @@#include "../scsi.h" #include <scsi/scsi_dbg.h> #include <scsi/scsi_host.h> +#include <scsi/scsi_transport_spi.h> #include "acornscsi.h" #include "msgqueue.h" #include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host host->scsi.last_message = msg->msg[0 ];#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg->msg); +spi_print_msg (msg->msg);#endif break ;
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *hostwhile ((msg =msgqueue_getmsg (&host->scsi.msgs, msgnr++)) !=NULL ) {unsigned int i;#if (DEBUG &DEBUG_MESSAGES ) -scsi_print_msg (msg); +spi_print_msg (msg);#endif i =0 ;if (acornscsi_write_pio (host, msg->msg, &i, msg->length,1000000 ))
@@ -1488,7 +1489,7 @@ void acornscsi_message(AS_Host *host)#if (DEBUG &DEBUG_MESSAGES )printk ("scsi%d.%c: message in: " , host->host->host_no,acornscsi_target (host)); -scsi_print_msg (message); +spi_print_msg (message);printk ("\n" );#endif
drivers/scsi/atari_NCR5380.c +4 -3
@@ -74,6 +74,7 @@* the high level code. */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> #if (NDEBUG &NDEBUG_LISTS )#define LIST (x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
drivers/scsi/scsi_transport_spi.c +4 -4
@@ -1072,7 +1072,7 @@ static const char * const extended_msgs[#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *)) -int scsi_print_msg (const unsigned char *msg) +int spi_print_msg (const unsigned char *msg) {int len =0 , i;if (msg[0 ] ==EXTENDED_MESSAGE ) {
@@ -1125,11 +1125,11 @@ int scsi_print_msg (const unsigned charprintk ("reserved" ); return len; } -EXPORT_SYMBOL (scsi_print_msg); +EXPORT_SYMBOL (spi_print_msg);#else /* ifndef CONFIG_SCSI_CONSTANTS */ -int scsi_print_msg (const unsigned char *msg) +int spi_print_msg (const unsigned char *msg) {int len =0 , i;
@@ -1153,7 +1153,7 @@ int scsi_print_msg (const unsigned charprintk ("%02x " , msg[0 ]); return len; } -EXPORT_SYMBOL (scsi_print_msg); +EXPORT_SYMBOL (spi_print_msg);#endif /* ! CONFIG_SCSI_CONSTANTS */ #define SETUP_ATTRIBUTE (field) \
drivers/scsi/sun3_NCR5380.c +4 -3
@@ -70,6 +70,7 @@* */ #include <scsi/scsi_dbg.h> +#include <scsi/scsi_transport_spi.h> /* * Further development / testing that should be done :
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer* 3..length+1 arguments * * Start the extended message buffer with the EXTENDED_MESSAGE -* byte, since scsi_print_msg() wants the whole thing. +* byte, since spi_print_msg() wants the whole thing. */ extended_msg[0 ] =EXTENDED_MESSAGE ;/* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transferdefault :if (!tmp) {printk (KERN_DEBUG "scsi%d: rejecting message " ,HOSTNO ); -scsi_print_msg (extended_msg); +spi_print_msg (extended_msg);printk ("\n" ); }else if (tmp !=EXTENDED_MESSAGE ) printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsif (!(msg[0 ] &0x80 )) {printk (KERN_DEBUG "scsi%d: expecting IDENTIFY message, got " ,HOSTNO ); -scsi_print_msg (msg); +spi_print_msg (msg);do_abort (instance);return ; }
drivers/scsi/sym53c8xx_2/sym_hipd.c +2 -2
@@ -75,7 +75,7 @@ static void sym_print_msg(struct sym_ccb {sym_print_addr (cp->cmd,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
@@ -84,7 +84,7 @@ static void sym_print_nego_msg(struct systruct sym_tcb *tp = &np->target[target];dev_info (&tp->starget->dev,"%s: " , label); -scsi_print_msg (msg); +spi_print_msg (msg);printf ("\n" ); }
include/scsi/scsi_dbg.h +0 -1
@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const chaextern void scsi_print_driverbyte (int );extern void scsi_print_hostbyte (int );extern void scsi_print_status (unsigned char ); -extern int scsi_print_msg (const unsigned char *);extern const char *scsi_sense_key_string (unsigned char );extern const char *scsi_extd_sense_format (unsigned char ,unsigned char );
include/scsi/scsi_transport_spi.h +1 -0
@@ -146,5 +146,6 @@ void spi_release_transport(struct scsi_tvoid spi_schedule_dv_device (struct scsi_device *);void spi_dv_device (struct scsi_device *);void spi_display_xfer_agreement (struct scsi_target *); +int spi_print_msg (const unsigned char *);#endif /* SCSI_TRANSPORT_SPI_H */
Signature · 1 line
0.99.9.GIT
PATCH 3/5 Fix printing of two-byte messages
In reply to Matthew WilcoxA missing comma meant that "Ordered Queue Tag" and "Ignore Wide Residue" were being concatenated together.
---
drivers/scsi/scsi_transport_spi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
bf55571883d8fc9e9b1e2fd238d9760dacb4f914
drivers/scsi/scsi_transport_spi.c +1 -1
@@ -1060,7 +1060,7 @@ static const char * const one_byte_msgs[#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *))static const char *const two_byte_msgs[] = { -/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" +/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" ,/* 0x23 */ "Ignore Wide Residue" };#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))
Signature · 1 line
0.99.9.GIT
PATCH 4/5 Use ARRAY_SIZE in spi_print_msg
In reply to Matthew WilcoxReplace the custom NO_*_MSGS definitions with uses of ARRAY_SIZE. This fixes a bug in the definition of NO_EXTENDED_MSGS.
---
drivers/scsi/scsi_transport_spi.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)
a7469c6472f85b42be4953e6b64a5dcb2dd96d6f
drivers/scsi/scsi_transport_spi.c +3 -6
@@ -1057,19 +1057,16 @@ static const char * const one_byte_msgs[/* 0x0c */ "Bus device reset" ,"Abort Tag" ,"Clear Queue" , /* 0x0f */ "Initiate Recovery", "Release Recovery" }; -#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *))static const char *const two_byte_msgs[] = {/* 0x20 */ "Simple Queue Tag" ,"Head of Queue Tag" ,"Ordered Queue Tag" ,/* 0x23 */ "Ignore Wide Residue" }; -#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))static const char *const extended_msgs[] = {/* 0x00 */ "Modify Data Pointer" ,"Synchronous Data Transfer Request" ,/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" }; -#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))int spi_print_msg (const unsigned char *msg)
@@ -1077,7 +1074,7 @@ int spi_print_msg(const unsigned char *mint len =0 , i;if (msg[0 ] ==EXTENDED_MESSAGE ) { len =3 + msg[1 ]; -if (msg[2 ] <NO_EXTENDED_MSGS ) +if (msg[2 ] <ARRAY_SIZE (extended_msgs))printk ("%s " , extended_msgs[msg[2 ]]);else printk ("Extended Message, reserved code (0x%02x) ",
@@ -1107,14 +1104,14 @@ int spi_print_msg(const unsigned char *m len =1 ;/* Normal One byte */ }else if (msg[0 ] <0x1f ) { -if (msg[0 ] <NO_ONE_BYTE_MSGS ) +if (msg[0 ] <ARRAY_SIZE (one_byte_msgs))printk (one_byte_msgs[msg[0 ]]);else printk ("reserved (%02x) " , msg[0 ]); len =1 ;/* Two byte */ }else if (msg[0 ] <=0x2f ) { -if ((msg[0 ] -0x20 ) <NO_TWO_BYTE_MSGS ) +if ((msg[0 ] -0x20 ) <ARRAY_SIZE (two_byte_msgs))printk ("%s %02x " , two_byte_msgs[msg[0 ] -0x20 ], msg[1 ]);else
Signature · 1 line
0.99.9.GIT
PATCH 5/5 Add PPR support to spi_print_msg
In reply to Matthew WilcoxIntroduce a new helper, print_nego() to handle SDTR/WDTR/PPR. Split out the guts of show_spi_transport_period_helper() into period_to_str() and use it in print_nego to get the period factor conversion right.
---
drivers/scsi/scsi_transport_spi.c | 36 +++++++++++++++++++++++++++++------- 1 files changed, 29 insertions(+), 7 deletions(-)
550d3fc8c8d8c8d4f660d95fd480c2ab028138a8
drivers/scsi/scsi_transport_spi.c +29 -7
@@ -379,9 +379,7 @@ static CLASS_DEVICE_ATTR(revalidate, S_I/* Translate the period into ns according to the current spec * for SDTR/PPR messages */ -static ssize_t -show_spi_transport_period_helper (struct class_device *cdev,char *buf, -int period) +static int period_to_str (char *buf,int period) {int len, picosec;
@@ -399,6 +397,14 @@ show_spi_transport_period_helper(struct len =sprint_frac (buf, picosec,1000 ); } +return len; +} + +static ssize_t +show_spi_transport_period_helper (struct class_device *cdev,char *buf, +int period) +{ +int len =period_to_str (buf, period); buf[len++] ='\n' ; buf[len] ='\0' ;return len;
@@ -1065,9 +1071,23 @@ static const char * const two_byte_msgs[static const char *const extended_msgs[] = {/* 0x00 */ "Modify Data Pointer" ,"Synchronous Data Transfer Request" , -/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" +/* 0x02 */ "SCSI-I Extended Identify" ,"Wide Data Transfer Request" , +/* 0x04 */ "Parallel Protocol Request" }; +void print_nego (const unsigned char *msg,int per,int off,int width) +{ +if (per) { +char buf[20 ]; +period_to_str (buf, msg[per]); +printk ("period = %s ns " , buf); + } + +if (off) +printk ("offset = %d " , msg[off]); +if (width) +printk ("width = %d " ,8 << msg[width]); +}int spi_print_msg (const unsigned char *msg) {
@@ -1085,11 +1105,13 @@ int spi_print_msg(const unsigned char *m (msg[4] << 16) | (msg[5] << 8) | msg[6]);break ;case EXTENDED_SDTR : -printk ("period = %d ns, offset = %d" , - (int ) msg[3 ] *4 , (int ) msg[4 ]); +print_nego (msg,3 ,4 ,0 );break ;case EXTENDED_WDTR : -printk ("width = 2^%d bytes" , msg[3 ]); +print_nego (msg,0 ,0 ,3 ); +break ; +case EXTENDED_PPR : +print_nego (msg,3 ,5 ,6 );break ;default :for (i =2 ; i < len; ++i)
Signature · 1 line
0.99.9.GIT
Quoted 8 lines · Matthew Wilcox
Quoted 3 lines · Jeff Garzik
Strong ACK, though I think your change here should be split up: the patch to link against SPI should be separated from the
scsi_print_msg()change.OK. Here's a series of 5 patches which do this. First I move
scsi_print_msgfromconstants.ctoscsi_transport_spi.c, then I change its name and convert all drivers to the new name. Then I fix all its bugs ;-)
Apologies for the first attempt. Silly git-send-email ...