From 0a05fe923ee2f461b16912dccba5c620362a4976 Mon Sep 17 00:00:00 2001 From: logicog Date: Fri, 22 Aug 2025 07:15:49 +0200 Subject: [PATCH] Add port isolation methods --- rtl837x_port.c | 17 +++++++++++++++++ rtl837x_regs.h | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/rtl837x_port.c b/rtl837x_port.c index 5401952..beebc9d 100644 --- a/rtl837x_port.c +++ b/rtl837x_port.c @@ -435,3 +435,20 @@ void port_stats_print(void) __banked print_string("\n"); } } + + +void port_isolate(register uint8_t port, __xdata uint16_t pmask) +{ + if (port <= maxPort) + REG_SET(RTL837X_PORT_ISOLATION_BASE + (port << 2), pmask); +} + + +uint16_t port_isolation_get(register uint8_t port) +{ + if (port > maxPort) + return 0; + + reg_read_m(RTL837X_PORT_ISOLATION_BASE + (port << 2)); + return ((uint16_t)sfr_data[2]) << 8 | sfr_data[3]; +} diff --git a/rtl837x_regs.h b/rtl837x_regs.h index 29cdd1c..57f4ce0 100644 --- a/rtl837x_regs.h +++ b/rtl837x_regs.h @@ -121,6 +121,12 @@ #define RTL837x_TRUNK_CTRL_A 0x4f38 #define RTL837x_TRUNK_CTRL_B 0x4f3c +/* + * Port isolation + */ +#define RTL837X_PORT_ISOLATION_BASE 0x50c0 + + #ifdef REGDBG #define REG_SET(r, v) SFR_DATA_24 = ((v) >> 24) & 0xff; \