Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/eisa - Type hygiene.
details: https://anonhg.NetBSD.org/src/rev/94f7bca65508
branches: trunk
changeset: 1022593:94f7bca65508
user: thorpej <thorpej%NetBSD.org@localhost>
date: Mon Jul 26 16:45:56 2021 +0000
description:
- Type hygiene.
- Rename ahb_ecb::hashkey to ahb_ecb::ecb_dma_addr, and use that value
rather than recomputing it all the time.
diffstat:
sys/dev/eisa/ahb.c | 43 ++++++++++++++------------------
sys/dev/eisa/ahbreg.h | 65 ++++++++++++++++++++++++--------------------------
2 files changed, 50 insertions(+), 58 deletions(-)
diffs (257 lines):
diff -r 39c5e20475be -r 94f7bca65508 sys/dev/eisa/ahb.c
--- a/sys/dev/eisa/ahb.c Mon Jul 26 16:22:24 2021 +0000
+++ b/sys/dev/eisa/ahb.c Mon Jul 26 16:45:56 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ahb.c,v 1.67 2021/07/24 15:52:16 thorpej Exp $ */
+/* $NetBSD: ahb.c,v 1.68 2021/07/26 16:45:56 thorpej Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ahb.c,v 1.67 2021/07/24 15:52:16 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ahb.c,v 1.68 2021/07/26 16:45:56 thorpej Exp $");
#include "opt_ddb.h"
@@ -108,7 +108,7 @@
/*
* Offset of an ECB from the beginning of the ECB DMA mapping.
*/
-#define AHB_ECB_OFF(e) (((u_long)(e)) - ((u_long)&sc->sc_ecbs[0]))
+#define AHB_ECB_OFF(e) (((uintptr_t)(e)) - ((uintptr_t)&sc->sc_ecbs[0]))
struct ahb_probe_data {
int sc_irq;
@@ -121,7 +121,7 @@
static int ahbintr(void *);
static void ahb_free_ecb(struct ahb_softc *, struct ahb_ecb *);
static struct ahb_ecb *ahb_get_ecb(struct ahb_softc *);
-static struct ahb_ecb *ahb_ecb_phys_kv(struct ahb_softc *, physaddr);
+static struct ahb_ecb *ahb_ecb_phys_kv(struct ahb_softc *, uint32_t);
static void ahb_done(struct ahb_softc *, struct ahb_ecb *);
static int ahb_find(bus_space_tag_t, bus_space_handle_t,
struct ahb_probe_data *);
@@ -294,12 +294,7 @@
Debugger();
}
- /*
- * don't know if this will work.
- * XXX WHAT DOES THIS COMMENT MEAN?! --thorpej
- */
- bus_space_write_4(iot, ioh, MBOXOUT0,
- sc->sc_dmamap_ecb->dm_segs[0].ds_addr + AHB_ECB_OFF(ecb));
+ bus_space_write_4(iot, ioh, MBOXOUT0, ecb->ecb_dma_addr);
bus_space_write_1(iot, ioh, ATTN, opcode |
ecb->xs->xs_periph->periph_target);
@@ -309,7 +304,7 @@
}
/*
- * Function to send an immediate type command to the adapter
+ * Function to send an immediate type command to the adapter
*/
static void
ahb_send_immed(struct ahb_softc *sc, u_int32_t cmd, struct ahb_ecb *ecb)
@@ -454,13 +449,14 @@
return (error);
}
+ ecb->ecb_dma_addr = sc->sc_dmamap_ecb->dm_segs[0].ds_addr +
+ AHB_ECB_OFF(ecb);
+
/*
* put in the phystokv hash table
* Never gets taken out.
*/
- ecb->hashkey = sc->sc_dmamap_ecb->dm_segs[0].ds_addr +
- AHB_ECB_OFF(ecb);
- hashnum = ECB_HASH(ecb->hashkey);
+ hashnum = ECB_HASH(ecb->ecb_dma_addr);
ecb->nexthash = sc->sc_ecbhash[hashnum];
sc->sc_ecbhash[hashnum] = ecb;
ahb_reset_ecb(sc, ecb);
@@ -513,13 +509,13 @@
* given a physical address, find the ecb that it corresponds to.
*/
static struct ahb_ecb *
-ahb_ecb_phys_kv(struct ahb_softc *sc, physaddr ecb_phys)
+ahb_ecb_phys_kv(struct ahb_softc *sc, uint32_t ecb_phys)
{
int hashnum = ECB_HASH(ecb_phys);
struct ahb_ecb *ecb = sc->sc_ecbhash[hashnum];
while (ecb) {
- if (ecb->hashkey == ecb_phys)
+ if (ecb->ecb_dma_addr == ecb_phys)
break;
ecb = ecb->nexthash;
}
@@ -867,11 +863,11 @@
ecb->opt2 = periph->periph_lun | ECB_NRB;
memcpy(&ecb->scsi_cmd, xs->cmd,
ecb->scsi_cmd_length = xs->cmdlen);
- ecb->sense_ptr = sc->sc_dmamap_ecb->dm_segs[0].ds_addr +
- AHB_ECB_OFF(ecb) + offsetof(struct ahb_ecb, ecb_sense);
+ ecb->sense_ptr = ecb->ecb_dma_addr +
+ offsetof(struct ahb_ecb, ecb_sense);
ecb->req_sense_length = sizeof(ecb->ecb_sense);
- ecb->status = sc->sc_dmamap_ecb->dm_segs[0].ds_addr +
- AHB_ECB_OFF(ecb) + offsetof(struct ahb_ecb, ecb_status);
+ ecb->status = ecb->ecb_dma_addr +
+ offsetof(struct ahb_ecb, ecb_status);
ecb->ecb_status.host_stat = 0x00;
ecb->ecb_status.target_stat = 0x00;
@@ -927,17 +923,16 @@
ecb->dmamap_xfer->dm_segs[seg].ds_len;
}
- ecb->data_addr = sc->sc_dmamap_ecb->dm_segs[0].ds_addr +
- AHB_ECB_OFF(ecb) +
+ ecb->data_addr = ecb->ecb_dma_addr +
offsetof(struct ahb_ecb, ahb_dma);
ecb->data_length = ecb->dmamap_xfer->dm_nsegs *
sizeof(struct ahb_dma_seg);
ecb->opt1 |= ECB_S_G;
} else { /* No data xfer, use non S/G values */
- ecb->data_addr = (physaddr)0;
+ ecb->data_addr = 0;
ecb->data_length = 0;
}
- ecb->link_addr = (physaddr)0;
+ ecb->link_addr = 0;
bus_dmamap_sync(sc->sc_dmat, sc->sc_dmamap_ecb,
AHB_ECB_OFF(ecb), sizeof(struct ahb_ecb),
diff -r 39c5e20475be -r 94f7bca65508 sys/dev/eisa/ahbreg.h
--- a/sys/dev/eisa/ahbreg.h Mon Jul 26 16:22:24 2021 +0000
+++ b/sys/dev/eisa/ahbreg.h Mon Jul 26 16:45:56 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ahbreg.h,v 1.17 2021/07/24 15:44:16 thorpej Exp $ */
+/* $NetBSD: ahbreg.h,v 1.18 2021/07/26 16:45:56 thorpej Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -45,9 +45,6 @@
* functioning of this software in any circumstances.
*/
-typedef u_int32_t physaddr;
-typedef u_int32_t physlen;
-
/*
* Offset of AHA1740 registers, relative from slot base.
*/
@@ -133,12 +130,12 @@
#define AHB_NSEG 33 /* number of DMA segments supported */
struct ahb_dma_seg {
- physaddr seg_addr;
- physlen seg_len;
+ uint32_t seg_addr;
+ uint32_t seg_len;
};
struct ahb_ecb_status {
- u_short status;
+ uint16_t status;
#define ST_DON 0x0001
#define ST_DU 0x0002
#define ST_QF 0x0008
@@ -151,7 +148,7 @@
#define ST_INI 0x0800
#define ST_ME 0x1000
#define ST_ECA 0x4000
- u_char host_stat;
+ uint8_t host_stat;
#define HS_OK 0x00
#define HS_CMD_ABORTED_HOST 0x04
#define HS_CMD_ABORTED_ADAPTER 0x05
@@ -159,29 +156,29 @@
#define HS_HARDWARE_ERR 0x20
#define HS_SCSI_RESET_ADAPTER 0x22
#define HS_SCSI_RESET_INCOMING 0x23
- u_char target_stat;
- u_int32_t resid_count;
- u_int32_t resid_addr;
- u_short addit_status;
- u_char sense_len;
- u_char unused[9];
- u_char cdb[6];
+ uint8_t target_stat;
+ uint32_t resid_count;
+ uint32_t resid_addr;
+ uint16_t addit_status;
+ uint8_t sense_len;
+ uint8_t unused[9];
+ uint8_t cdb[6];
};
struct ahb_ecb {
- u_char opcode;
+ uint8_t opcode;
#define ECB_SCSI_OP 0x01
- u_char:4;
- u_char options:3;
- u_char:1;
- short opt1;
+ uint8_t:4;
+ uint8_t options:3;
+ uint8_t:1;
+ uint16_t opt1;
#define ECB_CNE 0x0001
#define ECB_DI 0x0080
#define ECB_SES 0x0400
#define ECB_S_G 0x1000
#define ECB_DSB 0x4000
#define ECB_ARS 0x8000
- short opt2;
+ uint16_t opt2;
#define ECB_LUN 0x0007
#define ECB_TAG 0x0008
#define ECB_TT 0x0030
@@ -192,18 +189,18 @@
#define ECB_CHK 0x0800
#define ECB_REC 0x4000
#define ECB_NRB 0x8000
- u_short unused1;
- physaddr data_addr;
- physlen data_length;
- physaddr status;
- physaddr link_addr;
- short unused2;
- short unused3;
- physaddr sense_ptr;
- u_char req_sense_length;
- u_char scsi_cmd_length;
- short cksum;
- u_char scsi_cmd[12];
+ uint16_t unused1;
+ uint32_t data_addr;
+ uint32_t data_length;
+ uint32_t status;
+ uint32_t link_addr;
+ uint16_t unused2;
+ uint16_t unused3;
+ uint32_t sense_ptr;
+ uint8_t req_sense_length;
+ uint8_t scsi_cmd_length;
+ uint16_t cksum;
+ uint8_t scsi_cmd[12];
/*-----------------end of hardware supported fields----------------*/
@@ -213,7 +210,7 @@
TAILQ_ENTRY(ahb_ecb) chain;
struct ahb_ecb *nexthash;
- int32_t hashkey;
+ uint32_t ecb_dma_addr;
struct scsipi_xfer *xs; /* the scsipi_xfer for this cmd */
int flags;
#define ECB_ALLOC 0x01
Home |
Main Index |
Thread Index |
Old Index