Commit 61e1ce58 authored by Finn Thain's avatar Finn Thain Committed by Martin K. Petersen
Browse files

scsi: ncr5380: Use correct types for device register accessors



For timeout values adopt unsigned long, which is the type of jiffies etc.

For chip register values and bit masks pass u8, which is the return type
of readb, inb etc.

For device register offsets adopt unsigned int, as it is suitable for
adding to base addresses.

Pass the NCR5380_hostdata pointer to the board-specific routines instead
of the Scsi_Host pointer. The board-specific code is concerned with
hardware and not with SCSI protocol or the mid-layer.

Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Tested-by: default avatarOndrej Zary <linux@rainbow-software.org>
Tested-by: default avatarMichael Schmitz <schmitzmic@gmail.com>
Acked-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 820682b1
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -196,8 +196,9 @@ static inline void initialize_SCp(struct scsi_cmnd *cmd)
 */

static int NCR5380_poll_politely2(struct Scsi_Host *instance,
                                  int reg1, int bit1, int val1,
                                  int reg2, int bit2, int val2, int wait)
                                  unsigned int reg1, u8 bit1, u8 val1,
                                  unsigned int reg2, u8 bit2, u8 val2,
                                  unsigned long wait)
{
	struct NCR5380_hostdata *hostdata = shost_priv(instance);
	unsigned long n = hostdata->poll_loops;
@@ -284,6 +285,7 @@ mrs[] = {

static void NCR5380_print(struct Scsi_Host *instance)
{
	struct NCR5380_hostdata *hostdata = shost_priv(instance);
	unsigned char status, data, basr, mr, icr, i;

	data = NCR5380_read(CURRENT_SCSI_DATA_REG);
@@ -333,6 +335,7 @@ static struct {

static void NCR5380_print_phase(struct Scsi_Host *instance)
{
	struct NCR5380_hostdata *hostdata = shost_priv(instance);
	unsigned char status;
	int i;

@@ -1316,6 +1319,7 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance,
				unsigned char *phase, int *count,
				unsigned char **data)
{
	struct NCR5380_hostdata *hostdata = shost_priv(instance);
	unsigned char p = *phase, tmp;
	int c = *count;
	unsigned char *d = *data;
@@ -1438,6 +1442,7 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance,

static void do_reset(struct Scsi_Host *instance)
{
	struct NCR5380_hostdata __maybe_unused *hostdata = shost_priv(instance);
	unsigned long flags;

	local_irq_save(flags);
@@ -1460,6 +1465,7 @@ static void do_reset(struct Scsi_Host *instance)

static int do_abort(struct Scsi_Host *instance)
{
	struct NCR5380_hostdata *hostdata = shost_priv(instance);
	unsigned char *msgptr, phase, tmp;
	int len;
	int rc;
+5 −2
Original line number Diff line number Diff line
@@ -302,10 +302,13 @@ static void NCR5380_reselect(struct Scsi_Host *instance);
static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *, struct scsi_cmnd *);
static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
static int NCR5380_poll_politely2(struct Scsi_Host *, int, int, int, int, int, int, int);
static int NCR5380_poll_politely2(struct Scsi_Host *,
                                  unsigned int, u8, u8,
                                  unsigned int, u8, u8, unsigned long);

static inline int NCR5380_poll_politely(struct Scsi_Host *instance,
					int reg, int bit, int val, int wait)
                                        unsigned int reg, u8 bit, u8 val,
                                        unsigned long wait)
{
	return NCR5380_poll_politely2(instance, reg, bit, val,
						reg, bit, val, wait);
+11 −9
Original line number Diff line number Diff line
@@ -14,8 +14,8 @@
#include <scsi/scsi_host.h>

#define priv(host)			((struct NCR5380_hostdata *)(host)->hostdata)
#define NCR5380_read(reg)		cumanascsi_read(instance, reg)
#define NCR5380_write(reg, value)	cumanascsi_write(instance, reg, value)
#define NCR5380_read(reg)		cumanascsi_read(hostdata, reg)
#define NCR5380_write(reg, value)	cumanascsi_write(hostdata, reg, value)

#define NCR5380_dma_xfer_len(instance, cmd, phase)	(cmd->transfersize)
#define NCR5380_dma_recv_setup		cumanascsi_pread
@@ -169,30 +169,32 @@ static inline int cumanascsi_pread(struct Scsi_Host *host,
	return 0;
}

static unsigned char cumanascsi_read(struct Scsi_Host *host, unsigned int reg)
static u8 cumanascsi_read(struct NCR5380_hostdata *hostdata,
                          unsigned int reg)
{
	u8 __iomem *base = priv(host)->io;
	unsigned char val;
	u8 __iomem *base = hostdata->io;
	u8 val;

	writeb(0, base + CTRL);

	val = readb(base + 0x2100 + (reg << 2));

	priv(host)->ctrl = 0x40;
	hostdata->ctrl = 0x40;
	writeb(0x40, base + CTRL);

	return val;
}

static void cumanascsi_write(struct Scsi_Host *host, unsigned int reg, unsigned int value)
static void cumanascsi_write(struct NCR5380_hostdata *hostdata,
                             unsigned int reg, u8 value)
{
	u8 __iomem *base = priv(host)->io;
	u8 __iomem *base = hostdata->io;

	writeb(0, base + CTRL);

	writeb(value, base + 0x2100 + (reg << 2));

	priv(host)->ctrl = 0x40;
	hostdata->ctrl = 0x40;
	writeb(0x40, base + CTRL);
}

+2 −4
Original line number Diff line number Diff line
@@ -16,10 +16,8 @@

#define priv(host)			((struct NCR5380_hostdata *)(host)->hostdata)

#define NCR5380_read(reg) \
	readb(priv(instance)->io + ((reg) << 2))
#define NCR5380_write(reg, value) \
	writeb(value, priv(instance)->io + ((reg) << 2))
#define NCR5380_read(reg)           readb(hostdata->io + ((reg) << 2))
#define NCR5380_write(reg, value)   writeb(value, hostdata->io + ((reg) << 2))

#define NCR5380_dma_xfer_len(instance, cmd, phase)	(0)
#define NCR5380_dma_recv_setup		oakscsi_pread
+8 −8
Original line number Diff line number Diff line
@@ -126,8 +126,8 @@ static inline unsigned long SCSI_DMA_GETADR(void)

static void atari_scsi_fetch_restbytes(void);

static unsigned char (*atari_scsi_reg_read)(unsigned char reg);
static void (*atari_scsi_reg_write)(unsigned char reg, unsigned char value);
static u8 (*atari_scsi_reg_read)(unsigned int);
static void (*atari_scsi_reg_write)(unsigned int, u8);

static unsigned long	atari_dma_residual, atari_dma_startaddr;
static short		atari_dma_active;
@@ -658,30 +658,30 @@ static unsigned long atari_dma_xfer_len(unsigned long wanted_len,
 * NCR5380_write call these functions via function pointers.
 */

static unsigned char atari_scsi_tt_reg_read(unsigned char reg)
static u8 atari_scsi_tt_reg_read(unsigned int reg)
{
	return tt_scsi_regp[reg * 2];
}

static void atari_scsi_tt_reg_write(unsigned char reg, unsigned char value)
static void atari_scsi_tt_reg_write(unsigned int reg, u8 value)
{
	tt_scsi_regp[reg * 2] = value;
}

static unsigned char atari_scsi_falcon_reg_read(unsigned char reg)
static u8 atari_scsi_falcon_reg_read(unsigned int reg)
{
	unsigned long flags;
	unsigned char result;
	u8 result;

	reg += 0x88;
	local_irq_save(flags);
	dma_wd.dma_mode_status = (u_short)reg;
	result = (u_char)dma_wd.fdc_acces_seccount;
	result = (u8)dma_wd.fdc_acces_seccount;
	local_irq_restore(flags);
	return result;
}

static void atari_scsi_falcon_reg_write(unsigned char reg, unsigned char value)
static void atari_scsi_falcon_reg_write(unsigned int reg, u8 value)
{
	unsigned long flags;

Loading