Module Name:    src
Committed By:   martin
Date:           Sat Feb 17 16:02:23 UTC 2024

Modified Files:
        src/sys/arch/hppa/dev [netbsd-10]: dino.c elroy.c
        src/sys/arch/hppa/hppa [netbsd-10]: mainbus.c
        src/sys/arch/hppa/include [netbsd-10]: bus_defs.h bus_funcs.h

Log Message:
Pull up following revision(s) (requested by macallan in ticket #592):

        sys/arch/hppa/hppa/mainbus.c: revision 1.13
        sys/arch/hppa/dev/elroy.c: revision 1.7
        sys/arch/hppa/dev/dino.c: revision 1.17
        sys/arch/hppa/include/bus_funcs.h: revision 1.2
        sys/arch/hppa/include/bus_defs.h: revision 1.3

add missing bus_space_*_stream() methods instead of quietly aliasing them
to their potentially byte-swapping regular counterparts

ok skrll@


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.16.4.1 src/sys/arch/hppa/dev/dino.c
cvs rdiff -u -r1.6 -r1.6.4.1 src/sys/arch/hppa/dev/elroy.c
cvs rdiff -u -r1.11 -r1.11.2.1 src/sys/arch/hppa/hppa/mainbus.c
cvs rdiff -u -r1.2 -r1.2.26.1 src/sys/arch/hppa/include/bus_defs.h
cvs rdiff -u -r1.1 -r1.1.66.1 src/sys/arch/hppa/include/bus_funcs.h

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/hppa/dev/dino.c
diff -u src/sys/arch/hppa/dev/dino.c:1.16 src/sys/arch/hppa/dev/dino.c:1.16.4.1
--- src/sys/arch/hppa/dev/dino.c:1.16	Thu Sep 29 06:39:58 2022
+++ src/sys/arch/hppa/dev/dino.c	Sat Feb 17 16:02:22 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: dino.c,v 1.16 2022/09/29 06:39:58 skrll Exp $ */
+/*	$NetBSD: dino.c,v 1.16.4.1 2024/02/17 16:02:22 martin Exp $ */
 
 /*	$OpenBSD: dino.c,v 1.5 2004/02/13 20:39:31 mickey Exp $	*/
 
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dino.c,v 1.16 2022/09/29 06:39:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dino.c,v 1.16.4.1 2024/02/17 16:02:22 martin Exp $");
 
 /* #include "cardbus.h" */
 
@@ -177,10 +177,16 @@ uint8_t dino_r1(void *, bus_space_handle
 uint16_t dino_r2(void *, bus_space_handle_t, bus_size_t);
 uint32_t dino_r4(void *, bus_space_handle_t, bus_size_t);
 uint64_t dino_r8(void *, bus_space_handle_t, bus_size_t);
+uint16_t dino_rs2(void *, bus_space_handle_t, bus_size_t);
+uint32_t dino_rs4(void *, bus_space_handle_t, bus_size_t);
+uint64_t dino_rs8(void *, bus_space_handle_t, bus_size_t);
 void dino_w1(void *, bus_space_handle_t, bus_size_t, uint8_t);
 void dino_w2(void *, bus_space_handle_t, bus_size_t, uint16_t);
 void dino_w4(void *, bus_space_handle_t, bus_size_t, uint32_t);
 void dino_w8(void *, bus_space_handle_t, bus_size_t, uint64_t);
+void dino_ws2(void *, bus_space_handle_t, bus_size_t, uint16_t);
+void dino_ws4(void *, bus_space_handle_t, bus_size_t, uint32_t);
+void dino_ws8(void *, bus_space_handle_t, bus_size_t, uint64_t);
 void dino_rm_1(void *, bus_space_handle_t, bus_size_t, uint8_t *, bus_size_t);
 void dino_rm_2(void *, bus_space_handle_t, bus_size_t, uint16_t *, bus_size_t);
 void dino_rm_4(void *, bus_space_handle_t, bus_size_t, uint32_t *, bus_size_t);
@@ -413,7 +419,7 @@ dino_intr_map(const struct pci_attach_ar
 	if (line == 0xff)
 		return 1;
 
-	*ihp = line;
+	*ihp = line ;
 
 	return 0;
 }
@@ -695,6 +701,59 @@ dino_r8(void *v, bus_space_handle_t h, b
 	return le64toh(data);
 }
 
+uint16_t
+dino_rs2(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	volatile uint16_t *p;
+
+	h += o;
+	if (h & HPPA_IOSPACE)
+		p = (volatile uint16_t *)h;
+	else {
+		struct dino_softc *sc = v;
+		volatile struct dino_regs *r = sc->sc_regs;
+
+		r->pci_addr = h;
+		p = (volatile uint16_t *)&r->pci_io_data;
+		if (h & 2)
+			p++;
+	}
+	return *p;
+}
+
+uint32_t
+dino_rs4(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	uint32_t data;
+
+	h += o;
+	if (h & HPPA_IOSPACE)
+		data = *(volatile uint32_t *)h;
+	else {
+		struct dino_softc *sc = v;
+		volatile struct dino_regs *r = sc->sc_regs;
+
+		r->pci_addr = h;
+		data = r->pci_io_data;
+	}
+
+	return data;
+}
+
+uint64_t
+dino_rs8(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	uint64_t data;
+
+	h += o;
+	if (h & HPPA_IOSPACE)
+		data = *(volatile uint64_t *)h;
+	else
+		panic("dino_r8: not implemented");
+
+	return data;
+}
+
 void
 dino_w1(void *v, bus_space_handle_t h, bus_size_t o, uint8_t vv)
 {
@@ -757,6 +816,51 @@ dino_w8(void *v, bus_space_handle_t h, b
 		panic("dino_w8: not implemented");
 }
 
+void
+dino_ws2(void *v, bus_space_handle_t h, bus_size_t o, uint16_t vv)
+{
+	volatile uint16_t *p;
+
+	h += o;
+	if (h & HPPA_IOSPACE)
+		p = (volatile uint16_t *)h;
+	else {
+		struct dino_softc *sc = v;
+		volatile struct dino_regs *r = sc->sc_regs;
+
+		r->pci_addr = h;
+		p = (volatile uint16_t *)&r->pci_io_data;
+		if (h & 2)
+			p++;
+	}
+
+	*p = vv;
+}
+
+void
+dino_ws4(void *v, bus_space_handle_t h, bus_size_t o, uint32_t vv)
+{
+	h += o;
+	if (h & HPPA_IOSPACE)
+		*(volatile uint32_t *)h = vv;
+	else {
+		struct dino_softc *sc = v;
+		volatile struct dino_regs *r = sc->sc_regs;
+
+		r->pci_addr = h;
+		r->pci_io_data = vv;
+	}
+}
+
+void
+dino_ws8(void *v, bus_space_handle_t h, bus_size_t o, uint64_t vv)
+{
+	h += o;
+	if (h & HPPA_IOSPACE)
+		*(volatile uint64_t *)h = vv;
+	else
+		panic("dino_w8: not implemented");
+}
 
 void
 dino_rm_1(void *v, bus_space_handle_t h, bus_size_t o, uint8_t *a, bus_size_t c)
@@ -1454,7 +1558,9 @@ const struct hppa_bus_space_tag dino_iom
 	NULL, dino_unmap, dino_subregion, NULL, dino_free,
 	dino_barrier, dino_vaddr, dino_mmap,
 	dino_r1,    dino_r2,    dino_r4,    dino_r8,
+		    dino_rs2,   dino_rs4,   dino_rs8,
 	dino_w1,    dino_w2,    dino_w4,    dino_w8,
+	            dino_ws2,   dino_ws4,   dino_ws8,
 	dino_rm_1,  dino_rm_2,  dino_rm_4,  dino_rm_8,
 	dino_wm_1,  dino_wm_2,  dino_wm_4,  dino_wm_8,
 	dino_sm_1,  dino_sm_2,  dino_sm_4,  dino_sm_8,
@@ -1654,7 +1760,8 @@ dinoattach(device_t parent, device_t sel
 		return;
 	}
 
-	sc->sc_regs = r = (volatile struct dino_regs *)sc->sc_bh;
+	sc->sc_regs = r = (volatile struct dino_regs *)sc->sc_bh;	
+
 #ifdef trust_the_firmware_to_proper_initialize_everything
 	r->io_addr_en = 0;
 	r->io_control = 0x80;

Index: src/sys/arch/hppa/dev/elroy.c
diff -u src/sys/arch/hppa/dev/elroy.c:1.6 src/sys/arch/hppa/dev/elroy.c:1.6.4.1
--- src/sys/arch/hppa/dev/elroy.c:1.6	Thu Sep 29 06:39:58 2022
+++ src/sys/arch/hppa/dev/elroy.c	Sat Feb 17 16:02:22 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: elroy.c,v 1.6 2022/09/29 06:39:58 skrll Exp $	*/
+/*	$NetBSD: elroy.c,v 1.6.4.1 2024/02/17 16:02:22 martin Exp $	*/
 
 /*	$OpenBSD: elroy.c,v 1.5 2009/03/30 21:24:57 kettenis Exp $	*/
 
@@ -82,10 +82,16 @@ uint8_t elroy_r1(void *, bus_space_handl
 uint16_t elroy_r2(void *, bus_space_handle_t, bus_size_t);
 uint32_t elroy_r4(void *, bus_space_handle_t, bus_size_t);
 uint64_t elroy_r8(void *, bus_space_handle_t, bus_size_t);
+uint16_t elroy_rs2(void *, bus_space_handle_t, bus_size_t);
+uint32_t elroy_rs4(void *, bus_space_handle_t, bus_size_t);
+uint64_t elroy_rs8(void *, bus_space_handle_t, bus_size_t);
 void elroy_w1(void *, bus_space_handle_t, bus_size_t, uint8_t);
 void elroy_w2(void *, bus_space_handle_t, bus_size_t, uint16_t);
 void elroy_w4(void *, bus_space_handle_t, bus_size_t, uint32_t);
 void elroy_w8(void *, bus_space_handle_t, bus_size_t, uint64_t);
+void elroy_ws2(void *, bus_space_handle_t, bus_size_t, uint16_t);
+void elroy_ws4(void *, bus_space_handle_t, bus_size_t, uint32_t);
+void elroy_ws8(void *, bus_space_handle_t, bus_size_t, uint64_t);
 
 void elroy_rm_1(void *, bus_space_handle_t, bus_size_t, uint8_t *,
     bus_size_t);
@@ -535,6 +541,36 @@ elroy_r8(void *v, bus_space_handle_t h, 
 	return (le64toh(data));
 }
 
+uint16_t
+elroy_rs2(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	volatile uint16_t *p;
+
+	h += o;
+	p = (volatile uint16_t *)h;
+	return (*p);
+}
+
+uint32_t
+elroy_rs4(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	uint32_t data;
+
+	h += o;
+	data = *(volatile uint32_t *)h;
+	return data;
+}
+
+uint64_t
+elroy_rs8(void *v, bus_space_handle_t h, bus_size_t o)
+{
+	uint64_t data;
+
+	h += o;
+	data = *(volatile uint64_t *)h;
+	return data;
+}
+
 void
 elroy_w1(void *v, bus_space_handle_t h, bus_size_t o, uint8_t vv)
 {
@@ -567,6 +603,29 @@ elroy_w8(void *v, bus_space_handle_t h, 
 	*(volatile uint64_t *)h = htole64(vv);
 }
 
+void
+elroy_ws2(void *v, bus_space_handle_t h, bus_size_t o, uint16_t vv)
+{
+	volatile uint16_t *p;
+
+	h += o;
+	p = (volatile uint16_t *)h;
+	*p = vv;
+}
+
+void
+elroy_ws4(void *v, bus_space_handle_t h, bus_size_t o, uint32_t vv)
+{
+	h += o;
+	*(volatile uint32_t *)h = vv;
+}
+
+void
+elroy_ws8(void *v, bus_space_handle_t h, bus_size_t o, uint64_t vv)
+{
+	h += o;
+	*(volatile uint64_t *)h = vv;
+}
 
 void
 elroy_rm_1(void *v, bus_space_handle_t h, bus_size_t o, uint8_t *a, bus_size_t c)
@@ -1047,7 +1106,9 @@ const struct hppa_bus_space_tag elroy_io
 	NULL, elroy_unmap, elroy_subregion, NULL, elroy_free,
 	elroy_barrier, elroy_vaddr, elroy_mmap,
 	elroy_r1,    elroy_r2,    elroy_r4,    elroy_r8,
+	             elroy_rs2,   elroy_rs4,   elroy_rs8,
 	elroy_w1,    elroy_w2,    elroy_w4,    elroy_w8,
+	             elroy_ws2,   elroy_ws4,   elroy_ws8,
 	elroy_rm_1,  elroy_rm_2,  elroy_rm_4,  elroy_rm_8,
 	elroy_wm_1,  elroy_wm_2,  elroy_wm_4,  elroy_wm_8,
 	elroy_sm_1,  elroy_sm_2,  elroy_sm_4,  elroy_sm_8,

Index: src/sys/arch/hppa/hppa/mainbus.c
diff -u src/sys/arch/hppa/hppa/mainbus.c:1.11 src/sys/arch/hppa/hppa/mainbus.c:1.11.2.1
--- src/sys/arch/hppa/hppa/mainbus.c:1.11	Tue Oct 11 22:03:37 2022
+++ src/sys/arch/hppa/hppa/mainbus.c	Sat Feb 17 16:02:22 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: mainbus.c,v 1.11 2022/10/11 22:03:37 andvar Exp $	*/
+/*	$NetBSD: mainbus.c,v 1.11.2.1 2024/02/17 16:02:22 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.11 2022/10/11 22:03:37 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.11.2.1 2024/02/17 16:02:22 martin Exp $");
 
 #include "locators.h"
 #include "power.h"
@@ -714,7 +714,9 @@ const struct hppa_bus_space_tag hppa_bus
 	mbus_map, mbus_unmap, mbus_subregion, mbus_alloc, mbus_free,
 	mbus_barrier, mbus_vaddr, mbus_mmap,
 	mbus_r1,    mbus_r2,   mbus_r4,   mbus_r8,
+	            mbus_r2,   mbus_r4,   mbus_r8,
 	mbus_w1,    mbus_w2,   mbus_w4,   mbus_w8,
+	            mbus_w2,   mbus_w4,   mbus_w8,
 	mbus_rm_1,  mbus_rm_2, mbus_rm_4, mbus_rm_8,
 	mbus_wm_1,  mbus_wm_2, mbus_wm_4, mbus_wm_8,
 	mbus_sm_1,  mbus_sm_2, mbus_sm_4, mbus_sm_8,

Index: src/sys/arch/hppa/include/bus_defs.h
diff -u src/sys/arch/hppa/include/bus_defs.h:1.2 src/sys/arch/hppa/include/bus_defs.h:1.2.26.1
--- src/sys/arch/hppa/include/bus_defs.h:1.2	Mon Sep 23 16:17:56 2019
+++ src/sys/arch/hppa/include/bus_defs.h	Sat Feb 17 16:02:23 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_defs.h,v 1.2 2019/09/23 16:17:56 skrll Exp $	*/
+/*	$NetBSD: bus_defs.h,v 1.2.26.1 2024/02/17 16:02:23 martin Exp $	*/
 
 /*	$OpenBSD: bus.h,v 1.13 2001/07/30 14:15:59 art Exp $	*/
 
@@ -73,11 +73,19 @@ struct hppa_bus_space_tag {
 	uint32_t (*hbt_r4)(void *, bus_space_handle_t, bus_size_t);
 	uint64_t (*hbt_r8)(void *, bus_space_handle_t, bus_size_t);
 
+	uint16_t (*hbt_rs2)(void *, bus_space_handle_t, bus_size_t);
+	uint32_t (*hbt_rs4)(void *, bus_space_handle_t, bus_size_t);
+	uint64_t (*hbt_rs8)(void *, bus_space_handle_t, bus_size_t);
+
 	void (*hbt_w1)(void *, bus_space_handle_t, bus_size_t, uint8_t);
 	void (*hbt_w2)(void *, bus_space_handle_t, bus_size_t, uint16_t);
 	void (*hbt_w4)(void *, bus_space_handle_t, bus_size_t, uint32_t);
 	void (*hbt_w8)(void *, bus_space_handle_t, bus_size_t, uint64_t);
 
+	void (*hbt_ws2)(void *, bus_space_handle_t, bus_size_t, uint16_t);
+	void (*hbt_ws4)(void *, bus_space_handle_t, bus_size_t, uint32_t);
+	void (*hbt_ws8)(void *, bus_space_handle_t, bus_size_t, uint64_t);
+
 	void (*hbt_rm_1)(void *v, bus_space_handle_t h,
 			      bus_size_t o, uint8_t *a, bus_size_t c);
 	void (*hbt_rm_2)(void *v, bus_space_handle_t h,

Index: src/sys/arch/hppa/include/bus_funcs.h
diff -u src/sys/arch/hppa/include/bus_funcs.h:1.1 src/sys/arch/hppa/include/bus_funcs.h:1.1.66.1
--- src/sys/arch/hppa/include/bus_funcs.h:1.1	Mon Feb 24 07:23:43 2014
+++ src/sys/arch/hppa/include/bus_funcs.h	Sat Feb 17 16:02:22 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_funcs.h,v 1.1 2014/02/24 07:23:43 skrll Exp $	*/
+/*	$NetBSD: bus_funcs.h,v 1.1.66.1 2024/02/17 16:02:22 martin Exp $	*/
 
 /*	$OpenBSD: bus.h,v 1.13 2001/07/30 14:15:59 art Exp $	*/
 
@@ -56,19 +56,20 @@ extern const struct hppa_bus_space_tag h
 #define	bus_space_read_4(t,h,o) (((t)->hbt_r4)((t)->hbt_cookie,(h),(o)))
 #define	bus_space_read_8(t,h,o) (((t)->hbt_r8)((t)->hbt_cookie,(h),(o)))
 
+#define	bus_space_read_stream_1(t,h,o) (bus_space_read_1(t,h,o))
+#define	bus_space_read_stream_2(t,h,o) (((t)->hbt_rs2)((t)->hbt_cookie,(h),(o)))
+#define	bus_space_read_stream_4(t,h,o) (((t)->hbt_rs4)((t)->hbt_cookie,(h),(o)))
+#define	bus_space_read_stream_8(t,h,o) (((t)->hbt_rs8)((t)->hbt_cookie,(h),(o)))
+
 #define	bus_space_write_1(t,h,o,v) (((t)->hbt_w1)((t)->hbt_cookie,(h),(o),(v)))
 #define	bus_space_write_2(t,h,o,v) (((t)->hbt_w2)((t)->hbt_cookie,(h),(o),(v)))
 #define	bus_space_write_4(t,h,o,v) (((t)->hbt_w4)((t)->hbt_cookie,(h),(o),(v)))
 #define	bus_space_write_8(t,h,o,v) (((t)->hbt_w8)((t)->hbt_cookie,(h),(o),(v)))
 
-/* XXX fredette */
-#define	bus_space_read_stream_2	bus_space_read_2
-#define	bus_space_read_stream_4	bus_space_read_4
-#define	bus_space_read_stream_8	bus_space_read_8
-
-#define	bus_space_write_stream_2	bus_space_write_2
-#define	bus_space_write_stream_4	bus_space_write_4
-#define	bus_space_write_stream_8	bus_space_write_8
+#define	bus_space_write_stream_1(t,h,o,v) (bus_space_write_1(t,h,o,v))
+#define	bus_space_write_stream_2(t,h,o,v) (((t)->hbt_ws2)((t)->hbt_cookie,(h),(o),(v)))
+#define	bus_space_write_stream_4(t,h,o,v) (((t)->hbt_ws4)((t)->hbt_cookie,(h),(o),(v)))
+#define	bus_space_write_stream_8(t,h,o,v) (((t)->hbt_ws8)((t)->hbt_cookie,(h),(o),(v)))
 
 #define	bus_space_read_multi_1(t,h,o,a,c) \
 	(((t)->hbt_rm_1)((t)->hbt_cookie, (h), (o), (a), (c)))

Reply via email to