diff --git a/loader/Cargo.toml b/loader/Cargo.toml index 78d807adf..0464dcaa6 100644 --- a/loader/Cargo.toml +++ b/loader/Cargo.toml @@ -94,5 +94,6 @@ quantum-timer-test = ["pio", "pio-proc"] spim-test = [] spi-alt-channel = [] irq-test = [] +usb-test = [] resume = [] # suspend/resume pathway code -default = ["board-bringup", "irq-test"] +default = ["board-bringup", "usb-test"] diff --git a/loader/src/platform/cramium.rs b/loader/src/platform/cramium.rs index 99a38c6b5..4276d31fb 100644 --- a/loader/src/platform/cramium.rs +++ b/loader/src/platform/cramium.rs @@ -4,3 +4,5 @@ pub use cramium::*; pub mod swap; #[cfg(feature = "swap")] pub use swap::*; +#[cfg(feature = "usb-test")] +pub mod usb_test; diff --git a/loader/src/platform/cramium/cramium.rs b/loader/src/platform/cramium/cramium.rs index ac0e28b26..4a7a0ad13 100644 --- a/loader/src/platform/cramium/cramium.rs +++ b/loader/src/platform/cramium/cramium.rs @@ -634,6 +634,11 @@ pub fn early_init() { } } + #[cfg(feature = "usb-test")] + { + crate::platform::usb_test::usb_test(); + } + udma_uart.write("Press any key to continue...".as_bytes()); getc(); crate::println!("\n\rBooting!\n\r"); diff --git a/loader/src/platform/cramium/link-soc.x b/loader/src/platform/cramium/link-soc.x index 91f1a1b42..2514ff015 100644 --- a/loader/src/platform/cramium/link-soc.x +++ b/loader/src/platform/cramium/link-soc.x @@ -86,12 +86,12 @@ SECTIONS . = ALIGN(4); _edata = .; } > REGION_DATA AT > REGION_RODATA - +/* .fonts : ALIGN(65536) { KEEP(*(.fontdata)); } > FONTS - +*/ .bss (NOLOAD) : { _sbss = .; diff --git a/loader/src/platform/cramium/usb_test.rs b/loader/src/platform/cramium/usb_test.rs new file mode 100644 index 000000000..69f014626 --- /dev/null +++ b/loader/src/platform/cramium/usb_test.rs @@ -0,0 +1,29 @@ +use corigine_usb::CORIGINE_USB_BASE; + +pub fn usb_test() { + let mut csr = utralib::CSR::new(CORIGINE_USB_BASE as *mut u32); + + crate::println!("devcap: {:x}", csr.r(corigine_usb::DEVCAP)); + crate::println!("max speed: {:x}", csr.rf(corigine_usb::DEVCONFIG_MAX_SPEED)); + crate::println!("usb3 disable: {:x}", csr.rf(corigine_usb::DEVCONFIG_USB3_DISABLE_COUNT)); +} + +#[allow(dead_code)] +pub mod corigine_usb { + use utralib::{Field, Register}; + + pub const DEVCAP: Register = Register::new(0, 0xffffffff); + pub const DEVCAP_VESION: Field = Field::new(8, 0, DEVCAP); + pub const DEVCAP_EP_IN: Field = Field::new(4, 8, DEVCAP); + pub const DEVCAP_EP_OUT: Field = Field::new(4, 12, DEVCAP); + pub const DEVCAP_MAX_INTS: Field = Field::new(10, 16, DEVCAP); + pub const DEVCAP_GEN1: Field = Field::new(1, 27, DEVCAP); + pub const DEVCAP_GEN2: Field = Field::new(1, 28, DEVCAP); + pub const DEVCAP_ISOCH: Field = Field::new(1, 29, DEVCAP); + + pub const DEVCONFIG: Register = Register::new(0x10 / 4, 0xFF); + pub const DEVCONFIG_MAX_SPEED: Field = Field::new(4, 0, DEVCONFIG); + pub const DEVCONFIG_USB3_DISABLE_COUNT: Field = Field::new(4, 4, DEVCONFIG); + + pub const CORIGINE_USB_BASE: usize = 0x5020_2400; +}