#![no_std]
#[cfg(test)]
extern crate std;
pub use embassy_net_driver_channel as ch;
pub mod board;
pub mod eth;
pub use board::BoardConfig;
pub mod clic;
pub mod systimer;
#[cfg(all(target_arch = "riscv32", feature = "p4-time-driver"))]
pub mod time_driver;
#[cfg(all(target_arch = "riscv32", feature = "p4-time-driver-irq"))]
pub mod time_driver_irq;
pub mod time_driver_irq_logic;
pub use eth::{clock, descriptors, dma, phy, pins, regs};
#[cfg(target_arch = "riscv32")]
pub use eth::{ethernet_task, wake_rx_task, wake_tx_task};
pub use eth::{
new, new_from_static_resources, Device, Duplex, Ethernet, MacError, Runner, CHANNEL_RX_COUNT,
CHANNEL_TX_COUNT, MTU,
};
pub use clock::{
configure_clock_ext_in, configure_clock_mpll_out, configure_speed_divider,
disable_emac_clock_tree,
};
pub use clock::{MpllClockOutPin, RefClockPin};
pub use descriptors::{
zeroed_rx_descriptors, zeroed_tx_descriptors, BufferTooLarge, DescriptorError, DmaBuffers,
OwnedBy, RDes, RDesRing, RxRingStats, StaticDmaResources, TDes, TDesRing, TxRingStats,
BUF_SIZE, MIN_RX_FRAME_SIZE, RX_DESC_COUNT, TX_DESC_COUNT,
};
pub mod diag {
#[cfg(target_arch = "riscv32")]
pub use crate::descriptors::{
CPU_DESC0_SNAPSHOT, TX_LAST_BUF_ADDR, TX_LAST_DESC_ADDR, TX_LAST_TDES0, TX_LAST_TDES1,
};
pub use crate::descriptors::{
RX_ERROR_FRAMES_TOTAL, RX_LARGE_FRAMES, RX_LAST_FRAME_LEN, RX_LAST_RDES0,
RX_OVERSIZED_FRAMES_TOTAL, RX_RUNT_FRAMES_TOTAL,
};
pub use crate::dma::{CACHE_INV_CALLS, CACHE_INV_TICKS, CACHE_WB_CALLS, CACHE_WB_TICKS};
#[cfg(target_arch = "riscv32")]
pub use crate::dma::{LAST_INVALIDATE_RC, LAST_WRITEBACK_RC};
pub use crate::eth::RX_DESC_STRIDE;
#[cfg(target_arch = "riscv32")]
pub use crate::eth::{
RX_ARP, RX_BUF_REQUESTED, RX_DESC_BASE, RX_DHCP_FRAMES, RX_FRAMES, RX_ICMP, RX_IPV4,
RX_LAST_DHCP_FRAME, RX_LAST_DST_MAC_HI, RX_LAST_ETHERTYPE, RX_LAST_LARGE_FRAME,
RX_LAST_LARGE_FRAME_LEN, TX_BUF_REQUESTED, TX_FRAMES, TX_LAST_DST_MAC_HI,
TX_LAST_ETHERTYPE, TX_LAST_LEN, TX_LAST_SRC_MAC_HI,
};
}
pub use dma::{Dma, DmaError, DmaInterruptStatus};
pub use phy::{
anlpar, bmcr, bmsr, mdio_read, mdio_write, Ip101, LinkState, Phy, PhyError, Speed, ANAR,
ANLPAR, BMCR, BMSR, PHYIDR1, PHYIDR2,
};
pub use pins::{
configure_rmii_pins, release_phy_reset_pin, release_waveshare_phy_reset, PhyResetPinConfig,
};