// SPDX-License-Identifier: MIT OR Apache-2.0 // // Copyright (c) 2018-2022 Andre Richter //! Top-level BSP file for the Raspberry Pi 3 and 4. pub mod console; pub mod cpu; pub mod driver; pub mod exception; pub mod memory; //-------------------------------------------------------------------------------------------------- // Global instances //-------------------------------------------------------------------------------------------------- use super::device_driver; static GPIO: device_driver::GPIO = unsafe { device_driver::GPIO::new(memory::map::mmio::GPIO_START) }; static PL011_UART: device_driver::PL011Uart = unsafe { device_driver::PL011Uart::new( memory::map::mmio::PL011_UART_START, exception::asynchronous::irq_map::PL011_UART, ) }; #[cfg(feature = "bsp_rpi3")] static INTERRUPT_CONTROLLER: device_driver::InterruptController = unsafe { device_driver::InterruptController::new( memory::map::mmio::LOCAL_INTERRUPT_CONTROLLER_START, memory::map::mmio::PERIPHERAL_INTERRUPT_CONTROLLER_START, ) }; #[cfg(feature = "bsp_rpi4")] static INTERRUPT_CONTROLLER: device_driver::GICv2 = unsafe { device_driver::GICv2::new(memory::map::mmio::GICD_START, memory::map::mmio::GICC_START) }; //-------------------------------------------------------------------------------------------------- // Public Code //-------------------------------------------------------------------------------------------------- /// Board identification. pub fn board_name() -> &'static str { #[cfg(feature = "bsp_rpi3")] { "Raspberry Pi 3" } #[cfg(feature = "bsp_rpi4")] { "Raspberry Pi 4" } }