summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Aberg <maberg@gaisler.com>2019-02-08 16:30:15 +0100
committerDaniel Hellstrom <daniel@gaisler.com>2021-03-11 17:35:27 +0100
commit8660602ae2960aa30b3a2882c660cde8b2b46a31 (patch)
tree957ad0b068139ea95224c0a5265dc4238aa332b9
parentsparc: fix bad register alignment for 64 bit store (diff)
downloadrtems-8660602ae2960aa30b3a2882c660cde8b2b46a31.tar.bz2
leon, grspw_router: added router_port_link_div()
Allows user to set SpaceWire run clock divisor for an individual port.
-rw-r--r--bsps/include/grlib/grspw_router.h1
-rw-r--r--bsps/shared/grlib/spw/grspw_router.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/bsps/include/grlib/grspw_router.h b/bsps/include/grlib/grspw_router.h
index 2fab8d5f6c..8547f19de3 100644
--- a/bsps/include/grlib/grspw_router.h
+++ b/bsps/include/grlib/grspw_router.h
@@ -343,6 +343,7 @@ extern int router_port_enable(void *d, int port);
extern int router_port_disable(void *d, int port);
extern int router_port_link_stop(void *d, int port);
extern int router_port_link_start(void *d, int port);
+extern int router_port_link_div(void *d, int port, int rundiv);
extern int router_port_link_receive_spill(void *d, int port);
extern int router_port_link_transmit_reset(void *d, int port);
diff --git a/bsps/shared/grlib/spw/grspw_router.c b/bsps/shared/grlib/spw/grspw_router.c
index d8ba8feef3..9a31c3b49a 100644
--- a/bsps/shared/grlib/spw/grspw_router.c
+++ b/bsps/shared/grlib/spw/grspw_router.c
@@ -1431,6 +1431,11 @@ int router_port_link_start(void *d, int port)
return router_port_ctrl_rmw(d, port, NULL, PCTRL_LD | PCTRL_LS, PCTRL_LS);
}
+int router_port_link_div(void *d, int port, int rundiv)
+{
+ return router_port_ctrl_rmw(d, port, NULL, PCTRL_RD, (rundiv << PCTRL_RD_BIT) & PCTRL_RD);
+}
+
int router_port_link_receive_spill(void *d, int port)
{
struct router_priv *priv = d;