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 InvalidateCache = 3,
12}
13
14pub unsafe fn erase(start_addr: u32, len: u32) {
15 syscall!(
16 SyscallNumber::Flash,
17 in FlashSyscall::Erase,
18 in start_addr,
19 in len,
20 );
21}
22
23pub unsafe fn program(start_addr: u32, data: &[u8]) {
24 syscall!(
25 SyscallNumber::Flash,
26 in FlashSyscall::Program,
27 in start_addr,
28 in data.len(),
29 in data.as_ptr(),
30 );
31}
32
33pub unsafe fn erase_and_program(start_addr: u32, data: &[u8]) {
34 syscall!(
35 SyscallNumber::Flash,
36 in FlashSyscall::EraseAndProgram,
37 in start_addr,
38 in data.len(),
39 in data.as_ptr(),
40 );
41}
42
43pub unsafe fn invalidate_cache() {
44 syscall!(
45 SyscallNumber::Flash,
46 in FlashSyscall::InvalidateCache,
47 );
48}