ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_rmac_regs.h
Go to the documentation of this file.
1
45
46#pragma once
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52#include <stddef.h>
53#include <stdint.h>
54
55#include "ra8_attributes.h"
56#include "ra8_ether_regs.h"
57
71
81typedef enum : uint8_t {
84
97
125
152
161typedef enum : uint16_t {
221
250typedef enum : uint32_t {
251 /* Low-half (hash / class enable) raw bits -- bits [10:0]. */
263 /* High-half (perfect-match enable) raw bits -- bits [26:16]. */
267 /*
268 * FSP-canonical paired class enables. These are what drivers /
269 * board-init code should normally set in ``ra8_rmac_config_t::rx_filter``.
270 * Each constant ORs the low-half (hash) bit with its high-half
271 * (perfect-match) twin so the MAC's two-stage filter actually accepts
272 * the frame class on silicon. Reference: FSP r_rmac.c
273 * rmac_configure_reception_filter.
274 */
285
304typedef enum : uint8_t {
308
321
330
349
358
368
373typedef enum : uint8_t {
376
381typedef enum : uint8_t {
384
415
433
438typedef enum : uint32_t {
444
455typedef enum : uint32_t {
456 k_ra8_rmac_mpsm_psme = (1UL << 0),
458
463typedef enum : uint32_t {
468
473typedef enum : uint32_t {
475 k_ra8_rmac_mtffc_fcm = (1UL << 1),
477
482typedef enum : uint32_t {
483 k_ra8_rmac_mrgc_rcpt = (1UL << 0),
484 k_ra8_rmac_mrgc_pfrc = (1UL << 1),
486 k_ra8_rmac_mrgc_mpde = (1UL << 3),
489
494typedef enum : uint32_t {
495 k_ra8_rmac_mlbc_lbme = (1UL << 0),
497
502typedef enum : uint32_t {
505
510typedef enum : uint32_t {
511 k_ra8_rmac_mpim_pls = (1UL << 0),
512 k_ra8_rmac_mpim_lpia = (1UL << 1),
514
519typedef enum : uint32_t {
520 k_ra8_rmac_mlvc_pase = (1UL << 8),
521 k_ra8_rmac_mlvc_plv = (1UL << 16),
523
528typedef enum : uint32_t {
532
550
555typedef enum : uint16_t {
558
570typedef struct {
571 volatile uint32_t MPSM;
572 volatile uint32_t MPIC;
573 volatile uint32_t MPIM;
574 volatile uint32_t reserved0c;
575 volatile uint32_t MIOC;
576 volatile uint32_t reserved14[3];
577 volatile uint32_t MTFFC;
578 volatile uint32_t MTPFC;
579 volatile uint32_t MTPFC2;
580 volatile uint32_t reserved2c;
582 volatile uint32_t reserved38[6];
583 volatile uint32_t MTATC[2];
584 volatile uint32_t reserved58[2];
585 volatile uint32_t MTIM;
586 volatile uint32_t
588 volatile uint32_t MRGC;
589 volatile uint32_t MRMAC0;
590 volatile uint32_t MRMAC1;
591 volatile uint32_t MRAFC;
592 volatile uint32_t MRSCE;
593 volatile uint32_t MRSCP;
594 volatile uint32_t MRSCC;
595 volatile uint32_t MRFSCE;
596 volatile uint32_t MRFSCP;
597 volatile uint32_t MTRC;
598 volatile uint32_t reserveda8;
599 volatile uint32_t MRPFM;
600 volatile uint32_t
603 volatile uint32_t reserved140[16];
604 volatile uint32_t MLVC;
605 volatile uint32_t MEEEC;
606 volatile uint32_t MLBC;
607 volatile uint32_t reserved18c;
608 volatile uint32_t MXGMIIC;
609 volatile uint32_t MPCH;
610 volatile uint32_t reserved198;
611 volatile uint32_t MANM;
612 volatile uint32_t
614 volatile uint32_t MEIS;
615 volatile uint32_t MEIE;
616 volatile uint32_t MEID;
617 volatile uint32_t reserved20c;
618 volatile uint32_t MMIS0;
619 volatile uint32_t MMIE0;
620 volatile uint32_t MMID0;
621 volatile uint32_t reserved21c;
622 volatile uint32_t MMIS1;
623 volatile uint32_t MMIE1;
624 volatile uint32_t MMID1;
625 volatile uint32_t reserved22c;
626 volatile uint32_t MMIS2;
627 volatile uint32_t MMIE2;
628 volatile uint32_t MMID2;
629 volatile uint32_t
631 volatile uint32_t MMPFTCT;
632 volatile uint32_t MAPFTCT;
633 volatile uint32_t MPFRCT;
634 volatile uint32_t MFCICT;
635 volatile uint32_t MEEECT;
636 volatile uint32_t reserved314[3];
638 volatile uint32_t reserved328[2];
640 volatile uint32_t reserved338[2];
641 volatile uint32_t MPCFRCT[k_ra8_rmac_pfc_rx_count];
642 volatile uint32_t MROVFC;
643 volatile uint32_t MRHCRCEC;
644 volatile uint32_t
646 volatile uint32_t MRGFCE;
647 volatile uint32_t MRGFCP;
648 volatile uint32_t MRBFC;
649 volatile uint32_t MRMFC;
650 volatile uint32_t MRUFC;
651 volatile uint32_t MRPEFC;
652 volatile uint32_t MRNEFC;
653 volatile uint32_t MRFMEFC;
654 volatile uint32_t MRFFMEFC;
655 volatile uint32_t MRCFCEFC;
656 volatile uint32_t MRFCEFC;
657 volatile uint32_t MRRCFEFC;
658 volatile uint32_t MRFC;
659 volatile uint32_t MRGUEFC;
660 volatile uint32_t MRBUEFC;
661 volatile uint32_t MRGOEFC;
662 volatile uint32_t MRBOEFC;
663 volatile uint32_t MRXBCEU;
664 volatile uint32_t MRXBCEL;
665 volatile uint32_t MRXBCPU;
666 volatile uint32_t MRXBCPL;
667 volatile uint32_t
669 volatile uint32_t MTGFCE;
670 volatile uint32_t MTGFCP;
671 volatile uint32_t MTBFC;
672 volatile uint32_t MTMFC;
673 volatile uint32_t MTUFC;
674 volatile uint32_t MTEFC;
675 volatile uint32_t MTXBCEU;
676 volatile uint32_t MTXBCEL;
677 volatile uint32_t MTXBCPU;
678 volatile uint32_t MTXBCPL;
680
689static_assert(sizeof(r_rmac_regs_t) == (size_t)k_ra8_rmac_window_bytes,
690 "r_rmac_regs_t must match FSP R_RMAC0_Type size 0x530");
691
702static_assert(offsetof(r_rmac_regs_t, MPSM) == (size_t)k_ra8_rmac_off_mpsm, "MPSM offset");
703static_assert(offsetof(r_rmac_regs_t, MPIC) == (size_t)k_ra8_rmac_off_mpic, "MPIC offset");
704static_assert(offsetof(r_rmac_regs_t, MPIM) == (size_t)k_ra8_rmac_off_mpim, "MPIM offset");
705static_assert(offsetof(r_rmac_regs_t, MIOC) == (size_t)k_ra8_rmac_off_mioc, "MIOC offset");
706static_assert(offsetof(r_rmac_regs_t, MTFFC) == (size_t)k_ra8_rmac_off_mtffc, "MTFFC offset");
707static_assert(offsetof(r_rmac_regs_t, MTPFC) == (size_t)k_ra8_rmac_off_mtpfc, "MTPFC offset");
708static_assert(offsetof(r_rmac_regs_t, MTPFC2) == (size_t)k_ra8_rmac_off_mtpfc2, "MTPFC2 offset");
709static_assert(offsetof(r_rmac_regs_t, MTPFC3) == (size_t)k_ra8_rmac_off_mtpfc30, "MTPFC3 offset");
710static_assert(offsetof(r_rmac_regs_t, MTATC) == (size_t)k_ra8_rmac_off_mtatc0, "MTATC offset");
711static_assert(offsetof(r_rmac_regs_t, MTIM) == (size_t)k_ra8_rmac_off_mtim, "MTIM offset");
712static_assert(offsetof(r_rmac_regs_t, MRGC) == (size_t)k_ra8_rmac_off_mrgc, "MRGC offset");
713static_assert(offsetof(r_rmac_regs_t, MRMAC0) == (size_t)k_ra8_rmac_off_mrmac0, "MRMAC0 offset");
714static_assert(offsetof(r_rmac_regs_t, MRMAC1) == (size_t)k_ra8_rmac_off_mrmac1, "MRMAC1 offset");
715static_assert(offsetof(r_rmac_regs_t, MRAFC) == (size_t)k_ra8_rmac_off_mrafc, "MRAFC offset");
716static_assert(offsetof(r_rmac_regs_t, MRSCE) == (size_t)k_ra8_rmac_off_mrsce, "MRSCE offset");
717static_assert(offsetof(r_rmac_regs_t, MRSCP) == (size_t)k_ra8_rmac_off_mrscp, "MRSCP offset");
718static_assert(offsetof(r_rmac_regs_t, MRSCC) == (size_t)k_ra8_rmac_off_mrscc, "MRSCC offset");
719static_assert(offsetof(r_rmac_regs_t, MRFSCE) == (size_t)k_ra8_rmac_off_mrfsce, "MRFSCE offset");
720static_assert(offsetof(r_rmac_regs_t, MRFSCP) == (size_t)k_ra8_rmac_off_mrfscp, "MRFSCP offset");
721static_assert(offsetof(r_rmac_regs_t, MTRC) == (size_t)k_ra8_rmac_off_mtrc, "MTRC offset");
722static_assert(offsetof(r_rmac_regs_t, MRPFM) == (size_t)k_ra8_rmac_off_mrpfm, "MRPFM offset");
723static_assert(offsetof(r_rmac_regs_t, MPFC) == (size_t)k_ra8_rmac_off_mpfc0, "MPFC offset");
724static_assert(offsetof(r_rmac_regs_t, MLVC) == (size_t)k_ra8_rmac_off_mlvc, "MLVC offset");
725static_assert(offsetof(r_rmac_regs_t, MEEEC) == (size_t)k_ra8_rmac_off_meeec, "MEEEC offset");
726static_assert(offsetof(r_rmac_regs_t, MLBC) == (size_t)k_ra8_rmac_off_mlbc, "MLBC offset");
727static_assert(offsetof(r_rmac_regs_t, MXGMIIC) == (size_t)k_ra8_rmac_off_mxgmiic, "MXGMIIC offset");
728static_assert(offsetof(r_rmac_regs_t, MPCH) == (size_t)k_ra8_rmac_off_mpch, "MPCH offset");
729static_assert(offsetof(r_rmac_regs_t, MANM) == (size_t)k_ra8_rmac_off_manm, "MANM offset");
730static_assert(offsetof(r_rmac_regs_t, MEIS) == (size_t)k_ra8_rmac_off_meis, "MEIS offset");
731static_assert(offsetof(r_rmac_regs_t, MEIE) == (size_t)k_ra8_rmac_off_meie, "MEIE offset");
732static_assert(offsetof(r_rmac_regs_t, MEID) == (size_t)k_ra8_rmac_off_meid, "MEID offset");
733static_assert(offsetof(r_rmac_regs_t, MMIS0) == (size_t)k_ra8_rmac_off_mmis0, "MMIS0 offset");
734static_assert(offsetof(r_rmac_regs_t, MMIE0) == (size_t)k_ra8_rmac_off_mmie0, "MMIE0 offset");
735static_assert(offsetof(r_rmac_regs_t, MMID0) == (size_t)k_ra8_rmac_off_mmid0, "MMID0 offset");
736static_assert(offsetof(r_rmac_regs_t, MMIS1) == (size_t)k_ra8_rmac_off_mmis1, "MMIS1 offset");
737static_assert(offsetof(r_rmac_regs_t, MMIE1) == (size_t)k_ra8_rmac_off_mmie1, "MMIE1 offset");
738static_assert(offsetof(r_rmac_regs_t, MMID1) == (size_t)k_ra8_rmac_off_mmid1, "MMID1 offset");
739static_assert(offsetof(r_rmac_regs_t, MMIS2) == (size_t)k_ra8_rmac_off_mmis2, "MMIS2 offset");
740static_assert(offsetof(r_rmac_regs_t, MMIE2) == (size_t)k_ra8_rmac_off_mmie2, "MMIE2 offset");
741static_assert(offsetof(r_rmac_regs_t, MMID2) == (size_t)k_ra8_rmac_off_mmid2, "MMID2 offset");
742static_assert(offsetof(r_rmac_regs_t, MMPFTCT) == (size_t)k_ra8_rmac_off_mmpftct, "MMPFTCT offset");
743static_assert(offsetof(r_rmac_regs_t, MAPFTCT) == (size_t)k_ra8_rmac_off_mapftct, "MAPFTCT offset");
744static_assert(offsetof(r_rmac_regs_t, MPFRCT) == (size_t)k_ra8_rmac_off_mpfrct, "MPFRCT offset");
745static_assert(offsetof(r_rmac_regs_t, MFCICT) == (size_t)k_ra8_rmac_off_mfcict, "MFCICT offset");
746static_assert(offsetof(r_rmac_regs_t, MEEECT) == (size_t)k_ra8_rmac_off_meeect, "MEEECT offset");
747static_assert(offsetof(r_rmac_regs_t, MMPCFTCT) == (size_t)k_ra8_rmac_off_mmpcftct0,
748 "MMPCFTCT offset");
749static_assert(offsetof(r_rmac_regs_t, MAPCFTCT) == (size_t)k_ra8_rmac_off_mapcftct0,
750 "MAPCFTCT offset");
751static_assert(offsetof(r_rmac_regs_t, MPCFRCT) == (size_t)k_ra8_rmac_off_mpcfrct0,
752 "MPCFRCT offset");
753static_assert(offsetof(r_rmac_regs_t, MROVFC) == (size_t)k_ra8_rmac_off_mrovfc, "MROVFC offset");
754static_assert(offsetof(r_rmac_regs_t, MRHCRCEC) == (size_t)k_ra8_rmac_off_mrhcrcec,
755 "MRHCRCEC offset");
756static_assert(offsetof(r_rmac_regs_t, MRGFCE) == (size_t)k_ra8_rmac_off_mrgfce, "MRGFCE offset");
757static_assert(offsetof(r_rmac_regs_t, MRGFCP) == (size_t)k_ra8_rmac_off_mrgfcp, "MRGFCP offset");
758static_assert(offsetof(r_rmac_regs_t, MTGFCE) == (size_t)k_ra8_rmac_off_mtgfce, "MTGFCE offset");
759static_assert(offsetof(r_rmac_regs_t, MTGFCP) == (size_t)k_ra8_rmac_off_mtgfcp, "MTGFCP offset");
760
779static inline volatile r_rmac_regs_t* ra8_rmac(ra8_rmac_port_t port)
780{
781 uintptr_t base = k_ra8_rmac0_base_addr;
782 if (port == k_ra8_rmac_port_1) {
784 }
785 return (volatile r_rmac_regs_t*)base;
786}
787
788#ifdef __cplusplus
789}
790#endif
Annotation-attribute framework macros for ra8-firmware.
#define RA8_HW_REGISTER_ACCESS
Mark an MMIO accessor function (returns volatile register pointer).
Ethernet controller base addresses for the Renesas RA8D2.
@ k_ra8_rmac1_base_addr
RA8 rmac1 base address.
@ k_ra8_rmac0_base_addr
RA8 rmac0 base address.
ra8_rmac_mac_len_t
Length of an Ethernet MAC address in bytes.
@ k_ra8_rmac_mac_byte_count
Bytes in a unicast MAC.
ra8_rmac_pfc_group_t
PFC priority group index (MTPFC3t, t = 0..1).
@ k_ra8_rmac_pfc_group_0
Priority group 0.
@ k_ra8_rmac_pfc_group_count
RA8 rmac pfc group count.
@ k_ra8_rmac_pfc_group_1
Priority group 1.
ra8_rmac_mrafc_t
MRAFC reception address filter mode bits (HUM Ch 33.4).
@ k_ra8_rmac_mrafc_perfect_broadcast
BCENP alone.
@ k_ra8_rmac_mrafc_perfect_unicast
UCENP alone.
@ k_ra8_rmac_mrafc_multicast_src
MSAREE.
@ k_ra8_rmac_mrafc_hash_unicast
UCENE alone.
@ k_ra8_rmac_mrafc_broadcast
BCENE|BCENP.
@ k_ra8_rmac_mrafc_unicast_match
UCENE|UCENP.
@ k_ra8_rmac_mrafc_short_frame
SDSFREE.
@ k_ra8_rmac_mrafc_perfect_multicast
MCENP alone.
@ k_ra8_rmac_mrafc_bst_storm
BSTENE.
@ k_ra8_rmac_mrafc_bc_accept
BCACE.
@ k_ra8_rmac_mrafc_hash_multicast
MCENE alone.
@ k_ra8_rmac_mrafc_mc_accept
MCACE.
@ k_ra8_rmac_mrafc_hash_broadcast
BCENE alone.
@ k_ra8_rmac_mrafc_promiscuous
RA8 rmac mrafc promiscuous.
@ k_ra8_rmac_mrafc_no_srcmac_reject
NSAREE.
@ k_ra8_rmac_mrafc_mst_storm
MSTENE.
@ k_ra8_rmac_mrafc_no_destmac_reject
NDAREE.
@ k_ra8_rmac_mrafc_multicast_hash
MCENE|MCENP.
ra8_rmac_mlvc_bit_t
MLVC link-verification bits.
@ k_ra8_rmac_mlvc_plv
Perform link verification.
@ k_ra8_rmac_mlvc_pase
PHY auto-startup enable.
ra8_rmac_ptp_filter_idx_t
PTP filter table index for MPFCt (t = 0..15).
@ k_ra8_rmac_ptp_filter_count
16 filter entries total.
ra8_rmac_meis_bit_t
Per-bit names inside MEIS / MEIE / MEID (HUM Ch 33.4).
@ k_ra8_rmac_meis_tbcis
TX byte counter overflow.
@ k_ra8_rmac_meis_reoes
RX end-of-frame error.
@ k_ra8_rmac_meis_rpcres
RX PCH CRC error.
@ k_ra8_rmac_meis_cfces
Continuation fragment cnt.
@ k_ra8_rmac_meis_ffmes
Final fragment missing.
@ k_ra8_rmac_meis_fces
RX fragment-count error.
@ k_ra8_rmac_meis_bfes
RX bad-fragment error.
@ k_ra8_rmac_meis_pfrros
Pause/PFC frame RX over.
@ k_ra8_rmac_meis_ctles1
Counter overflow group 1.
@ k_ra8_rmac_meis_ffs
First-fragment status.
@ k_ra8_rmac_meis_rpoes
RX preamble error.
@ k_ra8_rmac_meis_tces
TX collision error.
@ k_ra8_rmac_meis_ties
TX interrupt error.
@ k_ra8_rmac_meis_fcds
False carrier detect.
@ k_ra8_rmac_meis_pnaes
PFC not-allowed.
@ k_ra8_rmac_meis_pres
PHY register error.
@ k_ra8_rmac_meis_rpooms
RX preamble out of margin.
@ k_ra8_rmac_meis_frces
RMAC filter rejected.
@ k_ra8_rmac_meis_ctles0
Counter overflow group 0.
@ k_ra8_rmac_meis_fues
Frame undersize error.
@ k_ra8_rmac_meis_tsls
Transmit-side link state.
@ k_ra8_rmac_meis_foes
Frame oversize error.
@ k_ra8_rmac_meis_fcmces
Frame-check mCRC error.
@ k_ra8_rmac_meis_pdes
PFC frame decode error.
ra8_rmac_mxgmiic_bit_t
MXGMIIC 10G-XGMII bits.
@ k_ra8_rmac_mxgmiic_lfs_txrfs
TX remote-fault sig.
@ k_ra8_rmac_mxgmiic_lfs_txidle
TX local-fault idle.
ra8_rmac_rsv_words_t
Reserved-word array sizes (in 32-bit words) used inside the RMAC per-port register block.
@ k_ra8_rmac_rsv_words_mrxbcpl_to_mtgfce
+0x045C..0x0504 gap.
@ k_ra8_rmac_rsv_words_mrhcrcec_to_mrgfce
+0x0368..0x0404 gap.
@ k_ra8_rmac_rsv_words_mrpfm_to_mpfc
+0x00B0..0x00FC gap.
@ k_ra8_rmac_rsv_words_mtim_to_mrgc
+0x0064..0x007C gap.
@ k_ra8_rmac_rsv_words_manm_to_meis
+0x01A0..0x01FC gap.
@ k_ra8_rmac_rsv_words_mmid2_to_mmpftct
+0x023C..0x02FC gap.
ra8_rmac_mmis0_bit_t
MMIS0 monitoring-IRQ bits (HUM Ch 33.4).
@ k_ra8_rmac_mmis0_pids
PHY ID detected.
@ k_ra8_rmac_mmis0_xlfes
10G local-fault end.
@ k_ra8_rmac_mmis0_lvss
Link verify success.
@ k_ra8_rmac_mmis0_andets
Auto-neg detected.
@ k_ra8_rmac_mmis0_xlisds
10G LI sync drop.
@ k_ra8_rmac_mmis0_xlfsds
10G LF sync drop.
@ k_ra8_rmac_mmis0_vfrs
Verify frame received.
@ k_ra8_rmac_mmis0_xrfsds
10G RF sync drop.
@ k_ra8_rmac_mmis0_plscs
PHY link-state change.
@ k_ra8_rmac_mmis0_xlfds
10G local-fault detect.
@ k_ra8_rmac_mmis0_lvfs
Link verify failure.
ra8_rmac_mtffc_bit_t
MTFFC TX-frame-format bits (HUM Ch 33.4).
@ k_ra8_rmac_mtffc_fcm
Frame-check mode (mCRC vs CRC).
@ k_ra8_rmac_mtffc_dpad
Disable padding.
ra8_rmac_meeec_bit_t
MEEEC Energy-Efficient-Ethernet bits.
@ k_ra8_rmac_meeec_lpitr
LPI transmit request.
ra8_rmac_pis_t
Physical interface selector for MPIC.PIS[2:0].
@ k_ra8_rmac_pis_mii
MII (000b) – internal xMII for 10/100 Mbps.
@ k_ra8_rmac_pis_gmii
GMII (010b) – internal xMII for 1 Gbps.
ra8_rmac_mac_byte_idx_t
Byte indices into a 6-byte MAC address (network byte order).
@ k_ra8_rmac_mac_byte_0
First byte (high octet, OUI).
@ k_ra8_rmac_mac_byte_2
RA8 rmac MAC byte 2.
@ k_ra8_rmac_mac_byte_4
RA8 rmac MAC byte 4.
@ k_ra8_rmac_mac_byte_3
RA8 rmac MAC byte 3.
@ k_ra8_rmac_mac_byte_1
RA8 rmac MAC byte 1.
@ k_ra8_rmac_mac_byte_5
Last byte (low octet).
ra8_rmac_size_t
RMAC register window total size (FSP R_RMAC0_Type).
@ k_ra8_rmac_window_bytes
Total MMIO window (FSP size).
ra8_rmac_mrgc_bit_t
MRGC RX-general-config bits (HUM Ch 33.4).
@ k_ra8_rmac_mrgc_rfcfe
Receive frame check-fail en.
@ k_ra8_rmac_mrgc_rcpt
Reception-control passthru.
@ k_ra8_rmac_mrgc_pfrc
Pause-frame RX control.
@ k_ra8_rmac_mrgc_pfrtz
Pause-frame request to zero.
@ k_ra8_rmac_mrgc_mpde
Magic-packet detect enable.
ra8_rmac_pfc_rx_idx_t
PFC RX counter index (MPCFRCTt, t = 0..7).
@ k_ra8_rmac_pfc_rx_count
8 PFC priority RX counters.
ra8_rmac_lsc_t
Link-speed selector for MPIC.LSC[5:3] (HUM Ch 33.4).
@ k_ra8_rmac_lsc_count
Sentinel.
@ k_ra8_rmac_lsc_1000mbit
1 Gbit/s.
@ k_ra8_rmac_lsc_10gbit
10 Gbit/s.
@ k_ra8_rmac_lsc_100mbit
100 Mbit/s.
@ k_ra8_rmac_lsc_10mbit
10 Mbit/s.
@ k_ra8_rmac_lsc_2500mbit
2.5 Gbit/s.
ra8_rmac_pause_mode_t
Selects PFM bit in MTPFC2 – pause vs PFC frame.
@ k_ra8_rmac_pause_mode_pfc
IEEE 802.1Qbb PFC frame.
@ k_ra8_rmac_pause_mode_802_3x
Classic IEEE 802.3x pause.
ra8_rmac_mdio_op_t
MPSM.POP[14:13] PHY MDIO operation selector.
@ k_ra8_rmac_mdio_op_c45_write
01 – C45 write.
@ k_ra8_rmac_mdio_op_c45_read
11 – C45 read.
@ k_ra8_rmac_mdio_op_c22_read
10 – C22 read.
@ k_ra8_rmac_mdio_op_c22_write
01 – C22 write.
@ k_ra8_rmac_mdio_op_c45_read_inc
10 – C45 post-incr rd.
@ k_ra8_rmac_mdio_op_c45_address
00 – C45 address.
ra8_rmac_mmis2_bit_t
MMIS2 wake-on-LAN / EEE bits.
@ k_ra8_rmac_mmis2_mpdis
Magic-packet detect.
@ k_ra8_rmac_mmis2_lpiais
LPI assert IRQ.
@ k_ra8_rmac_mmis2_lpidis
LPI de-assert IRQ.
ra8_rmac_mlbc_bit_t
MLBC loopback bits (HUM Ch 33.4).
@ k_ra8_rmac_mlbc_lbme
Loopback mode enable.
static volatile r_rmac_regs_t * ra8_rmac(ra8_rmac_port_t port)
Compile-time check that the RMAC register window matches FSP.
ra8_rmac_port_t
RMAC port index (m = 0, 1).
@ k_ra8_rmac_port_count
Number of RMAC ports.
@ k_ra8_rmac_port_1
RMAC port 1 (base 0x403C_D000).
@ k_ra8_rmac_port_0
RMAC port 0 (base 0x403C_B000).
ra8_rmac_duplex_t
Duplex selection (programmed via MPIC.PIPP / MPIC.PIP).
@ k_ra8_rmac_duplex_full
Full duplex.
@ k_ra8_rmac_duplex_half
Half duplex.
ra8_rmac_mask_t
Bit masks used across the RMAC register surface.
@ k_ra8_rmac_mask_meis_all
MEIS valid bits.
@ k_ra8_rmac_mask_mtpfc_pfrt
MTPFC.PFRT[23:16].
@ k_ra8_rmac_mask_mrgc_pfcrc
MRGC.PFCRC.
@ k_ra8_rmac_mask_all
Wildcard write.
@ k_ra8_rmac_mask_meis_rx
Sample RX-error bit.
@ k_ra8_rmac_mask_mpsm_data
MPSM.PRD[31:16].
@ k_ra8_rmac_mask_mrfsc
16-bit frame size.
@ k_ra8_rmac_mask_mpsm_phy_reg
5-bit PHY reg/dev.
@ k_ra8_rmac_mask_mpic_lsc
MPIC.LSC[5:3].
@ k_ra8_rmac_mask_mmis0_all
MMIS0 valid bits.
@ k_ra8_rmac_mask_mpic_pis
MPIC.PIS[2:0].
@ k_ra8_rmac_mask_mrmac0_mau
MRMAC0.MAU valid.
@ k_ra8_rmac_mask_mpsm_op
MPSM.POP[14:13].
@ k_ra8_rmac_mask_mmis2_all
MMIS2 valid bits.
@ k_ra8_rmac_mask_mmis1_all
MMIS1 valid bits.
@ k_ra8_rmac_mask_mpfc_val
MPFCt.PFBV octet.
@ k_ra8_rmac_mask_pfc_priority
8-bit prio bitmap.
@ k_ra8_rmac_mask_mtpfc_pt
MTPFC.PT[15:0].
@ k_ra8_rmac_mask_mpic_psmcs
MPIC.PSMCS[22:16].
@ k_ra8_rmac_mask_byte
One MAC octet.
ra8_rmac_mpim_bit_t
MPIM PHY-monitoring bits.
@ k_ra8_rmac_mpim_pls
PHY link status.
@ k_ra8_rmac_mpim_lpia
LPI active.
ra8_rmac_mpsm_bit_t
MPSM (PHY Station Management Register) control bits.
@ k_ra8_rmac_mpsm_psme
PHY Station Management Enable / busy.
ra8_rmac_offset_t
RMAC per-port register offsets (HUM Ch 33.3 Table 33.4).
@ k_ra8_rmac_off_mrmac0
RX MAC Address Cfg 0.
@ k_ra8_rmac_off_mrscp
RX Storm Cfg P-frames.
@ k_ra8_rmac_off_mtpfc31
TX PFC Cfg 3 group 1.
@ k_ra8_rmac_off_mtffc
TX Frame Format Cfg.
@ k_ra8_rmac_off_mpfc0
PTP Filter Cfg 0..15.
@ k_ra8_rmac_off_mtpfc30
TX PFC Cfg 3 group 0.
@ k_ra8_rmac_off_mtatc1
TX Auto Timestamp 1.
@ k_ra8_rmac_off_mrmac1
RX MAC Address Cfg 1.
@ k_ra8_rmac_off_mrfscp
RX Frame Size Cfg P.
@ k_ra8_rmac_off_mpcfrct0
PFC RX cnt 0..7.
@ k_ra8_rmac_off_mmis2
Monitor IRQ Status 2.
@ k_ra8_rmac_off_mmis0
Monitor IRQ Status 0.
@ k_ra8_rmac_off_mtgfcp
TX good P-frame cnt.
@ k_ra8_rmac_off_mtpfc
TX Pause/PFC Frame Cfg.
@ k_ra8_rmac_off_mmie0
Monitor IRQ Enable 0.
@ k_ra8_rmac_off_mmis1
Monitor IRQ Status 1.
@ k_ra8_rmac_off_mapcftct1
Auto PFC TX cnt 1.
@ k_ra8_rmac_off_mlbc
Loopback Configuration.
@ k_ra8_rmac_off_mrgc
RX General Configuration.
@ k_ra8_rmac_off_mpsm
PHY Station Management.
@ k_ra8_rmac_off_mpch
XGMII PCH Configuration.
@ k_ra8_rmac_off_mrhcrcec
RX header CRC err cnt.
@ k_ra8_rmac_off_mrafc
RX Address Filter Cfg.
@ k_ra8_rmac_off_mapftct
Auto pause TX cnt.
@ k_ra8_rmac_off_mmid1
Monitor IRQ Disable 1.
@ k_ra8_rmac_off_meid
Error IRQ Disable.
@ k_ra8_rmac_off_mrgfce
RX good E-frame cnt.
@ k_ra8_rmac_off_manm
Auto-Negotiation Message.
@ k_ra8_rmac_off_mmpcftct0
Manual PFC TX cnt 0.
@ k_ra8_rmac_off_mmpcftct1
Manual PFC TX cnt 1.
@ k_ra8_rmac_off_meis
Error IRQ Status.
@ k_ra8_rmac_off_mioc
I/O Configuration.
@ k_ra8_rmac_off_mmie2
Monitor IRQ Enable 2.
@ k_ra8_rmac_off_mxgmiic
XGMII Configuration.
@ k_ra8_rmac_off_mfcict
False carrier indication.
@ k_ra8_rmac_off_mmie1
Monitor IRQ Enable 1.
@ k_ra8_rmac_off_meie
Error IRQ Enable.
@ k_ra8_rmac_off_mrsce
RX Storm Cfg E-frames.
@ k_ra8_rmac_off_mtpfc2
TX Pause/PFC Cfg 2.
@ k_ra8_rmac_off_mrscc
RX Storm Counter Cfg.
@ k_ra8_rmac_off_mapcftct0
Auto PFC TX cnt 0.
@ k_ra8_rmac_off_mpic
PHY Interfaces Cfg.
@ k_ra8_rmac_off_mtrc
Timestamp RX Cfg.
@ k_ra8_rmac_off_mrpfm
RX Pause/PFC Monitoring.
@ k_ra8_rmac_off_meeect
EEE counter.
@ k_ra8_rmac_off_mrovfc
RX overflow cnt.
@ k_ra8_rmac_off_mrgfcp
RX good P-frame cnt.
@ k_ra8_rmac_off_mmid0
Monitor IRQ Disable 0.
@ k_ra8_rmac_off_meeec
Energy Efficient Ethernet.
@ k_ra8_rmac_off_mtatc0
TX Auto Timestamp 0.
@ k_ra8_rmac_off_mmpftct
Manual pause TX cnt.
@ k_ra8_rmac_off_mtim
TX Interfaces Monitoring.
@ k_ra8_rmac_off_mpim
PHY Interfaces Monitoring.
@ k_ra8_rmac_off_mmid2
Monitor IRQ Disable 2.
@ k_ra8_rmac_off_mpfrct
Pause RX cnt.
@ k_ra8_rmac_off_mrfsce
RX Frame Size Cfg E.
@ k_ra8_rmac_off_mlvc
Link Verification Cfg.
@ k_ra8_rmac_off_mtgfce
TX good E-frame cnt.
ra8_rmac_mmis1_bit_t
MMIS1 PHY-station-management completion bits.
@ k_ra8_rmac_mmis1_ppracs
PHY post-read autoinc cmpl.
@ k_ra8_rmac_mmis1_pwacs
PHY write access complete.
@ k_ra8_rmac_mmis1_paacs
PHY address access cmpl.
@ k_ra8_rmac_mmis1_pracs
PHY read access complete.
ra8_rmac_shift_t
Bit shifts used across the RMAC register surface.
@ k_ra8_rmac_shift_mpic_pis
MPIC.PIS[2:0].
@ k_ra8_rmac_shift_byte2
Third byte position.
@ k_ra8_rmac_shift_mrfsce_max
MRFSCE.EMXS[15:0].
@ k_ra8_rmac_shift_byte1
Second byte position.
@ k_ra8_rmac_shift_mpsm_pda
MPSM.PDA[7:3].
@ k_ra8_rmac_shift_mtpfc_pfrt
MTPFC.PFRT[23:16].
@ k_ra8_rmac_shift_high16
MRMAC0.MAU low half.
@ k_ra8_rmac_shift_mrfsce_min
MRFSCE.EMNS[31:16].
@ k_ra8_rmac_shift_mpfc_val
MPFCt.PFBV[15:8].
@ k_ra8_rmac_shift_mpic_psmcs
MPIC.PSMCS[22:16].
@ k_ra8_rmac_shift_byte0
First byte position.
@ k_ra8_rmac_shift_mtpfc_pt
MTPFC.PT[15:0].
@ k_ra8_rmac_shift_mpsm_prd
MPSM.PRD[31:16].
@ k_ra8_rmac_shift_mpic_lsc
MPIC.LSC[5:3].
@ k_ra8_rmac_shift_mrafc_perfect
MRAFC perfect-match filter half (MCENP etc.).
@ k_ra8_rmac_shift_mpsm_pra
MPSM.PRA[12:8].
@ k_ra8_rmac_shift_high24
MRMAC0.MAU high half.
@ k_ra8_rmac_shift_mpsm_pop
MPSM.POP[14:13].
@ k_ra8_rmac_shift_mrgc_pfcrc
MRGC.PFCRC[23:16].
@ k_ra8_rmac_shift_byte3
Fourth byte position.
Full RMAC per-port register window (HUM Ch 33.3, FSP R_RMAC0_Type).
volatile uint32_t MRFFMEFC
+0x0428 RX final-frag missing.
volatile uint32_t MRHCRCEC
+0x0364 RX header CRC err cnt.
volatile uint32_t MTEFC
+0x051C TX error frame cnt.
volatile uint32_t MRMFC
+0x0414 RX multicast cnt.
volatile uint32_t MRXBCPL
+0x0458 RX byte cnt P lower.
volatile uint32_t MMID0
+0x0218 Monitor Disable 0.
volatile uint32_t MMIE2
+0x0234 Monitor Enable 2.
volatile uint32_t MTMFC
+0x0514 TX multicast cnt.
volatile uint32_t reserved20c
+0x020C Reserved.
volatile uint32_t MXGMIIC
+0x0190 XGMII Cfg.
volatile uint32_t reserved1a0[k_ra8_rmac_rsv_words_manm_to_meis]
+0x01A0..0x01FC Reserved.
volatile uint32_t MRXBCEU
+0x044C RX byte cnt E upper.
volatile uint32_t MMIS0
+0x0210 Monitor Status 0.
volatile uint32_t reserved198
+0x0198 Reserved.
volatile uint32_t MAPFTCT
+0x0304 Auto pause TX cnt.
volatile uint32_t MTGFCP
+0x050C TX good P-frame cnt.
volatile uint32_t MRXBCPU
+0x0454 RX byte cnt P upper.
volatile uint32_t MTBFC
+0x0510 TX broadcast cnt.
volatile uint32_t MTRC
+0x00A4 Timestamp RX Cfg.
volatile uint32_t MMID2
+0x0238 Monitor Disable 2.
volatile uint32_t MMPFTCT
+0x0300 Manual pause TX cnt.
volatile uint32_t MTPFC
+0x0024 TX Pause/PFC Frame Cfg.
volatile uint32_t MTFFC
+0x0020 TX Frame Format Cfg.
volatile uint32_t MEEEC
+0x0184 EEE Configuration.
volatile uint32_t MLVC
+0x0180 Link Verification Cfg.
volatile uint32_t MRGC
+0x0080 RX General Cfg.
volatile uint32_t MEIS
+0x0200 Error IRQ Status.
volatile uint32_t MRBFC
+0x0410 RX broadcast cnt.
volatile uint32_t MRPFM
+0x00AC RX Pause/PFC Monitor.
volatile uint32_t MTIM
+0x0060 TX Interfaces Monitor.
volatile uint32_t MAPCFTCT[k_ra8_rmac_pfc_group_count]
+0x0330..0x0334
volatile uint32_t reserved21c
+0x021C Reserved.
volatile uint32_t MRPEFC
+0x041C RX PHY error cnt.
volatile uint32_t reserved45c[k_ra8_rmac_rsv_words_mrxbcpl_to_mtgfce]
+0x045C..0x0504 Reserved.
volatile uint32_t MPCFRCT[k_ra8_rmac_pfc_rx_count]
+0x0340..0x035C
volatile uint32_t MRFCEFC
+0x0430 RX fragment-cnt err.
volatile uint32_t MMIE0
+0x0214 Monitor Enable 0.
volatile uint32_t MPFC[k_ra8_rmac_ptp_filter_count]
+0x0100..0x013C
volatile uint32_t MROVFC
+0x0360 RX overflow cnt.
volatile uint32_t MEEECT
+0x0310 EEE counter.
volatile uint32_t reserved14[3]
+0x0014..0x001C Reserved.
volatile uint32_t MPIM
+0x0008 PHY Monitoring.
volatile uint32_t reserved23c[k_ra8_rmac_rsv_words_mmid2_to_mmpftct]
+0x023C..0x02FC Reserved.
volatile uint32_t MRGFCE
+0x0408 RX good E-frame cnt.
volatile uint32_t reserved58[2]
+0x0058..0x005C Reserved.
volatile uint32_t MRFSCP
+0x00A0 RX Frame Size Cfg P.
volatile uint32_t MRMAC1
+0x0088 RX MAC Address 1.
volatile uint32_t MTGFCE
+0x0508 TX good E-frame cnt.
volatile uint32_t MEID
+0x0208 Error IRQ Disable.
volatile uint32_t MRSCP
+0x0094 RX Storm Cfg P.
volatile uint32_t MPSM
+0x0000 PHY Station Mgmt.
volatile uint32_t MRSCE
+0x0090 RX Storm Cfg E.
volatile uint32_t MLBC
+0x0188 Loopback Cfg.
volatile uint32_t MRFMEFC
+0x0424 RX FCS/mCRC err cnt.
volatile uint32_t MRGFCP
+0x040C RX good P-frame cnt.
volatile uint32_t MMIS2
+0x0230 Monitor Status 2.
volatile uint32_t MMIS1
+0x0220 Monitor Status 1.
volatile uint32_t MTXBCEL
+0x0524 TX byte cnt E lower.
volatile uint32_t MTXBCPL
+0x052C TX byte cnt P lower.
volatile uint32_t MTPFC2
+0x0028 TX Pause/PFC Frame Cfg2.
volatile uint32_t MRXBCEL
+0x0450 RX byte cnt E lower.
volatile uint32_t reserved314[3]
+0x0314..0x031C Reserved.
volatile uint32_t MTUFC
+0x0518 TX unicast cnt.
volatile uint32_t MMPCFTCT[k_ra8_rmac_pfc_group_count]
+0x0320..0x0324
volatile uint32_t reserved38[6]
+0x0038..0x004C Reserved.
volatile uint32_t MMID1
+0x0228 Monitor Disable 1.
volatile uint32_t MRGOEFC
+0x0444 RX good oversize cnt.
volatile uint32_t MPFRCT
+0x0308 Pause frame RX cnt.
volatile uint32_t MRUFC
+0x0418 RX unicast cnt.
volatile uint32_t reserved64[k_ra8_rmac_rsv_words_mtim_to_mrgc]
+0x0064..0x007C Reserved.
volatile uint32_t MRNEFC
+0x0420 RX nibble error cnt.
volatile uint32_t MRGUEFC
+0x043C RX good undersize cnt.
volatile uint32_t MANM
+0x019C Auto-Neg Message.
volatile uint32_t reserved18c
+0x018C Reserved.
volatile uint32_t MRAFC
+0x008C RX Address Filter Cfg.
volatile uint32_t MMIE1
+0x0224 Monitor Enable 1.
volatile uint32_t MRMAC0
+0x0084 RX MAC Address 0.
volatile uint32_t MFCICT
+0x030C False carrier indication
volatile uint32_t MRBOEFC
+0x0448 RX bad oversize cnt.
volatile uint32_t MRCFCEFC
+0x042C RX C-fragment err cnt.
volatile uint32_t MTPFC3[k_ra8_rmac_pfc_group_count]
+0x0030..0x0034
volatile uint32_t MRBUEFC
+0x0440 RX bad undersize cnt.
volatile uint32_t reservedb0[k_ra8_rmac_rsv_words_mrpfm_to_mpfc]
+0x00B0..0x00FC Reserved.
volatile uint32_t MIOC
+0x0010 I/O Configuration.
volatile uint32_t reserved140[16]
+0x0140..0x017C Reserved.
volatile uint32_t MEIE
+0x0204 Error IRQ Enable.
volatile uint32_t MTXBCEU
+0x0520 TX byte cnt E upper.
volatile uint32_t MRFSCE
+0x009C RX Frame Size Cfg E.
volatile uint32_t MTATC[2]
+0x0050..0x0054 TX Auto Tstamp.
volatile uint32_t reserved0c
+0x000C Reserved.
volatile uint32_t reserved328[2]
+0x0328..0x032C Reserved.
volatile uint32_t MPIC
+0x0004 PHY Interfaces Cfg.
volatile uint32_t reserved22c
+0x022C Reserved.
volatile uint32_t MRFC
+0x0438 RX total frame cnt.
volatile uint32_t MRSCC
+0x0098 RX Storm Counter Cfg.
volatile uint32_t reserved2c
+0x002C Reserved.
volatile uint32_t MPCH
+0x0194 XGMII PCH Cfg.
volatile uint32_t reserved338[2]
+0x0338..0x033C Reserved.
volatile uint32_t reserveda8
+0x00A8 Reserved.
volatile uint32_t reserved368[k_ra8_rmac_rsv_words_mrhcrcec_to_mrgfce]
+0x0368..0x0404 Reserved.
volatile uint32_t MRRCFEFC
+0x0434 RX filter-rejected cnt.
volatile uint32_t MTXBCPU
+0x0528 TX byte cnt P upper.