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)))