[rtems-libbsd commit] if_atsam: Add register sysctls

Sebastian Huber sebh at rtems.org
Wed Jun 1 07:53:40 UTC 2022


Module:    rtems-libbsd
Branch:    master
Commit:    eb58e8219751873d6afccbda8a0a6e1a2aec9c44
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=eb58e8219751873d6afccbda8a0a6e1a2aec9c44

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed May 25 10:28:27 2022 +0200

if_atsam: Add register sysctls

Update #4652.

---

 rtemsbsd/sys/dev/atsam/if_atsam.c | 41 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/rtemsbsd/sys/dev/atsam/if_atsam.c b/rtemsbsd/sys/dev/atsam/if_atsam.c
index 970cb67b..3c9b5de0 100644
--- a/rtemsbsd/sys/dev/atsam/if_atsam.c
+++ b/rtemsbsd/sys/dev/atsam/if_atsam.c
@@ -1151,20 +1151,57 @@ if_atsam_stats_reset(SYSCTL_HANDLER_ARGS)
 	return (0);
 }
 
+static int
+if_atsam_sysctl_reg(SYSCTL_HANDLER_ARGS)
+{
+	u_int value;
+
+	value = *(uint32_t *)arg1;
+	return (sysctl_handle_int(oidp, &value, 0, req));
+}
+
 static void
 if_atsam_add_sysctls(device_t dev)
 {
 	struct if_atsam_softc *sc = device_get_softc(dev);
+	Gmac *pHw = sc->Gmac_inst.gGmacd.pHw;
 	struct sysctl_ctx_list *ctx;
+	struct sysctl_oid_list *base;
 	struct sysctl_oid_list *statsnode;
 	struct sysctl_oid_list *hwstatsnode;
 	struct sysctl_oid_list *child;
 	struct sysctl_oid *tree;
 
 	ctx = device_get_sysctl_ctx(dev);
-	child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev));
+	base = SYSCTL_CHILDREN(device_get_sysctl_tree(dev));
+
+	tree = SYSCTL_ADD_NODE(ctx, base, OID_AUTO, "regs", CTLFLAG_RD,
+			       NULL, "if_atsam registers");
+	child = SYSCTL_CHILDREN(tree);
 
-	tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "stats", CTLFLAG_RD,
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "imr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_IMR), 0,
+	    if_atsam_sysctl_reg, "I", "IMR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "isr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_ISR), 0,
+	    if_atsam_sysctl_reg, "I", "ISR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rsr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_RSR), 0,
+	    if_atsam_sysctl_reg, "I", "RSR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tsr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_TSR), 0,
+	    if_atsam_sysctl_reg, "I", "TSR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "nsr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_NSR), 0,
+	    if_atsam_sysctl_reg, "I", "NSR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "ncfgr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_NCFGR), 0,
+	    if_atsam_sysctl_reg, "I", "NCFGR");
+	SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "ncr", CTLTYPE_UINT |
+	    CTLFLAG_RD, __DEVOLATILE(uint32_t *, &pHw->GMAC_NCR), 0,
+	    if_atsam_sysctl_reg, "I", "NCR");
+
+	tree = SYSCTL_ADD_NODE(ctx, base, OID_AUTO, "stats", CTLFLAG_RD,
 			       NULL, "if_atsam statistics");
 	statsnode = SYSCTL_CHILDREN(tree);
 



More information about the vc mailing list