public inbox for linux-m68k@lists.linux-m68k.org
 help / color / mirror / Atom feed
From: Finn Thain <fthain@telegraphics.com.au>
To: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: Michael Schmitz <schmitzmic@gmail.com>,
	Sam Creasey <sammy@sammy.net>,
	linux-scsi@vger.kernel.org, linux-m68k@vger.kernel.org
Subject: [PATCH v3 33/37] atari_NCR5380: Introduce FLAG_TAGGED_QUEUING
Date: Wed, 12 Nov 2014 16:12:19 +1100	[thread overview]
Message-ID: <20141112051154.285476834@telegraphics.com.au> (raw)
In-Reply-To: 20141112051146.525489687@telegraphics.com.au

[-- Attachment #1: atari_NCR5380-introduce-FLAG_TAGGED_QUEUING --]
[-- Type: text/plain, Size: 7563 bytes --]

The static variable setup_use_tagged_queuing is declared in mac_scsi.c,
sun3_scsi.c and atari_scsi.c and doesn't belong in the core driver.
None of the other NCR5380 drivers suffer from this layering issue which
makes merging the core drivers more difficult and will likely hinder plans
for future use of platform data to configure the driver.

Replace the static variable with a host flag. This way it can be reported
along with the other flags.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>

---
 drivers/scsi/NCR5380.h       |    1 +
 drivers/scsi/atari_NCR5380.c |   22 +++++++++++++---------
 drivers/scsi/atari_scsi.c    |    8 ++++----
 drivers/scsi/mac_scsi.c      |    8 ++++----
 drivers/scsi/sun3_scsi.c     |   12 ++++++------
 5 files changed, 28 insertions(+), 23 deletions(-)

Index: linux/drivers/scsi/NCR5380.h
===================================================================
--- linux.orig/drivers/scsi/NCR5380.h	2014-11-12 16:11:32.000000000 +1100
+++ linux/drivers/scsi/NCR5380.h	2014-11-12 16:11:39.000000000 +1100
@@ -242,6 +242,7 @@
 #define FLAG_NO_PSEUDO_DMA		8	/* Inhibit DMA */
 #define FLAG_DTC3181E			16	/* DTC3181E */
 #define FLAG_LATE_DMA_SETUP		32	/* Setup NCR before DMA H/W */
+#define FLAG_TAGGED_QUEUING		64	/* as X3T9.2 spelled it */
 
 #ifndef ASM
 struct NCR5380_hostdata {
Index: linux/drivers/scsi/atari_NCR5380.c
===================================================================
--- linux.orig/drivers/scsi/atari_NCR5380.c	2014-11-12 16:11:38.000000000 +1100
+++ linux/drivers/scsi/atari_NCR5380.c	2014-11-12 16:11:39.000000000 +1100
@@ -283,12 +283,12 @@ typedef struct {
 static TAG_ALLOC TagAlloc[8][8];	/* 8 targets and 8 LUNs */
 
 
-static void __init init_tags(void)
+static void __init init_tags(struct NCR5380_hostdata *hostdata)
 {
 	int target, lun;
 	TAG_ALLOC *ta;
 
-	if (!setup_use_tagged_queuing)
+	if (!(hostdata->flags & FLAG_TAGGED_QUEUING))
 		return;
 
 	for (target = 0; target < 8; ++target) {
@@ -321,7 +321,8 @@ static int is_lun_busy(struct scsi_cmnd
 	if (hostdata->busy[cmd->device->id] & (1 << lun))
 		return 1;
 	if (!should_be_tagged ||
-	    !setup_use_tagged_queuing || !cmd->device->tagged_supported)
+	    !(hostdata->flags & FLAG_TAGGED_QUEUING) ||
+	    !cmd->device->tagged_supported)
 		return 0;
 	if (TagAlloc[cmd->device->id][lun].nr_allocated >=
 	    TagAlloc[cmd->device->id][lun].queue_size) {
@@ -347,7 +348,8 @@ static void cmd_get_tag(struct scsi_cmnd
 	 * an untagged command.
 	 */
 	if (!should_be_tagged ||
-	    !setup_use_tagged_queuing || !cmd->device->tagged_supported) {
+	    !(hostdata->flags & FLAG_TAGGED_QUEUING) ||
+	    !cmd->device->tagged_supported) {
 		cmd->tag = TAG_NONE;
 		hostdata->busy[cmd->device->id] |= (1 << lun);
 		dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
@@ -392,12 +394,12 @@ static void cmd_free_tag(struct scsi_cmn
 }
 
 
-static void free_all_tags(void)
+static void free_all_tags(struct NCR5380_hostdata *hostdata)
 {
 	int target, lun;
 	TAG_ALLOC *ta;
 
-	if (!setup_use_tagged_queuing)
+	if (!(hostdata->flags & FLAG_TAGGED_QUEUING))
 		return;
 
 	for (target = 0; target < 8; ++target) {
@@ -653,11 +655,13 @@ static void prepare_info(struct Scsi_Hos
 	         "base 0x%lx, irq %d, "
 	         "can_queue %d, cmd_per_lun %d, "
 	         "sg_tablesize %d, this_id %d, "
+	         "flags { %s}, "
 	         "options { %s} ",
 	         instance->hostt->name, instance->io_port, instance->n_io_port,
 	         instance->base, instance->irq,
 	         instance->can_queue, instance->cmd_per_lun,
 	         instance->sg_tablesize, instance->this_id,
+	         hostdata->flags & FLAG_TAGGED_QUEUING ? "TAGGED_QUEUING " : "",
 #ifdef DIFFERENTIAL
 	         "DIFFERENTIAL "
 #endif
@@ -799,7 +803,7 @@ static int __init NCR5380_init(struct Sc
 	for (i = 0; i < 8; ++i)
 		hostdata->busy[i] = 0;
 #ifdef SUPPORT_TAGS
-	init_tags();
+	init_tags(hostdata);
 #endif
 #if defined (REAL_DMA)
 	hostdata->dma_len = 0;
@@ -2565,7 +2569,7 @@ static void NCR5380_reselect(struct Scsi
 	 * SIMPLE_QUEUE_TAG for the I_T_L_Q nexus.
 	 */
 	tag = TAG_NONE;
-	if (phase == PHASE_MSGIN && setup_use_tagged_queuing) {
+	if (phase == PHASE_MSGIN && (hostdata->flags & FLAG_TAGGED_QUEUING)) {
 		/* Accept previous IDENTIFY message by clearing ACK */
 		NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
 		len = 2;
@@ -3021,7 +3025,7 @@ static int NCR5380_bus_reset(struct scsi
 	hostdata->connected = NULL;
 	hostdata->disconnected_queue = NULL;
 #ifdef SUPPORT_TAGS
-	free_all_tags();
+	free_all_tags(hostdata);
 #endif
 	for (i = 0; i < 8; ++i)
 		hostdata->busy[i] = 0;
Index: linux/drivers/scsi/atari_scsi.c
===================================================================
--- linux.orig/drivers/scsi/atari_scsi.c	2014-11-12 16:11:35.000000000 +1100
+++ linux/drivers/scsi/atari_scsi.c	2014-11-12 16:11:39.000000000 +1100
@@ -890,10 +890,6 @@ static int __init atari_scsi_probe(struc
 		}
 	}
 
-#ifdef SUPPORT_TAGS
-	if (setup_use_tagged_queuing < 0)
-		setup_use_tagged_queuing = 0;
-#endif
 
 #ifdef REAL_DMA
 	/* If running on a Falcon and if there's TT-Ram (i.e., more than one
@@ -929,6 +925,10 @@ static int __init atari_scsi_probe(struc
 
 	host_flags |= IS_A_TT() ? 0 : FLAG_LATE_DMA_SETUP;
 
+#ifdef SUPPORT_TAGS
+	host_flags |= setup_use_tagged_queuing > 0 ? FLAG_TAGGED_QUEUING : 0;
+#endif
+
 	NCR5380_init(instance, host_flags);
 
 	if (IS_A_TT()) {
Index: linux/drivers/scsi/sun3_scsi.c
===================================================================
--- linux.orig/drivers/scsi/sun3_scsi.c	2014-11-12 16:11:37.000000000 +1100
+++ linux/drivers/scsi/sun3_scsi.c	2014-11-12 16:11:39.000000000 +1100
@@ -522,6 +522,7 @@ static int __init sun3_scsi_probe(struct
 	int error;
 	struct resource *irq, *mem;
 	unsigned char *ioaddr;
+	int host_flags = 0;
 #ifdef SUN3_SCSI_VME
 	int i;
 #endif
@@ -535,11 +536,6 @@ static int __init sun3_scsi_probe(struct
 	if (setup_hostid >= 0)
 		sun3_scsi_template.this_id = setup_hostid & 7;
 
-#ifdef SUPPORT_TAGS
-	if (setup_use_tagged_queuing < 0)
-		setup_use_tagged_queuing = 1;
-#endif
-
 #ifdef SUN3_SCSI_VME
 	ioaddr = NULL;
 	for (i = 0; i < 2; i++) {
@@ -601,7 +597,11 @@ static int __init sun3_scsi_probe(struct
 	instance->io_port = (unsigned long)ioaddr;
 	instance->irq = irq->start;
 
-	NCR5380_init(instance, 0);
+#ifdef SUPPORT_TAGS
+	host_flags |= setup_use_tagged_queuing > 0 ? FLAG_TAGGED_QUEUING : 0;
+#endif
+
+	NCR5380_init(instance, host_flags);
 
 	error = request_irq(instance->irq, scsi_sun3_intr, 0,
 	                    "NCR5380", instance);
Index: linux/drivers/scsi/mac_scsi.c
===================================================================
--- linux.orig/drivers/scsi/mac_scsi.c	2014-11-12 16:11:23.000000000 +1100
+++ linux/drivers/scsi/mac_scsi.c	2014-11-12 16:11:39.000000000 +1100
@@ -411,10 +411,6 @@ static int __init mac_scsi_probe(struct
 		mac_scsi_template.sg_tablesize = setup_sg_tablesize;
 	if (setup_hostid >= 0)
 		mac_scsi_template.this_id = setup_hostid & 7;
-#ifdef SUPPORT_TAGS
-	if (setup_use_tagged_queuing < 0)
-		setup_use_tagged_queuing = 0;
-#endif
 	if (setup_use_pdma < 0)
 		setup_use_pdma = 0;
 
@@ -440,6 +436,10 @@ static int __init mac_scsi_probe(struct
 	mac_scsi_reset_boot(instance);
 #endif
 
+#ifdef SUPPORT_TAGS
+	host_flags |= setup_use_tagged_queuing > 0 ? FLAG_TAGGED_QUEUING : 0;
+#endif
+
 	NCR5380_init(instance, host_flags);
 
 	if (instance->irq != NO_IRQ) {

  parent reply	other threads:[~2014-11-12  5:43 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-12  5:11 [PATCH v3 00/37] Fixes, cleanups and modernization for NCR5380 drivers Finn Thain
2014-11-12  5:11 ` [PATCH v3 01/37] ncr5380: Use printk() not pr_debug() Finn Thain
2014-11-12  5:11 ` [PATCH v3 02/37] ncr5380: Remove unused hostdata fields Finn Thain
2014-11-12  5:11 ` [PATCH v3 03/37] ncr5380: Fix compiler warnings and __setup options Finn Thain
2014-11-12  5:11 ` [PATCH v3 04/37] ncr5380: Remove unused macros Finn Thain
2014-11-12  5:11 ` [PATCH v3 05/37] ncr5380: Remove useless prototypes Finn Thain
2014-11-12  5:11 ` [PATCH v3 06/37] ncr5380: Remove more " Finn Thain
2014-11-12  5:11 ` [PATCH v3 07/37] ncr5380: Cleanup TAG_NEXT and TAG_NONE macros Finn Thain
2014-11-12  5:11 ` [PATCH v3 08/37] ncr5380: Remove redundant AUTOSENSE macro Finn Thain
2014-11-12  5:11 ` [PATCH v3 09/37] ncr5380: Remove duplicate comments Finn Thain
2014-11-12  5:11 ` [PATCH v3 10/37] ncr5380: Fix SCSI_IRQ_NONE bugs Finn Thain
2014-11-12  5:11 ` [PATCH v3 11/37] ncr5380: Remove NCR5380_STATS Finn Thain
2014-11-12  5:11 ` [PATCH v3 12/37] ncr5380: Cleanup host info() methods Finn Thain
2014-11-12  5:11 ` [PATCH v3 13/37] ncr5380: Move static PDMA spin counters to host data Finn Thain
2014-11-12  5:12 ` [PATCH v3 14/37] ncr5380: Remove pointless compiler command line override macros Finn Thain
2014-11-12  5:12 ` [PATCH v3 15/37] ncr5380: Remove *_RELEASE macros Finn Thain
2014-11-12  5:12 ` [PATCH v3 16/37] ncr5380: Drop legacy scsi.h include Finn Thain
2014-11-12  5:12 ` [PATCH v3 17/37] dmx3191d: Use NO_IRQ Finn Thain
2014-11-12  5:12 ` [PATCH v3 18/37] mac_scsi: Remove header Finn Thain
2014-11-12  5:12 ` [PATCH v3 19/37] mac_scsi: Add module option to Kconfig Finn Thain
2014-11-12  5:12 ` [PATCH v3 20/37] mac_scsi: Cleanup PDMA code Finn Thain
2014-11-12  5:12 ` [PATCH v3 21/37] mac_scsi: Convert to platform device Finn Thain
2014-11-12  5:12 ` [PATCH v3 22/37] atari_scsi: Fix atari_scsi deadlocks on Falcon Finn Thain
2014-11-12  5:12 ` [PATCH v3 23/37] atari_scsi: Convert to platform device Finn Thain
2014-11-12  5:12 ` [PATCH v3 24/37] atari_scsi: Remove header Finn Thain
2014-11-12  5:12 ` [PATCH v3 25/37] sun3_scsi: Convert to platform device Finn Thain
2014-11-12  9:17   ` Geert Uytterhoeven
2014-11-12 11:20     ` Finn Thain
2014-11-13  1:21     ` [PATCH v4 " Finn Thain
2014-11-12  5:12 ` [PATCH v3 26/37] sun3_scsi: Move macro definitions Finn Thain
2014-11-12  5:12 ` [PATCH v3 27/37] ncr5380: Remove ENABLE_IRQ/DISABLE_IRQ macros Finn Thain
2014-11-12  5:12 ` [PATCH v3 28/37] atari_NCR5380: Refactor Falcon special cases Finn Thain
2014-11-12  5:12 ` [PATCH v3 29/37] atari_NCR5380: Refactor Falcon locking Finn Thain
2014-11-12  5:12 ` [PATCH v3 30/37] atari_NCR5380: Merge from sun3_NCR5380.c Finn Thain
2014-11-12  5:12 ` [PATCH v3 31/37] sun3_scsi: Adopt atari_NCR5380 core driver and remove sun3_NCR5380.c Finn Thain
2014-11-12  5:12 ` [PATCH v3 32/37] atari_NCR5380: Merge from NCR5380.c Finn Thain
2014-11-12  5:12 ` Finn Thain [this message]
2014-11-12  5:12 ` [PATCH v3 34/37] atari_NCR5380: Move static TagAlloc array to host data Finn Thain
2014-11-12  5:12 ` [PATCH v3 35/37] atari_NCR5380: Move static co-routine variables " Finn Thain
2014-11-12  5:12 ` [PATCH v3 36/37] atari_NCR5380: Remove RESET_RUN_DONE macro Finn Thain
2014-11-12  5:12 ` [PATCH v3 37/37] atari_NCR5380: Fix "transfered" typo Finn Thain
2014-11-20 15:56 ` [PATCH v3 00/37] Fixes, cleanups and modernization for NCR5380 drivers Christoph Hellwig
2014-11-21  4:21   ` Finn Thain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141112051154.285476834@telegraphics.com.au \
    --to=fthain@telegraphics.com.au \
    --cc=JBottomley@parallels.com \
    --cc=linux-m68k@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=sammy@sammy.net \
    --cc=schmitzmic@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox