diff options
author | Kornel Dulęba <kd@FreeBSD.org> | 2022-07-04 06:53:41 +0000 |
---|---|---|
committer | Kornel Dulęba <kd@FreeBSD.org> | 2022-07-04 14:22:22 +0000 |
commit | 66548259075788d2084e9da1c5df7b88f44c4b4d (patch) | |
tree | 79930811d3fd6ee957634b84252028a0f9e7e1f4 | |
parent | 9dbacce2d48abf04b4d65d2994586e1ff44b08fb (diff) | |
download | src-66548259075788d2084e9da1c5df7b88f44c4b4d.tar.gz src-66548259075788d2084e9da1c5df7b88f44c4b4d.zip |
e6000sw: Fix direct register write logic
When accessing a register directly from etherswitchcfg one must specify
a register group(e.g. registers of portN) and the register offset within
the group. The latter is passed as the 5 least significant bits.
Extract the former by dividing the register address by 32, not by 5.
Approved by: mw(mentor)
Obtained from: Semihalf
Sponsored by: Stormshield
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D35672
-rw-r--r-- | sys/dev/etherswitch/e6000sw/e6000sw.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/etherswitch/e6000sw/e6000sw.c b/sys/dev/etherswitch/e6000sw/e6000sw.c index 3c0ede5cddcd..7374fe2d74e5 100644 --- a/sys/dev/etherswitch/e6000sw/e6000sw.c +++ b/sys/dev/etherswitch/e6000sw/e6000sw.c @@ -1061,7 +1061,7 @@ e6000sw_writereg_wrapper(device_t dev, int addr_reg, int val) device_printf(dev, "Wrong register address.\n"); return (EINVAL); } - e6000sw_writereg(device_get_softc(dev), addr_reg / 5, + e6000sw_writereg(device_get_softc(dev), addr_reg / 32, addr_reg % 32, val); return (0); |