Module Name:    src
Committed By:   simonb
Date:           Thu Jun 18 13:52:08 UTC 2020

Modified Files:
        src/sys/arch/mips/cavium: octeonreg.h octeonvar.h
        src/sys/arch/mips/cavium/dev: if_cnmac.c octeon_asxvar.h
            octeon_cop2reg.h octeon_cop2var.h octeon_fau.c octeon_faureg.h
            octeon_fauvar.h octeon_fpa.c octeon_fpareg.h octeon_fpavar.h
            octeon_gmx.c octeon_gmxreg.h octeon_gmxvar.h octeon_ipd.c
            octeon_ipdreg.h octeon_ipdvar.h octeon_l2creg.h octeon_mpireg.h
            octeon_pip.c octeon_pipreg.h octeon_pipvar.h octeon_pko.c
            octeon_pkoreg.h octeon_pkovar.h octeon_pow.c octeon_powreg.h
            octeon_powvar.h octeon_rnm.c octeon_rnmreg.h octeon_smi.c
            octeon_smireg.h octeon_smivar.h octeon_twsi.c octeon_twsireg.h
            octeon_uart.c

Log Message:
General code cleanup:
 - use generic macros for building IO and IOBDMA addresses instead
   of many different variations of the same theme.
 - use #define's for CVMSEG addresses instead of magic numbers.
 - use __BIT/__BITS/__SHIFTIN/__SHIFTOUT in most places, instead of
   foo_SHIFT defines or (worse) shifting by magic numbers.

No functional changes.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/mips/cavium/octeonreg.h
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/mips/cavium/octeonvar.h
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/mips/cavium/dev/if_cnmac.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mips/cavium/dev/octeon_asxvar.h \
    src/sys/arch/mips/cavium/dev/octeon_fau.c \
    src/sys/arch/mips/cavium/dev/octeon_fauvar.h \
    src/sys/arch/mips/cavium/dev/octeon_ipdvar.h \
    src/sys/arch/mips/cavium/dev/octeon_pipvar.h \
    src/sys/arch/mips/cavium/dev/octeon_pko.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/mips/cavium/dev/octeon_cop2reg.h \
    src/sys/arch/mips/cavium/dev/octeon_cop2var.h \
    src/sys/arch/mips/cavium/dev/octeon_faureg.h \
    src/sys/arch/mips/cavium/dev/octeon_fpareg.h \
    src/sys/arch/mips/cavium/dev/octeon_gmxreg.h \
    src/sys/arch/mips/cavium/dev/octeon_ipdreg.h \
    src/sys/arch/mips/cavium/dev/octeon_l2creg.h \
    src/sys/arch/mips/cavium/dev/octeon_mpireg.h \
    src/sys/arch/mips/cavium/dev/octeon_pipreg.h \
    src/sys/arch/mips/cavium/dev/octeon_pkoreg.h \
    src/sys/arch/mips/cavium/dev/octeon_powreg.h \
    src/sys/arch/mips/cavium/dev/octeon_smireg.h \
    src/sys/arch/mips/cavium/dev/octeon_twsi.c \
    src/sys/arch/mips/cavium/dev/octeon_twsireg.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/mips/cavium/dev/octeon_fpa.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/mips/cavium/dev/octeon_fpavar.h \
    src/sys/arch/mips/cavium/dev/octeon_gmxvar.h \
    src/sys/arch/mips/cavium/dev/octeon_pip.c \
    src/sys/arch/mips/cavium/dev/octeon_powvar.h \
    src/sys/arch/mips/cavium/dev/octeon_smivar.h
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/mips/cavium/dev/octeon_gmx.c \
    src/sys/arch/mips/cavium/dev/octeon_rnm.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/mips/cavium/dev/octeon_ipd.c \
    src/sys/arch/mips/cavium/dev/octeon_pkovar.h \
    src/sys/arch/mips/cavium/dev/octeon_rnmreg.h \
    src/sys/arch/mips/cavium/dev/octeon_smi.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/mips/cavium/dev/octeon_pow.c \
    src/sys/arch/mips/cavium/dev/octeon_uart.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/cavium/octeonreg.h
diff -u src/sys/arch/mips/cavium/octeonreg.h:1.1 src/sys/arch/mips/cavium/octeonreg.h:1.2
--- src/sys/arch/mips/cavium/octeonreg.h:1.1	Mon Jun 15 07:48:12 2020
+++ src/sys/arch/mips/cavium/octeonreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeonreg.h,v 1.1 2020/06/15 07:48:12 simonb Exp $	*/
+/*	$NetBSD: octeonreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -35,6 +35,52 @@
 
 #define	OCTEON_PLL_REF_CLK		50000000	/* defined as 50MHz */
 
+/* ---- virtual addressing */
+
+/* CVMSEG virtual addresses */
+#define	OCTEON_CVMSEG_LM		UINT64_C(0xffffffffffff8000)
+#define	OCTEON_CVMSEG_IO		UINT64_C(0xffffffffffffa000)
+
+#define	OCTEON_IOBDMA_GLOBAL_ADDR	UINT64_C(0xffffffffffffa200)
+#define	OCTEON_IOBDMA_LOCAL_ADDR	UINT64_C(0xffffffffffffb200)
+#define	OCTEON_LMTDMA_GLOBAL_ADDR	UINT64_C(0xffffffffffffa400)
+#define	OCTEON_LMTDMA_LOCAL_ADDR	UINT64_C(0xffffffffffffb400)
+/* use globally ordered by default */
+#define	OCTEON_IOBDMA_ADDR		OCTEON_IOBDMA_GLOBAL_ADDR
+#define	OCTEON_LMTDMA_ADDR		OCTEON_LMTDMA_GLOBAL_ADDR
+
+/* ---- physical addressing */
+
+/*
+ * Cavium Octeon has a 49 bit physical address space.
+ *
+ * Bit 48 == 0 defines a L2 or DRAM address
+ * Bit 48 == 1 defines an IO address
+ *
+ * For IO addresses:
+ *	Bits 47-43:	Major DID - directs request to correct hardware block
+ *	Bits 42-40:	Sub DID - directs request within the hardware block
+ *	Bits 39-38:	reserved - 0
+ *	Bits 37-36:	reserved - 0 (on Octeon and Octeon Plus)
+ *	Bits 37-36:	Node - selects node/chip (Octeon II)
+ *	Bits 35- 0:	IO bus device address with the DID
+ */
+#define	OCTEON_ADDR_IO			__BIT(48)
+#define	OCTEON_ADDR_MAJOR_DID		__BITS(47,43)
+#define	OCTEON_ADDR_SUB_DID		__BITS(42,40)
+#define	OCTEON_ADDR_NODE		__BITS(37,36)
+#define	OCTEON_ADDR_OFFSET		__BITS(35,0)
+
+#define	OCTEON_ADDR_DID(major, sub)			(	\
+	__SHIFTIN((major), OCTEON_ADDR_MAJOR_DID) | 		\
+	__SHIFTIN((sub), OCTEON_ADDR_SUB_DID))
+
+/* used to build addresses for load/store operations */
+#define	OCTEON_ADDR_IO_DID(major, sub)				\
+	(OCTEON_ADDR_IO | OCTEON_ADDR_DID((major), (sub)))
+
+
+/* ---- core specific registers */
 
 /* OCTEON II */
 #define	MIO_RST_BOOT			UINT64_C(0x1180000001600)
@@ -63,4 +109,23 @@
 #define	RST_COLD_DATA(n)		(UINT64_C(0x11800060017c0) + (n) * 0x8)
 
 
+/* ---- IOBDMA */
+
+/* 4.7 IOBDMA Operations */
+#define	IOBDMA_SCRADDR			__BITS(63,56)
+#define	IOBDMA_LEN			__BITS(55,48)
+/*	IOBDMA_MAJOR_DID		same as OCTEON_MAJOR_DID */
+/*	IOBDMA_SUB_DID			same as OCTEON_SUB_DID */
+/*					reserved 39:38 */
+#define	IOBDMA_NODE			__BITS(37,36)	/* Octeon 3 only */
+#define	IOBDMA_OFFSET			__BITS(35,0)
+/* technically __BITS(2,0) are reserved as 0, address must be 64-bit aligned */
+
+#define	IOBDMA_CREATE(major, sub, scr, len, offset)	(	\
+	OCTEON_ADDR_DID((major), (sub)) |			\
+	__SHIFTIN((scr), IOBDMA_SCRADDR) |			\
+	__SHIFTIN((len), IOBDMA_LEN) |				\
+	__SHIFTIN((offset), IOBDMA_OFFSET))
+
+
 #endif /* !_OCTEONREG_H_ */

Index: src/sys/arch/mips/cavium/octeonvar.h
diff -u src/sys/arch/mips/cavium/octeonvar.h:1.10 src/sys/arch/mips/cavium/octeonvar.h:1.11
--- src/sys/arch/mips/cavium/octeonvar.h:1.10	Mon Jun 15 07:48:12 2020
+++ src/sys/arch/mips/cavium/octeonvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeonvar.h,v 1.10 2020/06/15 07:48:12 simonb Exp $	*/
+/*	$NetBSD: octeonvar.h,v 1.11 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -38,6 +38,8 @@
 #include <mips/locore.h>
 #include <dev/pci/pcivar.h>
 
+#include <mips/cavium/octeonreg.h>
+
 /* XXX elsewhere */
 #define	_ASM_PROLOGUE \
 		"	.set push			\n" \
