From: Finn Thain <fthain@telegraphics.com.au>
To: "James E.J. Bottomley" <JBottomley@odin.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Michael Schmitz <schmitzmic@gmail.com>,
linux-m68k@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH v4 65/78] atari_scsi, sun3_scsi: Remove global Scsi_Host pointer
Date: Sun, 03 Jan 2016 16:06:06 +1100 [thread overview]
Message-ID: <20160103050518.724542667@telegraphics.com.au> (raw)
In-Reply-To: 20160103050501.042035135@telegraphics.com.au
[-- Attachment #1: atari_scsi-sun3_scsi-remove-global-instances --]
[-- Type: text/plain, Size: 9143 bytes --]
This refactoring removes two global Scsi_Host pointers. This
improves consistency with other ncr5380 drivers. Adopting the same
conventions as the other drivers makes them easier to read.
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
---
drivers/scsi/atari_NCR5380.c | 5 +-
drivers/scsi/atari_scsi.c | 29 ++++++++---------
drivers/scsi/sun3_scsi.c | 72 ++++++++++---------------------------------
3 files changed, 36 insertions(+), 70 deletions(-)
Index: linux/drivers/scsi/atari_scsi.c
===================================================================
--- linux.orig/drivers/scsi/atari_scsi.c 2016-01-03 16:04:20.000000000 +1100
+++ linux/drivers/scsi/atari_scsi.c 2016-01-03 16:04:36.000000000 +1100
@@ -159,14 +159,10 @@ static inline unsigned long SCSI_DMA_GET
return adr;
}
-#define HOSTDATA_DMALEN (((struct NCR5380_hostdata *) \
- (atari_scsi_host->hostdata))->dma_len)
-
#ifdef REAL_DMA
static void atari_scsi_fetch_restbytes(void);
#endif
-static struct Scsi_Host *atari_scsi_host;
static unsigned char (*atari_scsi_reg_read)(unsigned char reg);
static void (*atari_scsi_reg_write)(unsigned char reg, unsigned char value);
@@ -262,15 +258,17 @@ static void scsi_dma_buserr(int irq, voi
#endif
-static irqreturn_t scsi_tt_intr(int irq, void *dummy)
+static irqreturn_t scsi_tt_intr(int irq, void *dev)
{
#ifdef REAL_DMA
+ struct Scsi_Host *instance = dev;
+ struct NCR5380_hostdata *hostdata = shost_priv(instance);
int dma_stat;
dma_stat = tt_scsi_dma.dma_ctrl;
- dprintk(NDEBUG_INTR, "scsi%d: NCR5380 interrupt, DMA status = %02x\n",
- atari_scsi_host->host_no, dma_stat & 0xff);
+ dsprintk(NDEBUG_INTR, instance, "NCR5380 interrupt, DMA status = %02x\n",
+ dma_stat & 0xff);
/* Look if it was the DMA that has interrupted: First possibility
* is that a bus error occurred...
@@ -293,7 +291,8 @@ static irqreturn_t scsi_tt_intr(int irq,
* data reg!
*/
if ((dma_stat & 0x02) && !(dma_stat & 0x40)) {
- atari_dma_residual = HOSTDATA_DMALEN - (SCSI_DMA_READ_P(dma_addr) - atari_dma_startaddr);
+ atari_dma_residual = hostdata->dma_len -
+ (SCSI_DMA_READ_P(dma_addr) - atari_dma_startaddr);
dprintk(NDEBUG_DMA, "SCSI DMA: There are %ld residual bytes.\n",
atari_dma_residual);
@@ -345,15 +344,17 @@ static irqreturn_t scsi_tt_intr(int irq,
#endif /* REAL_DMA */
- NCR5380_intr(irq, dummy);
+ NCR5380_intr(irq, dev);
return IRQ_HANDLED;
}
-static irqreturn_t scsi_falcon_intr(int irq, void *dummy)
+static irqreturn_t scsi_falcon_intr(int irq, void *dev)
{
#ifdef REAL_DMA
+ struct Scsi_Host *instance = dev;
+ struct NCR5380_hostdata *hostdata = shost_priv(instance);
int dma_stat;
/* Turn off DMA and select sector counter register before
@@ -388,7 +389,7 @@ static irqreturn_t scsi_falcon_intr(int
printk(KERN_ERR "SCSI DMA error: %ld bytes lost in "
"ST-DMA fifo\n", transferred & 15);
- atari_dma_residual = HOSTDATA_DMALEN - transferred;
+ atari_dma_residual = hostdata->dma_len - transferred;
dprintk(NDEBUG_DMA, "SCSI DMA: There are %ld residual bytes.\n",
atari_dma_residual);
} else
@@ -400,13 +401,14 @@ static irqreturn_t scsi_falcon_intr(int
* data to the original destination address.
*/
memcpy(atari_dma_orig_addr, phys_to_virt(atari_dma_startaddr),
- HOSTDATA_DMALEN - atari_dma_residual);
+ hostdata->dma_len - atari_dma_residual);
atari_dma_orig_addr = NULL;
}
#endif /* REAL_DMA */
- NCR5380_intr(irq, dummy);
+ NCR5380_intr(irq, dev);
+
return IRQ_HANDLED;
}
@@ -873,7 +875,6 @@ static int __init atari_scsi_probe(struc
error = -ENOMEM;
goto fail_alloc;
}
- atari_scsi_host = instance;
instance->irq = irq->start;
Index: linux/drivers/scsi/sun3_scsi.c
===================================================================
--- linux.orig/drivers/scsi/sun3_scsi.c 2016-01-03 16:04:20.000000000 +1100
+++ linux/drivers/scsi/sun3_scsi.c 2016-01-03 16:04:36.000000000 +1100
@@ -56,9 +56,9 @@
#define NCR5380_info sun3scsi_info
#define NCR5380_dma_read_setup(instance, data, count) \
- sun3scsi_dma_setup(data, count, 0)
+ sun3scsi_dma_setup(instance, data, count, 0)
#define NCR5380_dma_write_setup(instance, data, count) \
- sun3scsi_dma_setup(data, count, 1)
+ sun3scsi_dma_setup(instance, data, count, 1)
#define NCR5380_dma_residual(instance) \
sun3scsi_dma_residual(instance)
#define NCR5380_dma_xfer_len(instance, cmd, phase) \
@@ -99,7 +99,6 @@ static unsigned char *sun3_dma_orig_addr
static unsigned long sun3_dma_orig_count;
static int sun3_dma_active;
static unsigned long last_residual;
-static struct Scsi_Host *default_instance;
/*
* NCR 5380 register access functions
@@ -142,8 +141,9 @@ static inline void sun3_udc_write(unsign
// safe bits for the CSR
#define CSR_GOOD 0x060f
-static irqreturn_t scsi_sun3_intr(int irq, void *dummy)
+static irqreturn_t scsi_sun3_intr(int irq, void *dev)
{
+ struct Scsi_Host *instance = dev;
unsigned short csr = dregs->csr;
int handled = 0;
@@ -152,46 +152,24 @@ static irqreturn_t scsi_sun3_intr(int ir
#endif
if(csr & ~CSR_GOOD) {
- if(csr & CSR_DMA_BUSERR) {
- printk("scsi%d: bus error in dma\n", default_instance->host_no);
- }
-
- if(csr & CSR_DMA_CONFLICT) {
- printk("scsi%d: dma conflict\n", default_instance->host_no);
- }
+ if (csr & CSR_DMA_BUSERR)
+ shost_printk(KERN_ERR, instance, "bus error in DMA\n");
+ if (csr & CSR_DMA_CONFLICT)
+ shost_printk(KERN_ERR, instance, "DMA conflict\n");
handled = 1;
}
if(csr & (CSR_SDB_INT | CSR_DMA_INT)) {
- NCR5380_intr(irq, dummy);
+ NCR5380_intr(irq, dev);
handled = 1;
}
return IRQ_RETVAL(handled);
}
-/*
- * Debug stuff - to be called on NMI, or sysrq key. Use at your own risk;
- * reentering NCR5380_print_status seems to have ugly side effects
- */
-
-/* this doesn't seem to get used at all -- sam */
-#if 0
-void sun3_sun3_debug (void)
-{
- unsigned long flags;
-
- if (default_instance) {
- local_irq_save(flags);
- NCR5380_print_status(default_instance);
- local_irq_restore(flags);
- }
-}
-#endif
-
-
/* sun3scsi_dma_setup() -- initialize the dma controller for a read/write */
-static unsigned long sun3scsi_dma_setup(void *data, unsigned long count, int write_flag)
+static unsigned long sun3scsi_dma_setup(struct Scsi_Host *instance,
+ void *data, unsigned long count, int write_flag)
{
void *addr;
@@ -243,10 +221,9 @@ static unsigned long sun3scsi_dma_setup(
dregs->csr |= CSR_FIFO;
if(dregs->fifo_count != count) {
- printk("scsi%d: fifo_mismatch %04x not %04x\n",
- default_instance->host_no, dregs->fifo_count,
- (unsigned int) count);
- NCR5380_dprint(NDEBUG_DMA, default_instance);
+ shost_printk(KERN_ERR, instance, "FIFO mismatch %04x not %04x\n",
+ dregs->fifo_count, (unsigned int) count);
+ NCR5380_dprint(NDEBUG_DMA, instance);
}
/* setup udc */
@@ -281,21 +258,6 @@ static unsigned long sun3scsi_dma_setup(
}
-#ifndef SUN3_SCSI_VME
-static inline unsigned long sun3scsi_dma_count(struct Scsi_Host *instance)
-{
- unsigned short resid;
-
- dregs->udc_addr = 0x32;
- udelay(SUN3_DMA_DELAY);
- resid = dregs->udc_data;
- udelay(SUN3_DMA_DELAY);
- resid *= 2;
-
- return (unsigned long) resid;
-}
-#endif
-
static inline unsigned long sun3scsi_dma_residual(struct Scsi_Host *instance)
{
return last_residual;
@@ -393,7 +355,10 @@ static int sun3scsi_dma_finish(int write
}
}
- count = sun3scsi_dma_count(default_instance);
+ dregs->udc_addr = 0x32;
+ udelay(SUN3_DMA_DELAY);
+ count = 2 * dregs->udc_data;
+ udelay(SUN3_DMA_DELAY);
fifo = dregs->fifo_count;
last_residual = fifo;
@@ -547,7 +512,6 @@ static int __init sun3_scsi_probe(struct
error = -ENOMEM;
goto fail_alloc;
}
- default_instance = instance;
instance->io_port = (unsigned long)ioaddr;
instance->irq = irq->start;
Index: linux/drivers/scsi/atari_NCR5380.c
===================================================================
--- linux.orig/drivers/scsi/atari_NCR5380.c 2016-01-03 16:04:34.000000000 +1100
+++ linux/drivers/scsi/atari_NCR5380.c 2016-01-03 16:04:36.000000000 +1100
@@ -1920,7 +1920,7 @@ static void NCR5380_information_transfer
/* this command setup for dma yet? */
if ((count >= DMA_MIN_SIZE) && (sun3_dma_setup_done != cmd)) {
if (cmd->request->cmd_type == REQ_TYPE_FS) {
- sun3scsi_dma_setup(d, count,
+ sun3scsi_dma_setup(instance, d, count,
rq_data_dir(cmd->request));
sun3_dma_setup_done = cmd;
}
@@ -2458,7 +2458,8 @@ static void NCR5380_reselect(struct Scsi
}
/* setup this command for dma if not already */
if ((count >= DMA_MIN_SIZE) && (sun3_dma_setup_done != tmp)) {
- sun3scsi_dma_setup(d, count, rq_data_dir(tmp->request));
+ sun3scsi_dma_setup(instance, d, count,
+ rq_data_dir(tmp->request));
sun3_dma_setup_done = tmp;
}
}
next prev parent reply other threads:[~2016-01-03 5:06 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-03 5:05 [PATCH v4 00/78] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain
2016-01-03 5:05 ` [PATCH v4 01/78] atari_scsi: Fix SCSI host ID setting Finn Thain
2016-01-03 5:05 ` [PATCH v4 02/78] ncr5380: Remove redundant static variable initializers Finn Thain
2016-01-03 5:05 ` [PATCH v4 03/78] ncr5380: Eliminate PDEBUG*, TDEBUG* and DTCDEBUG* macros Finn Thain
2016-01-03 5:05 ` [PATCH v4 04/78] ncr5380: Remove more pointless macros Finn Thain
2016-01-03 5:05 ` [PATCH v4 05/78] ncr5380: Remove NCR5380_local_declare and NCR5380_setup macros Finn Thain
2016-01-03 5:05 ` [PATCH v4 06/78] ncr5380: Remove NCR5380_instance_name macro Finn Thain
2016-01-03 5:05 ` [PATCH v4 07/78] ncr5380: Split NCR5380_init() into two functions Finn Thain
2016-01-03 5:05 ` [PATCH v4 08/78] ncr5380: Move NCR53C400-specific code Finn Thain
2016-01-03 5:05 ` [PATCH v4 09/78] atari_NCR5380: Reset bus on driver initialization if required Finn Thain
2016-01-03 5:05 ` [PATCH v4 10/78] atari_NCR5380: Remove RESET_BOOT, CONFIG_ATARI_SCSI_TOSHIBA_DELAY and CONFIG_ATARI_SCSI_RESET_BOOT Finn Thain
2016-01-03 5:05 ` [PATCH v4 11/78] ncr5380: Simplify bus reset handlers Finn Thain
2016-01-03 5:05 ` [PATCH v4 12/78] ncr5380: Remove unused hostdata->aborted flag Finn Thain
2016-01-03 5:05 ` [PATCH v4 13/78] ncr5380: Remove redundant register writes Finn Thain
2016-01-03 5:05 ` [PATCH v4 14/78] ncr5380: Use return instead of goto in NCR5380_select() Finn Thain
2016-01-03 5:05 ` [PATCH v4 15/78] ncr5380: Always escalate bad target time-out " Finn Thain
2016-01-03 5:05 ` [PATCH v4 16/78] ncr5380: Proceed with next command after NCR5380_select() calls scsi_done Finn Thain
2016-01-03 5:05 ` [PATCH v4 17/78] ncr5380: Keep BSY asserted when entering SELECTION phase Finn Thain
2016-01-03 5:05 ` [PATCH v4 18/78] ncr5380: Eliminate USLEEP_WAITLONG delay Finn Thain
2016-01-03 5:05 ` [PATCH v4 19/78] ncr5380: Cleanup bogus {request, release}_region() calls Finn Thain
2016-01-03 5:05 ` [PATCH v4 20/78] ncr5380: Introduce unbound workqueue Finn Thain
2016-01-03 5:05 ` [PATCH v4 21/78] ncr5380: Sleep when polling, if possible Finn Thain
2016-01-03 5:05 ` [PATCH v4 22/78] ncr5380: Eliminate selecting state Finn Thain
2016-01-03 5:05 ` [PATCH v4 23/78] ncr5380: Always retry arbitration and selection Finn Thain
2016-01-03 5:05 ` [PATCH v4 24/78] ncr5380: Implement NCR5380_dma_xfer_len and remove LIMIT_TRANSFERSIZE macro Finn Thain
2016-01-03 5:05 ` [PATCH v4 25/78] ncr5380: Rework disconnect versus poll logic Finn Thain
2016-01-03 5:05 ` [PATCH v4 26/78] ncr5380: Fix NCR5380_transfer_pio() result Finn Thain
2016-01-03 5:05 ` [PATCH v4 27/78] ncr5380: Add missing lock in eh_abort_handler Finn Thain
2016-01-03 5:05 ` [PATCH v4 28/78] ncr5380: Drop DEF_SCSI_QCMD macro Finn Thain
2016-01-03 5:05 ` [PATCH v4 29/78] ncr5380: Remove references to linked commands Finn Thain
2016-01-03 5:05 ` [PATCH v4 30/78] ncr5380: Add missing break after case MESSAGE_REJECT Finn Thain
2016-01-03 5:05 ` [PATCH v4 31/78] ncr5380: Fix !REQ timeout in do_abort() Finn Thain
2016-01-03 5:05 ` [PATCH v4 32/78] ncr5380: Fix bus phase " Finn Thain
2016-01-03 5:05 ` [PATCH v4 33/78] atari_NCR5380: Set do_abort() timeouts Finn Thain
2016-01-03 5:05 ` [PATCH v4 34/78] atari_NCR5380: Use arbitration timeout Finn Thain
2016-01-24 10:38 ` Geert Uytterhoeven
2016-01-25 2:45 ` Finn Thain
2016-01-25 8:05 ` Geert Uytterhoeven
2016-01-25 18:28 ` Andreas Schwab
2016-01-25 19:56 ` Michael Schmitz
2016-01-26 0:18 ` Finn Thain
2016-01-26 11:13 ` Geert Uytterhoeven
2016-01-03 5:05 ` [PATCH v4 35/78] ncr5380: Dont wait for BUS FREE after disconnect Finn Thain
2016-01-03 5:05 ` [PATCH v4 36/78] ncr5380: Use work_struct instead of delayed_work Finn Thain
2016-01-03 5:05 ` [PATCH v4 37/78] ncr5380: Standardize work queueing algorithm Finn Thain
2016-01-03 5:05 ` [PATCH v4 38/78] ncr5380: Remove UNSAFE macro Finn Thain
2016-01-03 5:05 ` [PATCH v4 39/78] ncr5380: Standardize interrupt handling Finn Thain
2016-01-03 5:05 ` [PATCH v4 40/78] ncr5380: Introduce NCR5380_poll_politely2 Finn Thain
2016-01-03 5:05 ` [PATCH v4 41/78] ncr5380: Replace redundant flags with FLAG_NO_DMA_FIXUP Finn Thain
2016-01-03 5:05 ` [PATCH v4 42/78] ncr5380: Replace READ_OVERRUNS macro with FLAG_NO_DMA_FIXUPS Finn Thain
2016-01-03 5:05 ` [PATCH v4 43/78] ncr5380: Standardize reselection handling Finn Thain
2016-01-03 5:05 ` [PATCH v4 44/78] ncr5380: Fix off-by-one bug in extended_msg[] bounds check Finn Thain
2016-01-03 5:05 ` [PATCH v4 45/78] ncr5380: Cleanup #include directives Finn Thain
2016-01-03 5:05 ` [PATCH v4 46/78] ncr5380: Fix NDEBUG_NO_DATAOUT flag Finn Thain
2016-01-03 5:05 ` [PATCH v4 47/78] ncr5380: Fix and cleanup scsi_host_template initializers Finn Thain
2016-01-03 5:05 ` [PATCH v4 48/78] atari_NCR5380: Fix queue_size limit Finn Thain
2016-01-03 5:05 ` [PATCH v4 49/78] ncr5380: Remove redundant ICR_ARBITRATION_LOST test and eliminate FLAG_DTC3181E Finn Thain
2016-01-03 5:05 ` [PATCH v4 50/78] ncr5380: Change instance->host_lock to hostdata->lock Finn Thain
2016-01-03 5:05 ` [PATCH v4 51/78] ncr5380: Remove command list debug code Finn Thain
2016-01-03 5:05 ` [PATCH v4 52/78] ncr5380: Remove H_NO macro and introduce dsprintk Finn Thain
2016-01-03 5:05 ` [PATCH v4 53/78] ncr5380: Use shost_priv helper Finn Thain
2016-01-03 5:05 ` [PATCH v4 54/78] ncr5380: Use dsprintk() for queue debugging Finn Thain
2016-01-03 5:05 ` [PATCH v4 55/78] ncr5380: Remove LIST and REMOVE macros Finn Thain
2016-01-03 5:05 ` [PATCH v4 56/78] ncr5380: Remove redundant volatile qualifiers Finn Thain
2016-01-03 5:05 ` [PATCH v4 57/78] ncr5380: Use standard list data structure Finn Thain
2016-01-03 5:05 ` [PATCH v4 58/78] ncr5380: Refactor command completion Finn Thain
2016-01-03 5:06 ` [PATCH v4 59/78] ncr5380: Fix autosense bugs Finn Thain
2016-01-03 5:06 ` [PATCH v4 60/78] ncr5380: Implement new eh_abort_handler Finn Thain
2016-01-03 5:06 ` [PATCH v4 61/78] ncr5380: Fix EH during arbitration and selection Finn Thain
2016-01-03 5:06 ` [PATCH v4 62/78] ncr5380: Implement new eh_bus_reset_handler Finn Thain
2016-01-03 5:06 ` [PATCH v4 63/78] atari_NCR5380: Remove HOSTNO macro from printk() and seq_printf() calls Finn Thain
2016-01-03 5:06 ` [PATCH v4 64/78] atari_NCR5380: Eliminate HOSTNO macro Finn Thain
2016-01-03 5:06 ` Finn Thain [this message]
2016-01-03 5:06 ` [PATCH v4 66/78] ncr5380: Fix soft lockups Finn Thain
2016-01-03 5:06 ` [PATCH v4 67/78] ncr5380: Cleanup comments Finn Thain
2016-01-03 5:06 ` [PATCH v4 68/78] ncr5380: Fix trailing whitespace using regexp Finn Thain
2016-01-03 5:06 ` [PATCH v4 69/78] ncr5380: Fix whitespace in comments " Finn Thain
2016-01-03 7:54 ` Joe Perches
2016-01-03 8:17 ` Finn Thain
2016-01-03 14:10 ` One Thousand Gnomes
2016-01-03 18:20 ` Joe Perches
2016-01-03 21:29 ` One Thousand Gnomes
2016-01-03 21:46 ` Joe Perches
[not found] ` <20160103220505.7734a879@lxorguk.ukuu.org.uk>
2016-01-03 22:13 ` Joe Perches
2016-01-03 5:06 ` [PATCH v4 70/78] ncr5380: Merge changes from atari_NCR5380.c Finn Thain
2016-01-03 5:06 ` [PATCH v4 71/78] atari_NCR5380: Merge changes from NCR5380.c Finn Thain
2016-01-03 5:06 ` [PATCH v4 72/78] ncr5380: Cleanup whitespace and parentheses Finn Thain
2016-01-03 5:06 ` [PATCH v4 73/78] ncr5380: Fix pseudo DMA transfers on 53C400 Finn Thain
2016-01-03 5:06 ` [PATCH v4 74/78] ncr5380: Use runtime register mapping Finn Thain
2016-01-03 5:06 ` [PATCH v4 75/78] ncr5380: Enable PDMA for NCR53C400A Finn Thain
2016-01-03 5:06 ` [PATCH v4 76/78] ncr5380: Enable PDMA for DTC chips Finn Thain
2016-01-03 5:06 ` [PATCH v4 77/78] ncr5380: Fix wait for 53C80 registers registers after PDMA Finn Thain
2016-01-03 5:06 ` [PATCH v4 78/78] ncr5380: Add support for HP C2502 Finn Thain
2016-01-07 2:53 ` [PATCH v4 00/78] More fixes, cleanup and modernization for NCR5380 drivers Martin K. Petersen
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=20160103050518.724542667@telegraphics.com.au \
--to=fthain@telegraphics.com.au \
--cc=JBottomley@odin.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--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