aux.zig (1357B)
1 const std = @import("std"); 2 3 const mem = @import("../mem.zig"); 4 const register = @import("../register.zig"); 5 6 pub const BASE_ADDRESS: usize = mem.BASE_ADDRESS + 0x0021_5000; 7 const AUX_IRQ: register.Register(Aux, .ReadOnly) = .init(BASE_ADDRESS + 0x00); 8 const AUX_ENABLES: register.Register(Aux, .ReadModifyWrite) = .init(BASE_ADDRESS + 0x04); 9 10 const Aux = packed struct(u32) { 11 mini_uart: bool, 12 spi_1: bool, 13 spi_2: bool, 14 _reserved_31_3: u29, 15 }; 16 17 pub fn enable_mini_uart() void { 18 var aux = AUX_ENABLES.get(); 19 aux.mini_uart = true; 20 AUX_ENABLES.set(aux); 21 } 22 pub fn disable_mini_uart() void { 23 var aux = AUX_ENABLES.get(); 24 aux.mini_uart = false; 25 AUX_ENABLES.set(aux); 26 } 27 pub fn has_irq_mini_uart() bool { 28 return AUX_IRQ.get().mini_uart; 29 } 30 31 pub fn enable_spi_1() void { 32 var aux = AUX_ENABLES.get(); 33 aux.spi_1 = true; 34 AUX_ENABLES.set(aux); 35 } 36 pub fn disable_spi_1() void { 37 var aux = AUX_ENABLES.get(); 38 aux.spi_1 = false; 39 AUX_ENABLES.set(aux); 40 } 41 pub fn has_irq_spi_1() bool { 42 return AUX_IRQ.get().spi_1; 43 } 44 45 pub fn enable_spi_2() void { 46 var aux = AUX_ENABLES.get(); 47 aux.spi_2 = true; 48 AUX_ENABLES.set(aux); 49 } 50 pub fn disable_spi_2() void { 51 var aux = AUX_ENABLES.get(); 52 aux.spi_1 = false; 53 AUX_ENABLES.set(aux); 54 } 55 pub fn has_irq_spi_2() bool { 56 return AUX_IRQ.get().spi_2; 57 }