@@ -338,21 +340,20 @@ octeon_xkphys_write_8(paddr_t address, u
 static __inline void
 octeon_iobdma_write_8(uint64_t value)
 {
-	uint64_t addr = UINT64_C(0xffffffffffffa200);
 
-	octeon_xkphys_write_8(addr, value);
+	octeon_xkphys_write_8(OCTEON_IOBDMA_ADDR, value);
 }
 
 static __inline uint64_t
 octeon_cvmseg_read_8(size_t offset)
 {
-	return octeon_xkphys_read_8(UINT64_C(0xffffffffffff8000) + offset);
+	return octeon_xkphys_read_8(OCTEON_CVMSEG_LM + offset);
 }
 
 static __inline void
 octeon_cvmseg_write_8(size_t offset, uint64_t value)
 {
-	octeon_xkphys_write_8(UINT64_C(0xffffffffffff8000) + offset, value);
+	octeon_xkphys_write_8(OCTEON_CVMSEG_LM + offset, value);
 }
 
 /* XXX */

Index: src/sys/arch/mips/cavium/dev/if_cnmac.c
diff -u src/sys/arch/mips/cavium/dev/if_cnmac.c:1.21 src/sys/arch/mips/cavium/dev/if_cnmac.c:1.22
--- src/sys/arch/mips/cavium/dev/if_cnmac.c:1.21	Wed Jun 10 07:34:19 2020
+++ src/sys/arch/mips/cavium/dev/if_cnmac.c	Thu Jun 18 13:52:08 2020
@@ -1,8 +1,8 @@
-/*	$NetBSD: if_cnmac.c,v 1.21 2020/06/10 07:34:19 simonb Exp $	*/
+/*	$NetBSD: if_cnmac.c,v 1.22 2020/06/18 13:52:08 simonb Exp $	*/
 
 #include <sys/cdefs.h>
 #if 0
-__KERNEL_RCSID(0, "$NetBSD: if_cnmac.c,v 1.21 2020/06/10 07:34:19 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_cnmac.c,v 1.22 2020/06/18 13:52:08 simonb Exp $");
 #endif
 
 #include "opt_octeon.h"
@@ -63,18 +63,15 @@ __KERNEL_RCSID(0, "$NetBSD: if_cnmac.c,v
 
 #include <mips/cpuregs.h>
 
-#include <mips/cavium/dev/octeon_asxreg.h>
+#include <mips/cavium/octeonreg.h>
+#include <mips/cavium/include/iobusvar.h>
+
 #include <mips/cavium/dev/octeon_ciureg.h>
-#include <mips/cavium/dev/octeon_npireg.h>
 #include <mips/cavium/dev/octeon_gmxreg.h>
-#include <mips/cavium/dev/octeon_ipdreg.h>
 #include <mips/cavium/dev/octeon_pipreg.h>
 #include <mips/cavium/dev/octeon_powreg.h>
 #include <mips/cavium/dev/octeon_faureg.h>
 #include <mips/cavium/dev/octeon_fpareg.h>
-#include <mips/cavium/dev/octeon_bootbusreg.h>
-#include <mips/cavium/include/iobusvar.h>
-#include <mips/cavium/octeonvar.h>
 #include <mips/cavium/dev/octeon_fpavar.h>
 #include <mips/cavium/dev/octeon_gmxvar.h>
 #include <mips/cavium/dev/octeon_fauvar.h>

Index: src/sys/arch/mips/cavium/dev/octeon_asxvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_asxvar.h:1.2 src/sys/arch/mips/cavium/dev/octeon_asxvar.h:1.3
--- src/sys/arch/mips/cavium/dev/octeon_asxvar.h:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_asxvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_asxvar.h,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_asxvar.h,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -53,4 +53,4 @@ int			octasx_enable(struct octasx_softc 
 int			octasx_clk_set(struct octasx_softc *, int, int);
 uint64_t		octasx_int_summary(struct octasx_softc *sc);
 
-#endif
+#endif /* _OCTEON_ASXVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_fau.c
diff -u src/sys/arch/mips/cavium/dev/octeon_fau.c:1.2 src/sys/arch/mips/cavium/dev/octeon_fau.c:1.3
--- src/sys/arch/mips/cavium/dev/octeon_fau.c:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_fau.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_fau.c,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_fau.c,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_fau.c,v 1.2 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_fau.c,v 1.3 2020/06/18 13:52:08 simonb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -49,26 +49,18 @@ static inline void	octfau_op_store_paddr
 static inline int64_t
 octfau_op_load(uint64_t args)
 {
-	paddr_t addr;
+	paddr_t addr = OCTEON_ADDR_IO_DID(FAU_MAJOR_DID, FAU_SUB_DID) |
+	    __SHIFTIN(args, OCTEON_ADDR_OFFSET);
 
-	addr =
-	    ((uint64_t)1 << 48) |
-	    ((uint64_t)(CN30XXFAU_MAJORDID & 0x1f) << 43) |
-	    ((uint64_t)(CN30XXFAU_SUBDID & 0x7) << 40) |
-	    ((uint64_t)(args & 0xfffffffffULL) << 0);
 	return octeon_read_csr(addr);
 }
 
 static inline void
 octfau_op_store(uint64_t args, int64_t value)
 {
-	paddr_t addr;
+	paddr_t addr = OCTEON_ADDR_IO_DID(FAU_MAJOR_DID, FAU_SUB_DID) |
+	    __SHIFTIN(args, OCTEON_ADDR_OFFSET);
 
-	addr =
-	    ((uint64_t)1 << 48) |
-	    ((uint64_t)(CN30XXFAU_MAJORDID & 0x1f) << 43) |
-	    ((uint64_t)(CN30XXFAU_SUBDID & 0x7) << 40) |
-	    ((uint64_t)(args & 0xfffffffffULL) << 0);
 	octeon_write_csr(addr, value);
 }
 
@@ -85,12 +77,11 @@ octfau_op_store(uint64_t args, int64_t v
 static inline int64_t
 octfau_op_load_paddr(int incval, int tagwait, int reg)
 {
-	uint64_t args;
+	uint64_t args =
+	    __SHIFTIN(incval, POW_LOAD_INCVAL) |
+	    __SHIFTIN(tagwait, POW_LOAD_TAGWAIT) |
+	    __SHIFTIN(reg, POW_LOAD_REG);
 
-	args =
-	    ((uint64_t)(incval & 0x3fffff) << 14) |
-	    ((uint64_t)(tagwait & 0x1) << 13) |  
-	    ((uint64_t)(reg & 0x7ff) << 0);
 	return octfau_op_load(args);
 }
 
@@ -101,11 +92,8 @@ octfau_op_load_paddr(int incval, int tag
 static inline void
 octfau_op_store_paddr(int noadd, int reg, int64_t value)
 {
-	uint64_t args;
+	uint64_t args = POW_STORE_NOADD | __SHIFTIN(reg, POW_STORE_REG);
 
-	args =
-	    ((uint64_t)(noadd & 0x1) << 13) | 
-	    ((uint64_t)(reg & 0x7ff) << 0);
 	octfau_op_store(args, value);
 }
 
@@ -114,6 +102,7 @@ octfau_op_store_paddr(int noadd, int reg
 void
 octfau_op_init(struct octfau_desc *fd, size_t scroff, size_t regno)
 {
+
 	fd->fd_scroff = scroff;
 	fd->fd_regno = regno;
 }
@@ -121,6 +110,7 @@ octfau_op_init(struct octfau_desc *fd, s
 uint64_t
 octfau_op_save(struct octfau_desc *fd)
 {
+
 	OCTEON_SYNCIOBDMA/* XXX */;
 	return octeon_cvmseg_read_8(fd->fd_scroff);
 }
@@ -128,12 +118,14 @@ octfau_op_save(struct octfau_desc *fd)
 void
 octfau_op_restore(struct octfau_desc *fd, uint64_t backup)
 {
+
 	octeon_cvmseg_write_8(fd->fd_scroff, backup);
 }
 
 int64_t
 octfau_op_inc_8(struct octfau_desc *fd, int64_t v)
 {
+
 	octfau_op_iobdma_store_data(fd->fd_scroff, v, 0, OCT_FAU_OP_SIZE_64/* XXX */,
 	    fd->fd_regno);
 	OCTEON_SYNCIOBDMA/* XXX */;
@@ -143,6 +135,7 @@ octfau_op_inc_8(struct octfau_desc *fd, 
 int64_t
 octfau_op_incwait_8(struct octfau_desc *fd, int v)
 {
+
 	octfau_op_iobdma_store_data(fd->fd_scroff, v, 1, OCT_FAU_OP_SIZE_64/* XXX */,
 	    fd->fd_regno);
 	/* XXX */
@@ -154,11 +147,13 @@ octfau_op_incwait_8(struct octfau_desc *
 void
 octfau_op_add_8(struct octfau_desc *fd, int64_t v)
 {
+
 	octfau_op_store_paddr(0, fd->fd_regno, v);
 }
 
 void
 octfau_op_set_8(struct octfau_desc *fd, int64_t v)
 {
+
 	octfau_op_store_paddr(1, fd->fd_regno, v);
 }
Index: src/sys/arch/mips/cavium/dev/octeon_fauvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_fauvar.h:1.2 src/sys/arch/mips/cavium/dev/octeon_fauvar.h:1.3
--- src/sys/arch/mips/cavium/dev/octeon_fauvar.h:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_fauvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_fauvar.h,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_fauvar.h,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -29,6 +29,8 @@
 #ifndef _OCTEON_FAUVAR_H_
 #define _OCTEON_FAUVAR_H_
 
+#include <mips/cavium/octeonreg.h>
+
 /* ---- API */
 
 struct octfau_desc {
@@ -89,14 +91,9 @@ typedef enum {
 static inline void
 octfau_op_iobdma(int index, uint64_t args)
 {
-	uint64_t value;
+	uint64_t value = IOBDMA_CREATE(FAU_MAJOR_DID, FAU_SUB_DID,
+	    index, POW_IOBDMA_LEN, args);
 
-	value =
-	    ((uint64_t)(index & 0xff) << 56) |
-	    ((uint64_t)1 << 48) |
-	    ((uint64_t)(CN30XXFAU_MAJORDID & 0x1f) << 43) |
-	    ((uint64_t)(CN30XXFAU_SUBDID & 0x7) << 40) |
-	    ((uint64_t)args & 0xfffffffffULL);
 	octeon_iobdma_write_8(value);
 }
 
@@ -108,24 +105,21 @@ static inline void
 octfau_op_iobdma_store_data(int scraddr, int incval, int tagwait,
     int size, int reg)
 {
-	uint64_t args;
+	uint64_t args =
+	    __SHIFTIN(incval, POW_IOBDMA_INCVAL) |
+	    __SHIFTIN(tagwait, POW_IOBDMA_TAGWAIT) |
+	    __SHIFTIN(size, POW_IOBDMA_SIZE) |
+	    __SHIFTIN(reg, POW_IOBDMA_REG);
 
-	args =
-	    ((uint64_t)(incval & 0x3fffff) << 14) |
-	    ((uint64_t)(tagwait & 0x1) << 13) |  
-	    ((uint64_t)(size & 0x3) << 11) |  
-	    ((uint64_t)(reg & 0x7ff) << 0);
-	/*
-	 * `scraddr' parameter of IOBDMA operation is actually `index';
-	 */
-	octfau_op_iobdma((int)((uint32_t)scraddr >> 3) /* XXX */, args);
+	/* `scraddr' parameter of IOBDMA operation is actually `index' */
+	octfau_op_iobdma(scraddr / sizeof(uint64_t), args);
 }
 
 static inline void
 octfau_op_inc_fetch_8(struct octfau_desc *fd, int64_t v)
 {
-	octfau_op_iobdma_store_data(fd->fd_scroff, v, 0, OCT_FAU_OP_SIZE_64/* XXX */,
-	    fd->fd_regno);
+	octfau_op_iobdma_store_data(fd->fd_scroff, v, 0,
+	    OCT_FAU_OP_SIZE_64/* XXX */, fd->fd_regno);
 }
 
 static inline int64_t
Index: src/sys/arch/mips/cavium/dev/octeon_ipdvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_ipdvar.h:1.2 src/sys/arch/mips/cavium/dev/octeon_ipdvar.h:1.3
--- src/sys/arch/mips/cavium/dev/octeon_ipdvar.h:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_ipdvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_ipdvar.h,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_ipdvar.h,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -69,4 +69,4 @@ uint64_t		octipd_int_summary(struct octi
 void			octipd_int_enable(struct octipd_softc *, int);
 #endif /* CNMAC_DEBUG */
 
-#endif
+#endif /* _OCTEON_IPDVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_pipvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_pipvar.h:1.2 src/sys/arch/mips/cavium/dev/octeon_pipvar.h:1.3
--- src/sys/arch/mips/cavium/dev/octeon_pipvar.h:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_pipvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pipvar.h,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_pipvar.h,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -75,5 +75,4 @@ void		octpip_int_enable(struct octpip_so
 uint64_t	octpip_int_summary(struct octpip_softc *);
 #endif /* CNMAC_DEBUG */
 
-
-#endif
+#endif /* _OCTEON_PIPVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_pko.c
diff -u src/sys/arch/mips/cavium/dev/octeon_pko.c:1.2 src/sys/arch/mips/cavium/dev/octeon_pko.c:1.3
--- src/sys/arch/mips/cavium/dev/octeon_pko.c:1.2	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_pko.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pko.c,v 1.2 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_pko.c,v 1.3 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_pko.c,v 1.2 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_pko.c,v 1.3 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -37,12 +37,11 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_pko.c
 #include <mips/locore.h>
 #include <mips/cavium/octeonvar.h>
 #include <mips/cavium/dev/octeon_faureg.h>
+#include <mips/cavium/dev/octeon_fpareg.h>
 #include <mips/cavium/dev/octeon_fpavar.h>
 #include <mips/cavium/dev/octeon_pkoreg.h>
 #include <mips/cavium/dev/octeon_pkovar.h>
 
-static inline void	octpko_op_store(uint64_t, uint64_t);
-
 #ifdef CNMAC_DEBUG
 void			octpko_intr_evcnt_attach(struct octpko_softc *);
 void			octpko_intr_rml(void *);

Index: src/sys/arch/mips/cavium/dev/octeon_cop2reg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_cop2reg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_cop2reg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_cop2reg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_cop2reg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_cop2reg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_cop2reg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2008 Internet Initiative Japan, Inc.
@@ -33,8 +33,8 @@
  * DMFC2 / DMTC2 instructions
  */
 
-#ifndef _CN30XXCOP2REG_H_
-#define _CN30XXCOP2REG_H_
+#ifndef _OCTEON_COP2REG_H_
+#define _OCTEON_COP2REG_H_
 
 /* 3DES */
 
@@ -125,4 +125,4 @@
 #define	CVM_MT_KAS_KEY			0x0080	/* Load Key into KASUMI Unit */
 #define	CVM_MT_KAS_RESULT		0x0098	/* Load Result into KASUMI Unit */
 
-#endif /* _CN30XXCOP2REG_H_ */
+#endif /* _OCTEON_COP2REG_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_cop2var.h
diff -u src/sys/arch/mips/cavium/dev/octeon_cop2var.h:1.1 src/sys/arch/mips/cavium/dev/octeon_cop2var.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_cop2var.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_cop2var.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_cop2var.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_cop2var.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * TODO:
@@ -12,8 +12,8 @@
  *   direction argument (int dir, 0 => encrypt, 1 => decrypt) then branch.
  */
 
-#ifndef _CN30XXCOP2VAR_H_
-#define _CN30XXCOP2VAR_H_
+#ifndef _OCTEON_COP2VAR_H_
+#define _OCTEON_COP2VAR_H_
 
 #ifdef __OCTEON_USEUN__
 #define CNASM_ULD(r, o, b)		"uld	%["#r"], "#o"(%["#b"])	\n\t"
@@ -1035,4 +1035,4 @@ octeon_cop2_crc_reflect(XXX)
 
 /* XXX */
 
-#endif	/* _CN30XXCOP2VAR_H_ */
+#endif	/* _OCTEON_COP2VAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_faureg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_faureg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_faureg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_faureg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_faureg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_faureg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_faureg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -33,9 +33,30 @@
 #ifndef _OCTEON_FAUREG_H_
 #define _OCTEON_FAUREG_H_
 
+
+#define	FAU_MAJOR_DID			0x1e
+#define	FAU_SUB_DID			0
+
 /* ---- operations */
 
-#define	CN30XXFAU_MAJORDID	0x1e
-#define	CN30XXFAU_SUBDID	0
+/* -- load operations */
+#define	POW_LOAD_INCVAL			__BITS(35,14)
+#define	POW_LOAD_TAGWAIT		__BIT(13)
+/*      reserved			__BiTS(12,11) */
+#define	POW_LOAD_REG			__BITS(10,0)
+
+/* -- iobdma store operations */
+
+#define	POW_IOBDMA_LEN			1	/* always 1 for POW */
+#define	POW_IOBDMA_INCVAL		POW_LOAD_INCVAL
+#define	POW_IOBDMA_TAGWAIT		POW_LOAD_TAGWAIT
+#define	POW_IOBDMA_SIZE			__BITS(12,11)
+#define	POW_IOBDMA_REG			POW_LOAD_REG
+
+/* -- store operations */
+/*      reserved			__BiTS(35,14) */
+#define	POW_STORE_NOADD			__BIT(13)
+/*      reserved			__BiTS(12,11) */
+#define	POW_STORE_REG			__BITS(10,0)
 
 #endif /* _OCTEON_FAUREG_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_fpareg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_fpareg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_fpareg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_fpareg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_fpareg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_fpareg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_fpareg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -308,38 +308,11 @@
  * Free Pool Unit Operations
  */
 
-#define	FPA_MAJORDID				0x5			/* 0b00101 */
-
-#define	FPA_OPS_MAJORDID			UINT64_C(0x0000f80000000000)
-#define	 FPA_OPS_MAJORDID_SHIFT			43
-#define	FPA_OPS_SUBDID				UINT64_C(0x0000070000000000)
-#define	 FPA_OPS_SUBDID_SHIFT			40
-#define	FPA_OPS_XXX_39_0			UINT64_C(0x000000ffffffffff)
-
-/* Load Operations */
-
-#define	FPA_OPS_LOAD_1				UINT64_C(0x0001000000000000)
-#define	FPA_OPS_LOAD_MAJORDID			UINT64_C(0x0000f80000000000)
-#define	FPA_OPS_LOAD_SUBDID			UINT64_C(0x0000070000000000)
-#define	FPA_OPS_LOAD_XXX_39_0			UINT64_C(0x000000ffffffffff)
-
-/* IOBDMA Operations */
-
-#define	FPA_OPS_IOBDMA_SRCADDR			UINT64_C(0xff00000000000000)
-#define	FPA_OPS_IOBDMA_LEN			UINT64_C(0x00ff000000000000)
-#define	 FPA_OPS_IOBDMA_LEN_SHIFT		48
-#define	FPA_OPS_IOBDMA_MAJORDID			UINT64_C(0x0000f80000000000)
-#define	FPA_OPS_IOBDMA_SUBDIR			UINT64_C(0x0000070000000000)
-#define	FPA_OPS_IOBDMA_XXX_39_0			UINT64_C(0x000000ffffffffff)
+#define	FPA_MAJOR_DID				0x5
 
 /* Store Operations */
+#define	FPA_OPS_STORE_ADDR			UINT64_C(0x000000ffffffffff)
 
-#define	FPA_OPS_STORE_1				UINT64_C(0x0001000000000000)
-#define	FPA_OPS_STORE_MAJORDID			UINT64_C(0x0000f80000000000)
-#define	FPA_OPS_STORE_SUBDID			UINT64_C(0x0000070000000000)
-#define	FPA_OPS_STORE_XXX_39_0			UINT64_C(0x000000ffffffffff)
-
-#define	FPA_OPS_STORE_DATA_XXX_63_9		UINT64_C(0xfffffffffffffe00)
 #define	FPA_OPS_STORE_DATA_DWBCOUNT		UINT64_C(0x00000000000001ff)
 
 /* ---- bus_space(9) */
Index: src/sys/arch/mips/cavium/dev/octeon_gmxreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_gmxreg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_gmxreg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_gmxreg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_gmxreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_gmxreg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_gmxreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -245,15 +245,13 @@
 
 #define	RXN_RX_INBND_XXX_63_4			UINT64_C(0xfffffffffffffff0)
 #define	RXN_RX_INBND_DUPLEX			UINT64_C(0x0000000000000008)
-#define	 RXN_RX_INBND_DUPLEX_SHIFT		3
-#define	  RXN_RX_INBND_DUPLEX_HALF		(0ULL << RXN_RX_INBND_DUPLEX_SHIFT)
-#define	  RXN_RX_INBND_DUPLEX_FULL		(1ULL << RXN_RX_INBND_DUPLEX_SHIFT)
+#define	  RXN_RX_INBND_DUPLEX_HALF		  0
+#define	  RXN_RX_INBND_DUPLEX_FULL		  1
 #define	RXN_RX_INBND_SPEED			UINT64_C(0x0000000000000006)
-#define	 RXN_RX_INBND_SPEED_SHIFT		1
-#define	  RXN_RX_INBND_SPEED_2_5		(0ULL << RXN_RX_INBND_SPEED_SHIFT)
-#define	  RXN_RX_INBND_SPEED_25			(1ULL << RXN_RX_INBND_SPEED_SHIFT)
-#define	  RXN_RX_INBND_SPEED_125		(2ULL << RXN_RX_INBND_SPEED_SHIFT)
-#define	  RXN_RX_INBND_SPEED_XXX_3		(3ULL << RXN_RX_INBND_SPEED_SHIFT)
+#define	  RXN_RX_INBND_SPEED_2_5		  0
+#define	  RXN_RX_INBND_SPEED_25			  1
+#define	  RXN_RX_INBND_SPEED_125		  2
+#define	  RXN_RX_INBND_SPEED_XXX_3		  3
 #define	RXN_RX_INBND_STATUS			UINT64_C(0x0000000000000001)
 
 /* GMX RX Good Packets Registers */
@@ -305,15 +303,13 @@
 
 #define	RXN_ADR_CTL_XXX_63_4			UINT64_C(0xfffffffffffffff0)
 #define	RXN_ADR_CTL_CAM_MODE			UINT64_C(0x0000000000000008)
-#define	 RXN_ADR_CTL_CAM_MODE_SHIFT		3
-#define	  RXN_ADR_CTL_CAM_MODE_REJECT		(0ULL << RXN_ADR_CTL_CAM_MODE_SHIFT)
-#define	  RXN_ADR_CTL_CAM_MODE_ACCEPT		(1ULL << RXN_ADR_CTL_CAM_MODE_SHIFT)
+#define	  RXN_ADR_CTL_CAM_MODE_REJECT		  0
+#define	  RXN_ADR_CTL_CAM_MODE_ACCEPT		  1
 #define	RXN_ADR_CTL_MCST			UINT64_C(0x0000000000000006)
-#define	 RXN_ADR_CTL_MCST_SHIFT			1
-#define	  RXN_ADR_CTL_MCST_AFCAM		(0ULL << RXN_ADR_CTL_MCST_SHIFT)
-#define	  RXN_ADR_CTL_MCST_REJECT		(1ULL << RXN_ADR_CTL_MCST_SHIFT)
-#define	  RXN_ADR_CTL_MCST_ACCEPT		(2ULL << RXN_ADR_CTL_MCST_SHIFT)
-#define	  RXN_ADR_CTL_MCST_XXX_3		(3ULL << RXN_ADR_CTL_MCST_SHIFT)
+#define	  RXN_ADR_CTL_MCST_AFCAM		  0
+#define	  RXN_ADR_CTL_MCST_REJECT		  1
+#define	  RXN_ADR_CTL_MCST_ACCEPT		  2
+#define	  RXN_ADR_CTL_MCST_XXX_3		  3
 #define	RXN_ADR_CTL_BCST			UINT64_C(0x0000000000000001)
 
 /* Address-Filtering Control Enable Registers */
@@ -509,13 +505,10 @@
 #define	TX_OVR_BP_XXX_63_12			UINT64_C(0xfffffffffffff000)
 #define	TX_OVR_BP_XXX_11			UINT64_C(0x0000000000000800)
 #define	TX_OVR_BP_EN				UINT64_C(0x0000000000000700)
-#define	 TX_OVR_BP_EN_SHIFT			8
 #define	TX_OVR_BP_XXX_7				UINT64_C(0x0000000000000080)
 #define	TX_OVR_BP_BP				UINT64_C(0x0000000000000070)
-#define	 TX_OVR_BP_BP_SHIFT			4
 #define	TX_OVR_BP_XXX_3				UINT64_C(0x0000000000000008)
 #define	TX_OVR_BP_IGN_FULL			UINT64_C(0x0000000000000007)
-#define	 TX_OVR_BP_IGN_FULL_SHIFT		0
 
 /* TX Override Backpressure Register */
 
Index: src/sys/arch/mips/cavium/dev/octeon_ipdreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_ipdreg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_ipdreg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_ipdreg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_ipdreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_ipdreg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_ipdreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -222,11 +222,10 @@
 #define IPD_CTL_STATUS_WQE_LEND		UINT64_C(0x0000000000000010)
 #define IPD_CTL_STATUS_PBP_EN		UINT64_C(0x0000000000000008)
 #define IPD_CTL_STATUS_OPC_MODE		UINT64_C(0x0000000000000006)
-#define  IPD_CTL_STATUS_OPC_MODE_SHIFT	1
-#define   IPD_CTL_STATUS_OPC_MODE_NONE	(0ULL << IPD_CTL_STATUS_OPC_MODE_SHIFT)
-#define   IPD_CTL_STATUS_OPC_MODE_ALL	(1ULL << IPD_CTL_STATUS_OPC_MODE_SHIFT)
-#define   IPD_CTL_STATUS_OPC_MODE_ONE	(2ULL << IPD_CTL_STATUS_OPC_MODE_SHIFT)
-#define   IPD_CTL_STATUS_OPC_MODE_TWO	(3ULL << IPD_CTL_STATUS_OPC_MODE_SHIFT)
+#define   IPD_CTL_STATUS_OPC_MODE_NONE	  0
+#define   IPD_CTL_STATUS_OPC_MODE_ALL	  1
+#define   IPD_CTL_STATUS_OPC_MODE_ONE	  2
+#define   IPD_CTL_STATUS_OPC_MODE_TWO	  3
 #define IPD_CTL_STATUS_IPD_EN		UINT64_C(0x0000000000000001)
 
 /*
Index: src/sys/arch/mips/cavium/dev/octeon_l2creg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_l2creg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_l2creg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_l2creg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_l2creg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_l2creg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_l2creg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -30,8 +30,8 @@
  * L2C Registers
  */
 
-#ifndef _CN30XXL2CREG_H_
-#define _CN30XXL2CREG_H_
+#ifndef _OCTEON_L2CREG_H_
+#define _OCTEON_L2CREG_H_
 
 #define	L2C_CFG					0x0001180080000000ULL
 #define	L2T_ERR					0x0001180080000008ULL
@@ -66,4 +66,4 @@
 #define	L2C_BST1				0x00011800800007f0ULL
 #define	L2C_BST0				0x00011800800007f8ULL
 
-#endif /* _CN30XXL2CREG_H_ */
+#endif /* _OCTEON_L2CREG_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_mpireg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_mpireg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_mpireg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_mpireg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_mpireg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_mpireg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_mpireg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -48,7 +48,6 @@
 
 #define MPI_CFG_XXX_63_29			UINT64_C(0xffffffffe0000000)
 #define MPI_CFG_CLKDIV				UINT64_C(0x000000001fff0000)
-#define  MPI_CFG_CLKDIV_SHIFT			16
 #define MPI_CFG_XXX_15_12			UINT64_C(0x000000000000f000)
 #define MPI_CFG_CSLATE				UINT64_C(0x0000000000000800)
 #define MPI_CFG_TRITX				UINT64_C(0x0000000000000400)
@@ -71,10 +70,8 @@
 #define MPI_TX_LEAVECS				UINT64_C(0x0000000000010000)
 #define MPI_TX_XXX_15_13			UINT64_C(0x000000000000e000)
 #define MPI_TX_TXNUM				UINT64_C(0x0000000000001f00)
-#define  MPI_TX_TXNUM_SHIFT			8
 #define MPI_TX_XXX_7_5				UINT64_C(0x00000000000000e0)
 #define MPI_TX_TOTNUM				UINT64_C(0x000000000000001f)
-#define  MPI_TX_TOTNUM_SHIFT			0
 
 #define MPI_DATX_XXX_63_8			UINT64_C(0xffffffffffffff00)
 #define MPI_DATX_DATA				UINT64_C(0x00000000000000ff)
Index: src/sys/arch/mips/cavium/dev/octeon_pipreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_pipreg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_pipreg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_pipreg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_pipreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pipreg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_pipreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -363,11 +363,10 @@
 #define	PIP_PRT_CFGN_CRC_EN			UINT64_C(0x0000000000001000)
 #define	PIP_PRT_CFGN_11_10			UINT64_C(0x0000000000000c00)
 #define	PIP_PRT_CFGN_MODE			UINT64_C(0x0000000000000300)
-#define	 PIP_PRT_CFGN_MODE_SHIFT		8
-#define   PIP_PORT_CFG_MODE_NONE		(0ULL << PIP_PRT_CFGN_MODE_SHIFT)
-#define   PIP_PORT_CFG_MODE_L2			(1ULL << PIP_PRT_CFGN_MODE_SHIFT)
-#define   PIP_PORT_CFG_MODE_IP			(2ULL << PIP_PRT_CFGN_MODE_SHIFT)
-#define   PIP_PORT_CFG_MODE_PCI			(3ULL << PIP_PRT_CFGN_MODE_SHIFT)
+#define   PIP_PORT_CFG_MODE_NONE		  0
+#define   PIP_PORT_CFG_MODE_L2			  1
+#define   PIP_PORT_CFG_MODE_IP			  2
+#define   PIP_PORT_CFG_MODE_PCI			  3
 #define	PIP_PRT_CFGN_7				UINT64_C(0x0000000000000080)
 #define	PIP_PRT_CFGN_SKIP			UINT64_C(0x000000000000007f)
 
@@ -394,35 +393,30 @@
 #define	PIP_PRT_TAGN_IP6_SRC			UINT64_C(0x0000000000008000)
 #define	PIP_PRT_TAGN_IP4_DST			UINT64_C(0x0000000000004000)
 #define	PIP_PRT_TAGN_TCP6_TAG			UINT64_C(0x0000000000003000)
-#define	  PIP_PRT_TAGN_TCP6_TAG_SHIFT		12
-#define	   PIP_PRT_TAGN_TCP6_TAG_ORDERED	(0ULL << PIP_PRT_TAGN_TCP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP6_TAG_ATOMIC		(1ULL << PIP_PRT_TAGN_TCP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP6_TAG_NULL		(2ULL << PIP_PRT_TAGN_TCP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP6_TAG_XXX_3		(3ULL << PIP_PRT_TAGN_TCP6_TAG_SHIFT)
+#define	   PIP_PRT_TAGN_TCP6_TAG_ORDERED	  0
+#define	   PIP_PRT_TAGN_TCP6_TAG_ATOMIC		  1
+#define	   PIP_PRT_TAGN_TCP6_TAG_NULL		  2
+#define	   PIP_PRT_TAGN_TCP6_TAG_XXX_3		  3
 #define	PIP_PRT_TAGN_TCP4_TAG			UINT64_C(0x0000000000000c00)
-#define	  PIP_PRT_TAGN_TCP4_TAG_SHIFT		10
-#define	   PIP_PRT_TAGN_TCP4_TAG_ORDERED	(0ULL << PIP_PRT_TAGN_TCP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP4_TAG_ATOMIC		(1ULL << PIP_PRT_TAGN_TCP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP4_TAG_NULL		(2ULL << PIP_PRT_TAGN_TCP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_TCP4_TAG_XXX_3		(3ULL << PIP_PRT_TAGN_TCP4_TAG_SHIFT)
+#define	   PIP_PRT_TAGN_TCP4_TAG_ORDERED	  0
+#define	   PIP_PRT_TAGN_TCP4_TAG_ATOMIC		  1
+#define	   PIP_PRT_TAGN_TCP4_TAG_NULL		  2
+#define	   PIP_PRT_TAGN_TCP4_TAG_XXX_3		  3
 #define	PIP_PRT_TAGN_IP6_TAG			UINT64_C(0x0000000000000300)
-#define	  PIP_PRT_TAGN_IP6_TAG_SHIFT		8
-#define	   PIP_PRT_TAGN_IP6_TAG_ORDERED		(0ULL << PIP_PRT_TAGN_IP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP6_TAG_ATOMIC		(1ULL << PIP_PRT_TAGN_IP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP6_TAG_NULL		(2ULL << PIP_PRT_TAGN_IP6_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP6_TAG_XXX_3		(3ULL << PIP_PRT_TAGN_IP6_TAG_SHIFT)
+#define	   PIP_PRT_TAGN_IP6_TAG_ORDERED		  0
+#define	   PIP_PRT_TAGN_IP6_TAG_ATOMIC		  1
+#define	   PIP_PRT_TAGN_IP6_TAG_NULL		  2
+#define	   PIP_PRT_TAGN_IP6_TAG_XXX_3		  3
 #define	PIP_PRT_TAGN_IP4_TAG			UINT64_C(0x00000000000000c0)
-#define	  PIP_PRT_TAGN_IP4_TAG_SHIFT		6
-#define	   PIP_PRT_TAGN_IP4_TAG_ORDERED		(0ULL << PIP_PRT_TAGN_IP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP4_TAG_ATOMIC		(1ULL << PIP_PRT_TAGN_IP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP4_TAG_NULL		(2ULL << PIP_PRT_TAGN_IP4_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_IP4_TAG_XXX_3		(3ULL << PIP_PRT_TAGN_IP4_TAG_SHIFT)
+#define	   PIP_PRT_TAGN_IP4_TAG_ORDERED		  0
+#define	   PIP_PRT_TAGN_IP4_TAG_ATOMIC		  1
+#define	   PIP_PRT_TAGN_IP4_TAG_NULL		  2
+#define	   PIP_PRT_TAGN_IP4_TAG_XXX_3		  3
 #define	PIP_PRT_TAGN_NON_TAG			UINT64_C(0x0000000000000030)
-#define	  PIP_PRT_TAGN_NON_TAG_SHIFT		4
-#define	   PIP_PRT_TAGN_NON_TAG_ORDERED		(0ULL << PIP_PRT_TAGN_NON_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_NON_TAG_ATOMIC		(1ULL << PIP_PRT_TAGN_NON_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_NON_TAG_NULL		(2ULL << PIP_PRT_TAGN_NON_TAG_SHIFT)
-#define	   PIP_PRT_TAGN_NON_TAG_XXX_3		(3ULL << PIP_PRT_TAGN_NON_TAG_SHIFT)
+#define	   PIP_PRT_TAGN_NON_TAG_ORDERED		  0
+#define	   PIP_PRT_TAGN_NON_TAG_ATOMIC		  1
+#define	   PIP_PRT_TAGN_NON_TAG_NULL		  2
+#define	   PIP_PRT_TAGN_NON_TAG_XXX_3		  3
 #define	PIP_PRT_TAGN_GRP			UINT64_C(0x000000000000000f)
 
 /*
@@ -537,7 +531,6 @@
 
 #define PIP_WQE_WORD2_IP_BUFS			UINT64_C(0xff00000000000000)
 #define PIP_WQE_WORD2_IP_OFFSET			UINT64_C(0x00ff000000000000)
-#define   PIP_WQE_WORD2_IP_OFFSET_SHIFT		48
 #define PIP_WQE_WORD2_IP_VV			UINT64_C(0x0000800000000000)
 #define PIP_WQE_WORD2_IP_VS			UINT64_C(0x0000400000000000)
 #define PIP_WQE_WORD2_IP_45			UINT64_C(0x0000200000000000)
Index: src/sys/arch/mips/cavium/dev/octeon_pkoreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_pkoreg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_pkoreg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_pkoreg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_pkoreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pkoreg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_pkoreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -33,6 +33,12 @@
 #ifndef _OCTEON_PKOREG_H_
 #define _OCTEON_PKOREG_H_
 
+/* ---- operations */
+
+#define	PKO_MAJOR_DID			0x0a
+#define	PKO_SUB_DID			0x02
+
+
 #define	PKO_REG_FLAGS				0x0001180050000000ULL
 #define	PKO_REG_READ_IDX			0x0001180050000008ULL
 #define	PKO_REG_CMD_BUF				0x0001180050000010ULL
@@ -378,19 +384,9 @@
 /*
  *  DOORBELL_WRITE
  */
-#define PKO_DOORBELL_WRITE_IO_BIT	UINT64_C(0x0001000000000000)
-#define PKO_DOORBELL_WRITE_MAJOR_DID	UINT64_C(0x0000f80000000000)
-#define PKO_DOORBELL_WRITE_SUB_DID	UINT64_C(0x0000070000000000)
-#define PKO_DOORBELL_WRITE_39_16	UINT64_C(0x000000ffffff0000)
 #define PKO_DOORBELL_WRITE_PID		UINT64_C(0x000000000003f000)
 #define PKO_DOORBELL_WRITE_QID		UINT64_C(0x0000000000000ff8)
-#define PKO_DOORBELL_WRITE_2_0		UINT64_C(0x0000000000000007)
  
 #define PKO_DOORBELL_WRITE_WDC		UINT64_C(0x00000000000fffff)
 
-/* ---- operations */
-
-#define	CN30XXPKO_MAJORDID	0x0a
-#define	CN30XXPKO_SUBDID	0x02
-
 #endif /* _OCTEON_PKOREG_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_powreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_powreg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_powreg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_powreg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_powreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_powreg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_powreg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -228,98 +228,74 @@
 
 #define	POW_PP_GRP_MSKX_XXX_63_16		UINT64_C(0xffffffffffff0000)
 #define	POW_PP_GRP_MSKX_GRP_MSK			UINT64_C(0x000000000000ffff)
-#define	 POW_PP_GRP_MSKX_GRP_MSK_SHIFT		0
 
 #define	POW_WQ_INT_THRX_XXX_63_29		UINT64_C(0xffffffffe0000000)
 #define	POW_WQ_INT_THRX_TC_EN			UINT64_C(0x0000000010000000)
 #define	POW_WQ_INT_THRX_TC_THR			UINT64_C(0x000000000f000000)
-#define	 POW_WQ_INT_THRX_TC_THR_SHIFT		24
 #define	POW_WQ_INT_THRX_XXX_23_18		UINT64_C(0x0000000000fc0000)
 #define	POW_WQ_INT_THRX_DS_THR			UINT64_C(0x000000000003f000)
-#define	 POW_WQ_INT_THRX_DS_THR_SHIFT		12
 #define	POW_WQ_INT_THRX_XXX_11_6		UINT64_C(0x0000000000000fc0)
 #define	POW_WQ_INT_THRX_IQ_THR			UINT64_C(0x000000000000003f)
-#define	 POW_WQ_INT_THRX_IQ_THR_SHIFT		0
 
 #define	POW_WQ_INT_CNTX_XXX_63_28		UINT64_C(0xfffffffff0000000)
 #define	POW_WQ_INT_CNTX_TC_CNT			UINT64_C(0x000000000f000000)
-#define	 POW_WQ_INT_CNTX_TC_CNT_SHIFT		24
 #define	POW_WQ_INT_CNTX_XXX_23_18		UINT64_C(0x0000000000fc0000)
 #define	POW_WQ_INT_CNTX_DS_CNT			UINT64_C(0x000000000003f000)
-#define	 POW_WQ_INT_CNTX_DS_CNT_SHIFT		12
 #define	POW_WQ_INT_CNTX_XXX_11_6		UINT64_C(0x0000000000000fc0)
 #define	POW_WQ_INT_CNTX_IQ_CNT			UINT64_C(0x000000000000003f)
-#define	 POW_WQ_INT_CNTX_IQ_CNT_SHIFT		0
 
 #define	POW_QOS_THRX_XXX_63_55			UINT64_C(0xff80000000000000)
 #define	POW_QOS_THRX_DES_CNT			UINT64_C(0x007f000000000000)
-#define	 POW_QOS_THRX_DES_CNT_SHIFT		48
 #define	POW_QOS_THRX_XXX_47_43			UINT64_C(0x0000f80000000000)
 #define	POW_QOS_THRX_BUF_CNT			UINT64_C(0x000007f000000000)
-#define	 POW_QOS_THRX_BUF_CNT_SHIFT		36
 #define	POW_QOS_THRX_XXX_35_31			UINT64_C(0x0000000f80000000)
 #define	POW_QOS_THRX_FREE_CNT			UINT64_C(0x000000007f000000)
-#define	 POW_QOS_THRX_FREE_CNT_SHIFT		24
 #define	POW_QOS_THRX_XXX_23_18			UINT64_C(0x0000000000fc0000)
 #define	POW_QOS_THRX_MAX_THR			UINT64_C(0x000000000003f000)
-#define	 POW_QOS_THRX_MAX_THR_SHIFT		12
 #define	POW_QOS_THRX_XXX_11_6			UINT64_C(0x0000000000000fc0)
 #define	POW_QOS_THRX_MIN_THR			UINT64_C(0x000000000000003f)
-#define	 POW_QOS_THRX_MIN_THR_SHIFT		0
 
 #define	POW_QOS_RNDX_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_QOS_RNDX_RND_P3			UINT64_C(0x00000000ff000000)
-#define	 POW_QOS_RNDX_RND_P3_SHIFT		24
 #define	POW_QOS_RNDX_RND_P2			UINT64_C(0x0000000000ff0000)
-#define	 POW_QOS_RNDX_RND_P2_SHIFT		16
 #define	POW_QOS_RNDX_RND_P1			UINT64_C(0x000000000000ff00)
-#define	 POW_QOS_RNDX_RND_P1_SHIFT		8
 #define	POW_QOS_RNDX_RND			UINT64_C(0x00000000000000ff)
-#define	 POW_QOS_RNDX_RND_SHIFT			0
 
 #define	POW_WQ_INT_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_WQ_INT_IQ_DIS			UINT64_C(0x00000000ffff0000)
-#define	 POW_WQ_INT_IQ_DIS_SHIFT		16
 #define	POW_WQ_INT_WQ_INT			UINT64_C(0x000000000000ffff)
-#define	 POW_WQ_INT_WQ_INT_SHIFT		0
 
 #define	POW_WQ_INT_PC_XXX_63_60			UINT64_C(0xf000000000000000)
 #define	POW_WQ_INT_PC_PC			UINT64_C(0x0fffffff00000000)
-#define	 POW_WQ_INT_PC_PC_SHIFT			32
 #define	POW_WQ_INT_PC_XXX_31_28			UINT64_C(0x00000000f0000000)
 #define	POW_WQ_INT_PC_PC_THR			UINT64_C(0x000000000fffff00)
-#define	 POW_WQ_INT_PC_PC_THR_SHIFT		8
 #define	POW_WQ_INT_PC_XXX_7_0			UINT64_C(0x00000000000000ff)
 
 #define	POW_NW_TIM_XXX_63_10			UINT64_C(0xfffffffffffffc00)
 #define	POW_NW_TIM_NW_TIM			UINT64_C(0x00000000000003ff)
-#define	 POW_NW_TIM_NW_TIM_SHIFT		0
 
 #define	POW_ECC_ERR_XXX_63_45			UINT64_C(0xffffe00000000000)
 #define	POW_ECC_ERR_IOP_IE			UINT64_C(0x00001fff00000000)
-#define	 POW_ECC_ERR_IOP_IE_SHIFT		32
 #define	POW_ECC_ERR_XXX_31_29			UINT64_C(0x00000000e0000000)
 #define	POW_ECC_ERR_IOP				UINT64_C(0x000000001fff0000)
-#define	 POW_ECC_ERR_IOP_SHIFT			16
-#define	  POW_ECC_ERR_IOP_CSRPEND		(UINT64_C(28) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_DBGPEND		(UINT64_C(27) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_ADDWORK		(UINT64_C(26) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_ILLOP			(UINT64_C(25) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_PEND24		(UINT64_C(24) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_PEND23		(UINT64_C(23) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_PEND22		(UINT64_C(22) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_PEND21		(UINT64_C(21) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_TAGNULL		(UINT64_C(20) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_TAGNULLNULL		(UINT64_C(19) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_ORDATOM		(UINT64_C(18) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_NULL			(UINT64_C(17) << POW_ECC_ERR_IOP_SHIFT)
-#define	  POW_ECC_ERR_IOP_NULLNULL		(UINT64_C(16) << POW_ECC_ERR_IOP_SHIFT)
+#define	  POW_ECC_ERR_IOP_CSRPEND		  28
+#define	  POW_ECC_ERR_IOP_DBGPEND		  27
+#define	  POW_ECC_ERR_IOP_ADDWORK		  26
+#define	  POW_ECC_ERR_IOP_ILLOP			  25
+#define	  POW_ECC_ERR_IOP_PEND24		  24
+#define	  POW_ECC_ERR_IOP_PEND23		  23
+#define	  POW_ECC_ERR_IOP_PEND22		  22
+#define	  POW_ECC_ERR_IOP_PEND21		  21
+#define	  POW_ECC_ERR_IOP_TAGNULL		  20
+#define	  POW_ECC_ERR_IOP_TAGNULLNULL		  19
+#define	  POW_ECC_ERR_IOP_ORDATOM		  18
+#define	  POW_ECC_ERR_IOP_NULL			  17
+#define	  POW_ECC_ERR_IOP_NULLNULL		  16
 #define	POW_ECC_ERR_XXX_15_14			UINT64_C(0x000000000000c000)
 #define	POW_ECC_ERR_RPE_IE			UINT64_C(0x0000000000002000)
 #define	POW_ECC_ERR_RPE				UINT64_C(0x0000000000001000)
 #define	POW_ECC_ERR_XXX_11_9			UINT64_C(0x0000000000000e00)
 #define	POW_ECC_ERR_SYN				UINT64_C(0x00000000000001f0)
-#define	 POW_ECC_ERR_SYN_SHIFT			4
 #define	POW_ECC_ERR_DBE_IE			UINT64_C(0x0000000000000008)
 #define	POW_ECC_ERR_SBE_IE			UINT64_C(0x0000000000000004)
 #define	POW_ECC_ERR_DBE				UINT64_C(0x0000000000000002)
@@ -327,35 +303,27 @@
 
 #define	POW_NOS_CNT_XXX_63_7			UINT64_C(0xffffffffffffff80)
 #define	POW_NOS_CNT_NOS_CNT			UINT64_C(0x000000000000007f)
-#define	 POW_NOS_CNT_NOS_CNT_SHIFT		0
 
 #define	POW_WS_PC0_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_WS_PC0_WS_PC			UINT64_C(0x00000000ffffffff)
-#define	 POW_WS_PC0_WS_PC_SHIFT			0
 
 #define	POW_WA_PC0_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_WA_PC0_WA_PC			UINT64_C(0x00000000ffffffff)
-#define	 POW_WA_PC0_WA_PC_SHIFT			0
 
 #define	POW_IQ_CNT0_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_IQ_CNT0_IQ_CNT			UINT64_C(0x00000000ffffffff)
-#define	 POW_IQ_CNT0_IQ_CNT_SHIFT		0
 
 #define	POW_WA_COM_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_WA_COM_PC_WA_PC			UINT64_C(0x00000000ffffffff)
-#define	 POW_WA_COM_PC_WA_PC_SHIFT		0
 
 #define	POW_WQ_COM_CNT_XXX_63_32		UINT64_C(0xffffffff00000000)
 #define	POW_WQ_COM_CNT_IQ_CNT			UINT64_C(0x00000000ffffffff)
-#define	 POW_WQ_COM_CNT_IQ_CNT_SHIFT		0
 
 #define	POW_TS_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_TS_PC_TS_PC				UINT64_C(0x00000000ffffffff)
-#define	 POW_TS_PC_TS_PC_SHIFT			0
 
 #define	POW_DS_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
 #define	POW_DS_PC_DS_PC				UINT64_C(0x00000000ffffffff)
-#define	 POW_DS_PC_DS_PC_SHIFT			0
 
 #define	POW_BIST_STAT_XXX_63_7			UINT64_C(0xfffffffffffe0000)
 #define	POW_BIST_STAT_PP			UINT64_C(0x0000000000010000)
@@ -372,35 +340,19 @@
 
 /* ---- pow operations */ 
 
-/* pow operations base */ 
-#define POW_OPERATION_BASE_IO_BIT		UINT64_C(0x0001000000000000)
-#define POW_OPERATION_BASE_MAJOR_DID		UINT64_C(0x0000f80000000000)
-#define POW_OPERATION_BASE_SUB_DID		UINT64_C(0x0000070000000000)
-#define	POW_OPERATION_BASE_IO_BIT_SHIFT	48
-#define	POW_OPERATION_BASE_MAJOR_DID_SHIFT	43
-#define	POW_OPERATION_BASE_SUB_DID_SHIFT	40
+/* -- pow load operations */ 
 
-/* get work load  (subid = 0) */
+/* get work load */
+#define	POW_OP_SUBDID_GET_WORK			0
 #define POW_GET_WORK_LOAD_WAIT			UINT64_C(0x0000000000000008)
-#define POW_GET_WORK_LOAD_2_0			UINT64_C(0x0000000000000007)
-#define	POW_GET_WORK_LOAD_WAIT_SHIFT	3
-#define	POW_GET_WORK_LOAD_2_0_SHIFT	0
-
-#define POW_GET_WORK_LOAD_RESULT_NO_WORK	UINT64_C(0x8000000000000000)
-#define POW_GET_WORK_LOAD_RESULT_62_40		UINT64_C(0x7fffff0000000000)
-#define POW_GET_WORK_LOAD_RESULT_ADDR		UINT64_C(0x000000ffffffffff)
 
-/* pow status load (subid = 1) */
+/* pow status load */
+#define	POW_OP_SUBDID_STATUS_LOAD		1
 #define POW_STATUS_LOAD_COREID			UINT64_C(0x00000000000003c0)
 #define POW_STATUS_LOAD_GET_REV			UINT64_C(0x0000000000000020)
 #define POW_STATUS_LOAD_GET_CUR			UINT64_C(0x0000000000000010)
 #define POW_STATUS_LOAD_GET_WQP			UINT64_C(0x0000000000000008)
 #define POW_STATUS_LOAD_GET_2_0			UINT64_C(0x0000000000000007)
-#define	POW_STATUS_LOAD_GET_WQP_SHIFT	3
-#define	POW_STATUS_LOAD_GET_CUR_SHIFT	4
-#define	POW_STATUS_LOAD_COREID_SHIFT	6
-#define	POW_STATUS_LOAD_GET_2_0_SHIFT	0
-#define	POW_STATUS_LOAD_GET_REV_SHIFT	5
 
 /* get_cur = 0 and get_wqp = 0 ("pend_tag") */
 #define POW_STATUS_LOAD_RESULT_PEND_TAG_XXX_63_62		UINT64_C(0xc000000000000000)
@@ -543,15 +495,12 @@
 	"f\x24\x04"	"GRP\0" \
 	"f\x00\x24"	"WQP\0"
 
-/* pow memory load (subid = 2) */
-#define POW_MEMORY_LOAD_INDEX		UINT64_C(0x000000000000ffe0)
-#define POW_MEMORY_LOAD_GET_DES		UINT64_C(0x0000000000000010)
-#define POW_MEMORY_LOAD_GET_WQP		UINT64_C(0x0000000000000008)
-#define POW_MEMORY_LOAD_2_0		UINT64_C(0x0000000000000007)
-#define	POW_MEMORY_LOAD_2_0_SHIFT	0
-#define	POW_MEMORY_LOAD_GET_WQP_SHIFT	3
-#define	POW_MEMORY_LOAD_INDEX_SHIFT	5
-#define	POW_MEMORY_LOAD_GET_DES_SHIFT	4
+/* pow memory load */
+#define	POW_OP_SUBDID_MEMORY_LOAD		2
+#define POW_MEMORY_LOAD_INDEX			UINT64_C(0x000000000000ffe0)
+#define POW_MEMORY_LOAD_GET_DES			UINT64_C(0x0000000000000010)
+#define POW_MEMORY_LOAD_GET_WQP			UINT64_C(0x0000000000000008)
+#define POW_MEMORY_LOAD_2_0			UINT64_C(0x0000000000000007)
 
 /* get_des = 0 and get_wqp = 0 ("tag") */
 #define POW_MEMORY_LOAD_RESULT_TAG_XXX_63_51			UINT64_C(0xfff8000000000000)
@@ -603,15 +552,13 @@
 	"f\x20\x02"	"PEND_TYPE\0" \
 	"f\x00\x20"	"PEND_TAG\0"
 
-/* pow index/pointer load (subid = 3) */
+/* pow index/pointer load */
+#define	POW_OP_SUBDID_IDXPTR_LOAD		3
+
 #define POW_IDXPTR_LOAD_QOSGRP			UINT64_C(0x00000000000001e0)
 #define POW_IDXPTR_LOAD_GET_DES_GET_TAIL	UINT64_C(0x0000000000000010)
 #define POW_IDXPTR_LOAD_GET_RMT			UINT64_C(0x0000000000000008)
 #define POW_IDXPTR_LOAD_2_0			UINT64_C(0x0000000000000007)
-#define	POW_IDXPTR_LOAD_QOSGRP_SHIFT	5
-#define	POW_IDXPTR_LOAD_GET_DES_GET_TAIL_SHIFT	4
-#define	POW_IDXPTR_LOAD_2_0_SHIFT	0
-#define	POW_IDXPTR_LOAD_GET_RMT_SHIFT	3
 
 /* get_rmt = 0 and get_des_get_tail = 0 ("qos") */
 #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_63_52		UINT64_C(0xfff0000000000000)
@@ -697,19 +644,37 @@
 	"b\x24"		"RMT_ONE\0" \
 	"f\x00\x24"	"RMT_TAIL\0"
 
-/* pow index/pointer load (subid = 2) */
+/* pow null rd */
+#define	POW_OP_SUBDID_NULL_RD			4
 #define POW_NULL_RD_LOAD_39_3			UINT64_C(0x000000fffffffff8)
 #define POW_NULL_RD_LOAD_2_0			UINT64_C(0x0000000000000007)
-#define	POW_NULL_RD_LOAD_39_3_SHIFT	3
-#define	POW_NULL_RD_LOAD_2_0_SHIFT	0
 
 #define POW_NULL_RD_LOAD_RESULT_63_2		UINT64_C(0xfffffffffffffffc)
 #define POW_NULL_RD_LOAD_RESULT_STATUS		UINT64_C(0x0000000000000003)
 
+/* -- pow iobdma operations */ 
+
+#define	POW_MAJOR_DID				0xc
+#define	POW_IOBDMA_LEN				1	/* always 1 for POW */
+
+/* pow iobdma get work */ 
+#define	POW_IOBDMA_SUBDID_GET_WORK		POW_OP_SUBDID_GET_WORK
+#define POW_IOBDMA_GET_WORK_WAIT		UINT64_C(0x0000000000000008)
+
+#define POW_IOBDMA_GET_WORK_RESULT_NO_WORK	UINT64_C(0x8000000000000000)
+#define POW_IOBDMA_GET_WORK_RESULT_ADDR		UINT64_C(0x000000ffffffffff)
+
+/* pow iobdma null rd */
+#define	POW_IOBDMA_SUBDID_NULL_RD		POW_OP_SUBDID_NULL_RD
+#define POW_IOBDMA_NULL_RD_RESULT_STATUS	UINT64_C(0x0000000000000003)
+
+/* -- pow store operations */ 
 /* pow store operations */
+#define	POW_STORE_SUBDID_SWTAG_FULL		0
+#define	POW_STORE_SUBDID_DESCHED		3
+#define	POW_STORE_SUBDID_OTHER			1
 
 #define POW_PHY_ADDR_STORE_ADDR			UINT64_C(0x0000000fffffffff)
-#define	POW_PHY_ADDR_STORE_ADDR_SHIFT	0
 
 #define POW_STORE_DATA_NO_SCHED			UINT64_C(0x8000000000000000)
 #define POW_STORE_DATA_62_61			UINT64_C(0x6000000000000000)
@@ -720,48 +685,6 @@
 #define POW_STORE_DATA_GRP			UINT64_C(0x0000007800000000)
 #define POW_STORE_DATA_TYPE			UINT64_C(0x0000000700000000)
 #define POW_STORE_DATA_TAG			UINT64_C(0x00000000ffffffff)
-#define	POW_STORE_DATA_INDEX_SHIFT	48
-#define	POW_STORE_DATA_OP_SHIFT	44
-#define	POW_STORE_DATA_NO_SCHED_SHIFT	63
-#define	POW_STORE_DATA_62_61_SHIFT	61
-#define	POW_STORE_DATA_43_42_SHIFT	42
-#define	POW_STORE_DATA_QOS_SHIFT	39
-#define	POW_STORE_DATA_GRP_SHIFT	35
-#define	POW_STORE_DATA_TYPE_SHIFT	32
-#define	POW_STORE_DATA_TAG_SHIFT	0
-
-/* pow iobdma operations */ 
-
-/* pow iobdma operations base*/ 
-#define POW_IOBDMA_BASE_SCRADDR			UINT64_C(0xff00000000000000)
-#define POW_IOBDMA_BASE_LEN			UINT64_C(0x00ff000000000000)
-#define POW_IOBDMA_BASE_MAJOR_DID		UINT64_C(0x0000f80000000000)
-#define POW_IOBDMA_BASE_SUB_DID			UINT64_C(0x0000070000000000)
-#define POW_IOBDMA_BASE_39_0			UINT64_C(0x000000ffffffffff)
-#define	POW_IOBDMA_BASE_MAJOR_DID_SHIFT	43
-#define	POW_IOBDMA_BASE_LEN_SHIFT	48
-#define	POW_IOBDMA_BASE_39_0_SHIFT	0
-#define	POW_IOBDMA_BASE_SCRADDR_SHIFT	56
-#define	POW_IOBDMA_BASE_SUB_DID_SHIFT	40
-
-/* pow iobdma get work (subid = 0) */ 
-#define POW_IOBDMA_GET_WORK_39_4		UINT64_C(0x000000ffffffffff)
-#define POW_IOBDMA_GET_WORK_WAIT		UINT64_C(0x0000000000000008)
-#define POW_IOBDMA_GET_WORK_2_0			UINT64_C(0x0000000000000007)
-#define	POW_IOBDMA_GET_WORK_WAIT_SHIFT	3
-#define	POW_IOBDMA_GET_WORK_39_4_SHIFT	0
-#define	POW_IOBDMA_GET_WORK_2_0_SHIFT	0
-
-#define POW_IOBDMA_GET_WORK_RESULT_NO_WORK	UINT64_C(0x8000000000000000)
-#define POW_IOBDMA_GET_WORK_RESULT_62_40	UINT64_C(0x7fffff0000000000)
-#define POW_IOBDMA_GET_WORK_RESULT_ADDR		UINT64_C(0x000000ffffffffff)
-
-/* pow iobdma null rd (subid = 4) */
-#define POW_IOBDMA_NULL_RD_39_0			UINT64_C(0x000000ffffffffff)
-#define	POW_IOBDMA_NULL_RD_39_0_SHIFT	0
-
-#define POW_IOBDMA_NULL_RD_RESULT_63_2		UINT64_C(0xfffffffffffffffc)
-#define POW_IOBDMA_NULL_RD_RESULT_STATUS	UINT64_C(0x0000000000000003)
 
 /* ------------------------------------------------------------------------- */
 
@@ -774,7 +697,6 @@
 	"\020"		/* hex display */ \
 	"\020"		/* %016x format */ \
 	"f\x00\x28"	"NEXT\0"
-#define	POW_WQE_WORD0_NEXT_SHIFT	0
 
 #define	POW_WQE_WORD1_XXX_63_42			UINT64_C(0xfffffc0000000000)
 #define	POW_WQE_WORD1_QOS			UINT64_C(0x0000038000000000)
@@ -789,10 +711,6 @@
 	"f\x23\x04"	"GRP\0" \
 	"f\x20\x03"	"TT\0" \
 	"f\x00\x20"	"TAG\0"
-#define	POW_WQE_WORD1_TT_SHIFT	32
-#define	POW_WQE_WORD1_QOS_SHIFT	39
-#define	POW_WQE_WORD1_GRP_SHIFT	35
-#define	POW_WQE_WORD1_TAG_SHIFT	0
 
 /* ------------------------------------------------------------------------- */
 
Index: src/sys/arch/mips/cavium/dev/octeon_smireg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_smireg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_smireg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_smireg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_smireg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_smireg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_smireg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -51,12 +51,12 @@
 /* SMI CMD */
 #define SMI_CMD_63_17			UINT64_C(0xfffffffffffe0000)
 #define SMI_CMD_PHY_OP			UINT64_C(0x0000000000010000)
+#define  SMI_CMD_PHY_OP_READ		 1
+#define  SMI_CMD_PHY_OP_WRITE		 0
 #define SMI_CMD_15_13			UINT64_C(0x000000000000e000)
 #define SMI_CMD_PHY_ADR			UINT64_C(0x0000000000001f00)
-#define  SMI_CMD_PHY_ADR_SHIFT		8
 #define SMI_CMD_7_5			UINT64_C(0x00000000000000e0)
 #define SMI_CMD_REG_ADR			UINT64_C(0x000000000000001f)
-#define  SMI_CMD_REG_ADR_SHIFT		0
 
 /* SMI_WR_DAT */
 #define SMI_WR_DAT_63_18		UINT64_C(0xfffffffffffc0000)
Index: src/sys/arch/mips/cavium/dev/octeon_twsi.c
diff -u src/sys/arch/mips/cavium/dev/octeon_twsi.c:1.1 src/sys/arch/mips/cavium/dev/octeon_twsi.c:1.2
--- src/sys/arch/mips/cavium/dev/octeon_twsi.c:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_twsi.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_twsi.c,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_twsi.c,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -30,7 +30,7 @@
 #undef	TWSITEST
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_twsi.c,v 1.1 2015/04/29 08:32:01 hikaru Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_twsi.c,v 1.2 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -239,8 +239,10 @@ octeon_twsi_hlcm_read(struct octeon_twsi
 	resid = len;
 
 	while (resid > 4) {
-		cmd = MIO_TWS_SW_TWSI_OP_FOUR | MIO_TWS_SW_TWSI_R
-		    | (addr << MIO_TWS_SW_TWSI_A_SHIFT);
+		cmd =
+		    __SHIFTIN(MIO_TWS_SW_TWSI_OP_FOUR, MIO_TWS_SW_TWSI_OP) |
+		    MIO_TWS_SW_TWSI_R |
+		    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A);
 		octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 		octeon_twsi_wait(sc);
 		cmd = octeon_twsi_reg_rd(sc);
@@ -249,8 +251,10 @@ octeon_twsi_hlcm_read(struct octeon_twsi
 	}
 
 	while (resid > 0) {
-		cmd = MIO_TWS_SW_TWSI_OP_ONE | MIO_TWS_SW_TWSI_R
-		    | (addr << MIO_TWS_SW_TWSI_A_SHIFT);
+		cmd =
+		    __SHIFTIN(MIO_TWS_SW_TWSI_OP_ONE, MIO_TWS_SW_TWSI_OP) |
+		    MIO_TWS_SW_TWSI_R |
+		    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A);
 		octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 		octeon_twsi_wait(sc);
 		cmd = octeon_twsi_reg_rd(sc);
@@ -279,18 +283,20 @@ octeon_twsi_hlcm_write(struct octeon_tws
 	resid = len;
 
 	while (resid > 4) {
-		cmd = MIO_TWS_SW_TWSI_OP_FOUR
-		    | (addr << MIO_TWS_SW_TWSI_A_SHIFT)
-		    | _BUFTOLE32(&buf[len - 1 - resid]);
+		cmd =
+		    __SHIFTIN(MIO_TWS_SW_TWSI_OP_FOUR, MIO_TWS_SW_TWSI_OP) |
+		    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A) |
+		    __SHIFTIN(_BUFTOLE32(&buf[len - 1 - resid]), MIO_TWS_SW_TWSI_D);
 		octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 		octeon_twsi_wait(sc);
 		resid -= 4;
 	}
 
 	while (resid > 0) {
-		cmd = MIO_TWS_SW_TWSI_OP_ONE
-		    | (addr << MIO_TWS_SW_TWSI_A_SHIFT)
-		    | buf[len - 1 - resid];
+		cmd =
+		    __SHIFTIN(MIO_TWS_SW_TWSI_OP_ONE, MIO_TWS_SW_TWSI_OP) |
+		    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A) |
+		    __SHIFTIN(buf[len - 1 - resid], MIO_TWS_SW_TWSI_D);
 		octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 		octeon_twsi_wait(sc);
 		resid--;
@@ -372,9 +378,10 @@ octeon_twsi_control_read(struct octeon_t
 {
 	uint64_t cmd;
 
-	cmd = MIO_TWS_SW_TWSI_OP_EXTEND
-	    | (addr << MIO_TWS_SW_TWSI_A_SHIFT)
-	    | eop_ia;
+	cmd =
+	    __SHIFTIN(MIO_TWS_SW_TWSI_OP_EXTEND, MIO_TWS_SW_TWSI_OP) |
+	    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A) |
+	    __SHIFTIN(eop_ia, MIO_TWS_SW_TWSI_EOP_IA);
 	octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 	octeon_twsi_wait(sc);
 	return (uint8_t)octeon_twsi_reg_rd(sc, MIO_TWS_SW_TWSI_OFFSET);
@@ -386,10 +393,11 @@ octeon_twsi_control_write(struct octeon_
 {
 	uint64_t cmd;
 
-	cmd = MIO_TWS_SW_TWSI_OP_EXTEND
-	    | (addr << MIO_TWS_SW_TWSI_A_SHIFT)
-	    | eop_ia
-	    | _BUFTOLE32(&buf[len - 1 - resid]);
+	cmd =
+	    __SHIFTIN(MIO_TWS_SW_TWSI_OP_EXTEND, MIO_TWS_SW_TWSI_OP) |
+	    __SHIFTIN(addr, MIO_TWS_SW_TWSI_A_SHIFT) |
+	    __SHIFTIN(eop_ia, MIO_TWS_SW_TWSI_EOP_IA) |
+	    __SHIFTIN(_BUFTOLE32(&buf[len - 1 - resid]), MIO_TWS_SW_TWSI_D);
 	octeon_twsi_reg_wr(sc, MIO_TWS_SW_TWSI_OFFSET, cmd);
 	octeon_twsi_wait(sc);
 }
Index: src/sys/arch/mips/cavium/dev/octeon_twsireg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_twsireg.h:1.1 src/sys/arch/mips/cavium/dev/octeon_twsireg.h:1.2
--- src/sys/arch/mips/cavium/dev/octeon_twsireg.h:1.1	Wed Apr 29 08:32:01 2015
+++ src/sys/arch/mips/cavium/dev/octeon_twsireg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_twsireg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $	*/
+/*	$NetBSD: octeon_twsireg.h,v 1.2 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -46,30 +46,26 @@
 #define	MIO_TWS_SW_TWSI_SLONLY			UINT64_C(0x4000000000000000)
 #define	MIO_TWS_SW_TWSI_EIA			UINT64_C(0x2000000000000000)
 #define	MIO_TWS_SW_TWSI_OP			UINT64_C(0x1e00000000000000)
-#define	 MIO_TWS_SW_TWSI_OP_SHIFT		57
-#define	  MIO_TWS_SW_TWSI_OP_ONE		(0x0 << MIO_TWS_SW_TWSI_OP_SHIFT)
-#define	  MIO_TWS_SW_TWSI_OP_MCLK		(0x4 << MIO_TWS_SW_TWSI_OP_SHIFT)
-#define	  MIO_TWS_SW_TWSI_OP_EXTEND		(0x6 << MIO_TWS_SW_TWSI_OP_SHIFT)
-#define	  MIO_TWS_SW_TWSI_OP_FOUR		(0x8 << MIO_TWS_SW_TWSI_OP_SHIFT)
-#define	  MIO_TWS_SW_TWSI_OP_COMBR		(0x1 << MIO_TWS_SW_TWSI_OP_SHIFT)
-#define	  MIO_TWS_SW_TWSI_OP_10BIT		(0x2 << MIO_TWS_SW_TWSI_OP_SHIFT)
+#define	  MIO_TWS_SW_TWSI_OP_ONE		  0
+#define	  MIO_TWS_SW_TWSI_OP_MCLK		  4
+#define	  MIO_TWS_SW_TWSI_OP_EXTEND		  6
+#define	  MIO_TWS_SW_TWSI_OP_FOUR		  8
+#define	  MIO_TWS_SW_TWSI_OP_COMBR		  1
+#define	  MIO_TWS_SW_TWSI_OP_10BIT		  2
 #define	MIO_TWS_SW_TWSI_R			UINT64_C(0x0100000000000000)
 #define	MIO_TWS_SW_TWSI_SOVR			UINT64_C(0x0080000000000000)
 #define	MIO_TWS_SW_TWSI_SIZE			UINT64_C(0x0070000000000000)
 #define	MIO_TWS_SW_TWSI_SCR			UINT64_C(0x000c000000000000)
 #define	MIO_TWS_SW_TWSI_A			UINT64_C(0x0003ff0000000000)
-#define	 MIO_TWS_SW_TWSI_A_SHIFT		40
 #define	MIO_TWS_SW_TWSI_IA			UINT64_C(0x000000f800000000)
 #define	MIO_TWS_SW_TWSI_EOP_IA			UINT64_C(0x0000000700000000)
-#define	 MIO_TWS_SW_TWSI_EOP_IA_SHIFT		32
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_SLAVE_ADD	(0x0 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_DATA	(0x1 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_CTL	(0x2 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_CLKCTL	(0x3 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_STAT	(0x3 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_SLAVE_ADD_EXT \
-						(0x4 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
-#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_RST	(0x7 << MIO_TWS_SW_TWSI_EOP_IA_SHIFT)
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_SLAVE_ADD	  0
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_DATA	  1
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_CTL	  2
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_CLKCTL	  3
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_STAT	  3
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_SLAVE_ADD_EXT 4
+#define	  MIO_TWS_SW_TWSI_EOP_IA_TWSI_RST	  7
 #define	MIO_TWS_SW_TWSI_D			UINT64_C(0x00000000ffffffff)
 
 #define	MIO_TWS_TWSI_SW_V			UINT64_C(0xc000000000000000)

Index: src/sys/arch/mips/cavium/dev/octeon_fpa.c
diff -u src/sys/arch/mips/cavium/dev/octeon_fpa.c:1.5 src/sys/arch/mips/cavium/dev/octeon_fpa.c:1.6
--- src/sys/arch/mips/cavium/dev/octeon_fpa.c:1.5	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_fpa.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_fpa.c,v 1.5 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_fpa.c,v 1.6 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -29,7 +29,7 @@
 #undef	FPADEBUG
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_fpa.c,v 1.5 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_fpa.c,v 1.6 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -44,8 +44,8 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_fpa.c
 
 #include <mips/cavium/octeonvar.h>
 #include <mips/cavium/include/iobusvar.h>
-#include <mips/cavium/dev/octeon_fpavar.h>
 #include <mips/cavium/dev/octeon_fpareg.h>
+#include <mips/cavium/dev/octeon_fpavar.h>
 
 #ifdef FPADEBUG
 #define	DPRINTF(x)	printf x

Index: src/sys/arch/mips/cavium/dev/octeon_fpavar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_fpavar.h:1.4 src/sys/arch/mips/cavium/dev/octeon_fpavar.h:1.5
--- src/sys/arch/mips/cavium/dev/octeon_fpavar.h:1.4	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_fpavar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_fpavar.h,v 1.4 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_fpavar.h,v 1.5 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -29,6 +29,8 @@
 #ifndef _OCTEON_FPAVAR_H_
 #define _OCTEON_FPAVAR_H_
 
+#include <mips/cavium/octeonreg.h>
+
 struct octfpa_buf {
 	int		fb_poolno;	/* pool # */
 
@@ -95,12 +97,8 @@ void	octfpa_dump(void);
 static __inline uint64_t
 octfpa_load(uint64_t fpapool)
 {
-	uint64_t addr;
-
-	addr =
-	    (0x1ULL << 48) |
-	    (0x5ULL << 43) |
-	    (fpapool & 0x07ULL) << 40;
+	/* for FPA operations, subdid == pool number */
+	uint64_t addr = OCTEON_ADDR_IO_DID(FPA_MAJOR_DID, fpapool);
 
 	return octeon_read_csr(addr);
 }
@@ -109,6 +107,7 @@ octfpa_load(uint64_t fpapool)
 static __inline uint64_t
 octfpa_iobdma(struct octfpa_softc *sc, int srcaddr, int len)
 {
+
 	/* XXX */
 	return 0ULL;
 }
@@ -117,27 +116,26 @@ octfpa_iobdma(struct octfpa_softc *sc, i
 static __inline void
 octfpa_store(uint64_t addr, uint64_t fpapool, uint64_t dwbcount)
 {
-	uint64_t ptr;
-
-	ptr =
-	    (0x1ULL << 48) |
-	    (0x5ULL << 43) |
-	    (fpapool & 0x07ULL) << 40 |
-	    (addr & 0xffffffffffULL);
+	/* for FPA operations, subdid == pool number */
+	uint64_t ptr =
+	    OCTEON_ADDR_IO_DID(FPA_MAJOR_DID, fpapool) |
+	    __SHIFTIN(addr, FPA_OPS_STORE_ADDR);
 
 	OCTEON_SYNCWS;
-	octeon_write_csr(ptr, (dwbcount & 0x0ffULL));
+	octeon_write_csr(ptr, __SHIFTIN(dwbcount, FPA_OPS_STORE_DATA_DWBCOUNT));
 }
 
 static __inline paddr_t
 octfpa_buf_get_paddr(struct octfpa_buf *fb)
 {
+
 	return octfpa_load(fb->fb_poolno);
 }
 
 static __inline void
 octfpa_buf_put_paddr(struct octfpa_buf *fb, paddr_t paddr)
 {
+
 	KASSERT(paddr >= fb->fb_paddr);
 	KASSERT(paddr < fb->fb_paddr + fb->fb_len);
 	octfpa_store(paddr, fb->fb_poolno, fb->fb_size / 128);
@@ -154,4 +152,4 @@ octfpa_buf_put(struct octfpa_buf *fb, vo
 	octfpa_buf_put_paddr(fb, paddr);
 }
 
-#endif
+#endif /* _OCTEON_FPAVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_gmxvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_gmxvar.h:1.4 src/sys/arch/mips/cavium/dev/octeon_gmxvar.h:1.5
--- src/sys/arch/mips/cavium/dev/octeon_gmxvar.h:1.4	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_gmxvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_gmxvar.h,v 1.4 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_gmxvar.h,v 1.5 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -133,13 +133,13 @@ struct octgmx_attach_args {
 				*ga_gmx_port;
 };
 
-#define	CN30XXGMX_FILTER_NADDRS_MAX	8	/* XXX elsewhere */
+#define	OCTEON_GMX_FILTER_NADDRS_MAX	8	/* XXX elsewhere */
 
-enum CN30XXGMX_FILTER_POLICY {
-	CN30XXGMX_FILTER_POLICY_ACCEPT_ALL,
-	CN30XXGMX_FILTER_POLICY_ACCEPT,
-	CN30XXGMX_FILTER_POLICY_REJECT,
-	CN30XXGMX_FILTER_POLICY_REJECT_ALL
+enum OCTEON_GMX_FILTER_POLICY {
+	OCTEON_GMX_FILTER_POLICY_ACCEPT_ALL,
+	OCTEON_GMX_FILTER_POLICY_ACCEPT,
+	OCTEON_GMX_FILTER_POLICY_REJECT,
+	OCTEON_GMX_FILTER_POLICY_REJECT_ALL
 };
 
 int		octgmx_link_enable(struct octgmx_port_softc *, int);
@@ -150,7 +150,7 @@ int		octgmx_stats_init(struct octgmx_por
 void		octgmx_tx_int_enable(struct octgmx_port_softc *, int);
 void		octgmx_rx_int_enable(struct octgmx_port_softc *, int);
 int		octgmx_setfilt(struct octgmx_port_softc *,
-		    enum CN30XXGMX_FILTER_POLICY, size_t, uint8_t **);
+		    enum OCTEON_GMX_FILTER_POLICY, size_t, uint8_t **);
 int		octgmx_rx_frm_ctl_enable(struct octgmx_port_softc *, uint64_t);
 int		octgmx_rx_frm_ctl_disable(struct octgmx_port_softc *, uint64_t);
 int		octgmx_tx_thresh(struct octgmx_port_softc *, int);
@@ -173,4 +173,4 @@ octgmx_link_status(struct octgmx_port_so
 	return (sc->sc_link & RXN_RX_INBND_STATUS) ? 1 : 0;
 }
 
-#endif
+#endif /* _OCTEON_GMXVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_pip.c
diff -u src/sys/arch/mips/cavium/dev/octeon_pip.c:1.4 src/sys/arch/mips/cavium/dev/octeon_pip.c:1.5
--- src/sys/arch/mips/cavium/dev/octeon_pip.c:1.4	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_pip.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pip.c,v 1.4 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_pip.c,v 1.5 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_pip.c,v 1.4 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_pip.c,v 1.5 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -192,11 +192,11 @@ octpip_port_config(struct octpip_softc *
 	CLR(prt_tag, PIP_PRT_TAGN_IP4_SRC);
 	CLR(prt_tag, PIP_PRT_TAGN_IP6_SRC);
 	CLR(prt_tag, PIP_PRT_TAGN_IP4_DST);
-	SET(prt_tag, PIP_PRT_TAGN_TCP6_TAG_ORDERED);
-	SET(prt_tag, PIP_PRT_TAGN_TCP4_TAG_ORDERED);
-	SET(prt_tag, PIP_PRT_TAGN_IP6_TAG_ORDERED);
-	SET(prt_tag, PIP_PRT_TAGN_IP4_TAG_ORDERED);
-	SET(prt_tag, PIP_PRT_TAGN_NON_TAG_ORDERED);
+	SET(prt_tag, __SHIFTIN(PIP_PRT_TAGN_TCP6_TAG_ORDERED, PIP_PRT_TAGN_TCP6_TAG));
+	SET(prt_tag, __SHIFTIN(PIP_PRT_TAGN_TCP4_TAG_ORDERED, PIP_PRT_TAGN_TCP4_TAG));
+	SET(prt_tag, __SHIFTIN(PIP_PRT_TAGN_IP6_TAG_ORDERED, PIP_PRT_TAGN_IP6_TAG));
+	SET(prt_tag, __SHIFTIN(PIP_PRT_TAGN_IP4_TAG_ORDERED, PIP_PRT_TAGN_IP4_TAG));
+	SET(prt_tag, __SHIFTIN(PIP_PRT_TAGN_NON_TAG_ORDERED, PIP_PRT_TAGN_NON_TAG));
 	SET(prt_tag, sc->sc_receive_group & PIP_PRT_TAGN_GRP);
 
 	ip_offset = 0;
@@ -242,7 +242,7 @@ octpip_stats(struct octpip_softc *sc, st
 	_PIP_WR8(sc, PIP_STAT_CTL_OFFSET, pip_stat_ctl | PIP_STAT_CTL_RDCLR);
 	reg = &octpip_dump_stats_[gmx_port];
 	tmp = _PIP_RD8(sc, reg->offset);
-	pkts = (tmp & 0xffffffff00000000ULL) >> 32;
+	pkts = __SHIFTOUT(tmp, PIP_STAT0_PRTN_DRP_PKTS);
 	if_statadd(ifp, if_iqdrops, pkts);
 
 	_PIP_WR8(sc, PIP_STAT_CTL_OFFSET, pip_stat_ctl);
Index: src/sys/arch/mips/cavium/dev/octeon_powvar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_powvar.h:1.4 src/sys/arch/mips/cavium/dev/octeon_powvar.h:1.5
--- src/sys/arch/mips/cavium/dev/octeon_powvar.h:1.4	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_powvar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_powvar.h,v 1.4 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_powvar.h,v 1.5 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -31,6 +31,8 @@
 
 #include <sys/cpu.h>
 
+#include <mips/cavium/octeonreg.h>
+
 #define POW_TAG_TYPE_ORDERED	0
 #define POW_TAG_TYPE_ATOMIC	1
 #define POW_TAG_TYPE_NULL	2
@@ -118,10 +120,8 @@ octpow_ops_get_work_load(
 	int wait)			/* 0-1 */
 {
 	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, 0x00) |
-	    __BITS64_SET(POW_GET_WORK_LOAD_WAIT, wait);
+	    OCTEON_ADDR_IO_DID(POW_MAJOR_DID, POW_OP_SUBDID_GET_WORK) |
+	    (wait ? POW_GET_WORK_LOAD_WAIT : 0);
 
 	return octeon_xkphys_read_8(ptr);
 }
@@ -145,13 +145,11 @@ octpow_ops_pow_status(
 	int get_wqp)			/* 0-1 */
 {
 	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, 0x01) |
-	    __BITS64_SET(POW_STATUS_LOAD_COREID, coreid) |
-	    __BITS64_SET(POW_STATUS_LOAD_GET_REV, get_rev) |
-	    __BITS64_SET(POW_STATUS_LOAD_GET_CUR, get_cur) |
-	    __BITS64_SET(POW_STATUS_LOAD_GET_WQP, get_wqp);
+	    OCTEON_ADDR_IO_DID(POW_MAJOR_DID, POW_OP_SUBDID_STATUS_LOAD) |
+	    __SHIFTIN(coreid, POW_STATUS_LOAD_COREID) |
+	    __SHIFTIN(get_rev, POW_STATUS_LOAD_GET_REV) |
+	    __SHIFTIN(get_cur, POW_STATUS_LOAD_GET_CUR) |
+	    __SHIFTIN(get_wqp, POW_STATUS_LOAD_GET_WQP);
 
 	return octeon_xkphys_read_8(ptr);
 }
@@ -171,12 +169,10 @@ octpow_ops_pow_memory(
 	int get_wqp)			/* 0-1 */
 {
 	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, 0x02) |
-	    __BITS64_SET(POW_MEMORY_LOAD_INDEX, index) |
-	    __BITS64_SET(POW_MEMORY_LOAD_GET_DES, get_des) |
-	    __BITS64_SET(POW_MEMORY_LOAD_GET_WQP, get_wqp);
+	    OCTEON_ADDR_IO_DID(POW_MAJOR_DID, POW_OP_SUBDID_MEMORY_LOAD) |
+	    __SHIFTIN(index, POW_MEMORY_LOAD_INDEX) |
+	    __SHIFTIN(get_des, POW_MEMORY_LOAD_GET_DES) |
+	    __SHIFTIN(get_wqp, POW_MEMORY_LOAD_GET_WQP);
 
 	return octeon_xkphys_read_8(ptr);
 }
@@ -197,12 +193,10 @@ octpow_ops_pow_idxptr(
 	int get_rmt)			/* 0-1 */
 {
 	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, 0x03) |
-	    __BITS64_SET(POW_IDXPTR_LOAD_QOSGRP, qosgrp) |
-	    __BITS64_SET(POW_IDXPTR_LOAD_GET_DES_GET_TAIL, get_des_get_tail) |
-	    __BITS64_SET(POW_IDXPTR_LOAD_GET_RMT, get_rmt);
+	    OCTEON_ADDR_IO_DID(POW_MAJOR_DID, POW_OP_SUBDID_IDXPTR_LOAD) |
+	    __SHIFTIN(qosgrp, POW_IDXPTR_LOAD_QOSGRP) |
+	    __SHIFTIN(get_des_get_tail, POW_IDXPTR_LOAD_GET_DES_GET_TAIL) |
+	    __SHIFTIN(get_rmt, POW_IDXPTR_LOAD_GET_RMT);
 
 	return octeon_xkphys_read_8(ptr);
 }
@@ -212,11 +206,8 @@ octpow_ops_pow_idxptr(
 static __inline uint64_t
 octpow_ops_null_rd_load(void)
 {
-	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, 0x04);
-
+	uint64_t ptr = OCTEON_ADDR_IO_DID(POW_MAJOR_DID, POW_OP_SUBDID_NULL_RD);
+ 
 	return octeon_xkphys_read_8(ptr);
 }
 
@@ -236,14 +227,9 @@ octpow_ops_get_work_iobdma(
  	/* ``scraddr'' part is index in 64-bit words, not address */
 	const int scrindex = scraddr / sizeof(uint64_t);
 
-        uint64_t args =
-             __BITS64_SET(POW_IOBDMA_GET_WORK_WAIT, wait);
-        uint64_t value =
-            __BITS64_SET(POW_IOBDMA_BASE_SCRADDR, scrindex) |
-            __BITS64_SET(POW_IOBDMA_BASE_LEN, 0x01) |
-            __BITS64_SET(POW_IOBDMA_BASE_MAJOR_DID, 0x0c) |
-            __BITS64_SET(POW_IOBDMA_BASE_SUB_DID, 0x00) |
-            __BITS64_SET(POW_IOBDMA_BASE_39_0, args);
+	uint64_t value = IOBDMA_CREATE(POW_MAJOR_DID,
+	    POW_IOBDMA_SUBDID_GET_WORK, scrindex, POW_IOBDMA_LEN,
+	    wait ? POW_IOBDMA_GET_WORK_WAIT : 0);
 
         octeon_iobdma_write_8(value);
 }
@@ -257,12 +243,8 @@ octpow_ops_null_rd_iobdma(
  	/* ``scraddr'' part is index in 64-bit words, not address */
 	const int scrindex = scraddr / sizeof(uint64_t);
 
-        uint64_t value =
-            __BITS64_SET(POW_IOBDMA_BASE_SCRADDR, scrindex) |
-            __BITS64_SET(POW_IOBDMA_BASE_LEN, 0x01) |
-            __BITS64_SET(POW_IOBDMA_BASE_MAJOR_DID, 0x0c) |
-            __BITS64_SET(POW_IOBDMA_BASE_SUB_DID, 0x04) |
-            __BITS64_SET(POW_IOBDMA_BASE_39_0, 0);
+	uint64_t value = IOBDMA_CREATE(POW_MAJOR_DID,
+	    POW_IOBDMA_SUBDID_NULL_RD, scrindex, POW_IOBDMA_LEN, 0);
 
         octeon_iobdma_write_8(value);
 }
@@ -282,21 +264,18 @@ octpow_store(
 	uint32_t tag)			/* 0-0xffff.ffff */
 {
 	/* Physical Address to Store to POW */
-	uint64_t ptr =
-	    POW_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(POW_OPERATION_BASE_MAJOR_DID, 0x0c) |
-	    __BITS64_SET(POW_OPERATION_BASE_SUB_DID, subdid) |
-	    __BITS64_SET(POW_PHY_ADDR_STORE_ADDR, addr); 
+	uint64_t ptr = OCTEON_ADDR_IO_DID(POW_MAJOR_DID, subdid) |
+	    __SHIFTIN(addr, POW_PHY_ADDR_STORE_ADDR);
 
 	/* Store Data on Store to POW */
 	uint64_t args =
-	    __BITS64_SET(POW_STORE_DATA_NO_SCHED, no_sched) |
-	    __BITS64_SET(POW_STORE_DATA_INDEX, index) |
-	    __BITS64_SET(POW_STORE_DATA_OP, op) |
-	    __BITS64_SET(POW_STORE_DATA_QOS, qos) |
-	    __BITS64_SET(POW_STORE_DATA_GRP, grp) |
-	    __BITS64_SET(POW_STORE_DATA_TYPE, type) |
-	    __BITS64_SET(POW_STORE_DATA_TAG, tag); 
+	    __SHIFTIN(no_sched, POW_STORE_DATA_NO_SCHED) |
+	    __SHIFTIN(index, POW_STORE_DATA_INDEX) |
+	    __SHIFTIN(op, POW_STORE_DATA_OP) |
+	    __SHIFTIN(qos, POW_STORE_DATA_QOS) |
+	    __SHIFTIN(grp, POW_STORE_DATA_GRP) |
+	    __SHIFTIN(type, POW_STORE_DATA_TYPE) |
+	    __SHIFTIN(tag, POW_STORE_DATA_TAG); 
 
 	octeon_xkphys_write_8(ptr, args);
 }
@@ -306,8 +285,9 @@ octpow_store(
 static __inline void
 octpow_ops_swtag(int type, uint32_t tag)
 {
+
 	octpow_store(
-		1,			/* subdid == 1 */
+		POW_STORE_SUBDID_OTHER,
 		0, 			/* addr (not used for SWTAG) */
 		0,			/* no_sched (not used for SWTAG) */
 		0,			/* index (not used for SWTAG) */
@@ -324,8 +304,9 @@ octpow_ops_swtag(int type, uint32_t tag)
 static __inline void
 octpow_ops_swtag_full(paddr_t addr, int grp, int type, uint32_t tag)
 {
+
 	octpow_store(
-		0,			/* subdid == 0 */
+		POW_STORE_SUBDID_SWTAG_FULL,
 		addr,
 		0,			/* no_sched (not used for SWTAG_FULL) */
 		0,			/* index (not used for SWTAG_FULL) */
@@ -341,8 +322,9 @@ octpow_ops_swtag_full(paddr_t addr, int 
 static __inline void
 octpow_ops_swtag_desched(int no_sched, int grp, int type, uint32_t tag)
 {
+
 	octpow_store(
-		3,			/* subdid == 3 */
+		POW_STORE_SUBDID_DESCHED,
 		0,			/* addr (not used for SWTAG_DESCHED) */
 		no_sched,
 		0,			/* index (not used for SWTAG_DESCHED) */
@@ -358,8 +340,9 @@ octpow_ops_swtag_desched(int no_sched, i
 static __inline void
 octpow_ops_desched(int no_sched)
 {
+
 	octpow_store(
-		3,			/* subdid == 3 */
+		POW_STORE_SUBDID_DESCHED,
 		0,			/* addr (not used for DESCHED) */
 		no_sched,
 		0,			/* index (not used for DESCHED) */
@@ -375,8 +358,9 @@ octpow_ops_desched(int no_sched)
 static __inline void
 octpow_ops_addwq(paddr_t addr, int qos, int grp, int type, uint32_t tag)
 {
+
 	octpow_store(
-		1,			/* subdid == 1 */
+		POW_STORE_SUBDID_OTHER,
 		addr,
 		0,			/* no_sched (not used for ADDWQ) */
 		0,			/* index (not used for ADDWQ) */
@@ -392,8 +376,9 @@ octpow_ops_addwq(paddr_t addr, int qos, 
 static __inline void
 octpow_ops_upd_wqp_grp(paddr_t addr, int grp)
 {
+
 	octpow_store(
-		1,			/* subdid == 1 */
+		POW_STORE_SUBDID_OTHER,
 		addr,
 		0,			/* no_sched (not used for UPD_WQP_GRP) */
 		0,			/* index (not used for UPD_WQP_GRP) */
@@ -409,8 +394,9 @@ octpow_ops_upd_wqp_grp(paddr_t addr, int
 static __inline void
 octpow_ops_clr_nsched(paddr_t addr, int index)
 {
+
 	octpow_store(
-		1,			/* subdid == 1 */
+		POW_STORE_SUBDID_OTHER,
 		addr,
 		0,			/* no_sched (not used for CLR_NSCHED) */
 		index,
@@ -426,8 +412,9 @@ octpow_ops_clr_nsched(paddr_t addr, int 
 static __inline void
 octpow_ops_nop(void)
 {
+
 	octpow_store(
-		1,			/* subdid == 1 */
+		POW_STORE_SUBDID_OTHER,
 		0,			/* addr (not used for NOP) */
 		0,			/* no_sched (not used for NOP) */
 		0,			/* index (not used for NOP) */
@@ -446,6 +433,7 @@ octpow_ops_nop(void)
 static __inline void
 octpow_work_request_async(uint64_t scraddr, uint64_t wait)
 {
+
         octpow_ops_get_work_iobdma(scraddr, wait);
 }
 
@@ -483,13 +471,14 @@ octpow_config_int_pc(struct octpow_softc
 	/* from SDK */
 	pc_thr = (cpu_clock_hz) / (unit * 16 * 256);
 
-	wq_int_pc = pc_thr << POW_WQ_INT_PC_PC_THR_SHIFT;
+	wq_int_pc = __SHIFTIN(pc_thr, POW_WQ_INT_PC_PC_THR);
 	_POW_WR8(sc, POW_WQ_INT_PC_OFFSET, wq_int_pc);
 }
 
 static __inline void
 octpow_config_int_pc_rate(struct octpow_softc *sc, int rate)
 {
+
 	octpow_config_int_pc(sc, sc->sc_int_pc_base / rate);
 }
 
Index: src/sys/arch/mips/cavium/dev/octeon_smivar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_smivar.h:1.4 src/sys/arch/mips/cavium/dev/octeon_smivar.h:1.5
--- src/sys/arch/mips/cavium/dev/octeon_smivar.h:1.4	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_smivar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_smivar.h,v 1.4 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_smivar.h,v 1.5 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -47,4 +47,4 @@ int	octsmi_read(struct octsmi_softc *, i
 int	octsmi_write(struct octsmi_softc *, int, int, uint16_t);
 void	octsmi_set_clock(struct octsmi_softc *, uint64_t);
 
-#endif
+#endif /* _OCTEON_SMIVAR_H_ */

Index: src/sys/arch/mips/cavium/dev/octeon_gmx.c
diff -u src/sys/arch/mips/cavium/dev/octeon_gmx.c:1.11 src/sys/arch/mips/cavium/dev/octeon_gmx.c:1.12
--- src/sys/arch/mips/cavium/dev/octeon_gmx.c:1.11	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_gmx.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_gmx.c,v 1.11 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_gmx.c,v 1.12 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_gmx.c,v 1.11 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_gmx.c,v 1.12 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -418,15 +418,15 @@ octgmx_tx_ovr_bp_enable(struct octgmx_po
 
 	ovr_bp = _GMX_RD8(sc, GMX0_TX_OVR_BP);
 	if (enable) {
-		CLR(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_EN_SHIFT);
-		SET(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_BP_SHIFT);
+		CLR(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_EN));
+		SET(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_BP));
 		/* XXX really??? */
-		SET(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_IGN_FULL_SHIFT);
+		SET(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_IGN_FULL));
 	} else {
-		SET(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_EN_SHIFT);
-		CLR(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_BP_SHIFT);
+		SET(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_EN));
+		CLR(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_BP));
 		/* XXX really??? */
-		SET(ovr_bp, (1 << sc->sc_port_no) << TX_OVR_BP_IGN_FULL_SHIFT);
+		SET(ovr_bp, __SHIFTIN(__BIT(sc->sc_port_no), TX_OVR_BP_IGN_FULL));
 	}
 	_GMX_WR8(sc, GMX0_TX_OVR_BP, ovr_bp);
 	return 0;
@@ -639,7 +639,7 @@ octgmx_rgmii_speed(struct octgmx_port_so
 	}
 	sc->sc_link = newlink;
 
-	switch (sc->sc_link & RXN_RX_INBND_SPEED) {
+	switch (__SHIFTOUT(sc->sc_link, RXN_RX_INBND_SPEED)) {
 	case RXN_RX_INBND_SPEED_2_5:
 		baudrate = IF_Mbps(10);
 		break;
@@ -824,7 +824,7 @@ octgmx_rgmii_speed_speed(struct octgmx_p
 	 * GMX Port Configuration Registers
 	 *  Duplex mode: 0 = half-duplex mode, 1=full-duplex
 	 */
-	if (ISSET(sc->sc_link, RXN_RX_INBND_DUPLEX)) {
+	if (__SHIFTOUT(sc->sc_link, RXN_RX_INBND_DUPLEX)) {
 		/* Full-Duplex */
 		SET(prt_cfg, PRTN_CFG_DUPLEX);
 	} else {
@@ -973,7 +973,7 @@ octgmx_rgmii_set_filter(struct octgmx_po
 		/* XXX XXX XXX */
 
 		/* XXX XXX XXX */
-		SET(cam_en, 1ULL << multi);
+		SET(cam_en, __BIT(multi));
 		/* XXX XXX XXX */
 
 		for (i = 0; i < 6; i++) {
@@ -1012,17 +1012,17 @@ setmulti:
 	    ISSET(ifp->if_flags, IFF_PROMISC)) {
 		/* XXX XXX XXX */
 		dprintf("accept all multicast\n");
-		SET(ctl, RXN_ADR_CTL_MCST_ACCEPT);
+		ctl |= __SHIFTIN(RXN_ADR_CTL_MCST_ACCEPT, RXN_ADR_CTL_MCST);
 		/* XXX XXX XXX */
 	} else if (multi) {
 		/* XXX XXX XXX */
 		dprintf("use cam\n");
-		SET(ctl, RXN_ADR_CTL_MCST_AFCAM);
+		ctl |= __SHIFTIN(RXN_ADR_CTL_MCST_AFCAM, RXN_ADR_CTL_MCST);
 		/* XXX XXX XXX */
 	} else {
 		/* XXX XXX XXX */
 		dprintf("reject all multicast\n");
-		SET(ctl, RXN_ADR_CTL_MCST_REJECT);
+		ctl |= __SHIFTIN(RXN_ADR_CTL_MCST_REJECT, RXN_ADR_CTL_MCST);
 		/* XXX XXX XXX */
 	}
 	/* XXX XXX XXX */
@@ -1093,11 +1093,11 @@ octgmx_stats(struct octgmx_port_softc *s
  */
 
 /* XXX local namespace */
-#define	_POLICY			CN30XXGMX_FILTER_POLICY
-#define	_POLICY_ACCEPT_ALL	CN30XXGMX_FILTER_POLICY_ACCEPT_ALL
-#define	_POLICY_ACCEPT		CN30XXGMX_FILTER_POLICY_ACCEPT
-#define	_POLICY_REJECT		CN30XXGMX_FILTER_POLICY_REJECT
-#define	_POLICY_REJECT_ALL	CN30XXGMX_FILTER_POLICY_REJECT_ALL
+#define	_POLICY			OCTEON_GMX_FILTER_POLICY
+#define	_POLICY_ACCEPT_ALL	OCTEON_GMX_FILTER_POLICY_ACCEPT_ALL
+#define	_POLICY_ACCEPT		OCTEON_GMX_FILTER_POLICY_ACCEPT
+#define	_POLICY_REJECT		OCTEON_GMX_FILTER_POLICY_REJECT
+#define	_POLICY_REJECT_ALL	OCTEON_GMX_FILTER_POLICY_REJECT_ALL
 
 static int	octgmx_setfilt_addrs(struct octgmx_port_softc *, size_t,
 		    uint8_t **);
@@ -1120,16 +1120,19 @@ octgmx_setfilt(struct octgmx_port_softc 
 		KASSERT(naddrs == 0);
 		KASSERT(addrs == NULL);
 
-		SET(rx_adr_ctl, (policy == _POLICY_ACCEPT_ALL) ?
-		    RXN_ADR_CTL_MCST_ACCEPT : RXN_ADR_CTL_MCST_REJECT);
+		SET(rx_adr_ctl,
+		    __SHIFTIN((policy == _POLICY_ACCEPT_ALL) ?
+		      RXN_ADR_CTL_MCST_ACCEPT : RXN_ADR_CTL_MCST_REJECT),
+		    RXN_ADR_CTL_MCST);
 		break;
 	case _POLICY_ACCEPT:
 	case _POLICY_REJECT:
-		if (naddrs > CN30XXGMX_FILTER_NADDRS_MAX)
+		if (naddrs > OCTEON_GMX_FILTER_NADDRS_MAX)
 			return E2BIG;
 		SET(rx_adr_ctl, (policy == _POLICY_ACCEPT) ?
 		    RXN_ADR_CTL_CAM_MODE : 0);
-		SET(rx_adr_ctl, RXN_ADR_CTL_MCST_AFCAM);
+		SET(rx_adr_ctl,
+		    __SHIFTIN(RXN_ADR_CTL_MCST_AFCAM, RXN_ADR_CTL_MCST);
 		/* set GMX0_RXN_ADR_CAM_EN, GMX0_RXN_ADR_CAM[0-5] */
 		octgmx_setfilt_addrs(sc, naddrs, addrs);
 		break;
@@ -1146,16 +1149,16 @@ octgmx_setfilt_addrs(struct octgmx_port_
     uint8_t **addrs)
 {
 	uint64_t rx_adr_cam_en;
-	uint64_t rx_adr_cam_addrs[CN30XXGMX_FILTER_NADDRS_MAX];
+	uint64_t rx_adr_cam_addrs[OCTEON_GMX_FILTER_NADDRS_MAX];
 	int i, j;
 
-	KASSERT(naddrs <= CN30XXGMX_FILTER_NADDRS_MAX);
+	KASSERT(naddrs <= OCTEON_GMX_FILTER_NADDRS_MAX);
 
 	rx_adr_cam_en = 0;
 	(void)memset(rx_adr_cam_addrs, 0, sizeof(rx_adr_cam_addrs));
 
 	for (i = 0; i < naddrs; i++) {
-		SET(rx_adr_cam_en, 1ULL << i);
+		SET(rx_adr_cam_en, __BIT(i));
 		for (j = 0; j < 6; j++)
 			SET(rx_adr_cam_addrs[j],
 			    (uint64_t)addrs[i][j] << (8 * i));
Index: src/sys/arch/mips/cavium/dev/octeon_rnm.c
diff -u src/sys/arch/mips/cavium/dev/octeon_rnm.c:1.11 src/sys/arch/mips/cavium/dev/octeon_rnm.c:1.12
--- src/sys/arch/mips/cavium/dev/octeon_rnm.c:1.11	Mon Jun  8 01:17:05 2020
+++ src/sys/arch/mips/cavium/dev/octeon_rnm.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_rnm.c,v 1.11 2020/06/08 01:17:05 simonb Exp $	*/
+/*	$NetBSD: octeon_rnm.c,v 1.12 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -99,7 +99,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_rnm.c,v 1.11 2020/06/08 01:17:05 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_rnm.c,v 1.12 2020/06/18 13:52:08 simonb Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -108,10 +108,11 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_rnm.c
 #include <sys/systm.h>
 
 #include <mips/locore.h>
+#include <mips/cavium/octeonreg.h>
+#include <mips/cavium/octeonvar.h>
 #include <mips/cavium/include/iobusvar.h>
 #include <mips/cavium/dev/octeon_rnmreg.h>
 #include <mips/cavium/dev/octeon_corereg.h>
-#include <mips/cavium/octeonvar.h>
 
 #include <sys/bus.h>
 
@@ -345,10 +346,7 @@ octrnm_raw_entropy(struct octrnm_softc *
 static uint64_t
 octrnm_load(struct octrnm_softc *sc)
 {
-	uint64_t addr =
-	    RNM_OPERATION_BASE_IO_BIT |
-	    __BITS64_SET(RNM_OPERATION_BASE_MAJOR_DID, 0x08) |
-	    __BITS64_SET(RNM_OPERATION_BASE_SUB_DID, 0x00);
+	uint64_t addr = OCTEON_ADDR_IO_DID(RNM_MAJOR_DID, RNM_SUB_DID);
 
 	return octeon_xkphys_read_8(addr);
 }
@@ -361,12 +359,10 @@ octrnm_load(struct octrnm_softc *sc)
 static void
 octrnm_iobdma(struct octrnm_softc *sc, uint64_t *buf, unsigned nwords)
 {
+ 	/* ``scraddr'' part is index in 64-bit words, not address */
 	size_t scraddr = OCTEON_CVMSEG_OFFSET(csm_rnm);
-	uint64_t iobdma =
-	    __SHIFTIN(scraddr/sizeof(uint64_t), IOBDMA_SCRADDR) |
-	    __SHIFTIN(nwords, IOBDMA_LEN) |
-	    __SHIFTIN(RNM_IOBDMA_MAJORDID, IOBDMA_MAJORDID) |
-	    __SHIFTIN(RNM_IOBDMA_SUBDID, IOBDMA_SUBDID);
+	uint64_t iobdma = IOBDMA_CREATE(RNM_MAJOR_DID, RNM_SUB_DID,
+	    scraddr / sizeof(uint64_t), nwords, 0);
 
 	KASSERT(nwords < 128);			/* iobdma address restriction */
 	KASSERT(nwords <= CVMSEG_LM_RNM_SIZE);	/* size of CVMSEG LM buffer */

Index: src/sys/arch/mips/cavium/dev/octeon_ipd.c
diff -u src/sys/arch/mips/cavium/dev/octeon_ipd.c:1.3 src/sys/arch/mips/cavium/dev/octeon_ipd.c:1.4
--- src/sys/arch/mips/cavium/dev/octeon_ipd.c:1.3	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_ipd.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_ipd.c,v 1.3 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_ipd.c,v 1.4 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_ipd.c,v 1.3 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_ipd.c,v 1.4 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -40,6 +40,7 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_ipd.c
 #include <mips/locore.h>
 #include <mips/cavium/octeonvar.h>
 #include <mips/cavium/dev/octeon_ciureg.h>
+#include <mips/cavium/dev/octeon_fpareg.h>
 #include <mips/cavium/dev/octeon_fpavar.h>
 #include <mips/cavium/dev/octeon_pipreg.h>
 #include <mips/cavium/dev/octeon_ipdreg.h>
@@ -50,7 +51,7 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_ipd.c
 #include <netinet/ip.h>
 
 #define IP_OFFSET(data, word2) \
-	((uintptr_t)(data) + (uintptr_t)((word2 & PIP_WQE_WORD2_IP_OFFSET) >> PIP_WQE_WORD2_IP_OFFSET_SHIFT))
+	((uintptr_t)(data) + (uintptr_t)__SHIFTOUT(word2, PIP_WQE_WORD2_IP_OFFSET))
 
 #ifdef CNMAC_DEBUG
 void			octipd_intr_evcnt_attach(struct octipd_softc *);
@@ -163,7 +164,8 @@ octipd_config(struct octipd_softc *sc)
 
 	ctl_status = _IPD_RD8(sc, IPD_CTL_STATUS_OFFSET);
 	CLR(ctl_status, IPD_CTL_STATUS_OPC_MODE);
-	SET(ctl_status, IPD_CTL_STATUS_OPC_MODE_ALL);
+	SET(ctl_status,
+	    __SHIFTIN(IPD_CTL_STATUS_OPC_MODE_ALL, IPD_CTL_STATUS_OPC_MODE));
 	SET(ctl_status, IPD_CTL_STATUS_PBP_EN);
 
 	/*
Index: src/sys/arch/mips/cavium/dev/octeon_pkovar.h
diff -u src/sys/arch/mips/cavium/dev/octeon_pkovar.h:1.3 src/sys/arch/mips/cavium/dev/octeon_pkovar.h:1.4
--- src/sys/arch/mips/cavium/dev/octeon_pkovar.h:1.3	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_pkovar.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pkovar.h,v 1.3 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_pkovar.h,v 1.4 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -97,37 +97,37 @@ octpko_cmd_word0(int sz1, int sz0, int s
     int le, int n2, int q, int r, int g, int ipoffp1, int ii, int df, int segs,
     int totalbytes)
 {
-	uint64_t cmd = 0;
+	uint64_t cmd =
+	    __SHIFTIN(sz1, PKO_CMD_WORD0_SZ1) |
+	    __SHIFTIN(sz0, PKO_CMD_WORD0_SZ0) |
+	    __SHIFTIN(s1, PKO_CMD_WORD0_S1) |
+	    __SHIFTIN(reg1, PKO_CMD_WORD0_REG1) |
+	    __SHIFTIN(s0, PKO_CMD_WORD0_S0) |
+	    __SHIFTIN(reg0, PKO_CMD_WORD0_REG0) |
+	    __SHIFTIN(le, PKO_CMD_WORD0_LE) |
+	    __SHIFTIN(n2, PKO_CMD_WORD0_N2) |
+	    __SHIFTIN(q, PKO_CMD_WORD0_Q) |
+	    __SHIFTIN(r, PKO_CMD_WORD0_R) |
+	    __SHIFTIN(g, PKO_CMD_WORD0_G) |
+	    __SHIFTIN(ipoffp1, PKO_CMD_WORD0_IPOFFP1) |
+	    __SHIFTIN(ii, PKO_CMD_WORD0_II) |
+	    __SHIFTIN(df, PKO_CMD_WORD0_DF) |
+	    __SHIFTIN(segs, PKO_CMD_WORD0_SEGS) |
+	    __SHIFTIN(totalbytes, PKO_CMD_WORD0_TOTALBYTES);
 
-	SET(cmd, (((uint64_t)sz1 << 62) & PKO_CMD_WORD0_SZ1)
- 	    | (((uint64_t)sz0 << 60) & PKO_CMD_WORD0_SZ0)
-	    | (((uint64_t)s1 << 59) & PKO_CMD_WORD0_S1)
-	    | (((uint64_t)reg1 << 48) & PKO_CMD_WORD0_REG1)
-	    | (((uint64_t)s0 << 47) & PKO_CMD_WORD0_S0)
-	    | (((uint64_t)reg0 << 36) & PKO_CMD_WORD0_REG0)
-	    | (((uint64_t)le << 35) & PKO_CMD_WORD0_LE)
-	    | (((uint64_t)n2 << 34) & PKO_CMD_WORD0_N2)
-	    | (((uint64_t)q << 33) & PKO_CMD_WORD0_Q)
-	    | (((uint64_t)r << 32) & PKO_CMD_WORD0_R)
-	    | (((uint64_t)g << 31) & PKO_CMD_WORD0_G)
-	    | (((uint64_t)ipoffp1 << 24) & PKO_CMD_WORD0_IPOFFP1)
-	    | (((uint64_t)ii << 23) & PKO_CMD_WORD0_II)
-	    | (((uint64_t)df << 22) & PKO_CMD_WORD0_DF)
-	    | (((uint64_t)segs << 16) & PKO_CMD_WORD0_SEGS)
-	    | (((uint64_t)totalbytes << 0) & PKO_CMD_WORD0_TOTALBYTES));
 	return cmd;
 }
 
 static __inline uint64_t
 octpko_cmd_word1(int i, int back, int pool, int size, paddr_t addr)
 {
-	uint64_t cmd = 0;
+	uint64_t cmd =
+	    __SHIFTIN(i, PKO_CMD_WORD1_I) |
+	    __SHIFTIN(back, PKO_CMD_WORD1_BACK) |
+	    __SHIFTIN(pool, PKO_CMD_WORD1_POOL) |
+	    __SHIFTIN(size, PKO_CMD_WORD1_SIZE) |
+	    __SHIFTIN(addr, PKO_CMD_WORD1_ADDR);
 
-	SET(cmd, (((uint64_t)i << 63) & PKO_CMD_WORD1_I)
-	    | (((uint64_t)back << 59) & PKO_CMD_WORD1_BACK)
-	    | (((uint64_t)pool << 56) & PKO_CMD_WORD1_POOL)
-	    | (((uint64_t)size << 40) & PKO_CMD_WORD1_SIZE)
-	    | (((uint64_t)addr << 0) & PKO_CMD_WORD1_ADDR));
 	return cmd;
 }
 
@@ -140,11 +140,7 @@ octpko_op_store(uint64_t args, uint64_t 
 {
 	paddr_t addr;
 
-	addr =
-	    ((uint64_t)1 << 48) |
-	    ((uint64_t)(CN30XXPKO_MAJORDID & 0x1f) << 43) |
-	    ((uint64_t)(CN30XXPKO_SUBDID & 0x7) << 40) |
-	    ((uint64_t)args);
+	addr = OCTEON_ADDR_IO_DID(PKO_MAJOR_DID, PKO_SUB_DID) | args;
 	/* XXX */
 	OCTEON_SYNCW;
 	octeon_write_csr(addr, value);
@@ -156,10 +152,10 @@ octpko_op_doorbell_write(int pid, int qi
 	uint64_t args, value;
 
 	args =
-	    ((uint64_t)(pid & 0x3f) << 12) |
-	    ((uint64_t)(qid & 0x1ff) << 3);
-	value = wdc & 0xfffff;
+	    __SHIFTIN(pid, PKO_DOORBELL_WRITE_PID) |
+	    __SHIFTIN(qid, PKO_DOORBELL_WRITE_QID);
+	value = __SHIFTIN(wdc, PKO_DOORBELL_WRITE_WDC);
 	octpko_op_store(args, value);
 }
 
-#endif
+#endif /* _OCTEON_PKOVAR_H_ */
Index: src/sys/arch/mips/cavium/dev/octeon_rnmreg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_rnmreg.h:1.3 src/sys/arch/mips/cavium/dev/octeon_rnmreg.h:1.4
--- src/sys/arch/mips/cavium/dev/octeon_rnmreg.h:1.3	Wed May 13 21:09:02 2020
+++ src/sys/arch/mips/cavium/dev/octeon_rnmreg.h	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_rnmreg.h,v 1.3 2020/05/13 21:09:02 riastradh Exp $	*/
+/*	$NetBSD: octeon_rnmreg.h,v 1.4 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -33,10 +33,14 @@
 #ifndef _OCTEON_RNMREG_H_
 #define _OCTEON_RNMREG_H_
 
+/* ---- IO address IDs */
+#define	RNM_MAJOR_DID				8
+#define	RNM_SUB_DID				0
+
 /* ---- register addresses */
 
-#define	RNM_CTL_STATUS				0x0001180040000000ULL
-#define	RNM_BIST_STATUS				0x0001180040000008ULL
+#define	RNM_CTL_STATUS				UINT64_C(0x0001180040000000)
+#define	RNM_BIST_STATUS				UINT64_C(0x0001180040000008)
 
 /* ---- register bits */
 
@@ -52,28 +56,6 @@
 #define RNM_BIST_STATUS_RRC			UINT64_C(0x0000000000000002)
 #define RNM_BIST_STATUS_MEM			UINT64_C(0x0000000000000001)
 
-/* ---- operations */
-#define RNM_OPERATION_BASE_IO_BIT		UINT64_C(0x0001000000000000)
-#define RNM_OPERATION_BASE_MAJOR_DID		UINT64_C(0x0000f80000000000)
-#define RNM_OPERATION_BASE_SUB_DID		UINT64_C(0x0000070000000000)
-#define	RNM_OPERATION_BASE_MAJOR_DID_SHIFT	43
-#define	RNM_OPERATION_BASE_SUB_DID_SHIFT	40
-#define	RNM_OPERATION_BASE_IO_BIT_SHIFT	48
-
-/* ---- IOBDMA */
-
-/* 4.7 IOBDMA Operations (XXX move me elsewhere) */
-#define	IOBDMA_SCRADDR		__BITS(63,56)
-#define	IOBDMA_LEN		__BITS(55,48)
-#define	IOBDMA_MAJORDID		__BITS(47,43)
-#define	IOBDMA_SUBDID		__BITS(42,40)
-/* reserved 39:36 */
-#define	IOBDMA_OFFSET		__BITS(35,0)
-
-/* 19.1.12 IOBDMA Operations, p. 661 */
-#define	RNM_IOBDMA_MAJORDID	8
-#define	RNM_IOBDMA_SUBDID	0
-
 /* ---- snprintb */
 
 #define	RNM_CTL_STATUS_BITS \
Index: src/sys/arch/mips/cavium/dev/octeon_smi.c
diff -u src/sys/arch/mips/cavium/dev/octeon_smi.c:1.3 src/sys/arch/mips/cavium/dev/octeon_smi.c:1.4
--- src/sys/arch/mips/cavium/dev/octeon_smi.c:1.3	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_smi.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_smi.c,v 1.3 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_smi.c,v 1.4 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_smi.c,v 1.3 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_smi.c,v 1.4 2020/06/18 13:52:08 simonb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -35,6 +35,7 @@ __KERNEL_RCSID(0, "$NetBSD: octeon_smi.c
 #include <sys/mbuf.h>
 #include <mips/locore.h>
 #include <mips/cavium/octeonvar.h>
+#include <mips/cavium/dev/octeon_fpareg.h>
 #include <mips/cavium/dev/octeon_fpavar.h>
 #include <mips/cavium/dev/octeon_pipreg.h>
 #include <mips/cavium/dev/octeon_smireg.h>
@@ -77,9 +78,10 @@ octsmi_read(struct octsmi_softc *sc, int
 	uint64_t smi_rd;
 	int timo;
 
-	_SMI_WR8(sc, SMI_CMD_OFFSET, SMI_CMD_PHY_OP | 
-	    (phy_addr << SMI_CMD_PHY_ADR_SHIFT) |
-	    (reg << SMI_CMD_REG_ADR_SHIFT));
+	_SMI_WR8(sc, SMI_CMD_OFFSET, 
+	    __SHIFTIN(SMI_CMD_PHY_OP_READ, SMI_CMD_PHY_OP) |
+	    __SHIFTIN(phy_addr, SMI_CMD_PHY_ADR) |
+	    __SHIFTIN(reg, SMI_CMD_REG_ADR));
 
 	timo = 10000;
 	smi_rd = _SMI_RD8(sc, SMI_RD_DAT_OFFSET);
@@ -108,8 +110,10 @@ octsmi_write(struct octsmi_softc *sc, in
 	SET(smi_wr, value);
 	_SMI_WR8(sc, SMI_WR_DAT_OFFSET, smi_wr);
 
-	_SMI_WR8(sc, SMI_CMD_OFFSET, (phy_addr << SMI_CMD_PHY_ADR_SHIFT) |
-	    (reg << SMI_CMD_REG_ADR_SHIFT));
+	_SMI_WR8(sc, SMI_CMD_OFFSET,
+	    __SHIFTIN(SMI_CMD_PHY_OP_WRITE, SMI_CMD_PHY_OP) |
+	    __SHIFTIN(phy_addr, SMI_CMD_PHY_ADR) |
+	    __SHIFTIN(reg, SMI_CMD_REG_ADR));
 
 	timo = 10000;
 	smi_wr = _SMI_RD8(sc, SMI_WR_DAT_OFFSET);

Index: src/sys/arch/mips/cavium/dev/octeon_pow.c
diff -u src/sys/arch/mips/cavium/dev/octeon_pow.c:1.6 src/sys/arch/mips/cavium/dev/octeon_pow.c:1.7
--- src/sys/arch/mips/cavium/dev/octeon_pow.c:1.6	Sun May 31 06:27:06 2020
+++ src/sys/arch/mips/cavium/dev/octeon_pow.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_pow.c,v 1.6 2020/05/31 06:27:06 simonb Exp $	*/
+/*	$NetBSD: octeon_pow.c,v 1.7 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_pow.c,v 1.6 2020/05/31 06:27:06 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_pow.c,v 1.7 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"	/* CNMAC_DEBUG */
 
@@ -129,16 +129,6 @@ int int_rate = 1;
 
 /* -------------------------------------------------------------------------- */
 
-/* ---- operation primitive functions */
-
-/* Load Operations */
-
-/* IOBDMA Operations */
-
-/* Store Operations */
-
-/* -------------------------------------------------------------------------- */
-
 /* ---- utility functions */
 
 
@@ -281,13 +271,12 @@ static inline void
 octpow_config_int(struct octpow_softc *sc, int group, uint64_t tc_thr,
     uint64_t ds_thr, uint64_t iq_thr)
 {
-	uint64_t wq_int_thr;
-
-	wq_int_thr =
+	uint64_t wq_int_thr =
 	    POW_WQ_INT_THRX_TC_EN |
-	    (tc_thr << POW_WQ_INT_THRX_TC_THR_SHIFT) |
-	    (ds_thr << POW_WQ_INT_THRX_DS_THR_SHIFT) |
-	    (iq_thr << POW_WQ_INT_THRX_IQ_THR_SHIFT);
+	    __SHIFTIN(tc_thr, POW_WQ_INT_THRX_TC_THR) |
+	    __SHIFTIN(ds_thr, POW_WQ_INT_THRX_DS_THR) |
+	    __SHIFTIN(iq_thr, POW_WQ_INT_THRX_IQ_THR);
+
 	_POW_WR8(sc, POW_WQ_INT_THR0_OFFSET + (group * 8), wq_int_thr);
 }
 
@@ -523,7 +512,7 @@ octpow_intr_work(struct octpow_softc *sc
 	uint64_t *work;
 	uint64_t count = 0;
 
-	_POW_WR8(sc, POW_PP_GRP_MSK0_OFFSET, UINT64_C(1) << pow_ih->pi_group);
+	_POW_WR8(sc, POW_PP_GRP_MSK0_OFFSET, __BIT(pow_ih->pi_group));
 
 	_POW_INTR_WORK_DEBUG_IVAL(sc, pow_ih);
 
@@ -546,7 +535,7 @@ octpow_intr(void *data)
 {
 	struct octpow_intr_handle *pow_ih = data;
 	struct octpow_softc *sc = pow_ih->pi_sc;
-	uint64_t wq_int_mask = UINT64_C(0x1) << pow_ih->pi_group;
+	uint64_t wq_int_mask = __BIT(pow_ih->pi_group);
 
 #ifdef CNMAC_INTR_FEEDBACK_RING
 	octpow_intr_work(sc, pow_ih, recv_cnt);
@@ -554,7 +543,8 @@ octpow_intr(void *data)
 	octpow_intr_work(sc, pow_ih, INT_MAX);
 #endif /* CNMAC_INTR_FEEDBACK_RING */
 
-	_POW_WR8(sc, POW_WQ_INT_OFFSET, wq_int_mask << POW_WQ_INT_WQ_INT_SHIFT);
+	_POW_WR8(sc, POW_WQ_INT_OFFSET,
+	    __SHIFTIN(wq_int_mask, POW_WQ_INT_WQ_INT));
 	return 1;
 }
 
Index: src/sys/arch/mips/cavium/dev/octeon_uart.c
diff -u src/sys/arch/mips/cavium/dev/octeon_uart.c:1.6 src/sys/arch/mips/cavium/dev/octeon_uart.c:1.7
--- src/sys/arch/mips/cavium/dev/octeon_uart.c:1.6	Mon Jun 15 07:48:12 2020
+++ src/sys/arch/mips/cavium/dev/octeon_uart.c	Thu Jun 18 13:52:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: octeon_uart.c,v 1.6 2020/06/15 07:48:12 simonb Exp $	*/
+/*	$NetBSD: octeon_uart.c,v 1.7 2020/06/18 13:52:08 simonb Exp $	*/
 
 /*
  * Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: octeon_uart.c,v 1.6 2020/06/15 07:48:12 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: octeon_uart.c,v 1.7 2020/06/18 13:52:08 simonb Exp $");
 
 #include "opt_octeon.h"
 
@@ -60,9 +60,6 @@ static int	octuart_com_enable(struct com
 static void	octuart_com_disable(struct com_softc *);
 
 
-#define CN30XXUART_BUSYDETECT	0x7
-
-
 /* XXX */
 int		octuart_com_cnattach(bus_space_tag_t, int, int);
 

Reply via email to