sylveos

Toy Operating System
Log | Files | Refs

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 }