firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
1use crate::syscall;
2use crate::syscall::SyscallNumber;
3
4#[repr(usize)]
5#[derive(Copy, Clone, Debug, Eq, PartialEq, strum::FromRepr)]
6#[cfg_attr(feature = "defmt", derive(defmt::Format))]
7pub enum FlashSyscall {
8 Erase = 0,
9 Program = 1,
10 EraseAndProgram = 2,
11}
12
13pub unsafe fn erase(start_addr: u32, len: u32) {
14 syscall!(
15 SyscallNumber::Flash,
16 in FlashSyscall::Erase,
17 in start_addr,
18 in len,
19 );
20}
21
22pub unsafe fn program(start_addr: u32, data: &[u8]) {
23 syscall!(
24 SyscallNumber::Flash,
25 in FlashSyscall::Program,
26 in start_addr,
27 in data.len(),
28 in data.as_ptr(),
29 );
30}
31
32pub unsafe fn erase_and_program(start_addr: u32, data: &[u8]) {
33 syscall!(
34 SyscallNumber::Flash,
35 in FlashSyscall::EraseAndProgram,
36 in start_addr,
37 in data.len(),
38 in data.as_ptr(),
39 );
40}