diff --git a/build.zig b/build.zig index c9ca6c0..93fa0a0 100644 --- a/build.zig +++ b/build.zig @@ -145,11 +145,11 @@ fn addEmbeddedExecutable(builder: *std.build.Builder, name: []const u8, source: writer.print("pub const has_board = {};\n", .{has_board}) catch unreachable; if (has_board) { - writer.print("pub const board_name = \"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(backing.board.name)}) catch unreachable; + writer.print("pub const board_name = .@\"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(backing.board.name)}) catch unreachable; } - writer.print("pub const chip_name = \"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(chip.name)}) catch unreachable; - writer.print("pub const cpu_name = \"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(chip.cpu.name)}) catch unreachable; + writer.print("pub const chip_name = .@\"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(chip.name)}) catch unreachable; + writer.print("pub const cpu_name = .@\"{}\";\n", .{std.fmt.fmtSliceEscapeUpper(chip.cpu.name)}) catch unreachable; } const config_pkg = Pkg{ diff --git a/src/core/uart.zig b/src/core/uart.zig index 17a5c3c..1cf8e41 100644 --- a/src/core/uart.zig +++ b/src/core/uart.zig @@ -56,27 +56,15 @@ pub fn Uart(comptime index: usize) type { pub const Config = struct { baud_rate: u32, stop_bits: StopBits = .one, - parity: Parity = .none, - data_bits: DataBits = .@"8", + parity: ?Parity = null, + data_bits: DataBits = .eight, }; -pub const DataBits = enum { - @"5", - @"6", - @"7", - @"8", - @"9", -}; - -pub const StopBits = enum { one, two }; +// TODO: comptime verify that the enums are valid +pub const DataBits = chip.uart.DataBits; +pub const StopBits = chip.uart.StopBits; +pub const Parity = chip.uart.Parity; -pub const Parity = enum { - none, - even, - odd, - mark, - space, -}; pub const InitError = error{ UnsupportedWordSize, UnsupportedParity, diff --git a/src/modules/chips/lpc1768/lpc1768.zig b/src/modules/chips/lpc1768/lpc1768.zig index d03809e..4f39fa4 100644 --- a/src/modules/chips/lpc1768/lpc1768.zig +++ b/src/modules/chips/lpc1768/lpc1768.zig @@ -55,7 +55,7 @@ pub fn parsePin(comptime spec: []const u8) type { pub fn routePin(comptime pin: type, function: PinTarget) void { var val = pin.regs.pinsel_reg.read(); - @field(val, pin.regs.pinsel_field) = @enumToInt(function); + @field(val, pin.regs.pinsel_field) = @intToEnum(@TypeOf(@field(val, pin.regs.pinsel_field)), @enumToInt(function)); pin.regs.pinsel_reg.write(val); } @@ -83,6 +83,30 @@ pub const gpio = struct { } }; +pub const uart = struct { + const RegisterDataBitsEnum = std.meta.fieldInfo(@TypeOf(registers.UART0.LCR.*).underlying_type, .WLS).field_type; + pub const DataBits = enum(u2) { + five = @enumToInt(RegisterDataBitsEnum.@"5_BIT_CHARACTER_LENG"), + six = @enumToInt(RegisterDataBitsEnum.@"6_BIT_CHARACTER_LENG"), + seven = @enumToInt(RegisterDataBitsEnum.@"7_BIT_CHARACTER_LENG"), + eight = @enumToInt(RegisterDataBitsEnum.@"8_BIT_CHARACTER_LENG"), + }; + + const RegisterStopBitEnum = std.meta.fieldInfo(@TypeOf(registers.UART0.LCR.*).underlying_type, .SBS).field_type; + pub const StopBits = enum(u1) { + one = @enumToInt(RegisterStopBitEnum.@"1_STOP_BIT_"), + two = @enumToInt(RegisterStopBitEnum.@"2_STOP_BITS_1_5_IF_"), + }; + + const RegisterParityEnum = std.meta.fieldInfo(@TypeOf(registers.UART0.LCR.*).underlying_type, .PS).field_type; + pub const Parity = enum(u2) { + odd = @enumToInt(RegisterParityEnum.@"ODD_PARITY_NUMBER_O"), + even = @enumToInt(RegisterParityEnum.@"EVEN_PARITY_NUMBER_"), + mark = @enumToInt(RegisterParityEnum.@"FORCED_1_STICK_PARIT"), + space = @enumToInt(RegisterParityEnum.@"FORCED_0_STICK_PARIT"), + }; +}; + pub fn Uart(comptime index: usize) type { return struct { const UARTn = switch (index) { @@ -98,20 +122,20 @@ pub fn Uart(comptime index: usize) type { micro.debug.write("0"); switch (index) { 0 => { - registers.SYSCON.PCONP.modify(.{ .PCUART0 = true }); - registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART0 = 0 }); + registers.SYSCON.PCONP.modify(.{ .PCUART0 = 1 }); + registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART0 = .CCLK_DIV_4 }); }, 1 => { - registers.SYSCON.PCONP.modify(.{ .PCUART1 = true }); - registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART1 = 0 }); + registers.SYSCON.PCONP.modify(.{ .PCUART1 = 1 }); + registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART1 = .CCLK_DIV_4 }); }, 2 => { - registers.SYSCON.PCONP.modify(.{ .PCUART2 = true }); - registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART2 = 0 }); + registers.SYSCON.PCONP.modify(.{ .PCUART2 = 1 }); + registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART2 = .CCLK_DIV_4 }); }, 3 => { - registers.SYSCON.PCONP.modify(.{ .PCUART3 = true }); - registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART3 = 0 }); + registers.SYSCON.PCONP.modify(.{ .PCUART3 = 1 }); + registers.SYSCON.PCLKSEL0.modify(.{ .PCLK_UART3 = .CCLK_DIV_4 }); }, else => unreachable, } @@ -119,29 +143,17 @@ pub fn Uart(comptime index: usize) type { UARTn.LCR.write(.{ // 8N1 - .WLS = switch (config.data_bits) { - .@"5" => 0b00, - .@"6" => 0b01, - .@"7" => 0b10, - .@"8" => 0b11, - .@"9" => return error.UnsupportedWordSize, - }, - .SBS = switch (config.stop_bits) { - .one => false, - .two => true, - }, - .PE = (config.parity != .none), - .PS = switch (config.parity) { - .none, .odd => @as(u2, 0b00), - .even => 0b01, - .mark => 0b10, - .space => 0b11, - }, - .BC = false, - .DLAB = true, + .WLS = @intToEnum(std.meta.fieldInfo(@TypeOf(UARTn.LCR.*).underlying_type, .WLS).field_type, @enumToInt(config.data_bits)), + .SBS = @intToEnum(std.meta.fieldInfo(@TypeOf(UARTn.LCR.*).underlying_type, .SBS).field_type, @enumToInt(config.stop_bits)), + .PE = if (config.parity) |_| .ENABLE_PARITY_GENERA else .DISABLE_PARITY_GENER, + .PS = if (config.parity) |p| @intToEnum(std.meta.fieldInfo(@TypeOf(UARTn.LCR.*).underlying_type, .PS).field_type, @enumToInt(p)) else .ODD_PARITY_NUMBER_O, + .BC = .DISABLE_BREAK_TRANSM, + .DLAB = .ENABLE_ACCESS_TO_DIV, }); micro.debug.write("2"); - UARTn.FCR.modify(.{ .FIFOEN = false }); + + // TODO: UARTN_FIFOS_ARE_DISA is not available in all uarts + //UARTn.FCR.modify(.{ .FIFOEN = .UARTN_FIFOS_ARE_DISA }); micro.debug.writer().print("clock: {} baud: {} ", .{ micro.clock.get(), @@ -156,13 +168,16 @@ pub fn Uart(comptime index: usize) type { UARTn.DLL.write(.{ .DLLSB = @truncate(u8, regval >> 0x00) }); UARTn.DLM.write(.{ .DLMSB = @truncate(u8, regval >> 0x08) }); - UARTn.LCR.modify(.{ .DLAB = false }); + UARTn.LCR.modify(.{ .DLAB = .DISABLE_ACCESS_TO_DI }); return Self{}; } pub fn canWrite(self: Self) bool { - return UARTn.LSR.read().THRE; + return switch (UARTn.LSR.read().THRE) { + .VALID => true, + .THR_IS_EMPTY_ => false, + }; } pub fn tx(self: Self, ch: u8) void { while (!self.canWrite()) {} // Wait for Previous transmission @@ -170,7 +185,10 @@ pub fn Uart(comptime index: usize) type { } pub fn canRead(self: Self) bool { - return UARTn.LSR.read().RDR; + return switch (UARTn.LSR.read().RDR) { + .EMPTY => false, + .NOTEMPTY => true, + }; } pub fn rx(self: Self) u8 { while (!self.canRead()) {} // Wait till the data is received diff --git a/src/modules/chips/lpc1768/registers.zig b/src/modules/chips/lpc1768/registers.zig index 0b2aa99..e950a28 100644 --- a/src/modules/chips/lpc1768/registers.zig +++ b/src/modules/chips/lpc1768/registers.zig @@ -7,10 +7,17 @@ pub const WDT = extern struct { pub const Address: u32 = 0x40000000; // byte offset: 0 Watchdog mode register. This register determines the basic mode and status of the Watchdog Timer. pub const MOD = mmio(Address + 0x00000000, 32, packed struct { - WDEN: bool, // bit offset: 0 desc: Watchdog enable bit. This bit is Set Only. - WDRESET: bool, // bit offset: 1 desc: Watchdog reset enable bit. This bit is Set Only. See Table 652. - WDTOF: bool, // bit offset: 2 desc: Watchdog time-out flag. Set when the watchdog timer times out, cleared by software. - WDINT: bool, // bit offset: 3 desc: Watchdog interrupt flag. Cleared by software. + WDEN: enum(u1) { // bit offset: 0 desc: Watchdog enable bit. This bit is Set Only. + @"STOP" = 0, // desc: The watchdog timer is stopped. + @"RUN" = 1, // desc: The watchdog timer is running. + }, + WDRESET: enum(u1) { // bit offset: 1 desc: Watchdog reset enable bit. This bit is Set Only. See Table 652. + @"NORESET" = 0, // desc: A watchdog timeout will not cause a chip reset. + @"RESET" = 1, // desc: A watchdog timeout will cause a chip reset. + }, + WDTOF: u1, // bit offset: 2 desc: Watchdog time-out flag. Set when the watchdog timer times out, cleared by software. + WDINT: u1, // bit offset: 3 desc: Watchdog interrupt flag. Cleared by software. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -78,7 +85,14 @@ pub const WDT = extern struct { }); // byte offset: 16 Watchdog clock select register. pub const CLKSEL = mmio(Address + 0x00000010, 32, packed struct { - CLKSEL: u2, // bit offset: 0 desc: Selects source of WDT clock + CLKSEL: enum(u2) { // bit offset: 0 desc: Selects source of WDT clock + @"IRC" = 0, // desc: IRC + @"PCLK" = 1, // desc: Peripheral clock + @"RTCOSC" = 2, // desc: RTC oscillator + // @"RESERVED", // desc: Reserved. + _, // non-exhaustive + }, + // RESERVED: u30, // bit offset: 1 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved29: u1 = 0, reserved28: u1 = 0, reserved27: u1 = 0, @@ -108,19 +122,23 @@ pub const WDT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - LOCK: bool, // bit offset: 31 desc: If this bit is set to one writing to this register does not affect bit 0. The clock source can only be changed by first clearing this bit, then writing the new value of bit 0. + LOCK: enum(u1) { // bit offset: 31 desc: If this bit is set to one writing to this register does not affect bit 0. The clock source can only be changed by first clearing this bit, then writing the new value of bit 0. + @"UNLOCKED" = 0, // desc: This bit is set to 0 on any reset. It cannot be cleared by software. + @"LOCKED" = 1, // desc: Software can set this bit to 1 at any time. Once WDLOCK is set, the bits of this register cannot be modified. + }, }); }; pub const TIMER0 = extern struct { pub const Address: u32 = 0x40004000; // byte offset: 0 Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. pub const IR = mmio(Address + 0x00000000, 32, packed struct { - MR0INT: bool, // bit offset: 0 desc: Interrupt flag for match channel 0. - MR1INT: bool, // bit offset: 1 desc: Interrupt flag for match channel 1. - MR2INT: bool, // bit offset: 2 desc: Interrupt flag for match channel 2. - MR3INT: bool, // bit offset: 3 desc: Interrupt flag for match channel 3. - CR0INT: bool, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. - CR1INT: bool, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + MR0INT: u1, // bit offset: 0 desc: Interrupt flag for match channel 0. + MR1INT: u1, // bit offset: 1 desc: Interrupt flag for match channel 1. + MR2INT: u1, // bit offset: 2 desc: Interrupt flag for match channel 2. + MR3INT: u1, // bit offset: 3 desc: Interrupt flag for match channel 3. + CR0INT: u1, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. + CR1INT: u1, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -150,8 +168,9 @@ pub const TIMER0 = extern struct { }); // byte offset: 4 Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. pub const TCR = mmio(Address + 0x00000004, 32, packed struct { - CEN: bool, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. - CRST: bool, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + CEN: u1, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. + CRST: u1, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -197,18 +216,55 @@ pub const TIMER0 = extern struct { }); // byte offset: 20 Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. pub const MCR = mmio(Address + 0x00000014, 32, packed struct { - MR0I: bool, // bit offset: 0 desc: Interrupt on MR0 - MR0R: bool, // bit offset: 1 desc: Reset on MR0 - MR0S: bool, // bit offset: 2 desc: Stop on MR0 - MR1I: bool, // bit offset: 3 desc: Interrupt on MR1 - MR1R: bool, // bit offset: 4 desc: Reset on MR1 - MR1S: bool, // bit offset: 5 desc: Stop on MR1 - MR2I: bool, // bit offset: 6 desc: Interrupt on MR2 - MR2R: bool, // bit offset: 7 desc: Reset on MR2 - MR2S: bool, // bit offset: 8 desc: Stop on MR2. - MR3I: bool, // bit offset: 9 desc: Interrupt on MR3 - MR3R: bool, // bit offset: 10 desc: Reset on MR3 - MR3S: bool, // bit offset: 11 desc: Stop on MR3 + MR0I: enum(u1) { // bit offset: 0 desc: Interrupt on MR0 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR0 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR0R: enum(u1) { // bit offset: 1 desc: Reset on MR0 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR0 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR0S: enum(u1) { // bit offset: 2 desc: Stop on MR0 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR0 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1I: enum(u1) { // bit offset: 3 desc: Interrupt on MR1 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR1 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled. + }, + MR1R: enum(u1) { // bit offset: 4 desc: Reset on MR1 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR1 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1S: enum(u1) { // bit offset: 5 desc: Stop on MR1 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR1 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2I: enum(u1) { // bit offset: 6 desc: Interrupt on MR2 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR2 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR2R: enum(u1) { // bit offset: 7 desc: Reset on MR2 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR2 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2S: enum(u1) { // bit offset: 8 desc: Stop on MR2. + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR2 matches the TC + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3I: enum(u1) { // bit offset: 9 desc: Interrupt on MR3 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR3 matches the value in the TC. + @"THIS_INTERRUPT_IS_DI" = 0, // desc: This interrupt is disabled + }, + MR3R: enum(u1) { // bit offset: 10 desc: Reset on MR3 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR3 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3S: enum(u1) { // bit offset: 11 desc: Stop on MR3 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR3 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -248,12 +304,31 @@ pub const TIMER0 = extern struct { }); // byte offset: 40 Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. pub const CCR = mmio(Address + 0x00000028, 32, packed struct { - CAP0RE: bool, // bit offset: 0 desc: Capture on CAPn.0 rising edge - CAP0FE: bool, // bit offset: 1 desc: Capture on CAPn.0 falling edge - CAP0I: bool, // bit offset: 2 desc: Interrupt on CAPn.0 event - CAP1RE: bool, // bit offset: 3 desc: Capture on CAPn.1 rising edge - CAP1FE: bool, // bit offset: 4 desc: Capture on CAPn.1 falling edge - CAP1I: bool, // bit offset: 5 desc: Interrupt on CAPn.1 event + CAP0RE: enum(u1) { // bit offset: 0 desc: Capture on CAPn.0 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0FE: enum(u1) { // bit offset: 1 desc: Capture on CAPn.0 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0I: enum(u1) { // bit offset: 2 desc: Interrupt on CAPn.0 event + @"ENABLE" = 1, // desc: A CR0 load due to a CAPn.0 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1RE: enum(u1) { // bit offset: 3 desc: Capture on CAPn.1 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1FE: enum(u1) { // bit offset: 4 desc: Capture on CAPn.1 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1I: enum(u1) { // bit offset: 5 desc: Interrupt on CAPn.1 event + @"ENABLE" = 1, // desc: A CR1 load due to a CAPn.1 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -291,14 +366,35 @@ pub const TIMER0 = extern struct { }); // byte offset: 60 External Match Register. The EMR controls the external match pins. pub const EMR = mmio(Address + 0x0000003c, 32, packed struct { - EM0: bool, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM1: bool, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). - EM2: bool, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM3: bool, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EMC0: u2, // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. - EMC1: u2, // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. - EMC2: u2, // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. - EMC3: u2, // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + EM0: u1, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM1: u1, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). + EM2: u1, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM3: u1, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EMC0: enum(u2) { // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC1: enum(u2) { // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC2: enum(u2) { // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC3: enum(u2) { // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -322,8 +418,18 @@ pub const TIMER0 = extern struct { }); // byte offset: 112 Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. pub const CTCR = mmio(Address + 0x00000070, 32, packed struct { - CTMODE: u2, // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. - CINSEL: u2, // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + CTMODE: enum(u2) { // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. + @"TIMER_MODE_EVERY_RI" = 0, // desc: Timer Mode: every rising PCLK edge + @"RISING" = 1, // desc: Counter Mode: TC is incremented on rising edges on the CAP input selected by bits 3:2. + @"FALLING" = 2, // desc: Counter Mode: TC is incremented on falling edges on the CAP input selected by bits 3:2. + @"DUALEDGE" = 3, // desc: Counter Mode: TC is incremented on both edges on the CAP input selected by bits 3:2. + }, + CINSEL: enum(u2) { // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + @"CAPN_0_FOR_TIMERN" = 0, // desc: CAPn.0 for TIMERn + @"CAPN_1_FOR_TIMERN" = 1, // desc: CAPn.1 for TIMERn + _, // non-exhaustive + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -358,12 +464,13 @@ pub const TIMER1 = extern struct { pub const Address: u32 = 0x40008000; // byte offset: 0 Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. pub const IR = mmio(Address + 0x00000000, 32, packed struct { - MR0INT: bool, // bit offset: 0 desc: Interrupt flag for match channel 0. - MR1INT: bool, // bit offset: 1 desc: Interrupt flag for match channel 1. - MR2INT: bool, // bit offset: 2 desc: Interrupt flag for match channel 2. - MR3INT: bool, // bit offset: 3 desc: Interrupt flag for match channel 3. - CR0INT: bool, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. - CR1INT: bool, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + MR0INT: u1, // bit offset: 0 desc: Interrupt flag for match channel 0. + MR1INT: u1, // bit offset: 1 desc: Interrupt flag for match channel 1. + MR2INT: u1, // bit offset: 2 desc: Interrupt flag for match channel 2. + MR3INT: u1, // bit offset: 3 desc: Interrupt flag for match channel 3. + CR0INT: u1, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. + CR1INT: u1, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -393,8 +500,9 @@ pub const TIMER1 = extern struct { }); // byte offset: 4 Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. pub const TCR = mmio(Address + 0x00000004, 32, packed struct { - CEN: bool, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. - CRST: bool, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + CEN: u1, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. + CRST: u1, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -440,18 +548,55 @@ pub const TIMER1 = extern struct { }); // byte offset: 20 Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. pub const MCR = mmio(Address + 0x00000014, 32, packed struct { - MR0I: bool, // bit offset: 0 desc: Interrupt on MR0 - MR0R: bool, // bit offset: 1 desc: Reset on MR0 - MR0S: bool, // bit offset: 2 desc: Stop on MR0 - MR1I: bool, // bit offset: 3 desc: Interrupt on MR1 - MR1R: bool, // bit offset: 4 desc: Reset on MR1 - MR1S: bool, // bit offset: 5 desc: Stop on MR1 - MR2I: bool, // bit offset: 6 desc: Interrupt on MR2 - MR2R: bool, // bit offset: 7 desc: Reset on MR2 - MR2S: bool, // bit offset: 8 desc: Stop on MR2. - MR3I: bool, // bit offset: 9 desc: Interrupt on MR3 - MR3R: bool, // bit offset: 10 desc: Reset on MR3 - MR3S: bool, // bit offset: 11 desc: Stop on MR3 + MR0I: enum(u1) { // bit offset: 0 desc: Interrupt on MR0 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR0 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR0R: enum(u1) { // bit offset: 1 desc: Reset on MR0 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR0 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR0S: enum(u1) { // bit offset: 2 desc: Stop on MR0 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR0 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1I: enum(u1) { // bit offset: 3 desc: Interrupt on MR1 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR1 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled. + }, + MR1R: enum(u1) { // bit offset: 4 desc: Reset on MR1 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR1 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1S: enum(u1) { // bit offset: 5 desc: Stop on MR1 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR1 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2I: enum(u1) { // bit offset: 6 desc: Interrupt on MR2 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR2 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR2R: enum(u1) { // bit offset: 7 desc: Reset on MR2 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR2 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2S: enum(u1) { // bit offset: 8 desc: Stop on MR2. + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR2 matches the TC + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3I: enum(u1) { // bit offset: 9 desc: Interrupt on MR3 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR3 matches the value in the TC. + @"THIS_INTERRUPT_IS_DI" = 0, // desc: This interrupt is disabled + }, + MR3R: enum(u1) { // bit offset: 10 desc: Reset on MR3 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR3 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3S: enum(u1) { // bit offset: 11 desc: Stop on MR3 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR3 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -477,14 +622,6 @@ pub const TIMER1 = extern struct { pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 24 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. @@ -493,26 +630,37 @@ pub const TIMER1 = extern struct { pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 32 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); // byte offset: 40 Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. pub const CCR = mmio(Address + 0x00000028, 32, packed struct { - CAP0RE: bool, // bit offset: 0 desc: Capture on CAPn.0 rising edge - CAP0FE: bool, // bit offset: 1 desc: Capture on CAPn.0 falling edge - CAP0I: bool, // bit offset: 2 desc: Interrupt on CAPn.0 event - CAP1RE: bool, // bit offset: 3 desc: Capture on CAPn.1 rising edge - CAP1FE: bool, // bit offset: 4 desc: Capture on CAPn.1 falling edge - CAP1I: bool, // bit offset: 5 desc: Interrupt on CAPn.1 event + CAP0RE: enum(u1) { // bit offset: 0 desc: Capture on CAPn.0 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0FE: enum(u1) { // bit offset: 1 desc: Capture on CAPn.0 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0I: enum(u1) { // bit offset: 2 desc: Interrupt on CAPn.0 event + @"ENABLE" = 1, // desc: A CR0 load due to a CAPn.0 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1RE: enum(u1) { // bit offset: 3 desc: Capture on CAPn.1 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1FE: enum(u1) { // bit offset: 4 desc: Capture on CAPn.1 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1I: enum(u1) { // bit offset: 5 desc: Interrupt on CAPn.1 event + @"ENABLE" = 1, // desc: A CR1 load due to a CAPn.1 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -544,28 +692,41 @@ pub const TIMER1 = extern struct { pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); - // byte offset: 44 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); - // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); // byte offset: 60 External Match Register. The EMR controls the external match pins. pub const EMR = mmio(Address + 0x0000003c, 32, packed struct { - EM0: bool, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM1: bool, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). - EM2: bool, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM3: bool, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EMC0: u2, // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. - EMC1: u2, // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. - EMC2: u2, // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. - EMC3: u2, // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + EM0: u1, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM1: u1, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). + EM2: u1, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM3: u1, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EMC0: enum(u2) { // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC1: enum(u2) { // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC2: enum(u2) { // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC3: enum(u2) { // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -589,8 +750,18 @@ pub const TIMER1 = extern struct { }); // byte offset: 112 Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. pub const CTCR = mmio(Address + 0x00000070, 32, packed struct { - CTMODE: u2, // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. - CINSEL: u2, // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + CTMODE: enum(u2) { // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. + @"TIMER_MODE_EVERY_RI" = 0, // desc: Timer Mode: every rising PCLK edge + @"RISING" = 1, // desc: Counter Mode: TC is incremented on rising edges on the CAP input selected by bits 3:2. + @"FALLING" = 2, // desc: Counter Mode: TC is incremented on falling edges on the CAP input selected by bits 3:2. + @"DUALEDGE" = 3, // desc: Counter Mode: TC is incremented on both edges on the CAP input selected by bits 3:2. + }, + CINSEL: enum(u2) { // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + @"CAPN_0_FOR_TIMERN" = 0, // desc: CAPn.0 for TIMERn + @"CAPN_1_FOR_TIMERN" = 1, // desc: CAPn.1 for TIMERn + _, // non-exhaustive + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -626,6 +797,7 @@ pub const UART0 = extern struct { // byte offset: 0 Receiver Buffer Register. Contains the next received character to be read (DLAB =0). pub const RBR = mmio(Address + 0x00000000, 32, packed struct { RBR: u8, // bit offset: 0 desc: The UARTn Receiver Buffer Register contains the oldest received byte in the UARTn Rx FIFO. + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -654,6 +826,7 @@ pub const UART0 = extern struct { // byte offset: 0 Transmit Holding Regiter. The next character to be transmitted is written here (DLAB =0). pub const THR = mmio(Address + 0x00000000, 32, packed struct { THR: u8, // bit offset: 0 desc: Writing to the UARTn Transmit Holding Register causes the data to be stored in the UARTn transmit FIFO. The byte will be sent when it reaches the bottom of the FIFO and the transmitter is available. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -682,6 +855,7 @@ pub const UART0 = extern struct { // byte offset: 0 Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLL = mmio(Address + 0x00000000, 32, packed struct { DLLSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch LSB Register, along with the UnDLM register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -710,6 +884,7 @@ pub const UART0 = extern struct { // byte offset: 4 Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLM = mmio(Address + 0x00000004, 32, packed struct { DLMSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch MSB Register, along with the U0DLL register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -737,16 +912,33 @@ pub const UART0 = extern struct { }); // byte offset: 4 Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB =0). pub const IER = mmio(Address + 0x00000004, 32, packed struct { - RBRIE: bool, // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. - THREIE: bool, // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. - RXIE: bool, // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + RBRIE: enum(u1) { // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. + @"DISABLE_THE_RDA_INTE" = 0, // desc: Disable the RDA interrupts. + @"ENABLE_THE_RDA_INTER" = 1, // desc: Enable the RDA interrupts. + }, + THREIE: enum(u1) { // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. + @"DISABLE_THE_THRE_INT" = 0, // desc: Disable the THRE interrupts. + @"ENABLE_THE_THRE_INTE" = 1, // desc: Enable the THRE interrupts. + }, + RXIE: enum(u1) { // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + @"DISABLE_THE_RX_LINE_" = 0, // desc: Disable the RX line status interrupts. + @"ENABLE_THE_RX_LINE_S" = 1, // desc: Enable the RX line status interrupts. + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTEN: bool, // bit offset: 8 desc: Enables the end of auto-baud interrupt. - ABTOINTEN: bool, // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + ABEOINTEN: enum(u1) { // bit offset: 8 desc: Enables the end of auto-baud interrupt. + @"DISABLE_END_OF_AUTO_" = 0, // desc: Disable end of auto-baud Interrupt. + @"ENABLE_END_OF_AUTO_B" = 1, // desc: Enable end of auto-baud Interrupt. + }, + ABTOINTEN: enum(u1) { // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + @"DISABLE_AUTO_BAUD_TI" = 0, // desc: Disable auto-baud time-out Interrupt. + @"ENABLE_AUTO_BAUD_TIM" = 1, // desc: Enable auto-baud time-out Interrupt. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -772,13 +964,24 @@ pub const UART0 = extern struct { }); // byte offset: 8 Interrupt ID Register. Identifies which interrupt(s) are pending. pub const IIR = mmio(Address + 0x00000008, 32, packed struct { - INTSTATUS: bool, // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. - INTID: u3, // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + INTSTATUS: enum(u1) { // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. + @"AT_LEAST_ONE_INTERRU" = 0, // desc: At least one interrupt is pending. + @"NO_INTERRUPT_IS_PEND" = 1, // desc: No interrupt is pending. + }, + INTID: enum(u3) { // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + @"1_RECEIVE_LINE_S" = 3, // desc: 1 - Receive Line Status (RLS). + @"2A__RECEIVE_DATA_AV" = 2, // desc: 2a - Receive Data Available (RDA). + @"2B__CHARACTER_TIME_" = 6, // desc: 2b - Character Time-out Indicator (CTI). + @"3_THRE_INTERRUPT" = 1, // desc: 3 - THRE Interrupt + _, // non-exhaustive + }, + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, FIFOENABLE: u2, // bit offset: 6 desc: Copies of UnFCR[0]. - ABEOINT: bool, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. - ABTOINT: bool, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + ABEOINT: u1, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. + ABTOINT: u1, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -804,13 +1007,29 @@ pub const UART0 = extern struct { }); // byte offset: 8 FIFO Control Register. Controls UART FIFO usage and modes. pub const FCR = mmio(Address + 0x00000008, 32, packed struct { - FIFOEN: bool, // bit offset: 0 desc: FIFO Enable. - RXFIFORES: bool, // bit offset: 1 desc: RX FIFO Reset. - TXFIFORES: bool, // bit offset: 2 desc: TX FIFO Reset. - DMAMODE: bool, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + FIFOEN: enum(u1) { // bit offset: 0 desc: FIFO Enable. + @"UARTN_FIFOS_ARE_DISA" = 0, // desc: UARTn FIFOs are disabled. Must not be used in the application. + @"ACTIVE_HIGH_ENABLE_F" = 1, // desc: Active high enable for both UARTn Rx and TX FIFOs and UnFCR[7:1] access. This bit must be set for proper UART operation. Any transition on this bit will automatically clear the related UART FIFOs. + }, + RXFIFORES: enum(u1) { // bit offset: 1 desc: RX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[1] will clear all bytes in UARTn Rx FIFO, reset the pointer logic. This bit is self-clearing. + }, + TXFIFORES: enum(u1) { // bit offset: 2 desc: TX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[2] will clear all bytes in UARTn TX FIFO, reset the pointer logic. This bit is self-clearing. + }, + DMAMODE: u1, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, - RXTRIGLVL: u2, // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + RXTRIGLVL: enum(u2) { // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + @"TRIGGER_LEVEL_0_1_C" = 0, // desc: Trigger level 0 (1 character or 0x01). + @"TRIGGER_LEVEL_1_4_C" = 1, // desc: Trigger level 1 (4 characters or 0x04). + @"TRIGGER_LEVEL_2_8_C" = 2, // desc: Trigger level 2 (8 characters or 0x08). + @"TRIGGER_LEVEL_3_14_" = 3, // desc: Trigger level 3 (14 characters or 0x0E). + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -838,12 +1057,35 @@ pub const UART0 = extern struct { }); // byte offset: 12 Line Control Register. Contains controls for frame formatting and break generation. pub const LCR = mmio(Address + 0x0000000c, 32, packed struct { - WLS: u2, // bit offset: 0 desc: Word Length Select. - SBS: bool, // bit offset: 2 desc: Stop Bit Select - PE: bool, // bit offset: 3 desc: Parity Enable. - PS: u2, // bit offset: 4 desc: Parity Select - BC: bool, // bit offset: 6 desc: Break Control - DLAB: bool, // bit offset: 7 desc: Divisor Latch Access Bit + WLS: enum(u2) { // bit offset: 0 desc: Word Length Select. + @"5_BIT_CHARACTER_LENG" = 0, // desc: 5-bit character length + @"6_BIT_CHARACTER_LENG" = 1, // desc: 6-bit character length + @"7_BIT_CHARACTER_LENG" = 2, // desc: 7-bit character length + @"8_BIT_CHARACTER_LENG" = 3, // desc: 8-bit character length + }, + SBS: enum(u1) { // bit offset: 2 desc: Stop Bit Select + @"1_STOP_BIT_" = 0, // desc: 1 stop bit. + @"2_STOP_BITS_1_5_IF_" = 1, // desc: 2 stop bits (1.5 if UnLCR[1:0]=00). + }, + PE: enum(u1) { // bit offset: 3 desc: Parity Enable. + @"DISABLE_PARITY_GENER" = 0, // desc: Disable parity generation and checking. + @"ENABLE_PARITY_GENERA" = 1, // desc: Enable parity generation and checking. + }, + PS: enum(u2) { // bit offset: 4 desc: Parity Select + @"ODD_PARITY_NUMBER_O" = 0, // desc: Odd parity. Number of 1s in the transmitted character and the attached parity bit will be odd. + @"EVEN_PARITY_NUMBER_" = 1, // desc: Even Parity. Number of 1s in the transmitted character and the attached parity bit will be even. + @"FORCED_1_STICK_PARIT" = 2, // desc: Forced 1 stick parity. + @"FORCED_0_STICK_PARIT" = 3, // desc: Forced 0 stick parity. + }, + BC: enum(u1) { // bit offset: 6 desc: Break Control + @"DISABLE_BREAK_TRANSM" = 0, // desc: Disable break transmission. + @"ENABLE_BREAK_TRANSMI" = 1, // desc: Enable break transmission. Output pin UARTn TXD is forced to logic 0 when UnLCR[6] is active high. + }, + DLAB: enum(u1) { // bit offset: 7 desc: Divisor Latch Access Bit + @"DISABLE_ACCESS_TO_DI" = 0, // desc: Disable access to Divisor Latches. + @"ENABLE_ACCESS_TO_DIV" = 1, // desc: Enable access to Divisor Latches. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -871,14 +1113,39 @@ pub const UART0 = extern struct { }); // byte offset: 20 Line Status Register. Contains flags for transmit and receive status, including line errors. pub const LSR = mmio(Address + 0x00000014, 32, packed struct { - RDR: bool, // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. - OE: bool, // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. - PE: bool, // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. - FE: bool, // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. - BI: bool, // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. - THRE: bool, // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. - TEMT: bool, // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. - RXFE: bool, // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + RDR: enum(u1) { // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. + @"EMPTY" = 0, // desc: The UARTn receiver FIFO is empty. + @"NOTEMPTY" = 1, // desc: The UARTn receiver FIFO is not empty. + }, + OE: enum(u1) { // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. + @"INACTIVE" = 0, // desc: Overrun error status is inactive. + @"ACTIVE" = 1, // desc: Overrun error status is active. + }, + PE: enum(u1) { // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Parity error status is inactive. + @"ACTIVE" = 1, // desc: Parity error status is active. + }, + FE: enum(u1) { // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Framing error status is inactive. + @"ACTIVE" = 1, // desc: Framing error status is active. + }, + BI: enum(u1) { // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Break interrupt status is inactive. + @"ACTIVE" = 1, // desc: Break interrupt status is active. + }, + THRE: enum(u1) { // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. + @"VALIDDATA" = 0, // desc: UnTHR contains valid data. + @"EMPTY" = 1, // desc: UnTHR is empty. + }, + TEMT: enum(u1) { // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. + @"VALIDDATA" = 0, // desc: UnTHR and/or the UnTSR contains valid data. + @"EMPTY" = 1, // desc: UnTHR and the UnTSR are empty. + }, + RXFE: enum(u1) { // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + @"NOERROR" = 0, // desc: UnRBR contains no UARTn RX errors or UnFCR[0]=0. + @"ERRORS" = 1, // desc: UARTn RBR contains at least one UARTn RX error. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -907,6 +1174,7 @@ pub const UART0 = extern struct { // byte offset: 28 Scratch Pad Register. 8-bit temporary storage for software. pub const SCR = mmio(Address + 0x0000001c, 32, packed struct { PAD: u8, // bit offset: 0 desc: A readable, writable byte. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -934,16 +1202,33 @@ pub const UART0 = extern struct { }); // byte offset: 32 Auto-baud Control Register. Contains controls for the auto-baud feature. pub const ACR = mmio(Address + 0x00000020, 32, packed struct { - START: bool, // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. - MODE: bool, // bit offset: 1 desc: Auto-baud mode select bit. - AUTORESTART: bool, // bit offset: 2 desc: Restart bit. + START: enum(u1) { // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. + @"AUTO_BAUD_STOP_AUTO" = 0, // desc: Auto-baud stop (auto-baud is not running). + @"AUTO_BAUD_START_AUT" = 1, // desc: Auto-baud start (auto-baud is running). Auto-baud run bit. This bit is automatically cleared after auto-baud completion. + }, + MODE: enum(u1) { // bit offset: 1 desc: Auto-baud mode select bit. + @"MODE_0_" = 0, // desc: Mode 0. + @"MODE_1_" = 1, // desc: Mode 1. + }, + AUTORESTART: enum(u1) { // bit offset: 2 desc: Restart bit. + @"NO_RESTART_" = 0, // desc: No restart. + @"RESTART_IN_CASE_OF_T" = 1, // desc: Restart in case of time-out (counter restarts at next UARTn Rx falling edge) + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTCLR: bool, // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. - ABTOINTCLR: bool, // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + ABEOINTCLR: enum(u1) { // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + ABTOINTCLR: enum(u1) { // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -971,6 +1256,7 @@ pub const UART0 = extern struct { pub const FDR = mmio(Address + 0x00000028, 32, packed struct { DIVADDVAL: u4, // bit offset: 0 desc: Baud-rate generation pre-scaler divisor value. If this field is 0, fractional baud-rate generator will not impact the UARTn baudrate. MULVAL: u4, // bit offset: 4 desc: Baud-rate pre-scaler multiplier value. This field must be greater or equal 1 for UARTn to operate properly, regardless of whether the fractional baud-rate generator is used or not. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -998,6 +1284,7 @@ pub const UART0 = extern struct { }); // byte offset: 48 Transmit Enable Register. Turns off UART transmitter for use with software flow control. pub const TER = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u7, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -1005,7 +1292,8 @@ pub const UART0 = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TXEN: bool, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + TXEN: u1, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1033,12 +1321,29 @@ pub const UART0 = extern struct { }); // byte offset: 76 RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. pub const RS485CTRL = mmio(Address + 0x0000004c, 32, packed struct { - NMMEN: bool, // bit offset: 0 desc: NMM enable. - RXDIS: bool, // bit offset: 1 desc: Receiver enable. - AADEN: bool, // bit offset: 2 desc: AAD enable. + NMMEN: enum(u1) { // bit offset: 0 desc: NMM enable. + @"DISABLED" = 0, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is disabled. + @"ENABLED" = 1, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is enabled. In this mode, an address is detected when a received byte has the parity bit = 1, generating a received data interrupt. See Section 18.6.16 RS-485/EIA-485 modes of operation. + }, + RXDIS: enum(u1) { // bit offset: 1 desc: Receiver enable. + @"ENABLED" = 0, // desc: The receiver is enabled. + @"DISABLED" = 1, // desc: The receiver is disabled. + }, + AADEN: enum(u1) { // bit offset: 2 desc: AAD enable. + @"DISABLED" = 0, // desc: Auto Address Detect (AAD) is disabled. + @"ENABLED" = 1, // desc: Auto Address Detect (AAD) is enabled. + }, + // RESERVED: u1, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - DCTRL: bool, // bit offset: 4 desc: Direction control enable. - OINV: bool, // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + DCTRL: enum(u1) { // bit offset: 4 desc: Direction control enable. + @"DISABLE_AUTO_DIRECTI" = 0, // desc: Disable Auto Direction Control. + @"ENABLE_AUTO_DIRECTIO" = 1, // desc: Enable Auto Direction Control. + }, + OINV: enum(u1) { // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + @"DIRLOW" = 0, // desc: The direction control pin will be driven to logic 0 when the transmitter has data to be sent. It will be driven to logic 1 after the last bit of data has been transmitted. + @"DIRHIGH" = 1, // desc: The direction control pin will be driven to logic 1 when the transmitter has data to be sent. It will be driven to logic 0 after the last bit of data has been transmitted. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -1069,6 +1374,7 @@ pub const UART0 = extern struct { // byte offset: 80 RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. pub const RS485ADRMATCH = mmio(Address + 0x00000050, 32, packed struct { ADRMATCH: u8, // bit offset: 0 desc: Contains the address match value. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1097,6 +1403,7 @@ pub const UART0 = extern struct { // byte offset: 84 RS-485/EIA-485 direction control delay. pub const RS485DLY = mmio(Address + 0x00000054, 32, packed struct { DLY: u8, // bit offset: 0 desc: Contains the direction control (UnOE) delay value. This register works in conjunction with an 8-bit counter. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1128,6 +1435,7 @@ pub const UART1 = extern struct { // byte offset: 0 DLAB =0 Receiver Buffer Register. Contains the next received character to be read. pub const RBR = mmio(Address + 0x00000000, 32, packed struct { RBR: u8, // bit offset: 0 desc: The UART1 Receiver Buffer Register contains the oldest received byte in the UART1 RX FIFO. + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1156,6 +1464,7 @@ pub const UART1 = extern struct { // byte offset: 0 DLAB =0. Transmit Holding Register. The next character to be transmitted is written here. pub const THR = mmio(Address + 0x00000000, 32, packed struct { THR: u8, // bit offset: 0 desc: Writing to the UART1 Transmit Holding Register causes the data to be stored in the UART1 transmit FIFO. The byte will be sent when it reaches the bottom of the FIFO and the transmitter is available. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1184,6 +1493,7 @@ pub const UART1 = extern struct { // byte offset: 0 DLAB =1. Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider. pub const DLL = mmio(Address + 0x00000000, 32, packed struct { DLLSB: u8, // bit offset: 0 desc: The UART1 Divisor Latch LSB Register, along with the U1DLM register, determines the baud rate of the UART1. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1212,6 +1522,7 @@ pub const UART1 = extern struct { // byte offset: 4 DLAB =1. Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider. pub const DLM = mmio(Address + 0x00000004, 32, packed struct { DLMSB: u8, // bit offset: 0 desc: The UART1 Divisor Latch MSB Register, along with the U1DLL register, determines the baud rate of the UART1. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1239,16 +1550,39 @@ pub const UART1 = extern struct { }); // byte offset: 4 DLAB =0. Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART1 interrupts. pub const IER = mmio(Address + 0x00000004, 32, packed struct { - RBRIE: bool, // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UART1. It also controls the Character Receive Time-out interrupt. - THREIE: bool, // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UART1. The status of this interrupt can be read from LSR[5]. - RXIE: bool, // bit offset: 2 desc: RX Line Interrupt Enable. Enables the UART1 RX line status interrupts. The status of this interrupt can be read from LSR[4:1]. - MSIE: bool, // bit offset: 3 desc: Modem Status Interrupt Enable. Enables the modem interrupt. The status of this interrupt can be read from MSR[3:0]. + RBRIE: enum(u1) { // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UART1. It also controls the Character Receive Time-out interrupt. + @"DISABLE_THE_RDA_INTE" = 0, // desc: Disable the RDA interrupts. + @"ENABLE_THE_RDA_INTER" = 1, // desc: Enable the RDA interrupts. + }, + THREIE: enum(u1) { // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UART1. The status of this interrupt can be read from LSR[5]. + @"DISABLE_THE_THRE_INT" = 0, // desc: Disable the THRE interrupts. + @"ENABLE_THE_THRE_INTE" = 1, // desc: Enable the THRE interrupts. + }, + RXIE: enum(u1) { // bit offset: 2 desc: RX Line Interrupt Enable. Enables the UART1 RX line status interrupts. The status of this interrupt can be read from LSR[4:1]. + @"DISABLE_THE_RX_LINE_" = 0, // desc: Disable the RX line status interrupts. + @"ENABLE_THE_RX_LINE_S" = 1, // desc: Enable the RX line status interrupts. + }, + MSIE: enum(u1) { // bit offset: 3 desc: Modem Status Interrupt Enable. Enables the modem interrupt. The status of this interrupt can be read from MSR[3:0]. + @"DISABLE_THE_MODEM_IN" = 0, // desc: Disable the modem interrupt. + @"ENABLE_THE_MODEM_INT" = 1, // desc: Enable the modem interrupt. + }, + // RESERVED: u3, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - CTSIE: bool, // bit offset: 7 desc: CTS Interrupt Enable. If auto-cts mode is enabled this bit enables/disables the modem status interrupt generation on a CTS1 signal transition. If auto-cts mode is disabled a CTS1 transition will generate an interrupt if Modem Status Interrupt Enable (IER[3]) is set. In normal operation a CTS1 signal transition will generate a Modem Status Interrupt unless the interrupt has been disabled by clearing the IER[3] bit in the IER register. In auto-cts mode a transition on the CTS1 bit will trigger an interrupt only if both the IER[3] and IER[7] bits are set. - ABEOIE: bool, // bit offset: 8 desc: Enables the end of auto-baud interrupt. - ABTOIE: bool, // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + CTSIE: enum(u1) { // bit offset: 7 desc: CTS Interrupt Enable. If auto-cts mode is enabled this bit enables/disables the modem status interrupt generation on a CTS1 signal transition. If auto-cts mode is disabled a CTS1 transition will generate an interrupt if Modem Status Interrupt Enable (IER[3]) is set. In normal operation a CTS1 signal transition will generate a Modem Status Interrupt unless the interrupt has been disabled by clearing the IER[3] bit in the IER register. In auto-cts mode a transition on the CTS1 bit will trigger an interrupt only if both the IER[3] and IER[7] bits are set. + @"DISABLE_THE_CTS_INTE" = 0, // desc: Disable the CTS interrupt. + @"ENABLE_THE_CTS_INTER" = 1, // desc: Enable the CTS interrupt. + }, + ABEOIE: enum(u1) { // bit offset: 8 desc: Enables the end of auto-baud interrupt. + @"DISABLE_END_OF_AUTO_" = 0, // desc: Disable end of auto-baud Interrupt. + @"ENABLE_END_OF_AUTO_B" = 1, // desc: Enable end of auto-baud Interrupt. + }, + ABTOIE: enum(u1) { // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + @"DISABLE_AUTO_BAUD_TI" = 0, // desc: Disable auto-baud time-out Interrupt. + @"ENABLE_AUTO_BAUD_TIM" = 1, // desc: Enable auto-baud time-out Interrupt. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -1274,13 +1608,25 @@ pub const UART1 = extern struct { }); // byte offset: 8 Interrupt ID Register. Identifies which interrupt(s) are pending. pub const IIR = mmio(Address + 0x00000008, 32, packed struct { - INTSTATUS: bool, // bit offset: 0 desc: Interrupt status. Note that IIR[0] is active low. The pending interrupt can be determined by evaluating IIR[3:1]. - INTID: u3, // bit offset: 1 desc: Interrupt identification. IER[3:1] identifies an interrupt corresponding to the UART1 Rx or TX FIFO. All other combinations of IER[3:1] not listed below are reserved (100,101,111). + INTSTATUS: enum(u1) { // bit offset: 0 desc: Interrupt status. Note that IIR[0] is active low. The pending interrupt can be determined by evaluating IIR[3:1]. + @"AT_LEAST_ONE_INTERRU" = 0, // desc: At least one interrupt is pending. + @"NO_INTERRUPT_IS_PEND" = 1, // desc: No interrupt is pending. + }, + INTID: enum(u3) { // bit offset: 1 desc: Interrupt identification. IER[3:1] identifies an interrupt corresponding to the UART1 Rx or TX FIFO. All other combinations of IER[3:1] not listed below are reserved (100,101,111). + @"RLS" = 3, // desc: 1 - Receive Line Status (RLS). + @"RDA" = 2, // desc: 2a - Receive Data Available (RDA). + @"CTI" = 6, // desc: 2b - Character Time-out Indicator (CTI). + @"THRE" = 1, // desc: 3 - THRE Interrupt. + @"MODEM" = 0, // desc: 4 - Modem Interrupt. + _, // non-exhaustive + }, + // RESERVED: u2, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, FIFOENABLE: u2, // bit offset: 6 desc: Copies of FCR[0]. - ABEOINT: bool, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. - ABTOINT: bool, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + ABEOINT: u1, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. + ABTOINT: u1, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + // RESERVED: u22, // bit offset: 10 desc: Reserved, the value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -1306,13 +1652,29 @@ pub const UART1 = extern struct { }); // byte offset: 8 FIFO Control Register. Controls UART1 FIFO usage and modes. pub const FCR = mmio(Address + 0x00000008, 32, packed struct { - FIFOEN: bool, // bit offset: 0 desc: FIFO enable. - RXFIFORES: bool, // bit offset: 1 desc: RX FIFO Reset. - TXFIFORES: bool, // bit offset: 2 desc: TX FIFO Reset. - DMAMODE: bool, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable bit (bit 0 of this register) is set, this bit selects the DMA mode. See Section 36.6.6.1. + FIFOEN: enum(u1) { // bit offset: 0 desc: FIFO enable. + @"MUST_NOT_BE_USED_IN_" = 0, // desc: Must not be used in the application. + @"ACTIVE_HIGH_ENABLE_F" = 1, // desc: Active high enable for both UART1 Rx and TX FIFOs and FCR[7:1] access. This bit must be set for proper UART1 operation. Any transition on this bit will automatically clear the UART1 FIFOs. + }, + RXFIFORES: enum(u1) { // bit offset: 1 desc: RX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UART1 FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to FCR[1] will clear all bytes in UART1 Rx FIFO, reset the pointer logic. This bit is self-clearing. + }, + TXFIFORES: enum(u1) { // bit offset: 2 desc: TX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UART1 FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to FCR[2] will clear all bytes in UART1 TX FIFO, reset the pointer logic. This bit is self-clearing. + }, + DMAMODE: u1, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable bit (bit 0 of this register) is set, this bit selects the DMA mode. See Section 36.6.6.1. + // RESERVED: u2, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - RXTRIGLVL: u2, // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UART1 FIFO characters must be written before an interrupt is activated. + RXTRIGLVL: enum(u2) { // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UART1 FIFO characters must be written before an interrupt is activated. + @"TRIGGER_LEVEL_0_1_C" = 0, // desc: Trigger level 0 (1 character or 0x01). + @"TRIGGER_LEVEL_1_4_C" = 1, // desc: Trigger level 1 (4 characters or 0x04). + @"TRIGGER_LEVEL_2_8_C" = 2, // desc: Trigger level 2 (8 characters or 0x08). + @"TRIGGER_LEVEL_3_14_" = 3, // desc: Trigger level 3 (14 characters or 0x0E). + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1340,12 +1702,35 @@ pub const UART1 = extern struct { }); // byte offset: 12 Line Control Register. Contains controls for frame formatting and break generation. pub const LCR = mmio(Address + 0x0000000c, 32, packed struct { - WLS: u2, // bit offset: 0 desc: Word Length Select. - SBS: bool, // bit offset: 2 desc: Stop Bit Select. - PE: bool, // bit offset: 3 desc: Parity Enable. - PS: u2, // bit offset: 4 desc: Parity Select. - BC: bool, // bit offset: 6 desc: Break Control. - DLAB: bool, // bit offset: 7 desc: Divisor Latch Access Bit (DLAB) + WLS: enum(u2) { // bit offset: 0 desc: Word Length Select. + @"5_BIT_CHARACTER_LENG" = 0, // desc: 5-bit character length. + @"6_BIT_CHARACTER_LENG" = 1, // desc: 6-bit character length. + @"7_BIT_CHARACTER_LENG" = 2, // desc: 7-bit character length. + @"8_BIT_CHARACTER_LENG" = 3, // desc: 8-bit character length. + }, + SBS: enum(u1) { // bit offset: 2 desc: Stop Bit Select. + @"1_STOP_BIT_" = 0, // desc: 1 stop bit. + @"2_STOP_BITS_1_5_IF_" = 1, // desc: 2 stop bits (1.5 if LCR[1:0]=00). + }, + PE: enum(u1) { // bit offset: 3 desc: Parity Enable. + @"DISABLE_PARITY_GENER" = 0, // desc: Disable parity generation and checking. + @"ENABLE_PARITY_GENERA" = 1, // desc: Enable parity generation and checking. + }, + PS: enum(u2) { // bit offset: 4 desc: Parity Select. + @"ODD_PARITY_NUMBER_O" = 0, // desc: Odd parity. Number of 1s in the transmitted character and the attached parity bit will be odd. + @"EVEN_PARITY_NUMBER_" = 1, // desc: Even Parity. Number of 1s in the transmitted character and the attached parity bit will be even. + @"FORCED1STICK_PAR" = 2, // desc: Forced 1 stick parity. + @"FORCED0STICK_PAR" = 3, // desc: Forced 0 stick parity. + }, + BC: enum(u1) { // bit offset: 6 desc: Break Control. + @"DISABLE_BREAK_TRANSM" = 0, // desc: Disable break transmission. + @"ENABLE_BREAK_TRANSMI" = 1, // desc: Enable break transmission. Output pin UART1 TXD is forced to logic 0 when LCR[6] is active high. + }, + DLAB: enum(u1) { // bit offset: 7 desc: Divisor Latch Access Bit (DLAB) + @"DISABLE_ACCESS_TO_DI" = 0, // desc: Disable access to Divisor Latches. + @"ENABLE_ACCESS_TO_DIV" = 1, // desc: Enable access to Divisor Latches. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1373,14 +1758,26 @@ pub const UART1 = extern struct { }); // byte offset: 16 Modem Control Register. Contains controls for flow control handshaking and loopback mode. pub const MCR = mmio(Address + 0x00000010, 32, packed struct { - DTRCTRL: bool, // bit offset: 0 desc: DTR Control. Source for modem output pin, DTR. This bit reads as 0 when modem loopback mode is active. - RTSCTRL: bool, // bit offset: 1 desc: RTS Control. Source for modem output pin RTS. This bit reads as 0 when modem loopback mode is active. + DTRCTRL: u1, // bit offset: 0 desc: DTR Control. Source for modem output pin, DTR. This bit reads as 0 when modem loopback mode is active. + RTSCTRL: u1, // bit offset: 1 desc: RTS Control. Source for modem output pin RTS. This bit reads as 0 when modem loopback mode is active. + // RESERVED: u2, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - LMS: bool, // bit offset: 4 desc: Loopback Mode Select. The modem loopback mode provides a mechanism to perform diagnostic loopback testing. Serial data from the transmitter is connected internally to serial input of the receiver. Input pin, RXD1, has no effect on loopback and output pin, TXD1 is held in marking state. The 4 modem inputs (CTS, DSR, RI and DCD) are disconnected externally. Externally, the modem outputs (RTS, DTR) are set inactive. Internally, the 4 modem outputs are connected to the 4 modem inputs. As a result of these connections, the upper 4 bits of the MSR will be driven by the lower 4 bits of the MCR rather than the 4 modem inputs in normal mode. This permits modem status interrupts to be generated in loopback mode by writing the lower 4 bits of MCR. - reserved2: u1 = 0, - RTSEN: bool, // bit offset: 6 desc: RTS enable. - CTSEN: bool, // bit offset: 7 desc: CTS enable. + LMS: enum(u1) { // bit offset: 4 desc: Loopback Mode Select. The modem loopback mode provides a mechanism to perform diagnostic loopback testing. Serial data from the transmitter is connected internally to serial input of the receiver. Input pin, RXD1, has no effect on loopback and output pin, TXD1 is held in marking state. The 4 modem inputs (CTS, DSR, RI and DCD) are disconnected externally. Externally, the modem outputs (RTS, DTR) are set inactive. Internally, the 4 modem outputs are connected to the 4 modem inputs. As a result of these connections, the upper 4 bits of the MSR will be driven by the lower 4 bits of the MCR rather than the 4 modem inputs in normal mode. This permits modem status interrupts to be generated in loopback mode by writing the lower 4 bits of MCR. + @"DISABLE_MODEM_LOOPBA" = 0, // desc: Disable modem loopback mode. + @"ENABLE_MODEM_LOOPBAC" = 1, // desc: Enable modem loopback mode. + }, + // RESERVED: u1, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved3: u1 = 0, + RTSEN: enum(u1) { // bit offset: 6 desc: RTS enable. + @"DISABLE_AUTO_RTS_FLO" = 0, // desc: Disable auto-rts flow control. + @"ENABLE_AUTO_RTS_FLOW" = 1, // desc: Enable auto-rts flow control. + }, + CTSEN: enum(u1) { // bit offset: 7 desc: CTS enable. + @"DISABLE_AUTO_CTS_FLO" = 0, // desc: Disable auto-cts flow control. + @"ENABLE_AUTO_CTS_FLOW" = 1, // desc: Enable auto-cts flow control. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1408,14 +1805,39 @@ pub const UART1 = extern struct { }); // byte offset: 20 Line Status Register. Contains flags for transmit and receive status, including line errors. pub const LSR = mmio(Address + 0x00000014, 32, packed struct { - RDR: bool, // bit offset: 0 desc: Receiver Data Ready. LSR[0] is set when the RBR holds an unread character and is cleared when the UART1 RBR FIFO is empty. - OE: bool, // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An LSR read clears LSR[1]. LSR[1] is set when UART1 RSR has a new character assembled and the UART1 RBR FIFO is full. In this case, the UART1 RBR FIFO will not be overwritten and the character in the UART1 RSR will be lost. - PE: bool, // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An LSR read clears LSR[2]. Time of parity error detection is dependent on FCR[0]. Note: A parity error is associated with the character at the top of the UART1 RBR FIFO. - FE: bool, // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An LSR read clears LSR[3]. The time of the framing error detection is dependent on FCR0. Upon detection of a framing error, the RX will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UART1 RBR FIFO. - BI: bool, // bit offset: 4 desc: Break Interrupt. When RXD1 is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXD1 goes to marking state (all ones). An LSR read clears this status bit. The time of break detection is dependent on FCR[0]. Note: The break interrupt is associated with the character at the top of the UART1 RBR FIFO. - THRE: bool, // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UART1 THR and is cleared on a THR write. - TEMT: bool, // bit offset: 6 desc: Transmitter Empty. TEMT is set when both THR and TSR are empty; TEMT is cleared when either the TSR or the THR contain valid data. - RXFE: bool, // bit offset: 7 desc: Error in RX FIFO. LSR[7] is set when a character with a RX error such as framing error, parity error or break interrupt, is loaded into the RBR. This bit is cleared when the LSR register is read and there are no subsequent errors in the UART1 FIFO. + RDR: enum(u1) { // bit offset: 0 desc: Receiver Data Ready. LSR[0] is set when the RBR holds an unread character and is cleared when the UART1 RBR FIFO is empty. + @"EMPTY" = 0, // desc: The UART1 receiver FIFO is empty. + @"NOTEMPTY" = 1, // desc: The UART1 receiver FIFO is not empty. + }, + OE: enum(u1) { // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An LSR read clears LSR[1]. LSR[1] is set when UART1 RSR has a new character assembled and the UART1 RBR FIFO is full. In this case, the UART1 RBR FIFO will not be overwritten and the character in the UART1 RSR will be lost. + @"INACTIVE" = 0, // desc: Overrun error status is inactive. + @"ACTIVE" = 1, // desc: Overrun error status is active. + }, + PE: enum(u1) { // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An LSR read clears LSR[2]. Time of parity error detection is dependent on FCR[0]. Note: A parity error is associated with the character at the top of the UART1 RBR FIFO. + @"INACTIVE" = 0, // desc: Parity error status is inactive. + @"ACTIVE" = 1, // desc: Parity error status is active. + }, + FE: enum(u1) { // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An LSR read clears LSR[3]. The time of the framing error detection is dependent on FCR0. Upon detection of a framing error, the RX will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UART1 RBR FIFO. + @"INACTIVE" = 0, // desc: Framing error status is inactive. + @"ACTIVE" = 1, // desc: Framing error status is active. + }, + BI: enum(u1) { // bit offset: 4 desc: Break Interrupt. When RXD1 is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXD1 goes to marking state (all ones). An LSR read clears this status bit. The time of break detection is dependent on FCR[0]. Note: The break interrupt is associated with the character at the top of the UART1 RBR FIFO. + @"INACTIVE" = 0, // desc: Break interrupt status is inactive. + @"ACTIVE" = 1, // desc: Break interrupt status is active. + }, + THRE: enum(u1) { // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UART1 THR and is cleared on a THR write. + @"VALID" = 0, // desc: THR contains valid data. + @"THR_IS_EMPTY_" = 1, // desc: THR is empty. + }, + TEMT: enum(u1) { // bit offset: 6 desc: Transmitter Empty. TEMT is set when both THR and TSR are empty; TEMT is cleared when either the TSR or the THR contain valid data. + @"VALID" = 0, // desc: THR and/or the TSR contains valid data. + @"EMPTY" = 1, // desc: THR and the TSR are empty. + }, + RXFE: enum(u1) { // bit offset: 7 desc: Error in RX FIFO. LSR[7] is set when a character with a RX error such as framing error, parity error or break interrupt, is loaded into the RBR. This bit is cleared when the LSR register is read and there are no subsequent errors in the UART1 FIFO. + @"NOERROR" = 0, // desc: RBR contains no UART1 RX errors or FCR[0]=0. + @"ERRORS" = 1, // desc: UART1 RBR contains at least one UART1 RX error. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1443,14 +1865,27 @@ pub const UART1 = extern struct { }); // byte offset: 24 Modem Status Register. Contains handshake signal status flags. pub const MSR = mmio(Address + 0x00000018, 32, packed struct { - DCTS: bool, // bit offset: 0 desc: Delta CTS. Set upon state change of input CTS. Cleared on an MSR read. - DDSR: bool, // bit offset: 1 desc: Delta DSR. Set upon state change of input DSR. Cleared on an MSR read. - TERI: bool, // bit offset: 2 desc: Trailing Edge RI. Set upon low to high transition of input RI. Cleared on an MSR read. - DDCD: bool, // bit offset: 3 desc: Delta DCD. Set upon state change of input DCD. Cleared on an MSR read. - CTS: bool, // bit offset: 4 desc: Clear To Send State. Complement of input signal CTS. This bit is connected to MCR[1] in modem loopback mode. - DSR: bool, // bit offset: 5 desc: Data Set Ready State. Complement of input signal DSR. This bit is connected to MCR[0] in modem loopback mode. - RI: bool, // bit offset: 6 desc: Ring Indicator State. Complement of input RI. This bit is connected to MCR[2] in modem loopback mode. - DCD: bool, // bit offset: 7 desc: Data Carrier Detect State. Complement of input DCD. This bit is connected to MCR[3] in modem loopback mode. + DCTS: enum(u1) { // bit offset: 0 desc: Delta CTS. Set upon state change of input CTS. Cleared on an MSR read. + @"NO_CHANGE_DETECTED_O" = 0, // desc: No change detected on modem input, CTS. + @"STATE_CHANGE_DETECTE" = 1, // desc: State change detected on modem input, CTS. + }, + DDSR: enum(u1) { // bit offset: 1 desc: Delta DSR. Set upon state change of input DSR. Cleared on an MSR read. + @"NO_CHANGE_DETECTED_O" = 0, // desc: No change detected on modem input, DSR. + @"STATE_CHANGE_DETECTE" = 1, // desc: State change detected on modem input, DSR. + }, + TERI: enum(u1) { // bit offset: 2 desc: Trailing Edge RI. Set upon low to high transition of input RI. Cleared on an MSR read. + @"NO_CHANGE_DETECTED_O" = 0, // desc: No change detected on modem input, RI. + @"LOW_TO_HIGH_TRANSITI" = 1, // desc: Low-to-high transition detected on RI. + }, + DDCD: enum(u1) { // bit offset: 3 desc: Delta DCD. Set upon state change of input DCD. Cleared on an MSR read. + @"NO_CHANGE_DETECTED_O" = 0, // desc: No change detected on modem input, DCD. + @"STATE_CHANGE_DETECTE" = 1, // desc: State change detected on modem input, DCD. + }, + CTS: u1, // bit offset: 4 desc: Clear To Send State. Complement of input signal CTS. This bit is connected to MCR[1] in modem loopback mode. + DSR: u1, // bit offset: 5 desc: Data Set Ready State. Complement of input signal DSR. This bit is connected to MCR[0] in modem loopback mode. + RI: u1, // bit offset: 6 desc: Ring Indicator State. Complement of input RI. This bit is connected to MCR[2] in modem loopback mode. + DCD: u1, // bit offset: 7 desc: Data Carrier Detect State. Complement of input DCD. This bit is connected to MCR[3] in modem loopback mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1479,6 +1914,7 @@ pub const UART1 = extern struct { // byte offset: 28 Scratch Pad Register. 8-bit temporary storage for software. pub const SCR = mmio(Address + 0x0000001c, 32, packed struct { Pad: u8, // bit offset: 0 desc: A readable, writable byte. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1506,16 +1942,33 @@ pub const UART1 = extern struct { }); // byte offset: 32 Auto-baud Control Register. Contains controls for the auto-baud feature. pub const ACR = mmio(Address + 0x00000020, 32, packed struct { - START: bool, // bit offset: 0 desc: Auto-baud start bit. This bit is automatically cleared after auto-baud completion. - MODE: bool, // bit offset: 1 desc: Auto-baud mode select bit. - AUTORESTART: bool, // bit offset: 2 desc: Auto-baud restart bit. + START: enum(u1) { // bit offset: 0 desc: Auto-baud start bit. This bit is automatically cleared after auto-baud completion. + @"STOP" = 0, // desc: Auto-baud stop (auto-baud is not running). + @"START" = 1, // desc: Auto-baud start (auto-baud is running). Auto-baud run bit. This bit is automatically cleared after auto-baud completion. + }, + MODE: enum(u1) { // bit offset: 1 desc: Auto-baud mode select bit. + @"MODE_0_" = 0, // desc: Mode 0. + @"MODE_1_" = 1, // desc: Mode 1. + }, + AUTORESTART: enum(u1) { // bit offset: 2 desc: Auto-baud restart bit. + @"NO_RESTART" = 0, // desc: No restart + @"RESTART_IN_CASE_OF_T" = 1, // desc: Restart in case of time-out (counter restarts at next UART1 Rx falling edge) + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTCLR: bool, // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only). - ABTOINTCLR: bool, // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only). + ABEOINTCLR: enum(u1) { // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only). + @"WRITING_A_0_HAS_NO_I" = 0, // desc: Writing a 0 has no impact. + @"WRITING_A_1_WILL_CLE" = 1, // desc: Writing a 1 will clear the corresponding interrupt in the IIR. + }, + ABTOINTCLR: enum(u1) { // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only). + @"WRITING_A_0_HAS_NO_I" = 0, // desc: Writing a 0 has no impact. + @"WRITING_A_1_WILL_CLE" = 1, // desc: Writing a 1 will clear the corresponding interrupt in the IIR. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -1543,6 +1996,7 @@ pub const UART1 = extern struct { pub const FDR = mmio(Address + 0x00000028, 32, packed struct { DIVADDVAL: u4, // bit offset: 0 desc: Baud rate generation pre-scaler divisor value. If this field is 0, fractional baud rate generator will not impact the UART1 baud rate. MULVAL: u4, // bit offset: 4 desc: Baud rate pre-scaler multiplier value. This field must be greater or equal 1 for UART1 to operate properly, regardless of whether the fractional baud rate generator is used or not. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1570,6 +2024,7 @@ pub const UART1 = extern struct { }); // byte offset: 48 Transmit Enable Register. Turns off UART transmitter for use with software flow control. pub const TER = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u7, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -1577,7 +2032,8 @@ pub const UART1 = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TXEN: bool, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software can clear this bit when it detects that the a hardware-handshaking TX-permit signal (CTS) has gone false, or with software handshaking, when it receives an XOFF character (DC3). Software can set this bit again when it detects that the TX-permit signal has gone true, or when it receives an XON (DC1) character. + TXEN: u1, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software can clear this bit when it detects that the a hardware-handshaking TX-permit signal (CTS) has gone false, or with software handshaking, when it receives an XOFF character (DC3). Software can set this bit again when it detects that the TX-permit signal has gone true, or when it receives an XON (DC1) character. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1605,12 +2061,31 @@ pub const UART1 = extern struct { }); // byte offset: 76 RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. pub const RS485CTRL = mmio(Address + 0x0000004c, 32, packed struct { - NMMEN: bool, // bit offset: 0 desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) mode select. - RXDIS: bool, // bit offset: 1 desc: Receive enable. - AADEN: bool, // bit offset: 2 desc: Auto Address Detect (AAD) enable. - SEL: bool, // bit offset: 3 desc: Direction control. - DCTRL: bool, // bit offset: 4 desc: Direction control enable. - OINV: bool, // bit offset: 5 desc: Polarity. This bit reverses the polarity of the direction control signal on the RTS (or DTR) pin. + NMMEN: enum(u1) { // bit offset: 0 desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) mode select. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_IN_THIS_MOD" = 1, // desc: Enabled. In this mode, an address is detected when a received byte causes the UART to set the parity error and generate an interrupt. + }, + RXDIS: enum(u1) { // bit offset: 1 desc: Receive enable. + @"ENABLED_" = 0, // desc: Enabled. + @"DISABLED_" = 1, // desc: Disabled. + }, + AADEN: enum(u1) { // bit offset: 2 desc: Auto Address Detect (AAD) enable. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, + SEL: enum(u1) { // bit offset: 3 desc: Direction control. + @"RTS_IF_DIRECTION_CO" = 0, // desc: RTS. If direction control is enabled (bit DCTRL = 1), pin RTS is used for direction control. + @"DTR_IF_DIRECTION_CO" = 1, // desc: DTR. If direction control is enabled (bit DCTRL = 1), pin DTR is used for direction control. + }, + DCTRL: enum(u1) { // bit offset: 4 desc: Direction control enable. + @"DISABLE_AUTO_DIRECTI" = 0, // desc: Disable Auto Direction Control. + @"ENABLE_AUTO_DIRECTIO" = 1, // desc: Enable Auto Direction Control. + }, + OINV: enum(u1) { // bit offset: 5 desc: Polarity. This bit reverses the polarity of the direction control signal on the RTS (or DTR) pin. + @"LOW_THE_DIRECTION_C" = 0, // desc: LOW. The direction control pin will be driven to logic 0 when the transmitter has data to be sent. It will be driven to logic 1 after the last bit of data has been transmitted. + @"HIGH_THE_DIRECTION_" = 1, // desc: HIGH. The direction control pin will be driven to logic 1 when the transmitter has data to be sent. It will be driven to logic 0 after the last bit of data has been transmitted. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -1641,6 +2116,7 @@ pub const UART1 = extern struct { // byte offset: 80 RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. pub const RS485ADRMATCH = mmio(Address + 0x00000050, 32, packed struct { ADRMATCH: u8, // bit offset: 0 desc: Contains the address match value. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1669,6 +2145,7 @@ pub const UART1 = extern struct { // byte offset: 84 RS-485/EIA-485 direction control delay. pub const RS485DLY = mmio(Address + 0x00000054, 32, packed struct { DLY: u8, // bit offset: 0 desc: Contains the direction control (RTS or DTR) delay value. This register works in conjunction with an 8-bit counter. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -1699,17 +2176,19 @@ pub const PWM1 = extern struct { pub const Address: u32 = 0x40018000; // byte offset: 0 Interrupt Register. The IR can be written to clear interrupts, or read to identify which PWM interrupt sources are pending. pub const IR = mmio(Address + 0x00000000, 32, packed struct { - PWMMR0INT: bool, // bit offset: 0 desc: Interrupt flag for PWM match channel 0. - PWMMR1INT: bool, // bit offset: 1 desc: Interrupt flag for PWM match channel 1. - PWMMR2INT: bool, // bit offset: 2 desc: Interrupt flag for PWM match channel 2. - PWMMR3INT: bool, // bit offset: 3 desc: Interrupt flag for PWM match channel 3. - PWMCAP0INT: bool, // bit offset: 4 desc: Interrupt flag for capture input 0 - PWMCAP1INT: bool, // bit offset: 5 desc: Interrupt flag for capture input 1 (available in PWM1IR only; this bit is reserved in PWM0IR). + PWMMR0INT: u1, // bit offset: 0 desc: Interrupt flag for PWM match channel 0. + PWMMR1INT: u1, // bit offset: 1 desc: Interrupt flag for PWM match channel 1. + PWMMR2INT: u1, // bit offset: 2 desc: Interrupt flag for PWM match channel 2. + PWMMR3INT: u1, // bit offset: 3 desc: Interrupt flag for PWM match channel 3. + PWMCAP0INT: u1, // bit offset: 4 desc: Interrupt flag for capture input 0 + PWMCAP1INT: u1, // bit offset: 5 desc: Interrupt flag for capture input 1 (available in PWM1IR only; this bit is reserved in PWM0IR). + // RESERVED: u2, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, - PWMMR4INT: bool, // bit offset: 8 desc: Interrupt flag for PWM match channel 4. - PWMMR5INT: bool, // bit offset: 9 desc: Interrupt flag for PWM match channel 5. - PWMMR6INT: bool, // bit offset: 10 desc: Interrupt flag for PWM match channel 6. + PWMMR4INT: u1, // bit offset: 8 desc: Interrupt flag for PWM match channel 4. + PWMMR5INT: u1, // bit offset: 9 desc: Interrupt flag for PWM match channel 5. + PWMMR6INT: u1, // bit offset: 10 desc: Interrupt flag for PWM match channel 6. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -1734,11 +2213,25 @@ pub const PWM1 = extern struct { }); // byte offset: 4 Timer Control Register. The TCR is used to control the Timer Counter functions. pub const TCR = mmio(Address + 0x00000004, 32, packed struct { - CE: bool, // bit offset: 0 desc: Counter Enable - CR: bool, // bit offset: 1 desc: Counter Reset + CE: enum(u1) { // bit offset: 0 desc: Counter Enable + @"THE_PWM_TIMER_COUNTE" = 1, // desc: The PWM Timer Counter and PWM Prescale Counter are enabled for counting. + @"THE_COUNTERS_ARE_DIS" = 0, // desc: The counters are disabled. + }, + CR: enum(u1) { // bit offset: 1 desc: Counter Reset + @"THE_PWM_TIMER_COUNTE" = 1, // desc: The PWM Timer Counter and the PWM Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until this bit is returned to zero. + @"CLEAR_RESET_" = 0, // desc: Clear reset. + }, + // RESERVED: u1, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - PWMEN: bool, // bit offset: 3 desc: PWM Enable - MDIS: bool, // bit offset: 4 desc: Master Disable (PWM0 only). The two PWMs may be synchronized using the Master Disable control bit. The Master disable bit of the Master PWM (PWM0 module) controls a secondary enable input to both PWMs, as shown in Figure 141. This bit has no function in the Slave PWM (PWM1). + PWMEN: enum(u1) { // bit offset: 3 desc: PWM Enable + @"PWM_MODE_IS_ENABLED_" = 1, // desc: PWM mode is enabled (counter resets to 1). PWM mode causes the shadow registers to operate in connection with the Match registers. A program write to a Match register will not have an effect on the Match result until the corresponding bit in PWMLER has been set, followed by the occurrence of a PWM Match 0 event. Note that the PWM Match register that determines the PWM rate (PWM Match Register 0 - MR0) must be set up prior to the PWM being enabled. Otherwise a Match event will not occur to cause shadow register contents to become effective. + @"TIMER_MODE_IS_ENABLE" = 0, // desc: Timer mode is enabled (counter resets to 0). + }, + MDIS: enum(u1) { // bit offset: 4 desc: Master Disable (PWM0 only). The two PWMs may be synchronized using the Master Disable control bit. The Master disable bit of the Master PWM (PWM0 module) controls a secondary enable input to both PWMs, as shown in Figure 141. This bit has no function in the Slave PWM (PWM1). + @"MASTER_USE_PWM0_IS_" = 1, // desc: Master use. PWM0 is the master, and both PWMs are enabled for counting. + @"INDIVIDUAL_USE_THE_" = 0, // desc: Individual use. The PWMs are used independently, and the individual Counter Enable bits are used to control the PWMs. + }, + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -1781,27 +2274,91 @@ pub const PWM1 = extern struct { }); // byte offset: 20 Match Control Register. The MCR is used to control whether an interrupt is generated and if the PWM counter is reset when a Match occurs. pub const MCR = mmio(Address + 0x00000014, 32, packed struct { - PWMMR0I: bool, // bit offset: 0 desc: Interrupt PWM0 - PWMMR0R: bool, // bit offset: 1 desc: Reset PWM0 - PWMMR0S: bool, // bit offset: 2 desc: Stop PWM0 - PWMMR1I: bool, // bit offset: 3 desc: Interrupt PWM1 - PWMMR1R: bool, // bit offset: 4 desc: Reset PWM1 - PWMMR1S: bool, // bit offset: 5 desc: Stop PWM1 - PWMMR2I: bool, // bit offset: 6 desc: Interrupt PWM0 - PWMMR2R: bool, // bit offset: 7 desc: Reset PWM0 - PWMMR2S: bool, // bit offset: 8 desc: Stop PWM0 - PWMMR3I: bool, // bit offset: 9 desc: Interrupt PWM3 - PWMMR3R: bool, // bit offset: 10 desc: Reset PWM3 - PWMMR3S: bool, // bit offset: 11 desc: Stop PWM0 - PWMMR4I: bool, // bit offset: 12 desc: Interrupt PWM4 - PWMMR4R: bool, // bit offset: 13 desc: Reset PWM4 - PWMMR4S: bool, // bit offset: 14 desc: Stop PWM4 - PWMMR5I: bool, // bit offset: 15 desc: Interrupt PWM5 - PWMMR5R: bool, // bit offset: 16 desc: Reset PWM5 - PWMMR5S: bool, // bit offset: 17 desc: Stop PWM5 - PWMMR6I: bool, // bit offset: 18 desc: Interrupt PWM6 - PWMMR6R: bool, // bit offset: 19 desc: Reset PWM6 - PWMMR6S: bool, // bit offset: 20 desc: Stop PWM6 + PWMMR0I: enum(u1) { // bit offset: 0 desc: Interrupt PWM0 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR0" = 1, // desc: Interrupt on PWMMR0: an interrupt is generated when PWMMR0 matches the value in the PWMTC. + }, + PWMMR0R: enum(u1) { // bit offset: 1 desc: Reset PWM0 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR0_THE" = 1, // desc: Reset on PWMMR0: the PWMTC will be reset if PWMMR0 matches it. + }, + PWMMR0S: enum(u1) { // bit offset: 2 desc: Stop PWM0 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR0_THE_" = 1, // desc: Stop on PWMMR0: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR0 matches the PWMTC. + }, + PWMMR1I: enum(u1) { // bit offset: 3 desc: Interrupt PWM1 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR1" = 1, // desc: Interrupt on PWMMR1: an interrupt is generated when PWMMR1 matches the value in the PWMTC. + }, + PWMMR1R: enum(u1) { // bit offset: 4 desc: Reset PWM1 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR1_THE" = 1, // desc: Reset on PWMMR1: the PWMTC will be reset if PWMMR1 matches it. + }, + PWMMR1S: enum(u1) { // bit offset: 5 desc: Stop PWM1 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR1_THE_" = 1, // desc: Stop on PWMMR1: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR1 matches the PWMTC. + }, + PWMMR2I: enum(u1) { // bit offset: 6 desc: Interrupt PWM0 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR2" = 1, // desc: Interrupt on PWMMR2: an interrupt is generated when PWMMR2 matches the value in the PWMTC. + }, + PWMMR2R: enum(u1) { // bit offset: 7 desc: Reset PWM0 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR2_THE" = 1, // desc: Reset on PWMMR2: the PWMTC will be reset if PWMMR2 matches it. + }, + PWMMR2S: enum(u1) { // bit offset: 8 desc: Stop PWM0 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR2_THE_" = 1, // desc: Stop on PWMMR2: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR0 matches the PWMTC. + }, + PWMMR3I: enum(u1) { // bit offset: 9 desc: Interrupt PWM3 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR3" = 1, // desc: Interrupt on PWMMR3: an interrupt is generated when PWMMR3 matches the value in the PWMTC. + }, + PWMMR3R: enum(u1) { // bit offset: 10 desc: Reset PWM3 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR3_THE" = 1, // desc: Reset on PWMMR3: the PWMTC will be reset if PWMMR3 matches it. + }, + PWMMR3S: enum(u1) { // bit offset: 11 desc: Stop PWM0 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR3_THE_" = 1, // desc: Stop on PWMMR3: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR0 matches the PWMTC. + }, + PWMMR4I: enum(u1) { // bit offset: 12 desc: Interrupt PWM4 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR4" = 1, // desc: Interrupt on PWMMR4: an interrupt is generated when PWMMR4 matches the value in the PWMTC. + }, + PWMMR4R: enum(u1) { // bit offset: 13 desc: Reset PWM4 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR4_THE" = 1, // desc: Reset on PWMMR4: the PWMTC will be reset if PWMMR4 matches it. + }, + PWMMR4S: enum(u1) { // bit offset: 14 desc: Stop PWM4 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR4_THE_" = 1, // desc: Stop on PWMMR4: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR4 matches the PWMTC. + }, + PWMMR5I: enum(u1) { // bit offset: 15 desc: Interrupt PWM5 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR5" = 1, // desc: Interrupt on PWMMR5: an interrupt is generated when PWMMR5 matches the value in the PWMTC. + }, + PWMMR5R: enum(u1) { // bit offset: 16 desc: Reset PWM5 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR5_THE" = 1, // desc: Reset on PWMMR5: the PWMTC will be reset if PWMMR5 matches it. + }, + PWMMR5S: enum(u1) { // bit offset: 17 desc: Stop PWM5 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR5_THE_" = 1, // desc: Stop on PWMMR5: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR5 matches the PWMTC. + }, + PWMMR6I: enum(u1) { // bit offset: 18 desc: Interrupt PWM6 + @"DISABLED_" = 0, // desc: Disabled. + @"INTERRUPT_ON_PWMMR6" = 1, // desc: Interrupt on PWMMR6: an interrupt is generated when PWMMR6 matches the value in the PWMTC. + }, + PWMMR6R: enum(u1) { // bit offset: 19 desc: Reset PWM6 + @"DISABLED_" = 0, // desc: Disabled. + @"RESET_ON_PWMMR6_THE" = 1, // desc: Reset on PWMMR6: the PWMTC will be reset if PWMMR6 matches it. + }, + PWMMR6S: enum(u1) { // bit offset: 20 desc: Stop PWM6 + @"DISABLED" = 0, // desc: Disabled + @"STOP_ON_PWMMR6_THE_" = 1, // desc: Stop on PWMMR6: the PWMTC and PWMPC will be stopped and PWMTCR bit 0 will be set to 0 if PWMMR6 matches the PWMTC. + }, + // RESERVED: u11, // bit offset: 21 desc: Reserved. Read value is undefined, only zero should be written. padding11: u1 = 0, padding10: u1 = 0, padding9: u1 = 0, @@ -1832,12 +2389,31 @@ pub const PWM1 = extern struct { }); // byte offset: 40 Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated for a capture event. pub const CCR = mmio(Address + 0x00000028, 32, packed struct { - CAP0_R: bool, // bit offset: 0 desc: Capture on PWMn_CAP0 rising edge - CAP0_F: bool, // bit offset: 1 desc: Capture on PWMn_CAP0 falling edge - CAP0_I: bool, // bit offset: 2 desc: Interrupt on PWMn_CAP0 event - CAP1_R: bool, // bit offset: 3 desc: Capture on PWMn_CAP1 rising edge. Reserved for PWM0. - CAP1_F: bool, // bit offset: 4 desc: Capture on PWMn_CAP1 falling edge. Reserved for PWM0. - CAP1_I: bool, // bit offset: 5 desc: Interrupt on PWMn_CAP1 event. Reserved for PWM0. + CAP0_R: enum(u1) { // bit offset: 0 desc: Capture on PWMn_CAP0 rising edge + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"RISING_EDGE_A_SYNCH" = 1, // desc: Rising edge. A synchronously sampled rising edge on PWMn_CAP0 will cause CR0 to be loaded with the contents of the TC. + }, + CAP0_F: enum(u1) { // bit offset: 1 desc: Capture on PWMn_CAP0 falling edge + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"FALLING_EDGE_A_SYNC" = 1, // desc: Falling edge. A synchronously sampled falling edge on PWMn_CAP0 will cause CR0 to be loaded with the contents of TC. + }, + CAP0_I: enum(u1) { // bit offset: 2 desc: Interrupt on PWMn_CAP0 event + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"INTERRUPT_A_CR0_LOA" = 1, // desc: Interrupt. A CR0 load due to a PWMn_CAP0 event will generate an interrupt. + }, + CAP1_R: enum(u1) { // bit offset: 3 desc: Capture on PWMn_CAP1 rising edge. Reserved for PWM0. + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"RISING_EDGE_A_SYNCH" = 1, // desc: Rising edge. A synchronously sampled rising edge on PWMn_CAP1 will cause CR1 to be loaded with the contents of the TC. + }, + CAP1_F: enum(u1) { // bit offset: 4 desc: Capture on PWMn_CAP1 falling edge. Reserved for PWM0. + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"FALLING_EDGE_A_SYNC" = 1, // desc: Falling edge. A synchronously sampled falling edge on PWMn_CAP1 will cause CR1 to be loaded with the contents of TC. + }, + CAP1_I: enum(u1) { // bit offset: 5 desc: Interrupt on PWMn_CAP1 event. Reserved for PWM0. + @"DISABLED_THIS_FEATU" = 0, // desc: Disabled. This feature is disabled. + @"INTERRUPT_A_CR1_LOA" = 1, // desc: Interrupt. A CR1 load due to a PWMn_CAP1 event will generate an interrupt. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -1867,39 +2443,145 @@ pub const PWM1 = extern struct { }); // byte offset: 44 PWM Control Register. Enables PWM outputs and selects either single edge or double edge controlled PWM outputs. pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - PWMSEL2: bool, // bit offset: 2 desc: PWM[2] output single/double edge mode control. - PWMSEL3: bool, // bit offset: 3 desc: PWM[3] output edge control. - PWMSEL4: bool, // bit offset: 4 desc: PWM[4] output edge control. - PWMSEL5: bool, // bit offset: 5 desc: PWM[5] output edge control. - PWMSEL6: bool, // bit offset: 6 desc: PWM[6] output edge control. + PWMSEL2: enum(u1) { // bit offset: 2 desc: PWM[2] output single/double edge mode control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL3: enum(u1) { // bit offset: 3 desc: PWM[3] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL4: enum(u1) { // bit offset: 4 desc: PWM[4] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL5: enum(u1) { // bit offset: 5 desc: PWM[5] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL6: enum(u1) { // bit offset: 6 desc: PWM[6] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + // RESERVED: u2, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. + reserved4: u1 = 0, reserved3: u1 = 0, - reserved2: u1 = 0, - PWMENA1: bool, // bit offset: 9 desc: PWM[1] output enable control. - PWMENA2: bool, // bit offset: 10 desc: PWM[2] output enable control. - PWMENA3: bool, // bit offset: 11 desc: PWM[3] output enable control. - PWMENA4: bool, // bit offset: 12 desc: PWM[4] output enable control. - PWMENA5: bool, // bit offset: 13 desc: PWM[5] output enable control. - PWMENA6: bool, // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + PWMENA1: enum(u1) { // bit offset: 9 desc: PWM[1] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA2: enum(u1) { // bit offset: 10 desc: PWM[2] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA3: enum(u1) { // bit offset: 11 desc: PWM[3] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA4: enum(u1) { // bit offset: 12 desc: PWM[4] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA5: enum(u1) { // bit offset: 13 desc: PWM[5] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA6: enum(u1) { // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + // RESERVED: u17, // bit offset: 15 desc: Unused, always zero. + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 48 PWM Control Register. Enables PWM outputs and selects either single edge or double edge controlled PWM outputs. pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - PWMSEL2: bool, // bit offset: 2 desc: PWM[2] output single/double edge mode control. - PWMSEL3: bool, // bit offset: 3 desc: PWM[3] output edge control. - PWMSEL4: bool, // bit offset: 4 desc: PWM[4] output edge control. - PWMSEL5: bool, // bit offset: 5 desc: PWM[5] output edge control. - PWMSEL6: bool, // bit offset: 6 desc: PWM[6] output edge control. + PWMSEL2: enum(u1) { // bit offset: 2 desc: PWM[2] output single/double edge mode control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL3: enum(u1) { // bit offset: 3 desc: PWM[3] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL4: enum(u1) { // bit offset: 4 desc: PWM[4] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL5: enum(u1) { // bit offset: 5 desc: PWM[5] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL6: enum(u1) { // bit offset: 6 desc: PWM[6] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + // RESERVED: u2, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. + reserved4: u1 = 0, reserved3: u1 = 0, - reserved2: u1 = 0, - PWMENA1: bool, // bit offset: 9 desc: PWM[1] output enable control. - PWMENA2: bool, // bit offset: 10 desc: PWM[2] output enable control. - PWMENA3: bool, // bit offset: 11 desc: PWM[3] output enable control. - PWMENA4: bool, // bit offset: 12 desc: PWM[4] output enable control. - PWMENA5: bool, // bit offset: 13 desc: PWM[5] output enable control. - PWMENA6: bool, // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + PWMENA1: enum(u1) { // bit offset: 9 desc: PWM[1] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA2: enum(u1) { // bit offset: 10 desc: PWM[2] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA3: enum(u1) { // bit offset: 11 desc: PWM[3] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA4: enum(u1) { // bit offset: 12 desc: PWM[4] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA5: enum(u1) { // bit offset: 13 desc: PWM[5] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA6: enum(u1) { // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + // RESERVED: u17, // bit offset: 15 desc: Unused, always zero. + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 64 Match Register. Match registers are continuously compared to the PWM counter in order to control PWM output edges. pub const MR4 = mmio(Address + 0x00000040, 32, packed struct { @@ -1915,21 +2597,57 @@ pub const PWM1 = extern struct { }); // byte offset: 76 PWM Control Register. Enables PWM outputs and selects either single edge or double edge controlled PWM outputs. pub const PCR = mmio(Address + 0x0000004c, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - PWMSEL2: bool, // bit offset: 2 desc: PWM[2] output single/double edge mode control. - PWMSEL3: bool, // bit offset: 3 desc: PWM[3] output edge control. - PWMSEL4: bool, // bit offset: 4 desc: PWM[4] output edge control. - PWMSEL5: bool, // bit offset: 5 desc: PWM[5] output edge control. - PWMSEL6: bool, // bit offset: 6 desc: PWM[6] output edge control. + PWMSEL2: enum(u1) { // bit offset: 2 desc: PWM[2] output single/double edge mode control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL3: enum(u1) { // bit offset: 3 desc: PWM[3] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL4: enum(u1) { // bit offset: 4 desc: PWM[4] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL5: enum(u1) { // bit offset: 5 desc: PWM[5] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + PWMSEL6: enum(u1) { // bit offset: 6 desc: PWM[6] output edge control. + @"SINGLE_EDGE_CONTROLL" = 0, // desc: Single edge controlled mode is selected. + @"DOUBLE_EDGE_CONTROLL" = 1, // desc: Double edge controlled mode is selected. + }, + // RESERVED: u2, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. + reserved4: u1 = 0, reserved3: u1 = 0, - reserved2: u1 = 0, - PWMENA1: bool, // bit offset: 9 desc: PWM[1] output enable control. - PWMENA2: bool, // bit offset: 10 desc: PWM[2] output enable control. - PWMENA3: bool, // bit offset: 11 desc: PWM[3] output enable control. - PWMENA4: bool, // bit offset: 12 desc: PWM[4] output enable control. - PWMENA5: bool, // bit offset: 13 desc: PWM[5] output enable control. - PWMENA6: bool, // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + PWMENA1: enum(u1) { // bit offset: 9 desc: PWM[1] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA2: enum(u1) { // bit offset: 10 desc: PWM[2] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA3: enum(u1) { // bit offset: 11 desc: PWM[3] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA4: enum(u1) { // bit offset: 12 desc: PWM[4] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA5: enum(u1) { // bit offset: 13 desc: PWM[5] output enable control. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + PWMENA6: enum(u1) { // bit offset: 14 desc: PWM[6] output enable control. See PWMENA1 for details. + @"THE_PWM_OUTPUT_IS_DI" = 0, // desc: The PWM output is disabled. + @"THE_PWM_OUTPUT_IS_EN" = 1, // desc: The PWM output is enabled. + }, + // RESERVED: u17, // bit offset: 15 desc: Unused, always zero. padding17: u1 = 0, padding16: u1 = 0, padding15: u1 = 0, @@ -1950,13 +2668,14 @@ pub const PWM1 = extern struct { }); // byte offset: 80 Load Enable Register. Enables use of updated PWM match values. pub const LER = mmio(Address + 0x00000050, 32, packed struct { - MAT0LATCHEN: bool, // bit offset: 0 desc: Enable PWM Match 0 Latch. PWM MR0 register update control. Writing a one to this bit allows the last value written to the PWM Match Register 0 to be become effective when the timer is next reset by a PWM Match event. See Section 27.6.7. - MAT1LATCHEN: bool, // bit offset: 1 desc: Enable PWM Match 1 Latch. PWM MR1 register update control. See bit 0 for details. - MAT2LATCHEN: bool, // bit offset: 2 desc: Enable PWM Match 2 Latch. PWM MR2 register update control. See bit 0 for details. - MAT3LATCHEN: bool, // bit offset: 3 desc: Enable PWM Match 3 Latch. PWM MR3 register update control. See bit 0 for details. - MAT4LATCHEN: bool, // bit offset: 4 desc: Enable PWM Match 4 Latch. PWM MR4 register update control. See bit 0 for details. - MAT5LATCHEN: bool, // bit offset: 5 desc: Enable PWM Match 5 Latch. PWM MR5 register update control. See bit 0 for details. - MAT6LATCHEN: bool, // bit offset: 6 desc: Enable PWM Match 6 Latch. PWM MR6 register update control. See bit 0 for details. + MAT0LATCHEN: u1, // bit offset: 0 desc: Enable PWM Match 0 Latch. PWM MR0 register update control. Writing a one to this bit allows the last value written to the PWM Match Register 0 to be become effective when the timer is next reset by a PWM Match event. See Section 27.6.7. + MAT1LATCHEN: u1, // bit offset: 1 desc: Enable PWM Match 1 Latch. PWM MR1 register update control. See bit 0 for details. + MAT2LATCHEN: u1, // bit offset: 2 desc: Enable PWM Match 2 Latch. PWM MR2 register update control. See bit 0 for details. + MAT3LATCHEN: u1, // bit offset: 3 desc: Enable PWM Match 3 Latch. PWM MR3 register update control. See bit 0 for details. + MAT4LATCHEN: u1, // bit offset: 4 desc: Enable PWM Match 4 Latch. PWM MR4 register update control. See bit 0 for details. + MAT5LATCHEN: u1, // bit offset: 5 desc: Enable PWM Match 5 Latch. PWM MR5 register update control. See bit 0 for details. + MAT6LATCHEN: u1, // bit offset: 6 desc: Enable PWM Match 6 Latch. PWM MR6 register update control. See bit 0 for details. + // RESERVED: u25, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -1985,8 +2704,17 @@ pub const PWM1 = extern struct { }); // byte offset: 112 Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. pub const CTCR = mmio(Address + 0x00000070, 32, packed struct { - MOD: u2, // bit offset: 0 desc: Counter/ Timer Mode - CIS: u2, // bit offset: 2 desc: Count Input Select. When bits 1:0 are not 00, these bits select which PWM_CAP pin carries the signal used to increment the TC. Other combinations are reserved. + MOD: enum(u2) { // bit offset: 0 desc: Counter/ Timer Mode + @"TIMER_MODE_THE_TC_I" = 0, // desc: Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale register. + @"RISING_EDGE_COUNTER_" = 1, // desc: Rising edge counter Mode: the TC is incremented on rising edges of the PWM_CAP input selected by bits 3:2. + @"FALLING_EDGE_COUNTER" = 2, // desc: Falling edge counter Mode: the TC is incremented on falling edges of the PWM_CAP input selected by bits 3:2. + @"DUAL_EDGE_COUNTER_MO" = 3, // desc: Dual edge counter Mode: the TC is incremented on both edges of the PWM_CAP input selected by bits 3:2. + }, + CIS: enum(u2) { // bit offset: 2 desc: Count Input Select. When bits 1:0 are not 00, these bits select which PWM_CAP pin carries the signal used to increment the TC. Other combinations are reserved. + @"FOR_PWM0_00_EQ_PWM0_" = 0, // desc: For PWM0: 00 = PWM0_CAP0 (Other combinations are reserved) For PWM1: 00 = PWM1_CAP0, 01 = PWM1_CAP1 (Other combinations are reserved) + _, // non-exhaustive + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -2021,13 +2749,15 @@ pub const I2C0 = extern struct { pub const Address: u32 = 0x4001c000; // byte offset: 0 I2C Control Set Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is set. Writing a zero has no effect on the corresponding bit in the I2C control register. pub const CONSET = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - AA: bool, // bit offset: 2 desc: Assert acknowledge flag. - SI: bool, // bit offset: 3 desc: I2C interrupt flag. - STO: bool, // bit offset: 4 desc: STOP flag. - STA: bool, // bit offset: 5 desc: START flag. - I2EN: bool, // bit offset: 6 desc: I2C interface enable. + AA: u1, // bit offset: 2 desc: Assert acknowledge flag. + SI: u1, // bit offset: 3 desc: I2C interrupt flag. + STO: u1, // bit offset: 4 desc: STOP flag. + STA: u1, // bit offset: 5 desc: START flag. + I2EN: u1, // bit offset: 6 desc: I2C interface enable. + // RESERVED: u25, // bit offset: 7 desc: Reserved. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -2056,10 +2786,12 @@ pub const I2C0 = extern struct { }); // byte offset: 4 I2C Status Register. During I2C operation, this register provides detailed status codes that allow software to determine the next action needed. pub const STAT = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: These bits are unused and are always 0. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, Status: u5, // bit offset: 3 desc: These bits give the actual status information about the I 2C interface. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2088,6 +2820,7 @@ pub const I2C0 = extern struct { // byte offset: 8 I2C Data Register. During master or slave transmit mode, data to be transmitted is written to this register. During master or slave receive mode, data that has been received may be read from this register. pub const DAT = mmio(Address + 0x00000008, 32, packed struct { Data: u8, // bit offset: 0 desc: This register holds data values that have been received or are to be transmitted. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2115,8 +2848,9 @@ pub const I2C0 = extern struct { }); // byte offset: 12 I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR0 = mmio(Address + 0x0000000c, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2145,6 +2879,7 @@ pub const I2C0 = extern struct { // byte offset: 16 SCH Duty Cycle Register High Half Word. Determines the high time of the I2C clock. pub const SCLH = mmio(Address + 0x00000010, 32, packed struct { SCLH: u16, // bit offset: 0 desc: Count for SCL HIGH time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -2165,6 +2900,7 @@ pub const I2C0 = extern struct { // byte offset: 20 SCL Duty Cycle Register Low Half Word. Determines the low time of the I2C clock. SCLL and SCLH together determine the clock frequency generated by an I2C master and certain times used in slave mode. pub const SCLL = mmio(Address + 0x00000014, 32, packed struct { SCLL: u16, // bit offset: 0 desc: Count for SCL low time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -2184,13 +2920,17 @@ pub const I2C0 = extern struct { }); // byte offset: 24 I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. pub const CONCLR = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - AAC: bool, // bit offset: 2 desc: Assert acknowledge Clear bit. - SIC: bool, // bit offset: 3 desc: I2C interrupt Clear bit. - reserved2: u1 = 0, - STAC: bool, // bit offset: 5 desc: START flag Clear bit. - I2ENC: bool, // bit offset: 6 desc: I2C interface Disable bit. + AAC: u1, // bit offset: 2 desc: Assert acknowledge Clear bit. + SIC: u1, // bit offset: 3 desc: I2C interrupt Clear bit. + // RESERVED: u1, // bit offset: 4 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved3: u1 = 0, + STAC: u1, // bit offset: 5 desc: START flag Clear bit. + I2ENC: u1, // bit offset: 6 desc: I2C interface Disable bit. + // RESERVED: u1, // bit offset: 7 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -2219,9 +2959,19 @@ pub const I2C0 = extern struct { }); // byte offset: 28 Monitor mode control register. pub const MMCTRL = mmio(Address + 0x0000001c, 32, packed struct { - MM_ENA: bool, // bit offset: 0 desc: Monitor mode enable. - ENA_SCL: bool, // bit offset: 1 desc: SCL output enable. - MATCH_ALL: bool, // bit offset: 2 desc: Select interrupt register match. + MM_ENA: enum(u1) { // bit offset: 0 desc: Monitor mode enable. + @"MONITOR_MODE_DISABLE" = 0, // desc: Monitor mode disabled. + @"THE_I_2C_MODULE_WILL" = 1, // desc: The I 2C module will enter monitor mode. In this mode the SDA output will be forced high. This will prevent the I2C module from outputting data of any kind (including ACK) onto the I2C data bus. Depending on the state of the ENA_SCL bit, the output may be also forced high, preventing the module from having control over the I2C clock line. + }, + ENA_SCL: enum(u1) { // bit offset: 1 desc: SCL output enable. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared to 0, the SCL output will be forced high when the module is in monitor mode. As described above, this will prevent the module from having any control over the I2C clock line. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set, the I2C module may exercise the same control over the clock line that it would in normal operation. This means that, acting as a slave peripheral, the I2C module can stretch the clock line (hold it low) until it has had time to respond to an I2C interrupt.[1] + }, + MATCH_ALL: enum(u1) { // bit offset: 2 desc: Select interrupt register match. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared, an interrupt will only be generated when a match occurs to one of the (up-to) four address registers described above. That is, the module will respond as a normal slave as far as address-recognition is concerned. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set to 1 and the I2C is in monitor mode, an interrupt will be generated on ANY address received. This will enable the part to monitor all traffic on the bus. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. The value read from reserved bits is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -2254,22 +3004,98 @@ pub const I2C0 = extern struct { }); // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 44 Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. pub const DATA_BUFFER = mmio(Address + 0x0000002c, 32, packed struct { Data: u8, // bit offset: 0 desc: This register holds contents of the 8 MSBs of the DAT shift register. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2297,38 +3123,173 @@ pub const I2C0 = extern struct { }); // byte offset: 48 I2C Slave address mask register pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 52 I2C Slave address mask register pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 56 I2C Slave address mask register pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 60 I2C Slave address mask register pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); }; pub const SPI = extern struct { pub const Address: u32 = 0x40020000; // byte offset: 0 SPI Control Register. This register controls the operation of the SPI. pub const CR = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - BITENABLE: bool, // bit offset: 2 desc: The SPI controller sends and receives 8 bits of data per transfer. - CPHA: bool, // bit offset: 3 desc: Clock phase control determines the relationship between the data and the clock on SPI transfers, and controls when a slave transfer is defined as starting and ending. - CPOL: bool, // bit offset: 4 desc: Clock polarity control. - MSTR: bool, // bit offset: 5 desc: Master mode select. - LSBF: bool, // bit offset: 6 desc: LSB First controls which direction each byte is shifted when transferred. - SPIE: bool, // bit offset: 7 desc: Serial peripheral interrupt enable. - BITS: u4, // bit offset: 8 desc: When bit 2 of this register is 1, this field controls the number of bits per transfer: + BITENABLE: enum(u1) { // bit offset: 2 desc: The SPI controller sends and receives 8 bits of data per transfer. + @"THE_SPI_CONTROLLER_S" = 1, // desc: The SPI controller sends and receives the number of bits selected by bits 11:8. + _, // non-exhaustive + }, + CPHA: enum(u1) { // bit offset: 3 desc: Clock phase control determines the relationship between the data and the clock on SPI transfers, and controls when a slave transfer is defined as starting and ending. + @"FIRST_EDGE" = 0, // desc: Data is sampled on the first clock edge of SCK. A transfer starts and ends with activation and deactivation of the SSEL signal. + @"SECOND_EDGE" = 1, // desc: Data is sampled on the second clock edge of the SCK. A transfer starts with the first clock edge, and ends with the last sampling edge when the SSEL signal is active. + }, + CPOL: enum(u1) { // bit offset: 4 desc: Clock polarity control. + @"SCK_IS_ACTIVE_HIGH_" = 0, // desc: SCK is active high. + @"SCK_IS_ACTIVE_LOW_" = 1, // desc: SCK is active low. + }, + MSTR: enum(u1) { // bit offset: 5 desc: Master mode select. + @"SLAVE" = 0, // desc: The SPI operates in Slave mode. + @"MASTER" = 1, // desc: The SPI operates in Master mode. + }, + LSBF: enum(u1) { // bit offset: 6 desc: LSB First controls which direction each byte is shifted when transferred. + @"MSB" = 0, // desc: SPI data is transferred MSB (bit 7) first. + @"LSB" = 1, // desc: SPI data is transferred LSB (bit 0) first. + }, + SPIE: enum(u1) { // bit offset: 7 desc: Serial peripheral interrupt enable. + @"INTBLOCK" = 0, // desc: SPI interrupts are inhibited. + @"HWINT" = 1, // desc: A hardware interrupt is generated each time the SPIF or MODF bits are activated. + }, + BITS: enum(u4) { // bit offset: 8 desc: When bit 2 of this register is 1, this field controls the number of bits per transfer: + @"8_BITS_PER_TRANSFER" = 8, // desc: 8 bits per transfer + @"9_BITS_PER_TRANSFER" = 9, // desc: 9 bits per transfer + @"10_BITS_PER_TRANSFER" = 10, // desc: 10 bits per transfer + @"11_BITS_PER_TRANSFER" = 11, // desc: 11 bits per transfer + @"12_BITS_PER_TRANSFER" = 12, // desc: 12 bits per transfer + @"13_BITS_PER_TRANSFER" = 13, // desc: 13 bits per transfer + @"14_BITS_PER_TRANSFER" = 14, // desc: 14 bits per transfer + @"15_BITS_PER_TRANSFER" = 15, // desc: 15 bits per transfer + @"16_BITS_PER_TRANSFER" = 0, // desc: 16 bits per transfer + _, // non-exhaustive + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -2352,14 +3313,16 @@ pub const SPI = extern struct { }); // byte offset: 4 SPI Status Register. This register shows the status of the SPI. pub const SR = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABRT: bool, // bit offset: 3 desc: Slave abort. When 1, this bit indicates that a slave abort has occurred. This bit is cleared by reading this register. - MODF: bool, // bit offset: 4 desc: Mode fault. when 1, this bit indicates that a Mode fault error has occurred. This bit is cleared by reading this register, then writing the SPI0 control register. - ROVR: bool, // bit offset: 5 desc: Read overrun. When 1, this bit indicates that a read overrun has occurred. This bit is cleared by reading this register. - WCOL: bool, // bit offset: 6 desc: Write collision. When 1, this bit indicates that a write collision has occurred. This bit is cleared by reading this register, then accessing the SPI Data Register. - SPIF: bool, // bit offset: 7 desc: SPI transfer complete flag. When 1, this bit indicates when a SPI data transfer is complete. When a master, this bit is set at the end of the last cycle of the transfer. When a slave, this bit is set on the last data sampling edge of the SCK. This bit is cleared by first reading this register, then accessing the SPI Data Register. Note: this is not the SPI interrupt flag. This flag is found in the SPINT register. + ABRT: u1, // bit offset: 3 desc: Slave abort. When 1, this bit indicates that a slave abort has occurred. This bit is cleared by reading this register. + MODF: u1, // bit offset: 4 desc: Mode fault. when 1, this bit indicates that a Mode fault error has occurred. This bit is cleared by reading this register, then writing the SPI0 control register. + ROVR: u1, // bit offset: 5 desc: Read overrun. When 1, this bit indicates that a read overrun has occurred. This bit is cleared by reading this register. + WCOL: u1, // bit offset: 6 desc: Write collision. When 1, this bit indicates that a write collision has occurred. This bit is cleared by reading this register, then accessing the SPI Data Register. + SPIF: u1, // bit offset: 7 desc: SPI transfer complete flag. When 1, this bit indicates when a SPI data transfer is complete. When a master, this bit is set at the end of the last cycle of the transfer. When a slave, this bit is set on the last data sampling edge of the SCK. This bit is cleared by first reading this register, then accessing the SPI Data Register. Note: this is not the SPI interrupt flag. This flag is found in the SPINT register. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2389,6 +3352,7 @@ pub const SPI = extern struct { pub const DR = mmio(Address + 0x00000008, 32, packed struct { DATALOW: u8, // bit offset: 0 desc: SPI Bi-directional data port. DATAHIGH: u8, // bit offset: 8 desc: If bit 2 of the SPCR is 1 and bits 11:8 are other than 1000, some or all of these bits contain the additional transmit and receive bits. When less than 16 bits are selected, the more significant among these bits read as zeroes. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -2409,6 +3373,7 @@ pub const SPI = extern struct { // byte offset: 12 SPI Clock Counter Register. This register controls the frequency of a master's SCK0. pub const CCR = mmio(Address + 0x0000000c, 32, packed struct { COUNTER: u8, // bit offset: 0 desc: SPI0 Clock counter setting. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2436,7 +3401,9 @@ pub const SPI = extern struct { }); // byte offset: 28 SPI Interrupt Flag. This register contains the interrupt flag for the SPI interface. pub const INT = mmio(Address + 0x0000001c, 32, packed struct { - SPIF: bool, // bit offset: 0 desc: SPI interrupt flag. Set by the SPI interface to generate an interrupt. Cleared by writing a 1 to this bit. Note: this bit will be set once when SPIE = 1 and at least one of SPIF and WCOL bits is 1. However, only when the SPI Interrupt bit is set and SPI0 Interrupt is enabled in the NVIC, SPI based interrupt can be processed by interrupt handling software. + SPIF: u1, // bit offset: 0 desc: SPI interrupt flag. Set by the SPI interface to generate an interrupt. Cleared by writing a 1 to this bit. Note: this bit will be set once when SPIE = 1 and at least one of SPIF and WCOL bits is 1. However, only when the SPI Interrupt bit is set and SPI0 Interrupt is enabled in the NVIC, SPI based interrupt can be processed by interrupt handling software. + // RESERVED: u7, // bit offset: 1 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding31: u1 = 0, padding30: u1 = 0, padding29: u1 = 0, @@ -2474,8 +3441,9 @@ pub const RTC = extern struct { pub const Address: u32 = 0x40024000; // byte offset: 0 Interrupt Location Register pub const ILR = mmio(Address + 0x00000000, 32, packed struct { - RTCCIF: bool, // bit offset: 0 desc: When one, the Counter Increment Interrupt block generated an interrupt. Writing a one to this bit location clears the counter increment interrupt. - RTCALF: bool, // bit offset: 1 desc: When one, the alarm registers generated an interrupt. Writing a one to this bit location clears the alarm interrupt. + RTCCIF: u1, // bit offset: 0 desc: When one, the Counter Increment Interrupt block generated an interrupt. Writing a one to this bit location clears the counter increment interrupt. + RTCALF: u1, // bit offset: 1 desc: When one, the alarm registers generated an interrupt. Writing a one to this bit location clears the alarm interrupt. + // RESERVED: u11, // bit offset: 21 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -2509,11 +3477,22 @@ pub const RTC = extern struct { }); // byte offset: 8 Clock Control Register pub const CCR = mmio(Address + 0x00000008, 32, packed struct { - CLKEN: bool, // bit offset: 0 desc: Clock Enable. - CTCRST: bool, // bit offset: 1 desc: CTC Reset. + CLKEN: enum(u1) { // bit offset: 0 desc: Clock Enable. + @"THE_TIME_COUNTERS_AR" = 1, // desc: The time counters are enabled. + @"THE_TIME_COUNTERS_AR" = 0, // desc: The time counters are disabled so that they may be initialized. + }, + CTCRST: enum(u1) { // bit offset: 1 desc: CTC Reset. + @"RESET" = 1, // desc: When one, the elements in the internal oscillator divider are reset, and remain reset until CCR[1] is changed to zero. This is the divider that generates the 1 Hz clock from the 32.768 kHz crystal. The state of the divider is not visible to software. + @"NO_EFFECT_" = 0, // desc: No effect. + }, + // RESERVED: u2, // bit offset: 2 desc: Internal test mode controls. These bits must be 0 for normal RTC operation. reserved2: u1 = 0, reserved1: u1 = 0, - CCALEN: bool, // bit offset: 4 desc: Calibration counter enable. + CCALEN: enum(u1) { // bit offset: 4 desc: Calibration counter enable. + @"THE_CALIBRATION_COUN" = 1, // desc: The calibration counter is disabled and reset to zero. + @"THE_CALIBRATION_COUN" = 0, // desc: The calibration counter is enabled and counting, using the 1 Hz clock. When the calibration counter is equal to the value of the CALIBRATION register, the counter resets and repeats counting up to the value of the CALIBRATION register. See Section 30.6.4.2 and Section 30.6.5. + }, + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -2544,14 +3523,15 @@ pub const RTC = extern struct { }); // byte offset: 12 Counter Increment Interrupt Register pub const CIIR = mmio(Address + 0x0000000c, 32, packed struct { - IMSEC: bool, // bit offset: 0 desc: When 1, an increment of the Second value generates an interrupt. - IMMIN: bool, // bit offset: 1 desc: When 1, an increment of the Minute value generates an interrupt. - IMHOUR: bool, // bit offset: 2 desc: When 1, an increment of the Hour value generates an interrupt. - IMDOM: bool, // bit offset: 3 desc: When 1, an increment of the Day of Month value generates an interrupt. - IMDOW: bool, // bit offset: 4 desc: When 1, an increment of the Day of Week value generates an interrupt. - IMDOY: bool, // bit offset: 5 desc: When 1, an increment of the Day of Year value generates an interrupt. - IMMON: bool, // bit offset: 6 desc: When 1, an increment of the Month value generates an interrupt. - IMYEAR: bool, // bit offset: 7 desc: When 1, an increment of the Year value generates an interrupt. + IMSEC: u1, // bit offset: 0 desc: When 1, an increment of the Second value generates an interrupt. + IMMIN: u1, // bit offset: 1 desc: When 1, an increment of the Minute value generates an interrupt. + IMHOUR: u1, // bit offset: 2 desc: When 1, an increment of the Hour value generates an interrupt. + IMDOM: u1, // bit offset: 3 desc: When 1, an increment of the Day of Month value generates an interrupt. + IMDOW: u1, // bit offset: 4 desc: When 1, an increment of the Day of Week value generates an interrupt. + IMDOY: u1, // bit offset: 5 desc: When 1, an increment of the Day of Year value generates an interrupt. + IMMON: u1, // bit offset: 6 desc: When 1, an increment of the Month value generates an interrupt. + IMYEAR: u1, // bit offset: 7 desc: When 1, an increment of the Year value generates an interrupt. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2579,14 +3559,15 @@ pub const RTC = extern struct { }); // byte offset: 16 Alarm Mask Register pub const AMR = mmio(Address + 0x00000010, 32, packed struct { - AMRSEC: bool, // bit offset: 0 desc: When 1, the Second value is not compared for the alarm. - AMRMIN: bool, // bit offset: 1 desc: When 1, the Minutes value is not compared for the alarm. - AMRHOUR: bool, // bit offset: 2 desc: When 1, the Hour value is not compared for the alarm. - AMRDOM: bool, // bit offset: 3 desc: When 1, the Day of Month value is not compared for the alarm. - AMRDOW: bool, // bit offset: 4 desc: When 1, the Day of Week value is not compared for the alarm. - AMRDOY: bool, // bit offset: 5 desc: When 1, the Day of Year value is not compared for the alarm. - AMRMON: bool, // bit offset: 6 desc: When 1, the Month value is not compared for the alarm. - AMRYEAR: bool, // bit offset: 7 desc: When 1, the Year value is not compared for the alarm. + AMRSEC: u1, // bit offset: 0 desc: When 1, the Second value is not compared for the alarm. + AMRMIN: u1, // bit offset: 1 desc: When 1, the Minutes value is not compared for the alarm. + AMRHOUR: u1, // bit offset: 2 desc: When 1, the Hour value is not compared for the alarm. + AMRDOM: u1, // bit offset: 3 desc: When 1, the Day of Month value is not compared for the alarm. + AMRDOW: u1, // bit offset: 4 desc: When 1, the Day of Week value is not compared for the alarm. + AMRDOY: u1, // bit offset: 5 desc: When 1, the Day of Year value is not compared for the alarm. + AMRMON: u1, // bit offset: 6 desc: When 1, the Month value is not compared for the alarm. + AMRYEAR: u1, // bit offset: 7 desc: When 1, the Year value is not compared for the alarm. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -2615,16 +3596,20 @@ pub const RTC = extern struct { // byte offset: 20 Consolidated Time Register 0 pub const CTIME0 = mmio(Address + 0x00000014, 32, packed struct { SECONDS: u6, // bit offset: 0 desc: Seconds value in the range of 0 to 59 + // RESERVED: u2, // bit offset: 6 desc: Reserved. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, MINUTES: u6, // bit offset: 8 desc: Minutes value in the range of 0 to 59 - reserved8: u1 = 0, - reserved7: u1 = 0, + // RESERVED: u2, // bit offset: 14 desc: Reserved. The value read from a reserved bit is not defined. + reserved4: u1 = 0, + reserved3: u1 = 0, HOURS: u5, // bit offset: 16 desc: Hours value in the range of 0 to 23 - reserved14: u1 = 0, - reserved13: u1 = 0, - reserved12: u1 = 0, + // RESERVED: u3, // bit offset: 21 desc: Reserved. The value read from a reserved bit is not defined. + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, DOW: u3, // bit offset: 24 desc: Day of week value in the range of 0 to 6 + // RESERVED: u5, // bit offset: 27 desc: Reserved. The value read from a reserved bit is not defined. padding5: u1 = 0, padding4: u1 = 0, padding3: u1 = 0, @@ -2634,15 +3619,18 @@ pub const RTC = extern struct { // byte offset: 24 Consolidated Time Register 1 pub const CTIME1 = mmio(Address + 0x00000018, 32, packed struct { DOM: u5, // bit offset: 0 desc: Day of month value in the range of 1 to 28, 29, 30, or 31 (depending on the month and whether it is a leap year). + // RESERVED: u3, // bit offset: 5 desc: Reserved. The value read from a reserved bit is not defined. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, MONTH: u4, // bit offset: 8 desc: Month value in the range of 1 to 12. - reserved8: u1 = 0, + // RESERVED: u4, // bit offset: 12 desc: Reserved. The value read from a reserved bit is not defined. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, + reserved4: u1 = 0, YEAR: u12, // bit offset: 16 desc: Year value in the range of 0 to 4095. + // RESERVED: u4, // bit offset: 28 desc: Reserved. The value read from a reserved bit is not defined. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -2651,6 +3639,7 @@ pub const RTC = extern struct { // byte offset: 28 Consolidated Time Register 2 pub const CTIME2 = mmio(Address + 0x0000001c, 32, packed struct { DOY: u12, // bit offset: 0 desc: Day of year value in the range of 1 to 365 (366 for leap years). + // RESERVED: u20, // bit offset: 12 desc: Reserved. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -2675,6 +3664,7 @@ pub const RTC = extern struct { // byte offset: 32 Seconds Counter pub const SEC = mmio(Address + 0x00000020, 32, packed struct { SECONDS: u6, // bit offset: 0 desc: Seconds value in the range of 0 to 59 + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -2705,6 +3695,7 @@ pub const RTC = extern struct { // byte offset: 36 Minutes Register pub const MIN = mmio(Address + 0x00000024, 32, packed struct { MINUTES: u6, // bit offset: 0 desc: Minutes value in the range of 0 to 59 + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -2735,6 +3726,7 @@ pub const RTC = extern struct { // byte offset: 40 Hours Register pub const HRS = mmio(Address + 0x00000028, 32, packed struct { HOURS: u5, // bit offset: 0 desc: Hours value in the range of 0 to 23 + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -2766,6 +3758,7 @@ pub const RTC = extern struct { // byte offset: 44 Day of Month Register pub const DOM = mmio(Address + 0x0000002c, 32, packed struct { DOM: u5, // bit offset: 0 desc: Day of month value in the range of 1 to 28, 29, 30, or 31 (depending on the month and whether it is a leap year). + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -2797,6 +3790,7 @@ pub const RTC = extern struct { // byte offset: 48 Day of Week Register pub const DOW = mmio(Address + 0x00000030, 32, packed struct { DOW: u3, // bit offset: 0 desc: Day of week value in the range of 0 to 6. + // RESERVED: u29, // bit offset: 3 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -2830,6 +3824,7 @@ pub const RTC = extern struct { // byte offset: 52 Day of Year Register pub const DOY = mmio(Address + 0x00000034, 32, packed struct { DOY: u9, // bit offset: 0 desc: Day of year value in the range of 1 to 365 (366 for leap years). + // RESERVED: u23, // bit offset: 9 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -2857,6 +3852,7 @@ pub const RTC = extern struct { // byte offset: 56 Months Register pub const MONTH = mmio(Address + 0x00000038, 32, packed struct { MONTH: u4, // bit offset: 0 desc: Month value in the range of 1 to 12. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -2889,6 +3885,7 @@ pub const RTC = extern struct { // byte offset: 60 Years Register pub const YEAR = mmio(Address + 0x0000003c, 32, packed struct { YEAR: u12, // bit offset: 0 desc: Year value in the range of 0 to 4095. + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -2913,7 +3910,10 @@ pub const RTC = extern struct { // byte offset: 64 Calibration Value Register pub const CALIBRATION = mmio(Address + 0x00000040, 32, packed struct { CALVAL: u17, // bit offset: 0 desc: If enabled, the calibration counter counts up to this value. The maximum value is 131, 072 corresponding to about 36.4 hours. Calibration is disabled if CALVAL = 0. - CALDIR: bool, // bit offset: 17 desc: Calibration direction + CALDIR: enum(u1) { // bit offset: 17 desc: Calibration direction + @"BACKWARD_CALIBRATION" = 1, // desc: Backward calibration. When CALVAL is equal to the calibration counter, the RTC timers will stop incrementing for 1 second. + @"FORWARD_CALIBRATION_" = 0, // desc: Forward calibration. When CALVAL is equal to the calibration counter, the RTC timers will jump by 2 seconds. + }, padding14: u1 = 0, padding13: u1 = 0, padding12: u1 = 0, @@ -2951,11 +3951,13 @@ pub const RTC = extern struct { }); // byte offset: 88 RTC Auxiliary Enable register pub const RTC_AUXEN = mmio(Address + 0x00000058, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RTC_OSCFEN: bool, // bit offset: 4 desc: Oscillator Fail Detect interrupt enable. When 0: the RTC Oscillator Fail detect interrupt is disabled. When 1: the RTC Oscillator Fail detect interrupt is enabled. See Section 30.6.2.5. + RTC_OSCFEN: u1, // bit offset: 4 desc: Oscillator Fail Detect interrupt enable. When 0: the RTC Oscillator Fail detect interrupt is disabled. When 1: the RTC Oscillator Fail detect interrupt is enabled. See Section 30.6.2.5. + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -2986,13 +3988,16 @@ pub const RTC = extern struct { }); // byte offset: 92 RTC Auxiliary control register pub const RTC_AUX = mmio(Address + 0x0000005c, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RTC_OSCF: bool, // bit offset: 4 desc: RTC Oscillator Fail detect flag. Read: this bit is set if the RTC oscillator stops, and when RTC power is first turned on. An interrupt will occur when this bit is set, the RTC_OSCFEN bit in RTC_AUXEN is a 1, and the RTC interrupt is enabled in the NVIC. Write: writing a 1 to this bit clears the flag. - reserved2: u1 = 0, - RTC_PDOUT: bool, // bit offset: 6 desc: When 0: the RTC_ALARM pin reflects the RTC alarm status. When 1: the RTC_ALARM pin indicates Deep Power-down mode. + RTC_OSCF: u1, // bit offset: 4 desc: RTC Oscillator Fail detect flag. Read: this bit is set if the RTC oscillator stops, and when RTC power is first turned on. An interrupt will occur when this bit is set, the RTC_OSCFEN bit in RTC_AUXEN is a 1, and the RTC interrupt is enabled in the NVIC. Write: writing a 1 to this bit clears the flag. + // RESERVED: u1, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. + reserved5: u1 = 0, + RTC_PDOUT: u1, // bit offset: 6 desc: When 0: the RTC_ALARM pin reflects the RTC alarm status. When 1: the RTC_ALARM pin indicates Deep Power-down mode. + // RESERVED: u25, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -3022,6 +4027,7 @@ pub const RTC = extern struct { // byte offset: 96 Alarm value for Seconds pub const ASEC = mmio(Address + 0x00000060, 32, packed struct { SECONDS: u6, // bit offset: 0 desc: Seconds value in the range of 0 to 59 + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -3052,6 +4058,7 @@ pub const RTC = extern struct { // byte offset: 100 Alarm value for Minutes pub const AMIN = mmio(Address + 0x00000064, 32, packed struct { MINUTES: u6, // bit offset: 0 desc: Minutes value in the range of 0 to 59 + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -3082,6 +4089,7 @@ pub const RTC = extern struct { // byte offset: 104 Alarm value for Hours pub const AHRS = mmio(Address + 0x00000068, 32, packed struct { HOURS: u5, // bit offset: 0 desc: Hours value in the range of 0 to 23 + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -3113,6 +4121,7 @@ pub const RTC = extern struct { // byte offset: 108 Alarm value for Day of Month pub const ADOM = mmio(Address + 0x0000006c, 32, packed struct { DOM: u5, // bit offset: 0 desc: Day of month value in the range of 1 to 28, 29, 30, or 31 (depending on the month and whether it is a leap year). + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -3144,6 +4153,7 @@ pub const RTC = extern struct { // byte offset: 112 Alarm value for Day of Week pub const ADOW = mmio(Address + 0x00000070, 32, packed struct { DOW: u3, // bit offset: 0 desc: Day of week value in the range of 0 to 6. + // RESERVED: u29, // bit offset: 3 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -3177,6 +4187,7 @@ pub const RTC = extern struct { // byte offset: 116 Alarm value for Day of Year pub const ADOY = mmio(Address + 0x00000074, 32, packed struct { DOY: u9, // bit offset: 0 desc: Day of year value in the range of 1 to 365 (366 for leap years). + // RESERVED: u23, // bit offset: 9 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -3204,6 +4215,7 @@ pub const RTC = extern struct { // byte offset: 120 Alarm value for Months pub const AMON = mmio(Address + 0x00000078, 32, packed struct { MONTH: u4, // bit offset: 0 desc: Month value in the range of 1 to 12. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -3236,6 +4248,7 @@ pub const RTC = extern struct { // byte offset: 124 Alarm value for Year pub const AYRS = mmio(Address + 0x0000007c, 32, packed struct { YEAR: u12, // bit offset: 0 desc: Year value in the range of 0 to 4095. + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -3262,9 +4275,17 @@ pub const GPIOINT = extern struct { pub const Address: u32 = 0x40028080; // byte offset: 0 GPIO overall Interrupt Status. pub const STATUS = mmio(Address + 0x00000000, 32, packed struct { - P0INT: bool, // bit offset: 0 desc: Port 0 GPIO interrupt pending. + P0INT: enum(u1) { // bit offset: 0 desc: Port 0 GPIO interrupt pending. + @"NO_PENDING_INTERRUPT" = 0, // desc: No pending interrupts on Port 0. + @"AT_LEAST_ONE_PENDING" = 1, // desc: At least one pending interrupt on Port 0. + }, + // RESERVED: u1, // bit offset: 1 desc: Reserved. The value read from a reserved bit is not defined. reserved1: u1 = 0, - P2INT: bool, // bit offset: 2 desc: Port 2 GPIO interrupt pending. + P2INT: enum(u1) { // bit offset: 2 desc: Port 2 GPIO interrupt pending. + @"NO_PENDING_INTERRUPT" = 0, // desc: No pending interrupts on Port 2. + @"AT_LEAST_ONE_PENDING" = 1, // desc: At least one pending interrupt on Port 2. + }, + // RESERVED: u30, // bit offset: 2 desc: Reserved. The value read from a reserved bit is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -3297,195 +4318,201 @@ pub const GPIOINT = extern struct { }); // byte offset: 4 GPIO Interrupt Status for Rising edge for Port 0. pub const STATR0 = mmio(Address + 0x00000004, 32, packed struct { - P0_0REI: bool, // bit offset: 0 desc: Status of Rising Edge Interrupt for P0[0]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_1REI: bool, // bit offset: 1 desc: Status of Rising Edge Interrupt for P0[1]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_2REI: bool, // bit offset: 2 desc: Status of Rising Edge Interrupt for P0[2]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_3REI: bool, // bit offset: 3 desc: Status of Rising Edge Interrupt for P0[3]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_4REI: bool, // bit offset: 4 desc: Status of Rising Edge Interrupt for P0[4]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_5REI: bool, // bit offset: 5 desc: Status of Rising Edge Interrupt for P0[5]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_6REI: bool, // bit offset: 6 desc: Status of Rising Edge Interrupt for P0[6]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_7REI: bool, // bit offset: 7 desc: Status of Rising Edge Interrupt for P0[7]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_8REI: bool, // bit offset: 8 desc: Status of Rising Edge Interrupt for P0[8]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_9REI: bool, // bit offset: 9 desc: Status of Rising Edge Interrupt for P0[9]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_10REI: bool, // bit offset: 10 desc: Status of Rising Edge Interrupt for P0[10]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_11REI: bool, // bit offset: 11 desc: Status of Rising Edge Interrupt for P0[11]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_12REI: bool, // bit offset: 12 desc: Status of Rising Edge Interrupt for P0[12]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_13REI: bool, // bit offset: 13 desc: Status of Rising Edge Interrupt for P0[13]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_14REI: bool, // bit offset: 14 desc: Status of Rising Edge Interrupt for P0[14]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_15REI: bool, // bit offset: 15 desc: Status of Rising Edge Interrupt for P0[15]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_16REI: bool, // bit offset: 16 desc: Status of Rising Edge Interrupt for P0[16]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_17REI: bool, // bit offset: 17 desc: Status of Rising Edge Interrupt for P0[17]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_18REI: bool, // bit offset: 18 desc: Status of Rising Edge Interrupt for P0[18]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_19REI: bool, // bit offset: 19 desc: Status of Rising Edge Interrupt for P0[19]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_20REI: bool, // bit offset: 20 desc: Status of Rising Edge Interrupt for P0[20]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_21REI: bool, // bit offset: 21 desc: Status of Rising Edge Interrupt for P0[21]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_22REI: bool, // bit offset: 22 desc: Status of Rising Edge Interrupt for P0[22]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_23REI: bool, // bit offset: 23 desc: Status of Rising Edge Interrupt for P0[23]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_24REI: bool, // bit offset: 24 desc: Status of Rising Edge Interrupt for P0[24]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_25REI: bool, // bit offset: 25 desc: Status of Rising Edge Interrupt for P0[25]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_26REI: bool, // bit offset: 26 desc: Status of Rising Edge Interrupt for P0[26]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_27REI: bool, // bit offset: 27 desc: Status of Rising Edge Interrupt for P0[27]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_28REI: bool, // bit offset: 28 desc: Status of Rising Edge Interrupt for P0[28]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_29REI: bool, // bit offset: 29 desc: Status of Rising Edge Interrupt for P0[29]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P0_30REI: bool, // bit offset: 30 desc: Status of Rising Edge Interrupt for P0[30]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_0REI: u1, // bit offset: 0 desc: Status of Rising Edge Interrupt for P0[0]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_1REI: u1, // bit offset: 1 desc: Status of Rising Edge Interrupt for P0[1]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_2REI: u1, // bit offset: 2 desc: Status of Rising Edge Interrupt for P0[2]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_3REI: u1, // bit offset: 3 desc: Status of Rising Edge Interrupt for P0[3]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_4REI: u1, // bit offset: 4 desc: Status of Rising Edge Interrupt for P0[4]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_5REI: u1, // bit offset: 5 desc: Status of Rising Edge Interrupt for P0[5]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_6REI: u1, // bit offset: 6 desc: Status of Rising Edge Interrupt for P0[6]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_7REI: u1, // bit offset: 7 desc: Status of Rising Edge Interrupt for P0[7]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_8REI: u1, // bit offset: 8 desc: Status of Rising Edge Interrupt for P0[8]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_9REI: u1, // bit offset: 9 desc: Status of Rising Edge Interrupt for P0[9]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_10REI: u1, // bit offset: 10 desc: Status of Rising Edge Interrupt for P0[10]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_11REI: u1, // bit offset: 11 desc: Status of Rising Edge Interrupt for P0[11]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_12REI: u1, // bit offset: 12 desc: Status of Rising Edge Interrupt for P0[12]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_13REI: u1, // bit offset: 13 desc: Status of Rising Edge Interrupt for P0[13]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_14REI: u1, // bit offset: 14 desc: Status of Rising Edge Interrupt for P0[14]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_15REI: u1, // bit offset: 15 desc: Status of Rising Edge Interrupt for P0[15]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_16REI: u1, // bit offset: 16 desc: Status of Rising Edge Interrupt for P0[16]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_17REI: u1, // bit offset: 17 desc: Status of Rising Edge Interrupt for P0[17]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_18REI: u1, // bit offset: 18 desc: Status of Rising Edge Interrupt for P0[18]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_19REI: u1, // bit offset: 19 desc: Status of Rising Edge Interrupt for P0[19]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_20REI: u1, // bit offset: 20 desc: Status of Rising Edge Interrupt for P0[20]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_21REI: u1, // bit offset: 21 desc: Status of Rising Edge Interrupt for P0[21]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_22REI: u1, // bit offset: 22 desc: Status of Rising Edge Interrupt for P0[22]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_23REI: u1, // bit offset: 23 desc: Status of Rising Edge Interrupt for P0[23]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_24REI: u1, // bit offset: 24 desc: Status of Rising Edge Interrupt for P0[24]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_25REI: u1, // bit offset: 25 desc: Status of Rising Edge Interrupt for P0[25]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_26REI: u1, // bit offset: 26 desc: Status of Rising Edge Interrupt for P0[26]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_27REI: u1, // bit offset: 27 desc: Status of Rising Edge Interrupt for P0[27]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_28REI: u1, // bit offset: 28 desc: Status of Rising Edge Interrupt for P0[28]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_29REI: u1, // bit offset: 29 desc: Status of Rising Edge Interrupt for P0[29]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P0_30REI: u1, // bit offset: 30 desc: Status of Rising Edge Interrupt for P0[30]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 8 GPIO Interrupt Status for Falling edge for Port 0. pub const STATF0 = mmio(Address + 0x00000008, 32, packed struct { - P0_0FEI: bool, // bit offset: 0 desc: Status of Falling Edge Interrupt for P0[0]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_1FEI: bool, // bit offset: 1 desc: Status of Falling Edge Interrupt for P0[1]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_2FEI: bool, // bit offset: 2 desc: Status of Falling Edge Interrupt for P0[2]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_3FEI: bool, // bit offset: 3 desc: Status of Falling Edge Interrupt for P0[3]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_4FEI: bool, // bit offset: 4 desc: Status of Falling Edge Interrupt for P0[4]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_5FEI: bool, // bit offset: 5 desc: Status of Falling Edge Interrupt for P0[5]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_6FEI: bool, // bit offset: 6 desc: Status of Falling Edge Interrupt for P0[6]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_7FEI: bool, // bit offset: 7 desc: Status of Falling Edge Interrupt for P0[7]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_8FEI: bool, // bit offset: 8 desc: Status of Falling Edge Interrupt for P0[8]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_9FEI: bool, // bit offset: 9 desc: Status of Falling Edge Interrupt for P0[9]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_10FEI: bool, // bit offset: 10 desc: Status of Falling Edge Interrupt for P0[10]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_11FEI: bool, // bit offset: 11 desc: Status of Falling Edge Interrupt for P0[11]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_12FEI: bool, // bit offset: 12 desc: Status of Falling Edge Interrupt for P0[12]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_13FEI: bool, // bit offset: 13 desc: Status of Falling Edge Interrupt for P0[13]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_14FEI: bool, // bit offset: 14 desc: Status of Falling Edge Interrupt for P0[14]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_15FEI: bool, // bit offset: 15 desc: Status of Falling Edge Interrupt for P0[15]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_16FEI: bool, // bit offset: 16 desc: Status of Falling Edge Interrupt for P0[16]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_17FEI: bool, // bit offset: 17 desc: Status of Falling Edge Interrupt for P0[17]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_18FEI: bool, // bit offset: 18 desc: Status of Falling Edge Interrupt for P0[18]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_19FEI: bool, // bit offset: 19 desc: Status of Falling Edge Interrupt for P0[19]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_20FEI: bool, // bit offset: 20 desc: Status of Falling Edge Interrupt for P0[20]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_21FEI: bool, // bit offset: 21 desc: Status of Falling Edge Interrupt for P0[21]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_22FEI: bool, // bit offset: 22 desc: Status of Falling Edge Interrupt for P0[22]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_23FEI: bool, // bit offset: 23 desc: Status of Falling Edge Interrupt for P0[23]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_24FEI: bool, // bit offset: 24 desc: Status of Falling Edge Interrupt for P0[24]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_25FEI: bool, // bit offset: 25 desc: Status of Falling Edge Interrupt for P0[25]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_26FEI: bool, // bit offset: 26 desc: Status of Falling Edge Interrupt for P0[26]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_27FEI: bool, // bit offset: 27 desc: Status of Falling Edge Interrupt for P0[27]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_28FEI: bool, // bit offset: 28 desc: Status of Falling Edge Interrupt for P0[28]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_29FEI: bool, // bit offset: 29 desc: Status of Falling Edge Interrupt for P0[29]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P0_30FEI: bool, // bit offset: 30 desc: Status of Falling Edge Interrupt for P0[30]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_0FEI: u1, // bit offset: 0 desc: Status of Falling Edge Interrupt for P0[0]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_1FEI: u1, // bit offset: 1 desc: Status of Falling Edge Interrupt for P0[1]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_2FEI: u1, // bit offset: 2 desc: Status of Falling Edge Interrupt for P0[2]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_3FEI: u1, // bit offset: 3 desc: Status of Falling Edge Interrupt for P0[3]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_4FEI: u1, // bit offset: 4 desc: Status of Falling Edge Interrupt for P0[4]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_5FEI: u1, // bit offset: 5 desc: Status of Falling Edge Interrupt for P0[5]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_6FEI: u1, // bit offset: 6 desc: Status of Falling Edge Interrupt for P0[6]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_7FEI: u1, // bit offset: 7 desc: Status of Falling Edge Interrupt for P0[7]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_8FEI: u1, // bit offset: 8 desc: Status of Falling Edge Interrupt for P0[8]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_9FEI: u1, // bit offset: 9 desc: Status of Falling Edge Interrupt for P0[9]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_10FEI: u1, // bit offset: 10 desc: Status of Falling Edge Interrupt for P0[10]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_11FEI: u1, // bit offset: 11 desc: Status of Falling Edge Interrupt for P0[11]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_12FEI: u1, // bit offset: 12 desc: Status of Falling Edge Interrupt for P0[12]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_13FEI: u1, // bit offset: 13 desc: Status of Falling Edge Interrupt for P0[13]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_14FEI: u1, // bit offset: 14 desc: Status of Falling Edge Interrupt for P0[14]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_15FEI: u1, // bit offset: 15 desc: Status of Falling Edge Interrupt for P0[15]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_16FEI: u1, // bit offset: 16 desc: Status of Falling Edge Interrupt for P0[16]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_17FEI: u1, // bit offset: 17 desc: Status of Falling Edge Interrupt for P0[17]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_18FEI: u1, // bit offset: 18 desc: Status of Falling Edge Interrupt for P0[18]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_19FEI: u1, // bit offset: 19 desc: Status of Falling Edge Interrupt for P0[19]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_20FEI: u1, // bit offset: 20 desc: Status of Falling Edge Interrupt for P0[20]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_21FEI: u1, // bit offset: 21 desc: Status of Falling Edge Interrupt for P0[21]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_22FEI: u1, // bit offset: 22 desc: Status of Falling Edge Interrupt for P0[22]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_23FEI: u1, // bit offset: 23 desc: Status of Falling Edge Interrupt for P0[23]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_24FEI: u1, // bit offset: 24 desc: Status of Falling Edge Interrupt for P0[24]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_25FEI: u1, // bit offset: 25 desc: Status of Falling Edge Interrupt for P0[25]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_26FEI: u1, // bit offset: 26 desc: Status of Falling Edge Interrupt for P0[26]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_27FEI: u1, // bit offset: 27 desc: Status of Falling Edge Interrupt for P0[27]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_28FEI: u1, // bit offset: 28 desc: Status of Falling Edge Interrupt for P0[28]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_29FEI: u1, // bit offset: 29 desc: Status of Falling Edge Interrupt for P0[29]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P0_30FEI: u1, // bit offset: 30 desc: Status of Falling Edge Interrupt for P0[30]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 12 GPIO Interrupt Clear. pub const CLR0 = mmio(Address + 0x0000000c, 32, packed struct { - P0_0CI: bool, // bit offset: 0 desc: Clear GPIO port Interrupts for P0[0]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_1CI: bool, // bit offset: 1 desc: Clear GPIO port Interrupts for P0[1]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_2CI: bool, // bit offset: 2 desc: Clear GPIO port Interrupts for P0[2]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_3CI: bool, // bit offset: 3 desc: Clear GPIO port Interrupts for P0[3]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_4CI: bool, // bit offset: 4 desc: Clear GPIO port Interrupts for P0[4]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_5CI: bool, // bit offset: 5 desc: Clear GPIO port Interrupts for P0[5]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_6CI: bool, // bit offset: 6 desc: Clear GPIO port Interrupts for P0[6]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_7CI: bool, // bit offset: 7 desc: Clear GPIO port Interrupts for P0[7]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_8CI: bool, // bit offset: 8 desc: Clear GPIO port Interrupts for P0[8]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_9CI: bool, // bit offset: 9 desc: Clear GPIO port Interrupts for P0[9]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_10CI: bool, // bit offset: 10 desc: Clear GPIO port Interrupts for P0[10]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_11CI: bool, // bit offset: 11 desc: Clear GPIO port Interrupts for P0[11]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_12CI: bool, // bit offset: 12 desc: Clear GPIO port Interrupts for P0[12]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_13CI: bool, // bit offset: 13 desc: Clear GPIO port Interrupts for P0[13]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_14CI: bool, // bit offset: 14 desc: Clear GPIO port Interrupts for P0[14]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_15CI: bool, // bit offset: 15 desc: Clear GPIO port Interrupts for P0[15]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_16CI: bool, // bit offset: 16 desc: Clear GPIO port Interrupts for P0[16]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_17CI: bool, // bit offset: 17 desc: Clear GPIO port Interrupts for P0[17]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_18CI: bool, // bit offset: 18 desc: Clear GPIO port Interrupts for P0[18]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_19CI: bool, // bit offset: 19 desc: Clear GPIO port Interrupts for P0[19]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_20CI: bool, // bit offset: 20 desc: Clear GPIO port Interrupts for P0[20]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_21CI: bool, // bit offset: 21 desc: Clear GPIO port Interrupts for P0[21]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_22CI: bool, // bit offset: 22 desc: Clear GPIO port Interrupts for P0[22]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_23CI: bool, // bit offset: 23 desc: Clear GPIO port Interrupts for P0[23]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_24CI: bool, // bit offset: 24 desc: Clear GPIO port Interrupts for P0[24]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_25CI: bool, // bit offset: 25 desc: Clear GPIO port Interrupts for P0[25]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_26CI: bool, // bit offset: 26 desc: Clear GPIO port Interrupts for P0[26]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_27CI: bool, // bit offset: 27 desc: Clear GPIO port Interrupts for P0[27]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_28CI: bool, // bit offset: 28 desc: Clear GPIO port Interrupts for P0[28]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_29CI: bool, // bit offset: 29 desc: Clear GPIO port Interrupts for P0[29]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P0_30CI: bool, // bit offset: 30 desc: Clear GPIO port Interrupts for P0[30]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_0CI: u1, // bit offset: 0 desc: Clear GPIO port Interrupts for P0[0]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_1CI: u1, // bit offset: 1 desc: Clear GPIO port Interrupts for P0[1]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_2CI: u1, // bit offset: 2 desc: Clear GPIO port Interrupts for P0[2]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_3CI: u1, // bit offset: 3 desc: Clear GPIO port Interrupts for P0[3]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_4CI: u1, // bit offset: 4 desc: Clear GPIO port Interrupts for P0[4]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_5CI: u1, // bit offset: 5 desc: Clear GPIO port Interrupts for P0[5]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_6CI: u1, // bit offset: 6 desc: Clear GPIO port Interrupts for P0[6]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_7CI: u1, // bit offset: 7 desc: Clear GPIO port Interrupts for P0[7]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_8CI: u1, // bit offset: 8 desc: Clear GPIO port Interrupts for P0[8]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_9CI: u1, // bit offset: 9 desc: Clear GPIO port Interrupts for P0[9]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_10CI: u1, // bit offset: 10 desc: Clear GPIO port Interrupts for P0[10]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_11CI: u1, // bit offset: 11 desc: Clear GPIO port Interrupts for P0[11]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_12CI: u1, // bit offset: 12 desc: Clear GPIO port Interrupts for P0[12]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_13CI: u1, // bit offset: 13 desc: Clear GPIO port Interrupts for P0[13]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_14CI: u1, // bit offset: 14 desc: Clear GPIO port Interrupts for P0[14]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_15CI: u1, // bit offset: 15 desc: Clear GPIO port Interrupts for P0[15]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_16CI: u1, // bit offset: 16 desc: Clear GPIO port Interrupts for P0[16]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_17CI: u1, // bit offset: 17 desc: Clear GPIO port Interrupts for P0[17]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_18CI: u1, // bit offset: 18 desc: Clear GPIO port Interrupts for P0[18]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_19CI: u1, // bit offset: 19 desc: Clear GPIO port Interrupts for P0[19]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_20CI: u1, // bit offset: 20 desc: Clear GPIO port Interrupts for P0[20]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_21CI: u1, // bit offset: 21 desc: Clear GPIO port Interrupts for P0[21]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_22CI: u1, // bit offset: 22 desc: Clear GPIO port Interrupts for P0[22]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_23CI: u1, // bit offset: 23 desc: Clear GPIO port Interrupts for P0[23]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_24CI: u1, // bit offset: 24 desc: Clear GPIO port Interrupts for P0[24]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_25CI: u1, // bit offset: 25 desc: Clear GPIO port Interrupts for P0[25]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_26CI: u1, // bit offset: 26 desc: Clear GPIO port Interrupts for P0[26]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_27CI: u1, // bit offset: 27 desc: Clear GPIO port Interrupts for P0[27]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_28CI: u1, // bit offset: 28 desc: Clear GPIO port Interrupts for P0[28]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_29CI: u1, // bit offset: 29 desc: Clear GPIO port Interrupts for P0[29]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P0_30CI: u1, // bit offset: 30 desc: Clear GPIO port Interrupts for P0[30]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 16 GPIO Interrupt Enable for Rising edge for Port 0. pub const ENR0 = mmio(Address + 0x00000010, 32, packed struct { - P0_0ER: bool, // bit offset: 0 desc: Enable rising edge interrupt for P0[0]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_1ER: bool, // bit offset: 1 desc: Enable rising edge interrupt for P0[1]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_2ER: bool, // bit offset: 2 desc: Enable rising edge interrupt for P0[2]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_3ER: bool, // bit offset: 3 desc: Enable rising edge interrupt for P0[3]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_4ER: bool, // bit offset: 4 desc: Enable rising edge interrupt for P0[4]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_5ER: bool, // bit offset: 5 desc: Enable rising edge interrupt for P0[5]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_6ER: bool, // bit offset: 6 desc: Enable rising edge interrupt for P0[6]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_7ER: bool, // bit offset: 7 desc: Enable rising edge interrupt for P0[7]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_8ER: bool, // bit offset: 8 desc: Enable rising edge interrupt for P0[8]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_9ER: bool, // bit offset: 9 desc: Enable rising edge interrupt for P0[9]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_10ER: bool, // bit offset: 10 desc: Enable rising edge interrupt for P0[10]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_11ER: bool, // bit offset: 11 desc: Enable rising edge interrupt for P0[11]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_12ER: bool, // bit offset: 12 desc: Enable rising edge interrupt for P0[12]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_13ER: bool, // bit offset: 13 desc: Enable rising edge interrupt for P0[13]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_14ER: bool, // bit offset: 14 desc: Enable rising edge interrupt for P0[14]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_15ER: bool, // bit offset: 15 desc: Enable rising edge interrupt for P0[15]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_16ER: bool, // bit offset: 16 desc: Enable rising edge interrupt for P0[16]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_17ER: bool, // bit offset: 17 desc: Enable rising edge interrupt for P0[17]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_18ER: bool, // bit offset: 18 desc: Enable rising edge interrupt for P0[18]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_19ER: bool, // bit offset: 19 desc: Enable rising edge interrupt for P0[19]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_20ER: bool, // bit offset: 20 desc: Enable rising edge interrupt for P0[20]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_21ER: bool, // bit offset: 21 desc: Enable rising edge interrupt for P0[21]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_22ER: bool, // bit offset: 22 desc: Enable rising edge interrupt for P0[22]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_23ER: bool, // bit offset: 23 desc: Enable rising edge interrupt for P0[23]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_24ER: bool, // bit offset: 24 desc: Enable rising edge interrupt for P0[24]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_25ER: bool, // bit offset: 25 desc: Enable rising edge interrupt for P0[25]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_26ER: bool, // bit offset: 26 desc: Enable rising edge interrupt for P0[26]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_27ER: bool, // bit offset: 27 desc: Enable rising edge interrupt for P0[27]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_28ER: bool, // bit offset: 28 desc: Enable rising edge interrupt for P0[28]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_29ER: bool, // bit offset: 29 desc: Enable rising edge interrupt for P0[29]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P0_30ER: bool, // bit offset: 30 desc: Enable rising edge interrupt for P0[30]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_0ER: u1, // bit offset: 0 desc: Enable rising edge interrupt for P0[0]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_1ER: u1, // bit offset: 1 desc: Enable rising edge interrupt for P0[1]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_2ER: u1, // bit offset: 2 desc: Enable rising edge interrupt for P0[2]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_3ER: u1, // bit offset: 3 desc: Enable rising edge interrupt for P0[3]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_4ER: u1, // bit offset: 4 desc: Enable rising edge interrupt for P0[4]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_5ER: u1, // bit offset: 5 desc: Enable rising edge interrupt for P0[5]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_6ER: u1, // bit offset: 6 desc: Enable rising edge interrupt for P0[6]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_7ER: u1, // bit offset: 7 desc: Enable rising edge interrupt for P0[7]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_8ER: u1, // bit offset: 8 desc: Enable rising edge interrupt for P0[8]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_9ER: u1, // bit offset: 9 desc: Enable rising edge interrupt for P0[9]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_10ER: u1, // bit offset: 10 desc: Enable rising edge interrupt for P0[10]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_11ER: u1, // bit offset: 11 desc: Enable rising edge interrupt for P0[11]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_12ER: u1, // bit offset: 12 desc: Enable rising edge interrupt for P0[12]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_13ER: u1, // bit offset: 13 desc: Enable rising edge interrupt for P0[13]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_14ER: u1, // bit offset: 14 desc: Enable rising edge interrupt for P0[14]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_15ER: u1, // bit offset: 15 desc: Enable rising edge interrupt for P0[15]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_16ER: u1, // bit offset: 16 desc: Enable rising edge interrupt for P0[16]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_17ER: u1, // bit offset: 17 desc: Enable rising edge interrupt for P0[17]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_18ER: u1, // bit offset: 18 desc: Enable rising edge interrupt for P0[18]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_19ER: u1, // bit offset: 19 desc: Enable rising edge interrupt for P0[19]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_20ER: u1, // bit offset: 20 desc: Enable rising edge interrupt for P0[20]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_21ER: u1, // bit offset: 21 desc: Enable rising edge interrupt for P0[21]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_22ER: u1, // bit offset: 22 desc: Enable rising edge interrupt for P0[22]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_23ER: u1, // bit offset: 23 desc: Enable rising edge interrupt for P0[23]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_24ER: u1, // bit offset: 24 desc: Enable rising edge interrupt for P0[24]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_25ER: u1, // bit offset: 25 desc: Enable rising edge interrupt for P0[25]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_26ER: u1, // bit offset: 26 desc: Enable rising edge interrupt for P0[26]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_27ER: u1, // bit offset: 27 desc: Enable rising edge interrupt for P0[27]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_28ER: u1, // bit offset: 28 desc: Enable rising edge interrupt for P0[28]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_29ER: u1, // bit offset: 29 desc: Enable rising edge interrupt for P0[29]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P0_30ER: u1, // bit offset: 30 desc: Enable rising edge interrupt for P0[30]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 20 GPIO Interrupt Enable for Falling edge for Port 0. pub const ENF0 = mmio(Address + 0x00000014, 32, packed struct { - P0_0EF: bool, // bit offset: 0 desc: Enable falling edge interrupt for P0[0]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_1EF: bool, // bit offset: 1 desc: Enable falling edge interrupt for P0[1]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_2EF: bool, // bit offset: 2 desc: Enable falling edge interrupt for P0[2]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_3EF: bool, // bit offset: 3 desc: Enable falling edge interrupt for P0[3]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_4EF: bool, // bit offset: 4 desc: Enable falling edge interrupt for P0[4]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_5EF: bool, // bit offset: 5 desc: Enable falling edge interrupt for P0[5]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_6EF: bool, // bit offset: 6 desc: Enable falling edge interrupt for P0[6]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_7EF: bool, // bit offset: 7 desc: Enable falling edge interrupt for P0[7]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_8EF: bool, // bit offset: 8 desc: Enable falling edge interrupt for P0[8]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_9EF: bool, // bit offset: 9 desc: Enable falling edge interrupt for P0[9]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_10EF: bool, // bit offset: 10 desc: Enable falling edge interrupt for P0[10]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_11EF: bool, // bit offset: 11 desc: Enable falling edge interrupt for P0[11]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_12EF: bool, // bit offset: 12 desc: Enable falling edge interrupt for P0[12]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_13EF: bool, // bit offset: 13 desc: Enable falling edge interrupt for P0[13]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_14EF: bool, // bit offset: 14 desc: Enable falling edge interrupt for P0[14]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_15EF: bool, // bit offset: 15 desc: Enable falling edge interrupt for P0[15]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_16EF: bool, // bit offset: 16 desc: Enable falling edge interrupt for P0[16]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_17EF: bool, // bit offset: 17 desc: Enable falling edge interrupt for P0[17]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_18EF: bool, // bit offset: 18 desc: Enable falling edge interrupt for P0[18]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_19EF: bool, // bit offset: 19 desc: Enable falling edge interrupt for P0[19]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_20EF: bool, // bit offset: 20 desc: Enable falling edge interrupt for P0[20]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_21EF: bool, // bit offset: 21 desc: Enable falling edge interrupt for P0[21]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_22EF: bool, // bit offset: 22 desc: Enable falling edge interrupt for P0[22]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_23EF: bool, // bit offset: 23 desc: Enable falling edge interrupt for P0[23]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_24EF: bool, // bit offset: 24 desc: Enable falling edge interrupt for P0[24]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_25EF: bool, // bit offset: 25 desc: Enable falling edge interrupt for P0[25]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_26EF: bool, // bit offset: 26 desc: Enable falling edge interrupt for P0[26]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_27EF: bool, // bit offset: 27 desc: Enable falling edge interrupt for P0[27]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_28EF: bool, // bit offset: 28 desc: Enable falling edge interrupt for P0[28]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_29EF: bool, // bit offset: 29 desc: Enable falling edge interrupt for P0[29]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P0_30EF: bool, // bit offset: 30 desc: Enable falling edge interrupt for P0[30]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_0EF: u1, // bit offset: 0 desc: Enable falling edge interrupt for P0[0]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_1EF: u1, // bit offset: 1 desc: Enable falling edge interrupt for P0[1]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_2EF: u1, // bit offset: 2 desc: Enable falling edge interrupt for P0[2]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_3EF: u1, // bit offset: 3 desc: Enable falling edge interrupt for P0[3]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_4EF: u1, // bit offset: 4 desc: Enable falling edge interrupt for P0[4]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_5EF: u1, // bit offset: 5 desc: Enable falling edge interrupt for P0[5]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_6EF: u1, // bit offset: 6 desc: Enable falling edge interrupt for P0[6]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_7EF: u1, // bit offset: 7 desc: Enable falling edge interrupt for P0[7]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_8EF: u1, // bit offset: 8 desc: Enable falling edge interrupt for P0[8]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_9EF: u1, // bit offset: 9 desc: Enable falling edge interrupt for P0[9]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_10EF: u1, // bit offset: 10 desc: Enable falling edge interrupt for P0[10]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_11EF: u1, // bit offset: 11 desc: Enable falling edge interrupt for P0[11]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_12EF: u1, // bit offset: 12 desc: Enable falling edge interrupt for P0[12]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_13EF: u1, // bit offset: 13 desc: Enable falling edge interrupt for P0[13]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_14EF: u1, // bit offset: 14 desc: Enable falling edge interrupt for P0[14]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_15EF: u1, // bit offset: 15 desc: Enable falling edge interrupt for P0[15]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_16EF: u1, // bit offset: 16 desc: Enable falling edge interrupt for P0[16]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_17EF: u1, // bit offset: 17 desc: Enable falling edge interrupt for P0[17]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_18EF: u1, // bit offset: 18 desc: Enable falling edge interrupt for P0[18]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_19EF: u1, // bit offset: 19 desc: Enable falling edge interrupt for P0[19]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_20EF: u1, // bit offset: 20 desc: Enable falling edge interrupt for P0[20]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_21EF: u1, // bit offset: 21 desc: Enable falling edge interrupt for P0[21]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_22EF: u1, // bit offset: 22 desc: Enable falling edge interrupt for P0[22]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_23EF: u1, // bit offset: 23 desc: Enable falling edge interrupt for P0[23]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_24EF: u1, // bit offset: 24 desc: Enable falling edge interrupt for P0[24]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_25EF: u1, // bit offset: 25 desc: Enable falling edge interrupt for P0[25]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_26EF: u1, // bit offset: 26 desc: Enable falling edge interrupt for P0[26]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_27EF: u1, // bit offset: 27 desc: Enable falling edge interrupt for P0[27]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_28EF: u1, // bit offset: 28 desc: Enable falling edge interrupt for P0[28]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_29EF: u1, // bit offset: 29 desc: Enable falling edge interrupt for P0[29]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P0_30EF: u1, // bit offset: 30 desc: Enable falling edge interrupt for P0[30]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 36 GPIO Interrupt Status for Rising edge for Port 0. pub const STATR2 = mmio(Address + 0x00000024, 32, packed struct { - P2_0REI: bool, // bit offset: 0 desc: Status of Rising Edge Interrupt for P2[0]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_1REI: bool, // bit offset: 1 desc: Status of Rising Edge Interrupt for P2[1]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_2REI: bool, // bit offset: 2 desc: Status of Rising Edge Interrupt for P2[2]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_3REI: bool, // bit offset: 3 desc: Status of Rising Edge Interrupt for P2[3]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_4REI: bool, // bit offset: 4 desc: Status of Rising Edge Interrupt for P2[4]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_5REI: bool, // bit offset: 5 desc: Status of Rising Edge Interrupt for P2[5]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_6REI: bool, // bit offset: 6 desc: Status of Rising Edge Interrupt for P2[6]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_7REI: bool, // bit offset: 7 desc: Status of Rising Edge Interrupt for P2[7]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_8REI: bool, // bit offset: 8 desc: Status of Rising Edge Interrupt for P2[8]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_9REI: bool, // bit offset: 9 desc: Status of Rising Edge Interrupt for P2[9]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_10REI: bool, // bit offset: 10 desc: Status of Rising Edge Interrupt for P2[10]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_11REI: bool, // bit offset: 11 desc: Status of Rising Edge Interrupt for P2[11]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_12REI: bool, // bit offset: 12 desc: Status of Rising Edge Interrupt for P2[12]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. - P2_13REI: bool, // bit offset: 13 desc: Status of Rising Edge Interrupt for P2[13]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_0REI: u1, // bit offset: 0 desc: Status of Rising Edge Interrupt for P2[0]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_1REI: u1, // bit offset: 1 desc: Status of Rising Edge Interrupt for P2[1]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_2REI: u1, // bit offset: 2 desc: Status of Rising Edge Interrupt for P2[2]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_3REI: u1, // bit offset: 3 desc: Status of Rising Edge Interrupt for P2[3]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_4REI: u1, // bit offset: 4 desc: Status of Rising Edge Interrupt for P2[4]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_5REI: u1, // bit offset: 5 desc: Status of Rising Edge Interrupt for P2[5]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_6REI: u1, // bit offset: 6 desc: Status of Rising Edge Interrupt for P2[6]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_7REI: u1, // bit offset: 7 desc: Status of Rising Edge Interrupt for P2[7]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_8REI: u1, // bit offset: 8 desc: Status of Rising Edge Interrupt for P2[8]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_9REI: u1, // bit offset: 9 desc: Status of Rising Edge Interrupt for P2[9]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_10REI: u1, // bit offset: 10 desc: Status of Rising Edge Interrupt for P2[10]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_11REI: u1, // bit offset: 11 desc: Status of Rising Edge Interrupt for P2[11]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_12REI: u1, // bit offset: 12 desc: Status of Rising Edge Interrupt for P2[12]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + P2_13REI: u1, // bit offset: 13 desc: Status of Rising Edge Interrupt for P2[13]. 0 = No rising edge detected. 1 = Rising edge interrupt generated. + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -3507,20 +4534,21 @@ pub const GPIOINT = extern struct { }); // byte offset: 40 GPIO Interrupt Status for Falling edge for Port 0. pub const STATF2 = mmio(Address + 0x00000028, 32, packed struct { - P2_0FEI: bool, // bit offset: 0 desc: Status of Falling Edge Interrupt for P2[0]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_1FEI: bool, // bit offset: 1 desc: Status of Falling Edge Interrupt for P2[1]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_2FEI: bool, // bit offset: 2 desc: Status of Falling Edge Interrupt for P2[2]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_3FEI: bool, // bit offset: 3 desc: Status of Falling Edge Interrupt for P2[3]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_4FEI: bool, // bit offset: 4 desc: Status of Falling Edge Interrupt for P2[4]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_5FEI: bool, // bit offset: 5 desc: Status of Falling Edge Interrupt for P2[5]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_6FEI: bool, // bit offset: 6 desc: Status of Falling Edge Interrupt for P2[6]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_7FEI: bool, // bit offset: 7 desc: Status of Falling Edge Interrupt for P2[7]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_8FEI: bool, // bit offset: 8 desc: Status of Falling Edge Interrupt for P2[8]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_9FEI: bool, // bit offset: 9 desc: Status of Falling Edge Interrupt for P2[9]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_10FEI: bool, // bit offset: 10 desc: Status of Falling Edge Interrupt for P2[10]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_11FEI: bool, // bit offset: 11 desc: Status of Falling Edge Interrupt for P2[11]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_12FEI: bool, // bit offset: 12 desc: Status of Falling Edge Interrupt for P2[12]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. - P2_13FEI: bool, // bit offset: 13 desc: Status of Falling Edge Interrupt for P2[13]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_0FEI: u1, // bit offset: 0 desc: Status of Falling Edge Interrupt for P2[0]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_1FEI: u1, // bit offset: 1 desc: Status of Falling Edge Interrupt for P2[1]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_2FEI: u1, // bit offset: 2 desc: Status of Falling Edge Interrupt for P2[2]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_3FEI: u1, // bit offset: 3 desc: Status of Falling Edge Interrupt for P2[3]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_4FEI: u1, // bit offset: 4 desc: Status of Falling Edge Interrupt for P2[4]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_5FEI: u1, // bit offset: 5 desc: Status of Falling Edge Interrupt for P2[5]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_6FEI: u1, // bit offset: 6 desc: Status of Falling Edge Interrupt for P2[6]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_7FEI: u1, // bit offset: 7 desc: Status of Falling Edge Interrupt for P2[7]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_8FEI: u1, // bit offset: 8 desc: Status of Falling Edge Interrupt for P2[8]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_9FEI: u1, // bit offset: 9 desc: Status of Falling Edge Interrupt for P2[9]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_10FEI: u1, // bit offset: 10 desc: Status of Falling Edge Interrupt for P2[10]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_11FEI: u1, // bit offset: 11 desc: Status of Falling Edge Interrupt for P2[11]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_12FEI: u1, // bit offset: 12 desc: Status of Falling Edge Interrupt for P2[12]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + P2_13FEI: u1, // bit offset: 13 desc: Status of Falling Edge Interrupt for P2[13]. 0 = No falling edge detected. 1 = Falling edge interrupt generated. + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -3542,20 +4570,21 @@ pub const GPIOINT = extern struct { }); // byte offset: 44 GPIO Interrupt Clear. pub const CLR2 = mmio(Address + 0x0000002c, 32, packed struct { - P2_0CI: bool, // bit offset: 0 desc: Clear GPIO port Interrupts for P2[0]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_1CI: bool, // bit offset: 1 desc: Clear GPIO port Interrupts for P2[1]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_2CI: bool, // bit offset: 2 desc: Clear GPIO port Interrupts for P2[2]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_3CI: bool, // bit offset: 3 desc: Clear GPIO port Interrupts for P2[3]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_4CI: bool, // bit offset: 4 desc: Clear GPIO port Interrupts for P2[4]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_5CI: bool, // bit offset: 5 desc: Clear GPIO port Interrupts for P2[5]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_6CI: bool, // bit offset: 6 desc: Clear GPIO port Interrupts for P2[6]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_7CI: bool, // bit offset: 7 desc: Clear GPIO port Interrupts for P2[7]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_8CI: bool, // bit offset: 8 desc: Clear GPIO port Interrupts for P2[8]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_9CI: bool, // bit offset: 9 desc: Clear GPIO port Interrupts for P2[9]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_10CI: bool, // bit offset: 10 desc: Clear GPIO port Interrupts for P2[10]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_11CI: bool, // bit offset: 11 desc: Clear GPIO port Interrupts for P2[11]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_12CI: bool, // bit offset: 12 desc: Clear GPIO port Interrupts for P2[12]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. - P2_13CI: bool, // bit offset: 13 desc: Clear GPIO port Interrupts for P2[13]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_0CI: u1, // bit offset: 0 desc: Clear GPIO port Interrupts for P2[0]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_1CI: u1, // bit offset: 1 desc: Clear GPIO port Interrupts for P2[1]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_2CI: u1, // bit offset: 2 desc: Clear GPIO port Interrupts for P2[2]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_3CI: u1, // bit offset: 3 desc: Clear GPIO port Interrupts for P2[3]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_4CI: u1, // bit offset: 4 desc: Clear GPIO port Interrupts for P2[4]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_5CI: u1, // bit offset: 5 desc: Clear GPIO port Interrupts for P2[5]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_6CI: u1, // bit offset: 6 desc: Clear GPIO port Interrupts for P2[6]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_7CI: u1, // bit offset: 7 desc: Clear GPIO port Interrupts for P2[7]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_8CI: u1, // bit offset: 8 desc: Clear GPIO port Interrupts for P2[8]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_9CI: u1, // bit offset: 9 desc: Clear GPIO port Interrupts for P2[9]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_10CI: u1, // bit offset: 10 desc: Clear GPIO port Interrupts for P2[10]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_11CI: u1, // bit offset: 11 desc: Clear GPIO port Interrupts for P2[11]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_12CI: u1, // bit offset: 12 desc: Clear GPIO port Interrupts for P2[12]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + P2_13CI: u1, // bit offset: 13 desc: Clear GPIO port Interrupts for P2[13]. 0 = No effect. 1 = Clear corresponding bits in IOnINTSTATR and IOnSTATF. + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -3577,20 +4606,21 @@ pub const GPIOINT = extern struct { }); // byte offset: 48 GPIO Interrupt Enable for Rising edge for Port 0. pub const ENR2 = mmio(Address + 0x00000030, 32, packed struct { - P2_0ER: bool, // bit offset: 0 desc: Enable rising edge interrupt for P2[0]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_1ER: bool, // bit offset: 1 desc: Enable rising edge interrupt for P2[1]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_2ER: bool, // bit offset: 2 desc: Enable rising edge interrupt for P2[2]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_3ER: bool, // bit offset: 3 desc: Enable rising edge interrupt for P2[3]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_4ER: bool, // bit offset: 4 desc: Enable rising edge interrupt for P2[4]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_5ER: bool, // bit offset: 5 desc: Enable rising edge interrupt for P2[5]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_6ER: bool, // bit offset: 6 desc: Enable rising edge interrupt for P2[6]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_7ER: bool, // bit offset: 7 desc: Enable rising edge interrupt for P2[7]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_8ER: bool, // bit offset: 8 desc: Enable rising edge interrupt for P2[8]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_9ER: bool, // bit offset: 9 desc: Enable rising edge interrupt for P2[9]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_10ER: bool, // bit offset: 10 desc: Enable rising edge interrupt for P2[10]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_11ER: bool, // bit offset: 11 desc: Enable rising edge interrupt for P2[11]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_12ER: bool, // bit offset: 12 desc: Enable rising edge interrupt for P2[12]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. - P2_13ER: bool, // bit offset: 13 desc: Enable rising edge interrupt for P2[13]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_0ER: u1, // bit offset: 0 desc: Enable rising edge interrupt for P2[0]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_1ER: u1, // bit offset: 1 desc: Enable rising edge interrupt for P2[1]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_2ER: u1, // bit offset: 2 desc: Enable rising edge interrupt for P2[2]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_3ER: u1, // bit offset: 3 desc: Enable rising edge interrupt for P2[3]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_4ER: u1, // bit offset: 4 desc: Enable rising edge interrupt for P2[4]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_5ER: u1, // bit offset: 5 desc: Enable rising edge interrupt for P2[5]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_6ER: u1, // bit offset: 6 desc: Enable rising edge interrupt for P2[6]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_7ER: u1, // bit offset: 7 desc: Enable rising edge interrupt for P2[7]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_8ER: u1, // bit offset: 8 desc: Enable rising edge interrupt for P2[8]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_9ER: u1, // bit offset: 9 desc: Enable rising edge interrupt for P2[9]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_10ER: u1, // bit offset: 10 desc: Enable rising edge interrupt for P2[10]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_11ER: u1, // bit offset: 11 desc: Enable rising edge interrupt for P2[11]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_12ER: u1, // bit offset: 12 desc: Enable rising edge interrupt for P2[12]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + P2_13ER: u1, // bit offset: 13 desc: Enable rising edge interrupt for P2[13]. 0 = Disable rising edge interrupt. 1 = Enable rising edge interrupt. + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -3612,20 +4642,21 @@ pub const GPIOINT = extern struct { }); // byte offset: 52 GPIO Interrupt Enable for Falling edge for Port 0. pub const ENF2 = mmio(Address + 0x00000034, 32, packed struct { - P2_0EF: bool, // bit offset: 0 desc: Enable falling edge interrupt for P2[0]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_1EF: bool, // bit offset: 1 desc: Enable falling edge interrupt for P2[1]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_2EF: bool, // bit offset: 2 desc: Enable falling edge interrupt for P2[2]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_3EF: bool, // bit offset: 3 desc: Enable falling edge interrupt for P2[3]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_4EF: bool, // bit offset: 4 desc: Enable falling edge interrupt for P2[4]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_5EF: bool, // bit offset: 5 desc: Enable falling edge interrupt for P2[5]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_6EF: bool, // bit offset: 6 desc: Enable falling edge interrupt for P2[6]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_7EF: bool, // bit offset: 7 desc: Enable falling edge interrupt for P2[7]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_8EF: bool, // bit offset: 8 desc: Enable falling edge interrupt for P2[8]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_9EF: bool, // bit offset: 9 desc: Enable falling edge interrupt for P2[9]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_10EF: bool, // bit offset: 10 desc: Enable falling edge interrupt for P2[10]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_11EF: bool, // bit offset: 11 desc: Enable falling edge interrupt for P2[11]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_12EF: bool, // bit offset: 12 desc: Enable falling edge interrupt for P2[12]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. - P2_13EF: bool, // bit offset: 13 desc: Enable falling edge interrupt for P2[13]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_0EF: u1, // bit offset: 0 desc: Enable falling edge interrupt for P2[0]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_1EF: u1, // bit offset: 1 desc: Enable falling edge interrupt for P2[1]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_2EF: u1, // bit offset: 2 desc: Enable falling edge interrupt for P2[2]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_3EF: u1, // bit offset: 3 desc: Enable falling edge interrupt for P2[3]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_4EF: u1, // bit offset: 4 desc: Enable falling edge interrupt for P2[4]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_5EF: u1, // bit offset: 5 desc: Enable falling edge interrupt for P2[5]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_6EF: u1, // bit offset: 6 desc: Enable falling edge interrupt for P2[6]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_7EF: u1, // bit offset: 7 desc: Enable falling edge interrupt for P2[7]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_8EF: u1, // bit offset: 8 desc: Enable falling edge interrupt for P2[8]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_9EF: u1, // bit offset: 9 desc: Enable falling edge interrupt for P2[9]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_10EF: u1, // bit offset: 10 desc: Enable falling edge interrupt for P2[10]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_11EF: u1, // bit offset: 11 desc: Enable falling edge interrupt for P2[11]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_12EF: u1, // bit offset: 12 desc: Enable falling edge interrupt for P2[12]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + P2_13EF: u1, // bit offset: 13 desc: Enable falling edge interrupt for P2[13]. 0 = Disable falling edge interrupt. 1 = Enable falling edge interrupt. + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -3650,108 +4681,480 @@ pub const PINCONNECT = extern struct { pub const Address: u32 = 0x4002c000; // byte offset: 0 Pin function select register 0. pub const PINSEL0 = mmio(Address + 0x00000000, 32, packed struct { - P0_0: u2, // bit offset: 0 desc: Pin function select P0.0. - P0_1: u2, // bit offset: 2 desc: Pin function select P0.1. - P0_2: u2, // bit offset: 4 desc: Pin function select P0.2. - P0_3: u2, // bit offset: 6 desc: Pin function select P0.3. - P0_4: u2, // bit offset: 8 desc: Pin function select P0.4. - P0_5: u2, // bit offset: 10 desc: Pin function select P0.5. - P0_6: u2, // bit offset: 12 desc: Pin function select P0.6. - P0_7: u2, // bit offset: 14 desc: Pin function select P0.7. - P0_8: u2, // bit offset: 16 desc: Pin function select P0.8. - P0_9: u2, // bit offset: 18 desc: Pin function select P0.9. - P0_10: u2, // bit offset: 20 desc: Pin function select P0.10. - P0_11: u2, // bit offset: 22 desc: Pin function select P0.11. + P0_0: enum(u2) { // bit offset: 0 desc: Pin function select P0.0. + @"GPIO_P0" = 0, // desc: GPIO P0.0 + @"RD1" = 1, // desc: RD1 + @"TXD3" = 2, // desc: TXD3 + @"SDA1" = 3, // desc: SDA1 + }, + P0_1: enum(u2) { // bit offset: 2 desc: Pin function select P0.1. + @"GPIO_P0" = 0, // desc: GPIO P0.1 + @"TD1" = 1, // desc: TD1 + @"RXD3" = 2, // desc: RXD3 + @"SCL1" = 3, // desc: SCL1 + }, + P0_2: enum(u2) { // bit offset: 4 desc: Pin function select P0.2. + @"GPIO_P0" = 0, // desc: GPIO P0.2 + @"TXD0" = 1, // desc: TXD0 + @"AD0" = 2, // desc: AD0.7 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P0_3: enum(u2) { // bit offset: 6 desc: Pin function select P0.3. + @"GPIO_P0" = 0, // desc: GPIO P0.3. + @"RXD0" = 1, // desc: RXD0 + @"AD0" = 2, // desc: AD0.6 + // @"RESERVED", // desc: Reserved. + _, // non-exhaustive + }, + P0_4: enum(u2) { // bit offset: 8 desc: Pin function select P0.4. + @"GPIO_P0" = 0, // desc: GPIO P0.4. + @"I2SRX_CLK" = 1, // desc: I2SRX_CLK + @"RD2" = 2, // desc: RD2 + @"CAP2" = 3, // desc: CAP2.0 + }, + P0_5: enum(u2) { // bit offset: 10 desc: Pin function select P0.5. + @"GPIO_P0" = 0, // desc: GPIO P0.5. + @"I2SRX_WS" = 1, // desc: I2SRX_WS + @"TD2" = 2, // desc: TD2 + @"CAP2" = 3, // desc: CAP2.1 + }, + P0_6: enum(u2) { // bit offset: 12 desc: Pin function select P0.6. + @"GPIO_P0" = 0, // desc: GPIO P0.6. + @"I2SRX_SDA" = 1, // desc: I2SRX_SDA + @"SSEL1" = 2, // desc: SSEL1 + @"MAT2" = 3, // desc: MAT2.0 + }, + P0_7: enum(u2) { // bit offset: 14 desc: Pin function select P0.7. + @"GPIO_P0" = 0, // desc: GPIO P0.7. + @"I2STX_CLK" = 1, // desc: I2STX_CLK + @"SCK1" = 2, // desc: SCK1 + @"MAT2" = 3, // desc: MAT2.1 + }, + P0_8: enum(u2) { // bit offset: 16 desc: Pin function select P0.8. + @"GPIO_P0" = 0, // desc: GPIO P0.8. + @"I2STX_WS" = 1, // desc: I2STX_WS + @"MISO1" = 2, // desc: MISO1 + @"MAT2" = 3, // desc: MAT2.2 + }, + P0_9: enum(u2) { // bit offset: 18 desc: Pin function select P0.9. + @"GPIO_P0" = 0, // desc: GPIO P0.9 + @"I2STX_SDA" = 1, // desc: I2STX_SDA + @"MOSI1" = 2, // desc: MOSI1 + @"MAT2" = 3, // desc: MAT2.3 + }, + P0_10: enum(u2) { // bit offset: 20 desc: Pin function select P0.10. + @"GPIO_P0" = 0, // desc: GPIO P0.10 + @"TXD2" = 1, // desc: TXD2 + @"SDA2" = 2, // desc: SDA2 + @"MAT3" = 3, // desc: MAT3.0 + }, + P0_11: enum(u2) { // bit offset: 22 desc: Pin function select P0.11. + @"GPIO_P0" = 0, // desc: GPIO P0.11 + @"RXD2" = 1, // desc: RXD2 + @"SCL2" = 2, // desc: SCL2 + @"MAT3" = 3, // desc: MAT3.1 + }, + // RESERVED: u6, // bit offset: 24 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P0_15: u2, // bit offset: 30 desc: Pin function select P0.15. + P0_15: enum(u2) { // bit offset: 30 desc: Pin function select P0.15. + @"GPIO_P0" = 0, // desc: GPIO P0.15 + @"TXD1" = 1, // desc: TXD1 + @"SCK0" = 2, // desc: SCK0 + @"SCK" = 3, // desc: SCK + }, }); // byte offset: 4 Pin function select register 1. pub const PINSEL1 = mmio(Address + 0x00000004, 32, packed struct { - P0_16: u2, // bit offset: 0 desc: Pin function select P0.16. - P0_17: u2, // bit offset: 2 desc: Pin function select P0.17. - P0_18: u2, // bit offset: 4 desc: Pin function select P0.18. - P0_19: u2, // bit offset: 6 desc: Pin function select P019. - P0_20: u2, // bit offset: 8 desc: Pin function select P0.20. - P0_21: u2, // bit offset: 10 desc: Pin function select P0.21. - P0_22: u2, // bit offset: 12 desc: Pin function select P022 - P0_23: u2, // bit offset: 14 desc: Pin function select P023. - P0_24: u2, // bit offset: 16 desc: Pin function select P0.24. - P0_25: u2, // bit offset: 18 desc: Pin function select P0.25. - P0_26: u2, // bit offset: 20 desc: Pin function select P0.26. - P0_27: u2, // bit offset: 22 desc: Pin function select P0.27. - P0_28: u2, // bit offset: 24 desc: Pin function select P0.28. - P0_29: u2, // bit offset: 26 desc: Pin function select P0.29 - P0_30: u2, // bit offset: 28 desc: Pin function select P0.30. + P0_16: enum(u2) { // bit offset: 0 desc: Pin function select P0.16. + @"GPIO_P0" = 0, // desc: GPIO P0.16 + @"RXD1" = 1, // desc: RXD1 + @"SSEL0" = 2, // desc: SSEL0 + @"SSEL" = 3, // desc: SSEL + }, + P0_17: enum(u2) { // bit offset: 2 desc: Pin function select P0.17. + @"GPIO_P0" = 0, // desc: GPIO P0.17 + @"CTS1" = 1, // desc: CTS1 + @"MISO0" = 2, // desc: MISO0 + @"MISO" = 3, // desc: MISO + }, + P0_18: enum(u2) { // bit offset: 4 desc: Pin function select P0.18. + @"GPIO_P0" = 0, // desc: GPIO P0.18 + @"DCD1" = 1, // desc: DCD1 + @"MOSI0" = 2, // desc: MOSI0 + @"MOSI" = 3, // desc: MOSI + }, + P0_19: enum(u2) { // bit offset: 6 desc: Pin function select P019. + @"GPIO_P0" = 0, // desc: GPIO P0.19. + @"DSR1" = 1, // desc: DSR1 + // @"RESERVED", // desc: Reserved + @"SDA1" = 3, // desc: SDA1 + _, // non-exhaustive + }, + P0_20: enum(u2) { // bit offset: 8 desc: Pin function select P0.20. + @"GPIO_P0" = 0, // desc: GPIO P0.20. + @"DTR1" = 1, // desc: DTR1 + // @"RESERVED", // desc: Reserved + @"SCL1" = 3, // desc: SCL1 + _, // non-exhaustive + }, + P0_21: enum(u2) { // bit offset: 10 desc: Pin function select P0.21. + @"GPIO_PORT_0" = 0, // desc: GPIO Port 0.21. + @"RI1" = 1, // desc: RI1 + // @"RESERVED", // desc: Reserved + @"RD1" = 3, // desc: RD1 + _, // non-exhaustive + }, + P0_22: enum(u2) { // bit offset: 12 desc: Pin function select P022 + @"GPIO_P0" = 0, // desc: GPIO P0.22. + @"RTS1" = 1, // desc: RTS1 + // @"RESERVED", // desc: Reserved + @"TD1" = 3, // desc: TD1 + _, // non-exhaustive + }, + P0_23: enum(u2) { // bit offset: 14 desc: Pin function select P023. + @"GPIO_P0" = 0, // desc: GPIO P0.23. + @"AD0" = 1, // desc: AD0.0 + @"I2SRX_CLK" = 2, // desc: I2SRX_CLK + @"CAP3" = 3, // desc: CAP3.0 + }, + P0_24: enum(u2) { // bit offset: 16 desc: Pin function select P0.24. + @"GPIO_P0" = 0, // desc: GPIO P0.24. + @"AD0" = 1, // desc: AD0.1 + @"I2SRX_WS" = 2, // desc: I2SRX_WS + @"CAP3" = 3, // desc: CAP3.1 + }, + P0_25: enum(u2) { // bit offset: 18 desc: Pin function select P0.25. + @"GPIO_P0" = 0, // desc: GPIO P0.25 + @"AD0" = 1, // desc: AD0.2 + @"I2SRX_SDA" = 2, // desc: I2SRX_SDA + @"TXD3" = 3, // desc: TXD3 + }, + P0_26: enum(u2) { // bit offset: 20 desc: Pin function select P0.26. + @"GPIO_P0" = 0, // desc: GPIO P0.26 + @"AD0" = 1, // desc: AD0.3 + @"AOUT" = 2, // desc: AOUT + @"RXD3" = 3, // desc: RXD3 + }, + P0_27: enum(u2) { // bit offset: 22 desc: Pin function select P0.27. + @"GPIO_P0" = 0, // desc: GPIO P0.27 + @"SDA0" = 1, // desc: SDA0 + @"USB_SDA" = 2, // desc: USB_SDA + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P0_28: enum(u2) { // bit offset: 24 desc: Pin function select P0.28. + @"GPIO_P0" = 0, // desc: GPIO P0.28 + @"SCL0" = 1, // desc: SCL0 + @"USB_SCL" = 2, // desc: USB_SCL + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P0_29: enum(u2) { // bit offset: 26 desc: Pin function select P0.29 + @"GPIO_P0" = 0, // desc: GPIO P0.29 + @"USB_DP" = 1, // desc: USB_D+ + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P0_30: enum(u2) { // bit offset: 28 desc: Pin function select P0.30. + @"GPIO_P0" = 0, // desc: GPIO P0.30 + @"USB_DM" = 1, // desc: USB_D- + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + // RESERVED: u2, // bit offset: 30 desc: Reserved padding2: u1 = 0, padding1: u1 = 0, }); // byte offset: 8 Pin function select register 2. pub const PINSEL2 = mmio(Address + 0x00000008, 32, packed struct { - P1_0: u2, // bit offset: 0 desc: Pin function select P1.0. - P1_1: u2, // bit offset: 2 desc: Pin function select P1.1. + P1_0: enum(u2) { // bit offset: 0 desc: Pin function select P1.0. + @"GPIO_P1" = 0, // desc: GPIO P1.0 + @"ENET_TXD0" = 1, // desc: ENET_TXD0 + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_1: enum(u2) { // bit offset: 2 desc: Pin function select P1.1. + @"GPIO_P1" = 0, // desc: GPIO P1.1 + @"ENET_TXD1" = 1, // desc: ENET_TXD1 + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + // RESERVED: u4, // bit offset: 4 desc: Reserved. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P1_4: u2, // bit offset: 8 desc: Pin function select P1.4. - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - P1_8: u2, // bit offset: 16 desc: Pin function select P1.8. - P1_9: u2, // bit offset: 18 desc: Pin function select P1.9. - P1_10: u2, // bit offset: 20 desc: Pin function select P1.10. - P1_14: u2, // bit offset: 22 desc: Pin function select P1.14. + P1_4: enum(u2) { // bit offset: 8 desc: Pin function select P1.4. + @"GPIO_P1" = 0, // desc: GPIO P1.4. + @"ENET_TX_EN" = 1, // desc: ENET_TX_EN + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + // RESERVED: u6, // bit offset: 10 desc: Reserved. reserved10: u1 = 0, reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, - P1_15: u2, // bit offset: 30 desc: Pin function select P1.15. + P1_8: enum(u2) { // bit offset: 16 desc: Pin function select P1.8. + @"GPIO_P1" = 0, // desc: GPIO P1.8. + @"ENET_CRS" = 1, // desc: ENET_CRS + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_9: enum(u2) { // bit offset: 18 desc: Pin function select P1.9. + @"GPIO_PORT_1" = 0, // desc: GPIO Port 1.9 + @"ENET_RXD0" = 1, // desc: ENET_RXD0 + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_10: enum(u2) { // bit offset: 20 desc: Pin function select P1.10. + @"GPIO_P1" = 0, // desc: GPIO P1.10 + @"ENET_RXD1" = 1, // desc: ENET_RXD1 + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_14: enum(u2) { // bit offset: 22 desc: Pin function select P1.14. + @"GPIO_P1" = 0, // desc: GPIO P1.14 + @"ENET_RX_ER" = 1, // desc: ENET_RX_ER + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + // RESERVED: u6, // bit offset: 24 desc: Reserved. + // RESERVED: u6, // bit offset: 24 desc: Reserved. + reserved16: u1 = 0, + reserved15: u1 = 0, + reserved14: u1 = 0, + reserved13: u1 = 0, + reserved12: u1 = 0, + reserved11: u1 = 0, + P1_15: enum(u2) { // bit offset: 30 desc: Pin function select P1.15. + @"GPIO_P1" = 0, // desc: GPIO P1.15 + @"ENET_REF_CLK" = 1, // desc: ENET_REF_CLK + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, }); // byte offset: 12 Pin function select register 3. pub const PINSEL3 = mmio(Address + 0x0000000c, 32, packed struct { - P1_16: u2, // bit offset: 0 desc: Pin function select P1.16. - P1_17: u2, // bit offset: 2 desc: Pin function select P1.17. - P1_18: u2, // bit offset: 4 desc: Pin function select P1.18. - P1_19: u2, // bit offset: 6 desc: Pin function select P1.19. - P1_20: u2, // bit offset: 8 desc: Pin function select P1.20. - P1_21: u2, // bit offset: 10 desc: Pin function select P1.21. - P1_22: u2, // bit offset: 12 desc: Pin function select P1.22 - P1_23: u2, // bit offset: 14 desc: Pin function select P1.23. - P1_24: u2, // bit offset: 16 desc: Pin function select P1.24. - P1_25: u2, // bit offset: 18 desc: Pin function select P1.25. - P1_26: u2, // bit offset: 20 desc: Pin function select P1.26. - P1_27: u2, // bit offset: 22 desc: Pin function select P1.27. - P1_28: u2, // bit offset: 24 desc: Pin function select P1.28. - P1_29: u2, // bit offset: 26 desc: Pin function select P1.29 - P1_30: u2, // bit offset: 28 desc: Pin function select P1.30. - P1_31: u2, // bit offset: 30 desc: Pin function select P1.31. + P1_16: enum(u2) { // bit offset: 0 desc: Pin function select P1.16. + @"GPIO_P1" = 0, // desc: GPIO P1.16 + @"ENET_MDC" = 1, // desc: ENET_MDC + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_17: enum(u2) { // bit offset: 2 desc: Pin function select P1.17. + @"GPIO_P1" = 0, // desc: GPIO P1.17 + @"ENET_MDIO" = 1, // desc: ENET_MDIO + // @"RESERVED", // desc: Reserved + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P1_18: enum(u2) { // bit offset: 4 desc: Pin function select P1.18. + @"GPIO_P1" = 0, // desc: GPIO P1.18 + @"USB_UP_LED" = 1, // desc: USB_UP_LED + @"PWM1" = 2, // desc: PWM1.1 + @"CAP1" = 3, // desc: CAP1.0 + }, + P1_19: enum(u2) { // bit offset: 6 desc: Pin function select P1.19. + @"GPIO_P1" = 0, // desc: GPIO P1.19. + @"MCOA0" = 1, // desc: MCOA0 + @"USB_PPWR" = 2, // desc: USB_PPWR + @"CAP1" = 3, // desc: CAP1.1 + }, + P1_20: enum(u2) { // bit offset: 8 desc: Pin function select P1.20. + @"GPIO_P1" = 0, // desc: GPIO P1.20. + @"MCI0" = 1, // desc: MCI0 + @"PWM1" = 2, // desc: PWM1.2 + @"SCK0" = 3, // desc: SCK0 + }, + P1_21: enum(u2) { // bit offset: 10 desc: Pin function select P1.21. + @"GPIO_P1" = 0, // desc: GPIO P1.21. + @"MCABORT" = 1, // desc: MCABORT + @"PWM1" = 2, // desc: PWM1.3 + @"SSEL0" = 3, // desc: SSEL0 + }, + P1_22: enum(u2) { // bit offset: 12 desc: Pin function select P1.22 + @"GPIO_P1" = 0, // desc: GPIO P1.22. + @"MCOB0" = 1, // desc: MCOB0 + @"USB_PWRD" = 2, // desc: USB_PWRD + @"MAT1" = 3, // desc: MAT1.0 + }, + P1_23: enum(u2) { // bit offset: 14 desc: Pin function select P1.23. + @"GPIO_P1" = 0, // desc: GPIO P1.23. + @"MCI1" = 1, // desc: MCI1 + @"PWM1" = 2, // desc: PWM1.4 + @"MISO0" = 3, // desc: MISO0 + }, + P1_24: enum(u2) { // bit offset: 16 desc: Pin function select P1.24. + @"GPIO_P1" = 0, // desc: GPIO P1.24. + @"MCI2" = 1, // desc: MCI2 + @"PWM1" = 2, // desc: PWM1.5 + @"MOSI0" = 3, // desc: MOSI0 + }, + P1_25: enum(u2) { // bit offset: 18 desc: Pin function select P1.25. + @"GPIO_P1" = 0, // desc: GPIO P1.25 + @"MCOA1" = 1, // desc: MCOA1 + // @"RESERVED", // desc: Reserved + @"MAT1" = 3, // desc: MAT1.1 + _, // non-exhaustive + }, + P1_26: enum(u2) { // bit offset: 20 desc: Pin function select P1.26. + @"GPIO_P1" = 0, // desc: GPIO P1.26 + @"MCOB1" = 1, // desc: MCOB1 + @"PWM1" = 2, // desc: PWM1.6 + @"CAP0" = 3, // desc: CAP0.0 + }, + P1_27: enum(u2) { // bit offset: 22 desc: Pin function select P1.27. + @"GPIO_P1" = 0, // desc: GPIO P1.27 + @"CLKOUT" = 1, // desc: CLKOUT + @"USB_OVRCR" = 2, // desc: USB_OVRCR + @"CAP0" = 3, // desc: CAP0.1 + }, + P1_28: enum(u2) { // bit offset: 24 desc: Pin function select P1.28. + @"GPIO_P1" = 0, // desc: GPIO P1.28 + @"MCOA2" = 1, // desc: MCOA2 + @"PCAP1" = 2, // desc: PCAP1.0 + @"MAT0" = 3, // desc: MAT0.0 + }, + P1_29: enum(u2) { // bit offset: 26 desc: Pin function select P1.29 + @"GPIO_P1" = 0, // desc: GPIO P1.29 + @"MCOB2" = 1, // desc: MCOB2 + @"PCAP1" = 2, // desc: PCAP1.1 + @"MAT0" = 3, // desc: MAT0.1 + }, + P1_30: enum(u2) { // bit offset: 28 desc: Pin function select P1.30. + @"GPIO_P1" = 0, // desc: GPIO P1.30 + // @"RESERVED", // desc: Reserved + @"VBUS" = 2, // desc: VBUS + @"AD0" = 3, // desc: AD0.4 + _, // non-exhaustive + }, + P1_31: enum(u2) { // bit offset: 30 desc: Pin function select P1.31. + @"GPIO_PORT_1" = 0, // desc: GPIO Port 1.31 + // @"RESERVED", // desc: Reserved + @"SCK1" = 2, // desc: SCK1 + @"AD0" = 3, // desc: AD0.5 + _, // non-exhaustive + }, }); // byte offset: 16 Pin function select register 4 pub const PINSEL4 = mmio(Address + 0x00000010, 32, packed struct { - P2_0: u2, // bit offset: 0 desc: Pin function select P2.0. - P2_1: u2, // bit offset: 2 desc: Pin function select P2.1. - P2_2: u2, // bit offset: 4 desc: Pin function select P2.2. - P2_3: u2, // bit offset: 6 desc: Pin function select P2.3. - P2_4: u2, // bit offset: 8 desc: Pin function select P2.4. - P2_5: u2, // bit offset: 10 desc: Pin function select P2.5. - P2_6: u2, // bit offset: 12 desc: Pin function select P2.6. - P2_7: u2, // bit offset: 14 desc: Pin function select P2.7. - P2_8: u2, // bit offset: 16 desc: Pin function select P2.8. - P2_9: u2, // bit offset: 18 desc: Pin function select P2.9. - P2_10: u2, // bit offset: 20 desc: Pin function select P2.10. - P2_11: u2, // bit offset: 22 desc: Pin function select P2.11. - P2_12: u2, // bit offset: 24 desc: Pin function select P2.12. - P2_13: u2, // bit offset: 26 desc: Pin function select P2.13. + P2_0: enum(u2) { // bit offset: 0 desc: Pin function select P2.0. + @"GPIO_P2" = 0, // desc: GPIO P2.0 + @"PWM1" = 1, // desc: PWM1.1 + @"TXD1" = 2, // desc: TXD1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_1: enum(u2) { // bit offset: 2 desc: Pin function select P2.1. + @"GPIO_P2" = 0, // desc: GPIO P2.1 + @"PWM1" = 1, // desc: PWM1.2 + @"RXD1" = 2, // desc: RXD1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_2: enum(u2) { // bit offset: 4 desc: Pin function select P2.2. + @"GPIO_P2" = 0, // desc: GPIO P2.2 + @"PWM1" = 1, // desc: PWM1.3 + @"CTS1" = 2, // desc: CTS1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_3: enum(u2) { // bit offset: 6 desc: Pin function select P2.3. + @"GPIO_P2" = 0, // desc: GPIO P2.3. + @"PWM1" = 1, // desc: PWM1.4 + @"DCD1" = 2, // desc: DCD1 + // @"RESERVED", // desc: Reserved. + _, // non-exhaustive + }, + P2_4: enum(u2) { // bit offset: 8 desc: Pin function select P2.4. + @"GPIO_P2" = 0, // desc: GPIO P2.4. + @"PWM1" = 1, // desc: PWM1.5 + @"DSR1" = 2, // desc: DSR1 + // @"RESERVED", // desc: Reserved. + _, // non-exhaustive + }, + P2_5: enum(u2) { // bit offset: 10 desc: Pin function select P2.5. + @"GPIO_P2" = 0, // desc: GPIO P2.5. + @"PWM1" = 1, // desc: PWM1.6 + @"DTR1" = 2, // desc: DTR1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_6: enum(u2) { // bit offset: 12 desc: Pin function select P2.6. + @"GPIO_P2" = 0, // desc: GPIO P2.6. + @"PCAP1" = 1, // desc: PCAP1.0 + @"RI1" = 2, // desc: RI1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_7: enum(u2) { // bit offset: 14 desc: Pin function select P2.7. + @"GPIO_P2" = 0, // desc: GPIO P2.7. + @"RD2" = 1, // desc: RD2 + @"RTS1" = 2, // desc: RTS1 + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_8: enum(u2) { // bit offset: 16 desc: Pin function select P2.8. + @"GPIO_P2" = 0, // desc: GPIO P2.8. + @"TD2" = 1, // desc: TD2 + @"TXD2" = 2, // desc: TXD2 + @"ENET_MDC" = 3, // desc: ENET_MDC + }, + P2_9: enum(u2) { // bit offset: 18 desc: Pin function select P2.9. + @"GPIO_P2" = 0, // desc: GPIO P2.9 + @"USB_CONNECT" = 1, // desc: USB_CONNECT + @"RXD2" = 2, // desc: RXD2 + @"ENET_MDIO" = 3, // desc: ENET_MDIO + }, + P2_10: enum(u2) { // bit offset: 20 desc: Pin function select P2.10. + @"GPIO_P2" = 0, // desc: GPIO P2.10 + @"EINT0" = 1, // desc: EINT0 + @"NMI" = 2, // desc: NMI + // @"RESERVED", // desc: Reserved + _, // non-exhaustive + }, + P2_11: enum(u2) { // bit offset: 22 desc: Pin function select P2.11. + @"GPIO_P2" = 0, // desc: GPIO P2.11 + @"EINT1" = 1, // desc: EINT1 + // @"RESERVED", // desc: Reserved + @"I2STX_CLK" = 3, // desc: I2STX_CLK + _, // non-exhaustive + }, + P2_12: enum(u2) { // bit offset: 24 desc: Pin function select P2.12. + @"GPIO_P2" = 0, // desc: GPIO P2.12 + @"EINT2" = 1, // desc: EINT2 + // @"RESERVED", // desc: Reserved + @"I2STX_WS" = 3, // desc: I2STX_WS + _, // non-exhaustive + }, + P2_13: enum(u2) { // bit offset: 26 desc: Pin function select P2.13. + @"GPIO_P2" = 0, // desc: GPIO P2.13 + @"EINT3" = 1, // desc: EINT3 + // @"RESERVED", // desc: Reserved + @"I2STX_SDA" = 3, // desc: I2STX_SDA + _, // non-exhaustive + }, + // RESERVED: u4, // bit offset: 28 desc: Reserved. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -3759,6 +5162,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 28 Pin function select register 7 pub const PINSEL7 = mmio(Address + 0x0000001c, 32, packed struct { + // RESERVED: u18, // bit offset: 0 desc: Reserved. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, @@ -3777,8 +5181,20 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P3_25: u2, // bit offset: 18 desc: Pin function select P3.25. - P3_26: u2, // bit offset: 20 desc: Pin function select P3.26. + P3_25: enum(u2) { // bit offset: 18 desc: Pin function select P3.25. + @"GPIO_P3" = 0, // desc: GPIO P3.25 + // @"RESERVED", // desc: Reserved + @"MAT0" = 2, // desc: MAT0.0 + @"PWM1" = 3, // desc: PWM1.2 + _, // non-exhaustive + }, + P3_26: enum(u2) { // bit offset: 20 desc: Pin function select P3.26. + @"GPIO_P3" = 0, // desc: GPIO P3.26 + @"STCLK" = 1, // desc: STCLK + @"MAT0" = 2, // desc: MAT0.1 + @"PWM1" = 3, // desc: PWM1.3 + }, + // RESERVED: u10, // bit offset: 22 desc: Reserved. padding10: u1 = 0, padding9: u1 = 0, padding8: u1 = 0, @@ -3792,6 +5208,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 36 Pin function select register 9 pub const PINSEL9 = mmio(Address + 0x00000024, 32, packed struct { + // RESERVED: u24, // bit offset: 0 desc: Reserved. reserved24: u1 = 0, reserved23: u1 = 0, reserved22: u1 = 0, @@ -3816,8 +5233,19 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P4_28: u2, // bit offset: 24 desc: Pin function select P4.28. - P4_29: u2, // bit offset: 26 desc: Pin function select P4.29. + P4_28: enum(u2) { // bit offset: 24 desc: Pin function select P4.28. + @"GPIO_P4" = 0, // desc: GPIO P4.28 + @"RX_MCLK" = 1, // desc: RX_MCLK + @"MAT2" = 2, // desc: MAT2.0 + @"TXD3" = 3, // desc: TXD3 + }, + P4_29: enum(u2) { // bit offset: 26 desc: Pin function select P4.29. + @"GPIO_P4" = 0, // desc: GPIO P4.29 + @"TX_MCLK" = 1, // desc: TX_MCLK + @"MAT2" = 2, // desc: MAT2.1 + @"RXD3" = 3, // desc: RXD3 + }, + // RESERVED: u4, // bit offset: 28 desc: Reserved. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -3825,10 +5253,15 @@ pub const PINCONNECT = extern struct { }); // byte offset: 40 Pin function select register 10 pub const PINSEL10 = mmio(Address + 0x00000028, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: Reserved. Software should not write 1 to these bits. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TPIUCTRL: bool, // bit offset: 3 desc: TPIU interface pins control. + TPIUCTRL: enum(u1) { // bit offset: 3 desc: TPIU interface pins control. + @"DISABLED" = 0, // desc: Disabled. TPIU interface is disabled. + @"ENABLED" = 1, // desc: Enabled. TPIU interface is enabled. TPIU signals are available on the pins hosting them regardless of the PINSEL4 content. + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Software should not write 1 to these bits. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -3860,39 +5293,162 @@ pub const PINCONNECT = extern struct { }); // byte offset: 64 Pin mode select register 0 pub const PINMODE0 = mmio(Address + 0x00000040, 32, packed struct { - P0_00MODE: u2, // bit offset: 0 desc: Port 0 pin 0 on-chip pull-up/down resistor control. - P0_01MODE: u2, // bit offset: 2 desc: Port 0 pin 1 control. - P0_02MODE: u2, // bit offset: 4 desc: Port 0 pin 2 control. - P0_03MODE: u2, // bit offset: 6 desc: Port 0 pin 3 control. - P0_04MODE: u2, // bit offset: 8 desc: Port 0 pin 4 control. - P0_05MODE: u2, // bit offset: 10 desc: Port 0 pin 5 control. - P0_06MODE: u2, // bit offset: 12 desc: Port 0 pin 6 control. - P0_07MODE: u2, // bit offset: 14 desc: Port 0 pin 7 control. - P0_08MODE: u2, // bit offset: 16 desc: Port 0 pin 8 control. - P0_09MODE: u2, // bit offset: 18 desc: Port 0 pin 9 control. - P0_10MODE: u2, // bit offset: 20 desc: Port 0 pin 10 control. - P0_11MODE: u2, // bit offset: 22 desc: Port 0 pin 11 control. + P0_00MODE: enum(u2) { // bit offset: 0 desc: Port 0 pin 0 on-chip pull-up/down resistor control. + @"PULL_UP" = 0, // desc: Pull-up. P0.0 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.0 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.0 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.0 has a pull-down resistor enabled. + }, + P0_01MODE: enum(u2) { // bit offset: 2 desc: Port 0 pin 1 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.1 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.1 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.1 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.1 has a pull-down resistor enabled. + }, + P0_02MODE: enum(u2) { // bit offset: 4 desc: Port 0 pin 2 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.2 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.2 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.2 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.2 has a pull-down resistor enabled. + }, + P0_03MODE: enum(u2) { // bit offset: 6 desc: Port 0 pin 3 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.3 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.3 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.3 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.3 has a pull-down resistor enabled. + }, + P0_04MODE: enum(u2) { // bit offset: 8 desc: Port 0 pin 4 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.4 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.4 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.4 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.4 has a pull-down resistor enabled. + }, + P0_05MODE: enum(u2) { // bit offset: 10 desc: Port 0 pin 5 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.5 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.5 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.5 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.5 has a pull-down resistor enabled. + }, + P0_06MODE: enum(u2) { // bit offset: 12 desc: Port 0 pin 6 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.6 pin has a pull-up resistor enabled. + @"DISABLED" = 1, // desc: Disabled. Repeater. P0.6 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.6 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.6 has a pull-down resistor enabled. + }, + P0_07MODE: enum(u2) { // bit offset: 14 desc: Port 0 pin 7 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.7 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.7 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.7 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.7 has a pull-down resistor enabled. + }, + P0_08MODE: enum(u2) { // bit offset: 16 desc: Port 0 pin 8 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.8 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.8 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.8 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.8 has a pull-down resistor enabled. + }, + P0_09MODE: enum(u2) { // bit offset: 18 desc: Port 0 pin 9 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.9 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.9 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.9 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.9 has a pull-down resistor enabled. + }, + P0_10MODE: enum(u2) { // bit offset: 20 desc: Port 0 pin 10 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.10 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.10 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.10 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.10 has a pull-down resistor enabled. + }, + P0_11MODE: enum(u2) { // bit offset: 22 desc: Port 0 pin 11 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.11 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.11 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.11 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.11 has a pull-down resistor enabled. + }, + // RESERVED: u6, // bit offset: 24 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P0_15MODE: u2, // bit offset: 30 desc: Port 0 pin 15 control. + P0_15MODE: enum(u2) { // bit offset: 30 desc: Port 0 pin 15 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.15 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.15 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.15 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.15 has a pull-down resistor enabled. + }, }); // byte offset: 68 Pin mode select register 1 pub const PINMODE1 = mmio(Address + 0x00000044, 32, packed struct { - P0_16MODE: u2, // bit offset: 0 desc: Port 1 pin 16 control. - P0_17MODE: u2, // bit offset: 2 desc: Port 1 pin 17 control. - P0_18MODE: u2, // bit offset: 4 desc: Port 1 pin 18 control. - P0_19MODE: u2, // bit offset: 6 desc: Port 1 pin 19 control. - P0_20MODE: u2, // bit offset: 8 desc: Port 1 pin 20 control. - P0_21MODE: u2, // bit offset: 10 desc: Port 1 pin 21 control. - P0_22MODE: u2, // bit offset: 12 desc: Port 1 pin 22 control. - P0_23MODE: u2, // bit offset: 14 desc: Port 1 pin 23 control. - P0_24MODE: u2, // bit offset: 16 desc: Port 1 pin 24 control. - P0_25MODE: u2, // bit offset: 18 desc: Port 1 pin 25 control. - P0_26MODE: u2, // bit offset: 20 desc: Port 1 pin 26 control. + P0_16MODE: enum(u2) { // bit offset: 0 desc: Port 1 pin 16 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.16 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.16 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.16 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.16 has a pull-down resistor enabled. + }, + P0_17MODE: enum(u2) { // bit offset: 2 desc: Port 1 pin 17 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.17 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.17 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.17 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.17 has a pull-down resistor enabled. + }, + P0_18MODE: enum(u2) { // bit offset: 4 desc: Port 1 pin 18 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.18 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.18 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.18 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.18 has a pull-down resistor enabled. + }, + P0_19MODE: enum(u2) { // bit offset: 6 desc: Port 1 pin 19 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.19 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.19 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.19 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.19 has a pull-down resistor enabled. + }, + P0_20MODE: enum(u2) { // bit offset: 8 desc: Port 1 pin 20 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.20 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.20 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.20 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.20 has a pull-down resistor enabled. + }, + P0_21MODE: enum(u2) { // bit offset: 10 desc: Port 1 pin 21 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.21 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.21 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.21 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.21 has a pull-down resistor enabled. + }, + P0_22MODE: enum(u2) { // bit offset: 12 desc: Port 1 pin 22 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.22 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.22 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.22 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.22 has a pull-down resistor enabled. + }, + P0_23MODE: enum(u2) { // bit offset: 14 desc: Port 1 pin 23 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.23 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.23 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.23 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.23 has a pull-down resistor enabled. + }, + P0_24MODE: enum(u2) { // bit offset: 16 desc: Port 1 pin 24 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.24 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.24 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.24 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.24 has a pull-down resistor enabled. + }, + P0_25MODE: enum(u2) { // bit offset: 18 desc: Port 1 pin 25 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.25 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.25 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.25 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.25 has a pull-down resistor enabled. + }, + P0_26MODE: enum(u2) { // bit offset: 20 desc: Port 1 pin 26 control. + @"PULL_UP" = 0, // desc: Pull-up. P0.26 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P0.26 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P0.26 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P0.26 has a pull-down resistor enabled. + }, + // RESERVED: u8, // bit offset: 22 desc: Reserved. + // RESERVED: u2, // bit offset: 30 desc: Reserved. padding10: u1 = 0, padding9: u1 = 0, padding8: u1 = 0, @@ -3906,66 +5462,260 @@ pub const PINCONNECT = extern struct { }); // byte offset: 72 Pin mode select register 2 pub const PINMODE2 = mmio(Address + 0x00000048, 32, packed struct { - P1_00MODE: u2, // bit offset: 0 desc: Port 1 pin 0 control. - P1_01MODE: u2, // bit offset: 2 desc: Port 1 pin 1 control. + P1_00MODE: enum(u2) { // bit offset: 0 desc: Port 1 pin 0 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.0 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.0 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.0 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.0 has a pull-down resistor enabled. + }, + P1_01MODE: enum(u2) { // bit offset: 2 desc: Port 1 pin 1 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.1 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.1 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.1 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.1 has a pull-down resistor enabled. + }, + // RESERVED: u4, // bit offset: 4 desc: Reserved. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P1_04MODE: u2, // bit offset: 8 desc: Port 1 pin 4 control. - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - P1_08MODE: u2, // bit offset: 16 desc: Port 1 pin 8 control. - P1_09MODE: u2, // bit offset: 18 desc: Port 1 pin 9 control. - P1_10MODE: u2, // bit offset: 20 desc: Port 1 pin 10 control. + P1_04MODE: enum(u2) { // bit offset: 8 desc: Port 1 pin 4 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.4 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.4 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.4 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.4 has a pull-down resistor enabled. + }, + // RESERVED: u6, // bit offset: 10 desc: Reserved. reserved10: u1 = 0, reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, - P1_14MODE: u2, // bit offset: 28 desc: Port 1 pin 14 control. - P1_15MODE: u2, // bit offset: 30 desc: Port 1 pin 15 control. + P1_08MODE: enum(u2) { // bit offset: 16 desc: Port 1 pin 8 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.8 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.8 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.8 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.8 has a pull-down resistor enabled. + }, + P1_09MODE: enum(u2) { // bit offset: 18 desc: Port 1 pin 9 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.9 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.9 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.9 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.9 has a pull-down resistor enabled. + }, + P1_10MODE: enum(u2) { // bit offset: 20 desc: Port 1 pin 10 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.10 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.10 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.10 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.10 has a pull-down resistor enabled. + }, + // RESERVED: u6, // bit offset: 22 desc: Reserved. + reserved16: u1 = 0, + reserved15: u1 = 0, + reserved14: u1 = 0, + reserved13: u1 = 0, + reserved12: u1 = 0, + reserved11: u1 = 0, + P1_14MODE: enum(u2) { // bit offset: 28 desc: Port 1 pin 14 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.14 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.14 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.14 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.14 has a pull-down resistor enabled. + }, + P1_15MODE: enum(u2) { // bit offset: 30 desc: Port 1 pin 15 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.15 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.15 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.15 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.15 has a pull-down resistor enabled. + }, }); // byte offset: 76 Pin mode select register 3. pub const PINMODE3 = mmio(Address + 0x0000004c, 32, packed struct { - P1_16MODE: u2, // bit offset: 0 desc: Port 1 pin 16 control. - P1_17MODE: u2, // bit offset: 2 desc: Port 1 pin 17 control. - P1_18MODE: u2, // bit offset: 4 desc: Port 1 pin 18 control. - P1_19MODE: u2, // bit offset: 6 desc: Port 1 pin 19 control. - P1_20MODE: u2, // bit offset: 8 desc: Port 1 pin 20 control. - P1_21MODE: u2, // bit offset: 10 desc: Port 1 pin 21 control. - P1_22MODE: u2, // bit offset: 12 desc: Port 1 pin 22 control. - P1_23MODE: u2, // bit offset: 14 desc: Port 1 pin 23 control. - P1_24MODE: u2, // bit offset: 16 desc: Port 1 pin 24 control. - P1_25MODE: u2, // bit offset: 18 desc: Port 1 pin 25 control. - P1_26MODE: u2, // bit offset: 20 desc: Port 1 pin 26 control. - P1_27MODE: u2, // bit offset: 22 desc: Port 1 pin 27 control. - P1_28MODE: u2, // bit offset: 24 desc: Port 1 pin 28 control. - P1_29MODE: u2, // bit offset: 26 desc: Port 1 pin 29 control. - P1_30MODE: u2, // bit offset: 28 desc: Port 1 pin 30 control. - P1_31MODE: u2, // bit offset: 30 desc: Port 1 pin 31 control. + P1_16MODE: enum(u2) { // bit offset: 0 desc: Port 1 pin 16 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.16 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.16 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.16 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.16 has a pull-down resistor enabled. + }, + P1_17MODE: enum(u2) { // bit offset: 2 desc: Port 1 pin 17 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.17 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.17 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.17 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.17 has a pull-down resistor enabled. + }, + P1_18MODE: enum(u2) { // bit offset: 4 desc: Port 1 pin 18 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.18 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.18 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.18 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.18 has a pull-down resistor enabled. + }, + P1_19MODE: enum(u2) { // bit offset: 6 desc: Port 1 pin 19 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.19 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.19 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.19 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.19 has a pull-down resistor enabled. + }, + P1_20MODE: enum(u2) { // bit offset: 8 desc: Port 1 pin 20 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.20 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.20 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.20 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.20 has a pull-down resistor enabled. + }, + P1_21MODE: enum(u2) { // bit offset: 10 desc: Port 1 pin 21 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.21 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.21 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.21 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.21 has a pull-down resistor enabled. + }, + P1_22MODE: enum(u2) { // bit offset: 12 desc: Port 1 pin 22 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.22 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.22 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.22 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.22 has a pull-down resistor enabled. + }, + P1_23MODE: enum(u2) { // bit offset: 14 desc: Port 1 pin 23 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.23 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.23 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.23 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.23 has a pull-down resistor enabled. + }, + P1_24MODE: enum(u2) { // bit offset: 16 desc: Port 1 pin 24 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.24 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.24 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.24 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.24 has a pull-down resistor enabled. + }, + P1_25MODE: enum(u2) { // bit offset: 18 desc: Port 1 pin 25 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.25 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.25 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.25 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.25 has a pull-down resistor enabled. + }, + P1_26MODE: enum(u2) { // bit offset: 20 desc: Port 1 pin 26 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.26 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.26 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.26 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.26 has a pull-down resistor enabled. + }, + P1_27MODE: enum(u2) { // bit offset: 22 desc: Port 1 pin 27 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.27 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.27 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.27 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.27 has a pull-down resistor enabled. + }, + P1_28MODE: enum(u2) { // bit offset: 24 desc: Port 1 pin 28 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.28 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.28 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.28 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.28 has a pull-down resistor enabled. + }, + P1_29MODE: enum(u2) { // bit offset: 26 desc: Port 1 pin 29 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.29 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.29 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.29 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.29 has a pull-down resistor enabled. + }, + P1_30MODE: enum(u2) { // bit offset: 28 desc: Port 1 pin 30 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.30 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.30 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.30 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.30 has a pull-down resistor enabled. + }, + P1_31MODE: enum(u2) { // bit offset: 30 desc: Port 1 pin 31 control. + @"PULL_UP" = 0, // desc: Pull-up. P1.31 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P1.31 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P1.31 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P1.31 has a pull-down resistor enabled. + }, }); // byte offset: 80 Pin mode select register 4 pub const PINMODE4 = mmio(Address + 0x00000050, 32, packed struct { - P2_00MODE: u2, // bit offset: 0 desc: Port 2 pin 0 control. - P2_01MODE: u2, // bit offset: 2 desc: Port 2 pin 1 control. - P2_02MODE: u2, // bit offset: 4 desc: Port 2 pin 2 control. - P2_03MODE: u2, // bit offset: 6 desc: Port 2 pin 3 control. - P2_04MODE: u2, // bit offset: 8 desc: Port 2 pin 4 control. - P2_05MODE: u2, // bit offset: 10 desc: Port 2 pin 5 control. - P2_06MODE: u2, // bit offset: 12 desc: Port 2 pin 6 control. - P2_07MODE: u2, // bit offset: 14 desc: Port 2 pin 7 control. - P2_08MODE: u2, // bit offset: 16 desc: Port 2 pin 8 control. - P2_09MODE: u2, // bit offset: 18 desc: Port 2 pin 9 control. - P2_10MODE: u2, // bit offset: 20 desc: Port 2 pin 10 control. - P2_11MODE: u2, // bit offset: 22 desc: Port 2 pin 11 control. - P2_12MODE: u2, // bit offset: 24 desc: Port 2 pin 12 control. - P2_13MODE: u2, // bit offset: 26 desc: Port 2 pin 13 control. + P2_00MODE: enum(u2) { // bit offset: 0 desc: Port 2 pin 0 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.0 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.0 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.0 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.0 has a pull-down resistor enabled. + }, + P2_01MODE: enum(u2) { // bit offset: 2 desc: Port 2 pin 1 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.1 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.1 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.1 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.1 has a pull-down resistor enabled. + }, + P2_02MODE: enum(u2) { // bit offset: 4 desc: Port 2 pin 2 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.2 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.2 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.2 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.2 has a pull-down resistor enabled. + }, + P2_03MODE: enum(u2) { // bit offset: 6 desc: Port 2 pin 3 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.3 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.3 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.3 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.3 has a pull-down resistor enabled. + }, + P2_04MODE: enum(u2) { // bit offset: 8 desc: Port 2 pin 4 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.4 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.4 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.4 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.4 has a pull-down resistor enabled. + }, + P2_05MODE: enum(u2) { // bit offset: 10 desc: Port 2 pin 5 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.5 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.5 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.5 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.5 has a pull-down resistor enabled. + }, + P2_06MODE: enum(u2) { // bit offset: 12 desc: Port 2 pin 6 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.6 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.6 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.6 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.6 has a pull-down resistor enabled. + }, + P2_07MODE: enum(u2) { // bit offset: 14 desc: Port 2 pin 7 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.7 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.7 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.7 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.7 has a pull-down resistor enabled. + }, + P2_08MODE: enum(u2) { // bit offset: 16 desc: Port 2 pin 8 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.8 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.8 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.8 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.8 has a pull-down resistor enabled. + }, + P2_09MODE: enum(u2) { // bit offset: 18 desc: Port 2 pin 9 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.9 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.9 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.9 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.9 has a pull-down resistor enabled. + }, + P2_10MODE: enum(u2) { // bit offset: 20 desc: Port 2 pin 10 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.10 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.10 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.10 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.10 has a pull-down resistor enabled. + }, + P2_11MODE: enum(u2) { // bit offset: 22 desc: Port 2 pin 11 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.11 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.11 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.11 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.11 has a pull-down resistor enabled. + }, + P2_12MODE: enum(u2) { // bit offset: 24 desc: Port 2 pin 12 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.12 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.12 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.12 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.12 has a pull-down resistor enabled. + }, + P2_13MODE: enum(u2) { // bit offset: 26 desc: Port 2 pin 13 control. + @"PULL_UP" = 0, // desc: Pull-up. P2.13 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P2.13 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P2.13 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P2.13 has a pull-down resistor enabled. + }, + // RESERVED: u4, // bit offset: 28 desc: Reserved. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -3973,6 +5723,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 92 Pin mode select register 7 pub const PINMODE7 = mmio(Address + 0x0000005c, 32, packed struct { + // RESERVED: u18, // bit offset: 0 desc: Reserved reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, @@ -3991,8 +5742,19 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P3_25MODE: u2, // bit offset: 18 desc: Port 3 pin 25 control. - P3_26MODE: u2, // bit offset: 20 desc: Port 3 pin 26 control. + P3_25MODE: enum(u2) { // bit offset: 18 desc: Port 3 pin 25 control. + @"PULL_UP" = 0, // desc: Pull-up. P3.25 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P3.25 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P3.25 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P3.25 has a pull-down resistor enabled. + }, + P3_26MODE: enum(u2) { // bit offset: 20 desc: Port 3 pin 26 control. + @"PULL_UP" = 0, // desc: Pull-up. P3.26 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P3.26 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P3.26 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P3.26 has a pull-down resistor enabled. + }, + // RESERVED: u10, // bit offset: 22 desc: Reserved. padding10: u1 = 0, padding9: u1 = 0, padding8: u1 = 0, @@ -4006,6 +5768,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 100 Pin mode select register 9 pub const PINMODE9 = mmio(Address + 0x00000064, 32, packed struct { + // RESERVED: u24, // bit offset: 0 desc: Reserved. reserved24: u1 = 0, reserved23: u1 = 0, reserved22: u1 = 0, @@ -4030,8 +5793,19 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P4_28MODE: u2, // bit offset: 24 desc: Port 4 pin 28 control. - P4_29MODE: u2, // bit offset: 26 desc: Port 4 pin 29 control. + P4_28MODE: enum(u2) { // bit offset: 24 desc: Port 4 pin 28 control. + @"PULL_UP" = 0, // desc: Pull-up. P4.28 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P4.28 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P4.28 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P4.28 has a pull-down resistor enabled. + }, + P4_29MODE: enum(u2) { // bit offset: 26 desc: Port 4 pin 29 control. + @"PULL_UP" = 0, // desc: Pull-up. P4.29 pin has a pull-up resistor enabled. + @"REPEATER" = 1, // desc: Repeater. P4.29 pin has repeater mode enabled. + @"DISABLED" = 2, // desc: Disabled. P4.29 pin has neither pull-up nor pull-down. + @"PULL_DOWN" = 3, // desc: Pull-down. P4.29 has a pull-down resistor enabled. + }, + // RESERVED: u4, // bit offset: 28 desc: Reserved. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -4039,90 +5813,289 @@ pub const PINCONNECT = extern struct { }); // byte offset: 104 Open drain mode control register 0 pub const PINMODE_OD0 = mmio(Address + 0x00000068, 32, packed struct { - P0_00OD: bool, // bit offset: 0 desc: Port 0 pin 0 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. - P0_01OD: bool, // bit offset: 1 desc: Port 0 pin 1 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. - P0_02OD: bool, // bit offset: 2 desc: Port 0 pin 2 open drain mode control - P0_03OD: bool, // bit offset: 3 desc: Port 0 pin 3 open drain mode control - P0_04OD: bool, // bit offset: 4 desc: Port 0 pin 4 open drain mode control - P0_05OD: bool, // bit offset: 5 desc: Port 0 pin 5 open drain mode control - P0_06OD: bool, // bit offset: 6 desc: Port 0 pin 6 open drain mode control - P0_07OD: bool, // bit offset: 7 desc: Port 0 pin 7 open drain mode control - P0_08OD: bool, // bit offset: 8 desc: Port 0 pin 8 open drain mode control - P0_09OD: bool, // bit offset: 9 desc: Port 0 pin 9 open drain mode control - P0_10OD: bool, // bit offset: 10 desc: Port 0 pin 10 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. - P0_11OD: bool, // bit offset: 11 desc: Port 0 pin 11 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + P0_00OD: enum(u1) { // bit offset: 0 desc: Port 0 pin 0 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.0 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.0 pin is in the open drain mode. + }, + P0_01OD: enum(u1) { // bit offset: 1 desc: Port 0 pin 1 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.1 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.1 pin is in the open drain mode. + }, + P0_02OD: enum(u1) { // bit offset: 2 desc: Port 0 pin 2 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.2 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.2 pin is in the open drain mode. + }, + P0_03OD: enum(u1) { // bit offset: 3 desc: Port 0 pin 3 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.3 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.3 pin is in the open drain mode. + }, + P0_04OD: enum(u1) { // bit offset: 4 desc: Port 0 pin 4 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.4 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.4 pin is in the open drain mode. + }, + P0_05OD: enum(u1) { // bit offset: 5 desc: Port 0 pin 5 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.5 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.5 pin is in the open drain mode. + }, + P0_06OD: enum(u1) { // bit offset: 6 desc: Port 0 pin 6 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.6 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.6 pin is in the open drain mode. + }, + P0_07OD: enum(u1) { // bit offset: 7 desc: Port 0 pin 7 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.7 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.7 pin is in the open drain mode. + }, + P0_08OD: enum(u1) { // bit offset: 8 desc: Port 0 pin 8 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.8 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.8 pin is in the open drain mode. + }, + P0_09OD: enum(u1) { // bit offset: 9 desc: Port 0 pin 9 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.9 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.9 pin is in the open drain mode. + }, + P0_10OD: enum(u1) { // bit offset: 10 desc: Port 0 pin 10 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.10 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.10 pin is in the open drain mode. + }, + P0_11OD: enum(u1) { // bit offset: 11 desc: Port 0 pin 11 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.11 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.11 pin is in the open drain mode. + }, + // RESERVED: u3, // bit offset: 12 desc: Reserved. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P0_15OD: bool, // bit offset: 15 desc: Port 0 pin 15 open drain mode control - P0_16OD: bool, // bit offset: 16 desc: Port 0 pin 16 open drain mode control - P0_17OD: bool, // bit offset: 17 desc: Port 0 pin 17 open drain mode control - P0_18OD: bool, // bit offset: 18 desc: Port 0 pin 18 open drain mode control - P0_19OD: bool, // bit offset: 19 desc: Port 0 pin 19 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. - P0_20OD: bool, // bit offset: 20 desc: Port 0 pin 20open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. - P0_21OD: bool, // bit offset: 21 desc: Port 0 pin 21 open drain mode control - P0_22OD: bool, // bit offset: 22 desc: Port 0 pin 22 open drain mode control - P0_23OD: bool, // bit offset: 23 desc: Port 0 pin 23 open drain mode control - P0_24OD: bool, // bit offset: 24 desc: Port 0 pin 24open drain mode control - P0_25OD: bool, // bit offset: 25 desc: Port 0 pin 25 open drain mode control - P0_26OD: bool, // bit offset: 26 desc: Port 0 pin 26 open drain mode control - reserved3: u1 = 0, - reserved2: u1 = 0, - P0_29OD: bool, // bit offset: 29 desc: Port 0 pin 29 open drain mode control - P0_30OD: bool, // bit offset: 30 desc: Port 0 pin 30 open drain mode control + P0_15OD: enum(u1) { // bit offset: 15 desc: Port 0 pin 15 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.15 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.15 pin is in the open drain mode. + }, + P0_16OD: enum(u1) { // bit offset: 16 desc: Port 0 pin 16 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.16 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.16 pin is in the open drain mode. + }, + P0_17OD: enum(u1) { // bit offset: 17 desc: Port 0 pin 17 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.17 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.17 pin is in the open drain mode. + }, + P0_18OD: enum(u1) { // bit offset: 18 desc: Port 0 pin 18 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.18 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.18 pin is in the open drain mode. + }, + P0_19OD: enum(u1) { // bit offset: 19 desc: Port 0 pin 19 open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.19 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.19 pin is in the open drain mode. + }, + P0_20OD: enum(u1) { // bit offset: 20 desc: Port 0 pin 20open drain mode control. Pins may potentially be used for I2C-buses using standard port pins. If so, they should be configured for open drain mode via the related bits in PINMODE_OD0. + @"NORMAL" = 0, // desc: Normal. P0.20 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.20 pin is in the open drain mode. + }, + P0_21OD: enum(u1) { // bit offset: 21 desc: Port 0 pin 21 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.21 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.21 pin is in the open drain mode. + }, + P0_22OD: enum(u1) { // bit offset: 22 desc: Port 0 pin 22 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.22 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.22 pin is in the open drain mode. + }, + P0_23OD: enum(u1) { // bit offset: 23 desc: Port 0 pin 23 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.23 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.23 pin is in the open drain mode. + }, + P0_24OD: enum(u1) { // bit offset: 24 desc: Port 0 pin 24open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.23 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.23 pin is in the open drain mode. + }, + P0_25OD: enum(u1) { // bit offset: 25 desc: Port 0 pin 25 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.25 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.25 pin is in the open drain mode. + }, + P0_26OD: enum(u1) { // bit offset: 26 desc: Port 0 pin 26 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.26 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.26 pin is in the open drain mode. + }, + // RESERVED: u2, // bit offset: 27 desc: Reserved. + reserved5: u1 = 0, + reserved4: u1 = 0, + P0_29OD: enum(u1) { // bit offset: 29 desc: Port 0 pin 29 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.29 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.29 pin is in the open drain mode. + }, + P0_30OD: enum(u1) { // bit offset: 30 desc: Port 0 pin 30 open drain mode control + @"NORMAL" = 0, // desc: Normal. P0.30 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P0.30 pin is in the open drain mode. + }, + // RESERVED: u1, // bit offset: 31 desc: Reserved. padding1: u1 = 0, }); // byte offset: 108 Open drain mode control register 1 pub const PINMODE_OD1 = mmio(Address + 0x0000006c, 32, packed struct { - P1_00OD: bool, // bit offset: 0 desc: Port 1 pin 0 open drain mode control. - P1_01OD: bool, // bit offset: 1 desc: Port 1 pin 1 open drain mode control, see P1.00OD + P1_00OD: enum(u1) { // bit offset: 0 desc: Port 1 pin 0 open drain mode control. + @"NORMAL" = 0, // desc: Normal. P1.0 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.0 pin is in the open drain mode. + }, + P1_01OD: enum(u1) { // bit offset: 1 desc: Port 1 pin 1 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.1 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.1 pin is in the open drain mode. + }, + // RESERVED: u2, // bit offset: 2 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - P1_04OD: bool, // bit offset: 4 desc: Port 1 pin 4 open drain mode control, see P1.00OD - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - P1_08OD: bool, // bit offset: 8 desc: Port 1 pin 8 open drain mode control, see P1.00OD - P1_09OD: bool, // bit offset: 9 desc: Port 1 pin 9 open drain mode control, see P1.00OD - P1_10OD: bool, // bit offset: 10 desc: Port 1 pin 10 open drain mode control, see P1.00OD + P1_04OD: enum(u1) { // bit offset: 4 desc: Port 1 pin 4 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.4 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.4 pin is in the open drain mode. + }, + // RESERVED: u3, // bit offset: 5 desc: Reserved. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - P1_14OD: bool, // bit offset: 14 desc: Port 1 pin 14 open drain mode control, see P1.00OD - P1_15OD: bool, // bit offset: 15 desc: Port 1 pin 15 open drain mode control, see P1.00OD - P1_16OD: bool, // bit offset: 16 desc: Port 1 pin 16 open drain mode control, see P1.00OD - P1_17OD: bool, // bit offset: 17 desc: Port 1 pin 17 open drain mode control, see P1.00OD - P1_18OD: bool, // bit offset: 18 desc: Port 1 pin 18 open drain mode control, see P1.00OD - P1_19OD: bool, // bit offset: 19 desc: Port 1 pin 19 open drain mode control, see P1.00OD - P1_20OD: bool, // bit offset: 20 desc: Port 1 pin 20open drain mode control, see P1.00OD - P1_21OD: bool, // bit offset: 21 desc: Port 1 pin 21 open drain mode control, see P1.00OD - P1_22OD: bool, // bit offset: 22 desc: Port 1 pin 22 open drain mode control, see P1.00OD - P1_23OD: bool, // bit offset: 23 desc: Port 1 pin 23 open drain mode control, see P1.00OD - P1_24OD: bool, // bit offset: 24 desc: Port 1 pin 24open drain mode control, see P1.00OD - P1_25OD: bool, // bit offset: 25 desc: Port 1 pin 25 open drain mode control, see P1.00OD - P1_26OD: bool, // bit offset: 26 desc: Port 1 pin 26 open drain mode control, see P1.00OD - P1_27OD: bool, // bit offset: 27 desc: Port 1 pin 27 open drain mode control, see P1.00OD - P1_28OD: bool, // bit offset: 28 desc: Port 1 pin 28 open drain mode control, see P1.00OD - P1_29OD: bool, // bit offset: 29 desc: Port 1 pin 29 open drain mode control, see P1.00OD - P1_30OD: bool, // bit offset: 30 desc: Port 1 pin 30 open drain mode control, see P1.00OD - P1_31OD: bool, // bit offset: 31 desc: Port 1 pin 31 open drain mode control. + P1_08OD: enum(u1) { // bit offset: 8 desc: Port 1 pin 8 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.8 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.8 pin is in the open drain mode. + }, + P1_09OD: enum(u1) { // bit offset: 9 desc: Port 1 pin 9 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.9 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.9 pin is in the open drain mode. + }, + P1_10OD: enum(u1) { // bit offset: 10 desc: Port 1 pin 10 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.10 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.10 pin is in the open drain mode. + }, + // RESERVED: u3, // bit offset: 11 desc: Reserved. + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + P1_14OD: enum(u1) { // bit offset: 14 desc: Port 1 pin 14 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.14 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.14 pin is in the open drain mode. + }, + P1_15OD: enum(u1) { // bit offset: 15 desc: Port 1 pin 15 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.15 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.15 pin is in the open drain mode. + }, + P1_16OD: enum(u1) { // bit offset: 16 desc: Port 1 pin 16 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.16 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.16 pin is in the open drain mode. + }, + P1_17OD: enum(u1) { // bit offset: 17 desc: Port 1 pin 17 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.17 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.17 pin is in the open drain mode. + }, + P1_18OD: enum(u1) { // bit offset: 18 desc: Port 1 pin 18 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.18 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.18 pin is in the open drain mode. + }, + P1_19OD: enum(u1) { // bit offset: 19 desc: Port 1 pin 19 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.19 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.19 pin is in the open drain mode. + }, + P1_20OD: enum(u1) { // bit offset: 20 desc: Port 1 pin 20open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.20 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.20 pin is in the open drain mode. + }, + P1_21OD: enum(u1) { // bit offset: 21 desc: Port 1 pin 21 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.21 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.21 pin is in the open drain mode. + }, + P1_22OD: enum(u1) { // bit offset: 22 desc: Port 1 pin 22 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.22 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.22 pin is in the open drain mode. + }, + P1_23OD: enum(u1) { // bit offset: 23 desc: Port 1 pin 23 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.23 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.23 pin is in the open drain mode. + }, + P1_24OD: enum(u1) { // bit offset: 24 desc: Port 1 pin 24open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.24 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.24 pin is in the open drain mode. + }, + P1_25OD: enum(u1) { // bit offset: 25 desc: Port 1 pin 25 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.25 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.25 pin is in the open drain mode. + }, + P1_26OD: enum(u1) { // bit offset: 26 desc: Port 1 pin 26 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.26 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.26 pin is in the open drain mode. + }, + P1_27OD: enum(u1) { // bit offset: 27 desc: Port 1 pin 27 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.27 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.27 pin is in the open drain mode. + }, + P1_28OD: enum(u1) { // bit offset: 28 desc: Port 1 pin 28 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.28 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.28 pin is in the open drain mode. + }, + P1_29OD: enum(u1) { // bit offset: 29 desc: Port 1 pin 29 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.29 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.29 pin is in the open drain mode. + }, + P1_30OD: enum(u1) { // bit offset: 30 desc: Port 1 pin 30 open drain mode control, see P1.00OD + @"NORMAL" = 0, // desc: Normal. P1.30 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.30 pin is in the open drain mode. + }, + P1_31OD: enum(u1) { // bit offset: 31 desc: Port 1 pin 31 open drain mode control. + @"NORMAL" = 0, // desc: Normal. P1.31 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P1.31 pin is in the open drain mode. + }, }); // byte offset: 112 Open drain mode control register 2 pub const PINMODE_OD2 = mmio(Address + 0x00000070, 32, packed struct { - P2_00OD: bool, // bit offset: 0 desc: Port 2 pin 0 open drain mode control. - P2_01OD: bool, // bit offset: 1 desc: Port 2 pin 1 open drain mode control, see P2.00OD - P2_02OD: bool, // bit offset: 2 desc: Port 2 pin 2 open drain mode control, see P2.00OD - P2_03OD: bool, // bit offset: 3 desc: Port 2 pin 3 open drain mode control, see P2.00OD - P2_04OD: bool, // bit offset: 4 desc: Port 2 pin 4 open drain mode control, see P2.00OD - P2_05OD: bool, // bit offset: 5 desc: Port 2 pin 5 open drain mode control, see P2.00OD - P2_06OD: bool, // bit offset: 6 desc: Port 2 pin 6 open drain mode control, see P2.00OD - P2_07OD: bool, // bit offset: 7 desc: Port 2 pin 7 open drain mode control, see P2.00OD - P2_08OD: bool, // bit offset: 8 desc: Port 2 pin 8 open drain mode control, see P2.00OD - P2_09OD: bool, // bit offset: 9 desc: Port 2 pin 9 open drain mode control, see P2.00OD - P2_10OD: bool, // bit offset: 10 desc: Port 2 pin 10 open drain mode control, see P2.00OD - P2_11OD: bool, // bit offset: 11 desc: Port 2 pin 11 open drain mode control, see P2.00OD - P2_12OD: bool, // bit offset: 12 desc: Port 2 pin 12 open drain mode control, see P2.00OD - P2_13OD: bool, // bit offset: 13 desc: Port 2 pin 13 open drain mode control, see P2.00OD + P2_00OD: enum(u1) { // bit offset: 0 desc: Port 2 pin 0 open drain mode control. + @"NORMAL" = 0, // desc: Normal. P2.0 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.0 pin is in the open drain mode. + }, + P2_01OD: enum(u1) { // bit offset: 1 desc: Port 2 pin 1 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.1 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.1p in is in the open drain mode. + }, + P2_02OD: enum(u1) { // bit offset: 2 desc: Port 2 pin 2 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.2 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.2 pin is in the open drain mode. + }, + P2_03OD: enum(u1) { // bit offset: 3 desc: Port 2 pin 3 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.3 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.3 pin is in the open drain mode. + }, + P2_04OD: enum(u1) { // bit offset: 4 desc: Port 2 pin 4 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.4 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.4 pin is in the open drain mode. + }, + P2_05OD: enum(u1) { // bit offset: 5 desc: Port 2 pin 5 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.5 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.5 pin is in the open drain mode. + }, + P2_06OD: enum(u1) { // bit offset: 6 desc: Port 2 pin 6 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.6 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.6 pin is in the open drain mode. + }, + P2_07OD: enum(u1) { // bit offset: 7 desc: Port 2 pin 7 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.7 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.7 pin is in the open drain mode. + }, + P2_08OD: enum(u1) { // bit offset: 8 desc: Port 2 pin 8 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.8 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.8 pin is in the open drain mode. + }, + P2_09OD: enum(u1) { // bit offset: 9 desc: Port 2 pin 9 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.9 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.9 pin is in the open drain mode. + }, + P2_10OD: enum(u1) { // bit offset: 10 desc: Port 2 pin 10 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.10 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.10 pin is in the open drain mode. + }, + P2_11OD: enum(u1) { // bit offset: 11 desc: Port 2 pin 11 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.11 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.11 pin is in the open drain mode. + }, + P2_12OD: enum(u1) { // bit offset: 12 desc: Port 2 pin 12 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.12 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.12 pin is in the open drain mode. + }, + P2_13OD: enum(u1) { // bit offset: 13 desc: Port 2 pin 13 open drain mode control, see P2.00OD + @"NORMAL" = 0, // desc: Normal. P2.13 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P2.13 pin is in the open drain mode. + }, + // RESERVED: u18, // bit offset: 14 desc: Reserved. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -4144,6 +6117,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 116 Open drain mode control register 3 pub const PINMODE_OD3 = mmio(Address + 0x00000074, 32, packed struct { + // RESERVED: u25, // bit offset: 0 desc: Reserved. reserved25: u1 = 0, reserved24: u1 = 0, reserved23: u1 = 0, @@ -4169,8 +6143,12 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P3_25OD: bool, // bit offset: 25 desc: Port 3 pin 25 open drain mode control. - P3_26OD: bool, // bit offset: 26 desc: Port 3 pin 26 open drain mode control, see P3.25OD + P3_25OD: enum(u1) { // bit offset: 25 desc: Port 3 pin 25 open drain mode control. + @"NORMAL" = 0, // desc: Normal. P3.25 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P3.25 pin is in the open drain mode. + }, + P3_26OD: u1, // bit offset: 26 desc: Port 3 pin 26 open drain mode control, see P3.25OD + // RESERVED: u5, // bit offset: 27 desc: Reserved. padding5: u1 = 0, padding4: u1 = 0, padding3: u1 = 0, @@ -4179,6 +6157,7 @@ pub const PINCONNECT = extern struct { }); // byte offset: 120 Open drain mode control register 4 pub const PINMODE_OD4 = mmio(Address + 0x00000078, 32, packed struct { + // RESERVED: u28, // bit offset: 0 desc: Reserved. reserved28: u1 = 0, reserved27: u1 = 0, reserved26: u1 = 0, @@ -4207,17 +6186,34 @@ pub const PINCONNECT = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - P4_28OD: bool, // bit offset: 28 desc: Port 4 pin 28 open drain mode control. - P4_29OD: bool, // bit offset: 29 desc: Port 4 pin 29 open drain mode control, see P4.28OD + P4_28OD: enum(u1) { // bit offset: 28 desc: Port 4 pin 28 open drain mode control. + @"NORMAL" = 0, // desc: Normal. P4.28 pin is in the normal (not open drain) mode. + @"OPEN_DRAIN" = 1, // desc: Open-drain. P4.28 pin is in the open drain mode. + }, + P4_29OD: u1, // bit offset: 29 desc: Port 4 pin 29 open drain mode control, see P4.28OD + // RESERVED: u2, // bit offset: 30 desc: Reserved. padding2: u1 = 0, padding1: u1 = 0, }); // byte offset: 124 I2C Pin Configuration register pub const I2CPADCFG = mmio(Address + 0x0000007c, 32, packed struct { - SDADRV0: bool, // bit offset: 0 desc: Drive mode control for the SDA0 pin, P0.27. - SDAI2C0: bool, // bit offset: 1 desc: I 2C filter mode control for the SDA0 pin, P0.27. - SCLDRV0: bool, // bit offset: 2 desc: Drive mode control for the SCL0 pin, P0.28. - SCLI2C0: bool, // bit offset: 3 desc: I 2C filter mode control for the SCL0 pin, P0.28. + SDADRV0: enum(u1) { // bit offset: 0 desc: Drive mode control for the SDA0 pin, P0.27. + @"STANDARD" = 0, // desc: Standard. The SDA0 pin is in the standard drive mode. + @"FAST_MODE_PLUS" = 1, // desc: Fast-mode plus. The SDA0 pin is in Fast Mode Plus drive mode. + }, + SDAI2C0: enum(u1) { // bit offset: 1 desc: I 2C filter mode control for the SDA0 pin, P0.27. + @"ENABLED" = 0, // desc: Enabled. The SDA0 pin has I2C glitch filtering and slew rate control enabled. + @"DISABLED" = 1, // desc: Disabled. The SDA0 pin has I2C glitch filtering and slew rate control disabled. + }, + SCLDRV0: enum(u1) { // bit offset: 2 desc: Drive mode control for the SCL0 pin, P0.28. + @"STANDARD" = 0, // desc: Standard. The SCL0 pin is in the standard drive mode. + @"FAST_MODE_PLUS" = 1, // desc: Fast-mode plus. The SCL0 pin is in Fast Mode Plus drive mode. + }, + SCLI2C0: enum(u1) { // bit offset: 3 desc: I 2C filter mode control for the SCL0 pin, P0.28. + @"ENABLED" = 0, // desc: Enabled. The SCL0 pin has I2C glitch filtering and slew rate control enabled. + @"DISABLED" = 1, // desc: Disabled. The SCL0 pin has I2C glitch filtering and slew rate control disabled. + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -4252,11 +6248,38 @@ pub const SSP1 = extern struct { pub const Address: u32 = 0x40030000; // byte offset: 0 Control Register 0. Selects the serial clock rate, bus type, and data size. pub const CR0 = mmio(Address + 0x00000000, 32, packed struct { - DSS: u4, // bit offset: 0 desc: Data Size Select. This field controls the number of bits transferred in each frame. Values 0000-0010 are not supported and should not be used. - FRF: u2, // bit offset: 4 desc: Frame Format. - CPOL: bool, // bit offset: 6 desc: Clock Out Polarity. This bit is only used in SPI mode. - CPHA: bool, // bit offset: 7 desc: Clock Out Phase. This bit is only used in SPI mode. + DSS: enum(u4) { // bit offset: 0 desc: Data Size Select. This field controls the number of bits transferred in each frame. Values 0000-0010 are not supported and should not be used. + @"4_BIT_TRANSFER" = 3, // desc: 4-bit transfer + @"5_BIT_TRANSFER" = 4, // desc: 5-bit transfer + @"6_BIT_TRANSFER" = 5, // desc: 6-bit transfer + @"7_BIT_TRANSFER" = 6, // desc: 7-bit transfer + @"8_BIT_TRANSFER" = 7, // desc: 8-bit transfer + @"9_BIT_TRANSFER" = 8, // desc: 9-bit transfer + @"10_BIT_TRANSFER" = 9, // desc: 10-bit transfer + @"11_BIT_TRANSFER" = 10, // desc: 11-bit transfer + @"12_BIT_TRANSFER" = 11, // desc: 12-bit transfer + @"13_BIT_TRANSFER" = 12, // desc: 13-bit transfer + @"14_BIT_TRANSFER" = 13, // desc: 14-bit transfer + @"15_BIT_TRANSFER" = 14, // desc: 15-bit transfer + @"16_BIT_TRANSFER" = 15, // desc: 16-bit transfer + _, // non-exhaustive + }, + FRF: enum(u2) { // bit offset: 4 desc: Frame Format. + @"SPI" = 0, // desc: SPI + @"TI" = 1, // desc: TI + @"MICROWIRE" = 2, // desc: Microwire + @"THIS_COMBINATION_IS_" = 3, // desc: This combination is not supported and should not be used. + }, + CPOL: enum(u1) { // bit offset: 6 desc: Clock Out Polarity. This bit is only used in SPI mode. + @"BUS_LOW" = 0, // desc: SSP controller maintains the bus clock low between frames. + @"BUS_HIGH" = 1, // desc: SSP controller maintains the bus clock high between frames. + }, + CPHA: enum(u1) { // bit offset: 7 desc: Clock Out Phase. This bit is only used in SPI mode. + @"FIRST_CLOCK" = 0, // desc: SSP controller captures serial data on the first clock transition of the frame, that is, the transition away from the inter-frame state of the clock line. + @"SECOND_CLOCK" = 1, // desc: SSP controller captures serial data on the second clock transition of the frame, that is, the transition back to the inter-frame state of the clock line. + }, SCR: u8, // bit offset: 8 desc: Serial Clock Rate. The number of prescaler-output clocks per bit on the bus, minus one. Given that CPSDVSR is the prescale divider, and the APB clock PCLK clocks the prescaler, the bit frequency is PCLK / (CPSDVSR X [SCR+1]). + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -4276,10 +6299,20 @@ pub const SSP1 = extern struct { }); // byte offset: 4 Control Register 1. Selects master/slave and other modes. pub const CR1 = mmio(Address + 0x00000004, 32, packed struct { - LBM: bool, // bit offset: 0 desc: Loop Back Mode. - SSE: bool, // bit offset: 1 desc: SSP Enable. - MS: bool, // bit offset: 2 desc: Master/Slave Mode.This bit can only be written when the SSE bit is 0. - SOD: bool, // bit offset: 3 desc: Slave Output Disable. This bit is relevant only in slave mode (MS = 1). If it is 1, this blocks this SSP controller from driving the transmit data line (MISO). + LBM: enum(u1) { // bit offset: 0 desc: Loop Back Mode. + @"NORMAL" = 0, // desc: During normal operation. + @"OUPTU" = 1, // desc: Serial input is taken from the serial output (MOSI or MISO) rather than the serial input pin (MISO or MOSI respectively). + }, + SSE: enum(u1) { // bit offset: 1 desc: SSP Enable. + @"DISABLED" = 0, // desc: The SSP controller is disabled. + @"ENABLED" = 1, // desc: The SSP controller will interact with other devices on the serial bus. Software should write the appropriate control information to the other SSP registers and interrupt controller registers, before setting this bit. + }, + MS: enum(u1) { // bit offset: 2 desc: Master/Slave Mode.This bit can only be written when the SSE bit is 0. + @"MASTER" = 0, // desc: The SSP controller acts as a master on the bus, driving the SCLK, MOSI, and SSEL lines and receiving the MISO line. + @"SLAVE" = 1, // desc: The SSP controller acts as a slave on the bus, driving MISO line and receiving SCLK, MOSI, and SSEL lines. + }, + SOD: u1, // bit offset: 3 desc: Slave Output Disable. This bit is relevant only in slave mode (MS = 1). If it is 1, this blocks this SSP controller from driving the transmit data line (MISO). + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -4312,6 +6345,7 @@ pub const SSP1 = extern struct { // byte offset: 8 Data Register. Writes fill the transmit FIFO, and reads empty the receive FIFO. pub const DR = mmio(Address + 0x00000008, 32, packed struct { DATA: u16, // bit offset: 0 desc: Write: software can write data to be sent in a future frame to this register whenever the TNF bit in the Status register is 1, indicating that the Tx FIFO is not full. If the Tx FIFO was previously empty and the SSP controller is not busy on the bus, transmission of the data will begin immediately. Otherwise the data written to this register will be sent as soon as all previous data has been sent (and received). If the data length is less than 16 bits, software must right-justify the data written to this register. Read: software can read data from this register whenever the RNE bit in the Status register is 1, indicating that the Rx FIFO is not empty. When software reads this register, the SSP controller returns data from the least recent frame in the Rx FIFO. If the data length is less than 16 bits, the data is right-justified in this field with higher order bits filled with 0s. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -4331,11 +6365,12 @@ pub const SSP1 = extern struct { }); // byte offset: 12 Status Register pub const SR = mmio(Address + 0x0000000c, 32, packed struct { - TFE: bool, // bit offset: 0 desc: Transmit FIFO Empty. This bit is 1 is the Transmit FIFO is empty, 0 if not. - TNF: bool, // bit offset: 1 desc: Transmit FIFO Not Full. This bit is 0 if the Tx FIFO is full, 1 if not. - RNE: bool, // bit offset: 2 desc: Receive FIFO Not Empty. This bit is 0 if the Receive FIFO is empty, 1 if not. - RFF: bool, // bit offset: 3 desc: Receive FIFO Full. This bit is 1 if the Receive FIFO is full, 0 if not. - BSY: bool, // bit offset: 4 desc: Busy. This bit is 0 if the SSPn controller is idle, or 1 if it is currently sending/receiving a frame and/or the Tx FIFO is not empty. + TFE: u1, // bit offset: 0 desc: Transmit FIFO Empty. This bit is 1 is the Transmit FIFO is empty, 0 if not. + TNF: u1, // bit offset: 1 desc: Transmit FIFO Not Full. This bit is 0 if the Tx FIFO is full, 1 if not. + RNE: u1, // bit offset: 2 desc: Receive FIFO Not Empty. This bit is 0 if the Receive FIFO is empty, 1 if not. + RFF: u1, // bit offset: 3 desc: Receive FIFO Full. This bit is 1 if the Receive FIFO is full, 0 if not. + BSY: u1, // bit offset: 4 desc: Busy. This bit is 0 if the SSPn controller is idle, or 1 if it is currently sending/receiving a frame and/or the Tx FIFO is not empty. + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -4367,6 +6402,7 @@ pub const SSP1 = extern struct { // byte offset: 16 Clock Prescale Register pub const CPSR = mmio(Address + 0x00000010, 32, packed struct { CPSDVSR: u8, // bit offset: 0 desc: This even value between 2 and 254, by which PCLK is divided to yield the prescaler output clock. Bit 0 always reads as 0. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -4394,10 +6430,11 @@ pub const SSP1 = extern struct { }); // byte offset: 20 Interrupt Mask Set and Clear Register pub const IMSC = mmio(Address + 0x00000014, 32, packed struct { - RORIM: bool, // bit offset: 0 desc: Software should set this bit to enable interrupt when a Receive Overrun occurs, that is, when the Rx FIFO is full and another frame is completely received. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. - RTIM: bool, // bit offset: 1 desc: Software should set this bit to enable interrupt when a Receive Time-out condition occurs. A Receive Time-out occurs when the Rx FIFO is not empty, and no has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXIM: bool, // bit offset: 2 desc: Software should set this bit to enable interrupt when the Rx FIFO is at least half full. - TXIM: bool, // bit offset: 3 desc: Software should set this bit to enable interrupt when the Tx FIFO is at least half empty. + RORIM: u1, // bit offset: 0 desc: Software should set this bit to enable interrupt when a Receive Overrun occurs, that is, when the Rx FIFO is full and another frame is completely received. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. + RTIM: u1, // bit offset: 1 desc: Software should set this bit to enable interrupt when a Receive Time-out condition occurs. A Receive Time-out occurs when the Rx FIFO is not empty, and no has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXIM: u1, // bit offset: 2 desc: Software should set this bit to enable interrupt when the Rx FIFO is at least half full. + TXIM: u1, // bit offset: 3 desc: Software should set this bit to enable interrupt when the Tx FIFO is at least half empty. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -4429,10 +6466,11 @@ pub const SSP1 = extern struct { }); // byte offset: 24 Raw Interrupt Status Register pub const RIS = mmio(Address + 0x00000018, 32, packed struct { - RORRIS: bool, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. - RTRIS: bool, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, and has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXRIS: bool, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full. - TXRIS: bool, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty. + RORRIS: u1, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. + RTRIS: u1, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, and has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXRIS: u1, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full. + TXRIS: u1, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -4464,10 +6502,11 @@ pub const SSP1 = extern struct { }); // byte offset: 28 Masked Interrupt Status Register pub const MIS = mmio(Address + 0x0000001c, 32, packed struct { - RORMIS: bool, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full, and this interrupt is enabled. - RTMIS: bool, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, has not been read for a time-out period, and this interrupt is enabled. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXMIS: bool, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full, and this interrupt is enabled. - TXMIS: bool, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty, and this interrupt is enabled. + RORMIS: u1, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full, and this interrupt is enabled. + RTMIS: u1, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, has not been read for a time-out period, and this interrupt is enabled. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXMIS: u1, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full, and this interrupt is enabled. + TXMIS: u1, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty, and this interrupt is enabled. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -4499,8 +6538,9 @@ pub const SSP1 = extern struct { }); // byte offset: 32 SSPICR Interrupt Clear Register pub const ICR = mmio(Address + 0x00000020, 32, packed struct { - RORIC: bool, // bit offset: 0 desc: Writing a 1 to this bit clears the frame was received when RxFIFO was full interrupt. - RTIC: bool, // bit offset: 1 desc: Writing a 1 to this bit clears the Rx FIFO was not empty and has not been read for a time-out period interrupt. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR / [SCR+1]). + RORIC: u1, // bit offset: 0 desc: Writing a 1 to this bit clears the frame was received when RxFIFO was full interrupt. + RTIC: u1, // bit offset: 1 desc: Writing a 1 to this bit clears the Rx FIFO was not empty and has not been read for a time-out period interrupt. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR / [SCR+1]). + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -4534,8 +6574,9 @@ pub const SSP1 = extern struct { }); // byte offset: 36 SSP0 DMA control register pub const DMACR = mmio(Address + 0x00000024, 32, packed struct { - RXDMAE: bool, // bit offset: 0 desc: Receive DMA Enable. When this bit is set to one 1, DMA for the receive FIFO is enabled, otherwise receive DMA is disabled. - TXDMAE: bool, // bit offset: 1 desc: Transmit DMA Enable. When this bit is set to one 1, DMA for the transmit FIFO is enabled, otherwise transmit DMA is disabled + RXDMAE: u1, // bit offset: 0 desc: Receive DMA Enable. When this bit is set to one 1, DMA for the receive FIFO is enabled, otherwise receive DMA is disabled. + TXDMAE: u1, // bit offset: 1 desc: Transmit DMA Enable. When this bit is set to one 1, DMA for the transmit FIFO is enabled, otherwise transmit DMA is disabled + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -4574,16 +6615,37 @@ pub const ADC = extern struct { pub const CR = mmio(Address + 0x00000000, 32, packed struct { SEL: u8, // bit offset: 0 desc: Selects which of the AD0[7:0] pins is (are) to be sampled and converted. For AD0, bit 0 selects Pin AD0[0], and bit 7 selects pin AD0[7]. In software-controlled mode, only one of these bits should be 1. In hardware scan mode, any value containing 1 to 8 ones is allowed. All zeroes is equivalent to 0x01. CLKDIV: u8, // bit offset: 8 desc: The APB clock (PCLK) is divided by (this value plus one) to produce the clock for the A/D converter, which should be less than or equal to 12.4 MHz. Typically, software should program the smallest value in this field that yields a clock of 12.4 MHz or slightly less, but in certain cases (such as a high-impedance analog source) a slower clock may be desirable. - BURST: bool, // bit offset: 16 desc: Burst mode + BURST: enum(u1) { // bit offset: 16 desc: Burst mode + @"BURST" = 1, // desc: The AD converter does repeated conversions at up to 400 kHz, scanning (if necessary) through the pins selected by bits set to ones in the SEL field. The first conversion after the start corresponds to the least-significant 1 in the SEL field, then higher numbered 1-bits (pins) if applicable. Repeated conversions can be terminated by clearing this bit, but the conversion that's in progress when this bit is cleared will be completed. START bits must be 000 when BURST = 1 or conversions will not start. + @"SW" = 0, // desc: Conversions are software controlled and require 31 clocks. + }, + // RESERVED: u4, // bit offset: 17 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - PDN: bool, // bit offset: 21 desc: Power down mode - reserved3: u1 = 0, - reserved2: u1 = 0, - START: u3, // bit offset: 24 desc: When the BURST bit is 0, these bits control whether and when an A/D conversion is started: - EDGE: bool, // bit offset: 27 desc: This bit is significant only when the START field contains 010-111. In these cases: + PDN: enum(u1) { // bit offset: 21 desc: Power down mode + @"POWERED" = 1, // desc: The A/D converter is operational. + @"POWERDOWN" = 0, // desc: The A/D converter is in power-down mode. + }, + // RESERVED: u2, // bit offset: 22 desc: Reserved. Read value is undefined, only zero should be written. + reserved6: u1 = 0, + reserved5: u1 = 0, + START: enum(u3) { // bit offset: 24 desc: When the BURST bit is 0, these bits control whether and when an A/D conversion is started: + @"NO_START_THIS_VALUE" = 0, // desc: No start (this value should be used when clearing PDN to 0). + @"START_CONVERSION_NOW" = 1, // desc: Start conversion now. + @"P2_10" = 2, // desc: Start conversion when the edge selected by bit 27 occurs on the P2[10] pin. + @"P1_27" = 3, // desc: Start conversion when the edge selected by bit 27 occurs on the P1[27] pin. + @"MAT0_1" = 4, // desc: Start conversion when the edge selected by bit 27 occurs on MAT0.1. Note that this does not require that the MAT0.1 function appear on a device pin. + @"MAT0_3" = 5, // desc: Start conversion when the edge selected by bit 27 occurs on MAT0.3. Note that it is not possible to cause the MAT0.3 function to appear on a device pin. + @"MAT1_0" = 6, // desc: Start conversion when the edge selected by bit 27 occurs on MAT1.0. Note that this does not require that the MAT1.0 function appear on a device pin. + @"MAT1_1" = 7, // desc: Start conversion when the edge selected by bit 27 occurs on MAT1.1. Note that this does not require that the MAT1.1 function appear on a device pin. + }, + EDGE: enum(u1) { // bit offset: 27 desc: This bit is significant only when the START field contains 010-111. In these cases: + @"FALLLING" = 1, // desc: Start conversion on a falling edge on the selected CAP/MAT signal. + @"RISING" = 0, // desc: Start conversion on a rising edge on the selected CAP/MAT signal. + }, + // RESERVED: u4, // bit offset: 28 desc: Reserved. Read value is undefined, only zero should be written. padding4: u1 = 0, padding3: u1 = 0, padding2: u1 = 0, @@ -4591,37 +6653,68 @@ pub const ADC = extern struct { }); // byte offset: 4 A/D Global Data Register. This register contains the ADC's DONE bit and the result of the most recent A/D conversion. pub const GDR = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin selected by the SEL field, as it falls within the range of VREFP to VSS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved20: u1 = 0, - reserved19: u1 = 0, - reserved18: u1 = 0, - reserved17: u1 = 0, - reserved16: u1 = 0, + // RESERVED: u8, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + CHN: u3, // bit offset: 24 desc: These bits contain the channel from which the RESULT bits were converted (e.g. 000 identifies channel 0, 001 channel 1...). + // RESERVED: u3, // bit offset: 27 desc: Reserved. Read value is undefined, only zero should be written. reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - CHN: u3, // bit offset: 24 desc: These bits contain the channel from which the RESULT bits were converted (e.g. 000 identifies channel 0, 001 channel 1...). - reserved18: u1 = 0, - reserved17: u1 = 0, - reserved16: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits. This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read and when the ADCR is written. If the ADCR is written while a conversion is still in progress, this bit is set and a new conversion is started. + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits. This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read and when the ADCR is written. If the ADCR is written while a conversion is still in progress, this bit is set and a new conversion is started. }); // byte offset: 12 A/D Interrupt Enable Register. This register contains enable bits that allow the DONE flag of each A/D channel to be included or excluded from contributing to the generation of an A/D interrupt. pub const INTEN = mmio(Address + 0x0000000c, 32, packed struct { - ADINTEN0: bool, // bit offset: 0 desc: Interrupt enable - ADINTEN1: bool, // bit offset: 1 desc: Interrupt enable - ADINTEN2: bool, // bit offset: 2 desc: Interrupt enable - ADINTEN3: bool, // bit offset: 3 desc: Interrupt enable - ADINTEN4: bool, // bit offset: 4 desc: Interrupt enable - ADINTEN5: bool, // bit offset: 5 desc: Interrupt enable - ADINTEN6: bool, // bit offset: 6 desc: Interrupt enable - ADINTEN7: bool, // bit offset: 7 desc: Interrupt enable - ADGINTEN: bool, // bit offset: 8 desc: Interrupt enable + ADINTEN0: enum(u1) { // bit offset: 0 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 0 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 0 will generate an interrupt. + }, + ADINTEN1: enum(u1) { // bit offset: 1 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 1 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 1 will generate an interrupt. + }, + ADINTEN2: enum(u1) { // bit offset: 2 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 2 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 2 will generate an interrupt. + }, + ADINTEN3: enum(u1) { // bit offset: 3 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 3 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 3 will generate an interrupt. + }, + ADINTEN4: enum(u1) { // bit offset: 4 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 4 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 4 will generate an interrupt. + }, + ADINTEN5: enum(u1) { // bit offset: 5 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 5 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 5 will generate an interrupt. + }, + ADINTEN6: enum(u1) { // bit offset: 6 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 6 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 6 will generate an interrupt. + }, + ADINTEN7: enum(u1) { // bit offset: 7 desc: Interrupt enable + @"DISABLE" = 0, // desc: Completion of a conversion on ADC channel 7 will not generate an interrupt. + @"ENABLE" = 1, // desc: Completion of a conversion on ADC channel 7 will generate an interrupt. + }, + ADGINTEN: enum(u1) { // bit offset: 8 desc: Interrupt enable + @"CHANNELS" = 0, // desc: Only the individual ADC channels enabled by ADINTEN7:0 will generate interrupts. + @"GLOBAL" = 1, // desc: The global DONE flag in ADDR is enabled to generate an interrupt in addition to any individual ADC channels that are enabled to generate interrupts. + }, + // RESERVED: u23, // bit offset: 9 desc: Reserved. Read value is undefined, only zero should be written. padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -4648,215 +6741,232 @@ pub const ADC = extern struct { }); // byte offset: 16 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_0 = mmio(Address + 0x00000010, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 20 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_1 = mmio(Address + 0x00000014, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 24 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_2 = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 28 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_3 = mmio(Address + 0x0000001c, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 32 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_4 = mmio(Address + 0x00000020, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 36 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_5 = mmio(Address + 0x00000024, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 40 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_6 = mmio(Address + 0x00000028, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 44 A/D Channel 0 Data Register. This register contains the result of the most recent conversion completed on channel 0. pub const DR_7 = mmio(Address + 0x0000002c, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RESULT: u12, // bit offset: 4 desc: When DONE is 1, this field contains a binary fraction representing the voltage on the AD0[n] pin, as it falls within the range of VREFP to V SS. Zero in the field indicates that the voltage on the input pin was less than, equal to, or close to that on VSS, while 0xFFF indicates that the voltage on the input was close to, equal to, or greater than that on VREFP. - reserved26: u1 = 0, - reserved25: u1 = 0, - reserved24: u1 = 0, - reserved23: u1 = 0, - reserved22: u1 = 0, - reserved21: u1 = 0, - reserved20: u1 = 0, - reserved19: u1 = 0, + // RESERVED: u14, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. reserved18: u1 = 0, reserved17: u1 = 0, reserved16: u1 = 0, reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, - OVERRUN: bool, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. - DONE: bool, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, + reserved7: u1 = 0, + reserved6: u1 = 0, + reserved5: u1 = 0, + OVERRUN: u1, // bit offset: 30 desc: This bit is 1 in burst mode if the results of one or more conversions was (were) lost and overwritten before the conversion that produced the result in the RESULT bits.This bit is cleared by reading this register. + DONE: u1, // bit offset: 31 desc: This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read. }); // byte offset: 48 A/D Status Register. This register contains DONE and OVERRUN flags for all of the A/D channels, as well as the A/D interrupt/DMA flag. pub const STAT = mmio(Address + 0x00000030, 32, packed struct { - DONE0: bool, // bit offset: 0 desc: This bit mirrors the DONE status flag from the result register for A/D channel 0. - DONE1: bool, // bit offset: 1 desc: This bit mirrors the DONE status flag from the result register for A/D channel 1. - DONE2: bool, // bit offset: 2 desc: This bit mirrors the DONE status flag from the result register for A/D channel 2. - DONE3: bool, // bit offset: 3 desc: This bit mirrors the DONE status flag from the result register for A/D channel 3. - DONE4: bool, // bit offset: 4 desc: This bit mirrors the DONE status flag from the result register for A/D channel 4. - DONE5: bool, // bit offset: 5 desc: This bit mirrors the DONE status flag from the result register for A/D channel 5. - DONE6: bool, // bit offset: 6 desc: This bit mirrors the DONE status flag from the result register for A/D channel 6. - DONE7: bool, // bit offset: 7 desc: This bit mirrors the DONE status flag from the result register for A/D channel 7. - OVERRUN0: bool, // bit offset: 8 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 0. - OVERRUN1: bool, // bit offset: 9 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 1. - OVERRUN2: bool, // bit offset: 10 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 2. - OVERRUN3: bool, // bit offset: 11 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 3. - OVERRUN4: bool, // bit offset: 12 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 4. - OVERRUN5: bool, // bit offset: 13 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 5. - OVERRUN6: bool, // bit offset: 14 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 6. - OVERRUN7: bool, // bit offset: 15 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 7. - ADINT: bool, // bit offset: 16 desc: This bit is the A/D interrupt flag. It is one when any of the individual A/D channel Done flags is asserted and enabled to contribute to the A/D interrupt via the ADINTEN register. + DONE0: u1, // bit offset: 0 desc: This bit mirrors the DONE status flag from the result register for A/D channel 0. + DONE1: u1, // bit offset: 1 desc: This bit mirrors the DONE status flag from the result register for A/D channel 1. + DONE2: u1, // bit offset: 2 desc: This bit mirrors the DONE status flag from the result register for A/D channel 2. + DONE3: u1, // bit offset: 3 desc: This bit mirrors the DONE status flag from the result register for A/D channel 3. + DONE4: u1, // bit offset: 4 desc: This bit mirrors the DONE status flag from the result register for A/D channel 4. + DONE5: u1, // bit offset: 5 desc: This bit mirrors the DONE status flag from the result register for A/D channel 5. + DONE6: u1, // bit offset: 6 desc: This bit mirrors the DONE status flag from the result register for A/D channel 6. + DONE7: u1, // bit offset: 7 desc: This bit mirrors the DONE status flag from the result register for A/D channel 7. + OVERRUN0: u1, // bit offset: 8 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 0. + OVERRUN1: u1, // bit offset: 9 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 1. + OVERRUN2: u1, // bit offset: 10 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 2. + OVERRUN3: u1, // bit offset: 11 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 3. + OVERRUN4: u1, // bit offset: 12 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 4. + OVERRUN5: u1, // bit offset: 13 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 5. + OVERRUN6: u1, // bit offset: 14 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 6. + OVERRUN7: u1, // bit offset: 15 desc: This bit mirrors the OVERRRUN status flag from the result register for A/D channel 7. + ADINT: u1, // bit offset: 16 desc: This bit is the A/D interrupt flag. It is one when any of the individual A/D channel Done flags is asserted and enabled to contribute to the A/D interrupt via the ADINTEN register. + // RESERVED: u15, // bit offset: 17 desc: Reserved. Read value is undefined, only zero should be written. padding15: u1 = 0, padding14: u1 = 0, padding13: u1 = 0, @@ -4875,12 +6985,14 @@ pub const ADC = extern struct { }); // byte offset: 52 ADC trim register. pub const TRM = mmio(Address + 0x00000034, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, ADCOFFS: u4, // bit offset: 4 desc: Offset trim bits for ADC operation. Initialized by the boot code. Can be overwritten by the user. TRIM: u4, // bit offset: 8 desc: written-to by boot code. Can not be overwritten by the user. These bits are locked after boot code write. + // RESERVED: u20, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -6958,9 +9070,13 @@ pub const CANAF = extern struct { pub const Address: u32 = 0x4003c000; // byte offset: 0 Acceptance Filter Register pub const AFMR = mmio(Address + 0x00000000, 32, packed struct { - ACCOFF: bool, // bit offset: 0 desc: if AccBP is 0, the Acceptance Filter is not operational. All Rx messages on all CAN buses are ignored. - ACCBP: bool, // bit offset: 1 desc: All Rx messages are accepted on enabled CAN controllers. Software must set this bit before modifying the contents of any of the registers described below, and before modifying the contents of Lookup Table RAM in any way other than setting or clearing Disable bits in Standard Identifier entries. When both this bit and AccOff are 0, the Acceptance filter operates to screen received CAN Identifiers. - EFCAN: bool, // bit offset: 2 desc: FullCAN mode + ACCOFF: u1, // bit offset: 0 desc: if AccBP is 0, the Acceptance Filter is not operational. All Rx messages on all CAN buses are ignored. + ACCBP: u1, // bit offset: 1 desc: All Rx messages are accepted on enabled CAN controllers. Software must set this bit before modifying the contents of any of the registers described below, and before modifying the contents of Lookup Table RAM in any way other than setting or clearing Disable bits in Standard Identifier entries. When both this bit and AccOff are 0, the Acceptance filter operates to screen received CAN Identifiers. + EFCAN: enum(u1) { // bit offset: 2 desc: FullCAN mode + @"SOFTWARE_MUST_READ_A" = 0, // desc: Software must read all messages for all enabled IDs on all enabled CAN buses, from the receiving CAN controllers. + @"THE_ACCEPTANCE_FILTE" = 1, // desc: The Acceptance Filter itself will take care of receiving and storing messages for selected Standard ID values on selected CAN buses. See Section 21.16 FullCAN mode on page 576. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -6993,9 +9109,11 @@ pub const CANAF = extern struct { }); // byte offset: 4 Standard Frame Individual Start Address Register pub const SFF_SA = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, SFF_SA: u9, // bit offset: 2 desc: The start address of the table of individual Standard Identifiers in AF Lookup RAM. If the table is empty, write the same value in this register and the SFF_GRP_sa register described below. For compatibility with possible future devices, write zeroes in bits 31:11 and 1:0 of this register. If the eFCAN bit in the AFMR is 1, this value also indicates the size of the table of Standard IDs which the Acceptance Filter will search and (if found) automatically store received messages in Acceptance Filter RAM. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7020,9 +9138,11 @@ pub const CANAF = extern struct { }); // byte offset: 8 Standard Frame Group Start Address Register pub const SFF_GRP_SA = mmio(Address + 0x00000008, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, SFF_GRP_SA: u10, // bit offset: 2 desc: The start address of the table of grouped Standard Identifiers in AF Lookup RAM. If the table is empty, write the same value in this register and the EFF_sa register described below. The largest value that should be written to this register is 0x800, when only the Standard Individual table is used, and the last word (address 0x7FC) in AF Lookup Table RAM is used. For compatibility with possible future devices, please write zeroes in bits 31:12 and 1:0 of this register. + // RESERVED: u20, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -7046,9 +9166,11 @@ pub const CANAF = extern struct { }); // byte offset: 12 Extended Frame Start Address Register pub const EFF_SA = mmio(Address + 0x0000000c, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, EFF_SA: u9, // bit offset: 2 desc: The start address of the table of individual Extended Identifiers in AF Lookup RAM. If the table is empty, write the same value in this register and the EFF_GRP_sa register described below. The largest value that should be written to this register is 0x800, when both Extended Tables are empty and the last word (address 0x7FC) in AF Lookup Table RAM is used. For compatibility with possible future devices, please write zeroes in bits 31:11 and 1:0 of this register. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7073,9 +9195,11 @@ pub const CANAF = extern struct { }); // byte offset: 16 Extended Frame Group Start Address Register pub const EFF_GRP_SA = mmio(Address + 0x00000010, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, EFF_GRP_SA: u10, // bit offset: 2 desc: The start address of the table of grouped Extended Identifiers in AF Lookup RAM. If the table is empty, write the same value in this register and the ENDofTable register described below. The largest value that should be written to this register is 0x800, when this table is empty and the last word (address 0x7FC) in AF Lookup Table RAM is used. For compatibility with possible future devices, please write zeroes in bits 31:12 and 1:0 of this register. + // RESERVED: u20, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -7099,9 +9223,11 @@ pub const CANAF = extern struct { }); // byte offset: 20 End of AF Tables register pub const ENDOFTABLE = mmio(Address + 0x00000014, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, ENDOFTABLE: u10, // bit offset: 2 desc: The address above the last active address in the last active AF table. For compatibility with possible future devices, please write zeroes in bits 31:12 and 1:0 of this register. If the eFCAN bit in the AFMR is 0, the largest value that should be written to this register is 0x800, which allows the last word (address 0x7FC) in AF Lookup Table RAM to be used. If the eFCAN bit in the AFMR is 1, this value marks the start of the area of Acceptance Filter RAM, into which the Acceptance Filter will automatically receive messages for selected IDs on selected CAN buses. In this case, the maximum value that should be written to this register is 0x800 minus 6 times the value in SFF_sa. This allows 12 bytes of message storage between this address and the end of Acceptance Filter RAM, for each Standard ID that is specified between the start of Acceptance Filter RAM, and the next active AF table. + // RESERVED: u20, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -7125,9 +9251,11 @@ pub const CANAF = extern struct { }); // byte offset: 24 LUT Error Address register pub const LUTERRAD = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, LUTERRAD: u9, // bit offset: 2 desc: It the LUT Error bit (below) is 1, this read-only field contains the address in AF Lookup Table RAM, at which the Acceptance Filter encountered an error in the content of the tables. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7152,7 +9280,8 @@ pub const CANAF = extern struct { }); // byte offset: 28 LUT Error Register pub const LUTERR = mmio(Address + 0x0000001c, 32, packed struct { - LUTERR: bool, // bit offset: 0 desc: This read-only bit is set to 1 if the Acceptance Filter encounters an error in the content of the tables in AF RAM. It is cleared when software reads the LUTerrAd register. This condition is ORed with the other CAN interrupts from the CAN controllers, to produce the request that is connected to the NVIC. + LUTERR: u1, // bit offset: 0 desc: This read-only bit is set to 1 if the Acceptance Filter encounters an error in the content of the tables in AF RAM. It is cleared when software reads the LUTerrAd register. This condition is ORed with the other CAN interrupts from the CAN controllers, to produce the request that is connected to the NVIC. + // RESERVED: u31, // bit offset: 1 desc: Reserved, the value read from a reserved bit is not defined. padding31: u1 = 0, padding30: u1 = 0, padding29: u1 = 0, @@ -7187,7 +9316,8 @@ pub const CANAF = extern struct { }); // byte offset: 32 FullCAN interrupt enable register pub const FCANIE = mmio(Address + 0x00000020, 32, packed struct { - FCANIE: bool, // bit offset: 0 desc: Global FullCAN Interrupt Enable. When 1, this interrupt is enabled. + FCANIE: u1, // bit offset: 0 desc: Global FullCAN Interrupt Enable. When 1, this interrupt is enabled. + // RESERVED: u31, // bit offset: 1 desc: Reserved. Read value is undefined, only zero should be written. padding31: u1 = 0, padding30: u1 = 0, padding29: u1 = 0, @@ -7233,24 +9363,27 @@ pub const CCAN = extern struct { pub const Address: u32 = 0x40040000; // byte offset: 0 CAN Central Transmit Status Register pub const TXSR = mmio(Address + 0x00000000, 32, packed struct { - TS1: bool, // bit offset: 0 desc: When 1, the CAN controller 1 is sending a message (same as TS in the CAN1GSR). - TS2: bool, // bit offset: 1 desc: When 1, the CAN controller 2 is sending a message (same as TS in the CAN2GSR) + TS1: u1, // bit offset: 0 desc: When 1, the CAN controller 1 is sending a message (same as TS in the CAN1GSR). + TS2: u1, // bit offset: 1 desc: When 1, the CAN controller 2 is sending a message (same as TS in the CAN2GSR) + // RESERVED: u6, // bit offset: 2 desc: Reserved, the value read from a reserved bit is not defined. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TBS1: bool, // bit offset: 8 desc: When 1, all 3 Tx Buffers of the CAN1 controller are available to the CPU (same as TBS in CAN1GSR). - TBS2: bool, // bit offset: 9 desc: When 1, all 3 Tx Buffers of the CAN2 controller are available to the CPU (same as TBS in CAN2GSR). + TBS1: u1, // bit offset: 8 desc: When 1, all 3 Tx Buffers of the CAN1 controller are available to the CPU (same as TBS in CAN1GSR). + TBS2: u1, // bit offset: 9 desc: When 1, all 3 Tx Buffers of the CAN2 controller are available to the CPU (same as TBS in CAN2GSR). + // RESERVED: u6, // bit offset: 10 desc: Reserved, the value read from a reserved bit is not defined. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - TCS1: bool, // bit offset: 16 desc: When 1, all requested transmissions have been completed successfully by the CAN1 controller (same as TCS in CAN1GSR). - TCS2: bool, // bit offset: 17 desc: When 1, all requested transmissions have been completed successfully by the CAN2 controller (same as TCS in CAN2GSR). + TCS1: u1, // bit offset: 16 desc: When 1, all requested transmissions have been completed successfully by the CAN1 controller (same as TCS in CAN1GSR). + TCS2: u1, // bit offset: 17 desc: When 1, all requested transmissions have been completed successfully by the CAN2 controller (same as TCS in CAN2GSR). + // RESERVED: u14, // bit offset: 18 desc: Reserved, the value read from a reserved bit is not defined. padding14: u1 = 0, padding13: u1 = 0, padding12: u1 = 0, @@ -7268,24 +9401,27 @@ pub const CCAN = extern struct { }); // byte offset: 4 CAN Central Receive Status Register pub const RXSR = mmio(Address + 0x00000004, 32, packed struct { - RS1: bool, // bit offset: 0 desc: When 1, CAN1 is receiving a message (same as RS in CAN1GSR). - RS2: bool, // bit offset: 1 desc: When 1, CAN2 is receiving a message (same as RS in CAN2GSR). + RS1: u1, // bit offset: 0 desc: When 1, CAN1 is receiving a message (same as RS in CAN1GSR). + RS2: u1, // bit offset: 1 desc: When 1, CAN2 is receiving a message (same as RS in CAN2GSR). + // RESERVED: u6, // bit offset: 2 desc: Reserved, the value read from a reserved bit is not defined. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RB1: bool, // bit offset: 8 desc: When 1, a received message is available in the CAN1 controller (same as RBS in CAN1GSR). - RB2: bool, // bit offset: 9 desc: When 1, a received message is available in the CAN2 controller (same as RBS in CAN2GSR). + RB1: u1, // bit offset: 8 desc: When 1, a received message is available in the CAN1 controller (same as RBS in CAN1GSR). + RB2: u1, // bit offset: 9 desc: When 1, a received message is available in the CAN2 controller (same as RBS in CAN2GSR). + // RESERVED: u6, // bit offset: 10 desc: Reserved, the value read from a reserved bit is not defined. + reserved12: u1 = 0, + reserved11: u1 = 0, + reserved10: u1 = 0, + reserved9: u1 = 0, + reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - DOS1: bool, // bit offset: 16 desc: When 1, a message was lost because the preceding message to CAN1 controller was not read out quickly enough (same as DOS in CAN1GSR). - DOS2: bool, // bit offset: 17 desc: When 1, a message was lost because the preceding message to CAN2 controller was not read out quickly enough (same as DOS in CAN2GSR). + DOS1: u1, // bit offset: 16 desc: When 1, a message was lost because the preceding message to CAN1 controller was not read out quickly enough (same as DOS in CAN1GSR). + DOS2: u1, // bit offset: 17 desc: When 1, a message was lost because the preceding message to CAN2 controller was not read out quickly enough (same as DOS in CAN2GSR). + // RESERVED: u14, // bit offset: 18 desc: Reserved, the value read from a reserved bit is not defined. padding14: u1 = 0, padding13: u1 = 0, padding12: u1 = 0, @@ -7303,16 +9439,18 @@ pub const CCAN = extern struct { }); // byte offset: 8 CAN Central Miscellaneous Register pub const MSR = mmio(Address + 0x00000008, 32, packed struct { - E1: bool, // bit offset: 0 desc: When 1, one or both of the CAN1 Tx and Rx Error Counters has reached the limit set in the CAN1EWL register (same as ES in CAN1GSR) - E2: bool, // bit offset: 1 desc: When 1, one or both of the CAN2 Tx and Rx Error Counters has reached the limit set in the CAN2EWL register (same as ES in CAN2GSR) + E1: u1, // bit offset: 0 desc: When 1, one or both of the CAN1 Tx and Rx Error Counters has reached the limit set in the CAN1EWL register (same as ES in CAN1GSR) + E2: u1, // bit offset: 1 desc: When 1, one or both of the CAN2 Tx and Rx Error Counters has reached the limit set in the CAN2EWL register (same as ES in CAN2GSR) + // RESERVED: u6, // bit offset: 2 desc: Reserved, the value read from a reserved bit is not defined. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - BS1: bool, // bit offset: 8 desc: When 1, the CAN1 controller is currently involved in bus activities (same as BS in CAN1GSR). - BS2: bool, // bit offset: 9 desc: When 1, the CAN2 controller is currently involved in bus activities (same as BS in CAN2GSR). + BS1: u1, // bit offset: 8 desc: When 1, the CAN1 controller is currently involved in bus activities (same as BS in CAN1GSR). + BS2: u1, // bit offset: 9 desc: When 1, the CAN2 controller is currently involved in bus activities (same as BS in CAN2GSR). + // RESERVED: u22, // bit offset: 10 desc: Reserved, the value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -7341,14 +9479,37 @@ pub const CAN1 = extern struct { pub const Address: u32 = 0x40044000; // byte offset: 0 Controls the operating mode of the CAN Controller. pub const MOD = mmio(Address + 0x00000000, 32, packed struct { - RM: bool, // bit offset: 0 desc: Reset Mode. - LOM: bool, // bit offset: 1 desc: Listen Only Mode. - STM: bool, // bit offset: 2 desc: Self Test Mode. - TPM: bool, // bit offset: 3 desc: Transmit Priority Mode. - SM: bool, // bit offset: 4 desc: Sleep Mode. - RPM: bool, // bit offset: 5 desc: Receive Polarity Mode. + RM: enum(u1) { // bit offset: 0 desc: Reset Mode. + @"NORMAL_THE_CAN_CONTR" = 0, // desc: Normal.The CAN Controller is in the Operating Mode, and certain registers can not be written. + @"RESET_CAN_OPERATION" = 1, // desc: Reset. CAN operation is disabled, writable registers can be written and the current transmission/reception of a message is aborted. + }, + LOM: enum(u1) { // bit offset: 1 desc: Listen Only Mode. + @"NORMAL_THE_CAN_CONT" = 0, // desc: Normal. The CAN controller acknowledges a successfully received message on the CAN bus. The error counters are stopped at the current value. + @"LISTEN_ONLY_THE_CON" = 1, // desc: Listen only. The controller gives no acknowledgment, even if a message is successfully received. Messages cannot be sent, and the controller operates in error passive mode. This mode is intended for software bit rate detection and hot plugging. + }, + STM: enum(u1) { // bit offset: 2 desc: Self Test Mode. + @"NORMAL_A_TRANSMITTE" = 0, // desc: Normal. A transmitted message must be acknowledged to be considered successful. + @"SELF_TEST_THE_CONTR" = 1, // desc: Self test. The controller will consider a Tx message successful even if there is no acknowledgment received. In this mode a full node test is possible without any other active node on the bus using the SRR bit in CANxCMR. + }, + TPM: enum(u1) { // bit offset: 3 desc: Transmit Priority Mode. + @"CAN_ID_THE_TRANSMIT" = 0, // desc: CAN ID. The transmit priority for 3 Transmit Buffers depends on the CAN Identifier. + @"LOCAL_PRIORITY_THE_" = 1, // desc: Local priority. The transmit priority for 3 Transmit Buffers depends on the contents of the Tx Priority register within the Transmit Buffer. + }, + SM: enum(u1) { // bit offset: 4 desc: Sleep Mode. + @"WAKE_UP_NORMAL_OPER" = 0, // desc: Wake-up. Normal operation. + @"SLEEP_THE_CAN_CONTR" = 1, // desc: Sleep. The CAN controller enters Sleep Mode if no CAN interrupt is pending and there is no bus activity. See the Sleep Mode description Section 21.8.2 on page 565. + }, + RPM: enum(u1) { // bit offset: 5 desc: Receive Polarity Mode. + @"LOW_ACTIVE_RD_INPUT" = 0, // desc: Low active. RD input is active Low (dominant bit = 0). + @"HIGH_ACTIVE_RD_INPU" = 1, // desc: High active. RD input is active High (dominant bit = 1) -- reverse polarity. + }, + // RESERVED: u1, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - TM: bool, // bit offset: 7 desc: Test Mode. + TM: enum(u1) { // bit offset: 7 desc: Test Mode. + @"DISABLED_NORMAL_OPE" = 0, // desc: Disabled. Normal operation. + @"ENABLED_THE_TD_PIN_" = 1, // desc: Enabled. The TD pin will reflect the bit, detected on RD pin, with the next positive edge of the system clock. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7376,14 +9537,39 @@ pub const CAN1 = extern struct { }); // byte offset: 4 Command bits that affect the state of the CAN Controller pub const CMR = mmio(Address + 0x00000004, 32, packed struct { - TR: bool, // bit offset: 0 desc: Transmission Request. - AT: bool, // bit offset: 1 desc: Abort Transmission. - RRB: bool, // bit offset: 2 desc: Release Receive Buffer. - CDO: bool, // bit offset: 3 desc: Clear Data Overrun. - SRR: bool, // bit offset: 4 desc: Self Reception Request. - STB1: bool, // bit offset: 5 desc: Select Tx Buffer 1. - STB2: bool, // bit offset: 6 desc: Select Tx Buffer 2. - STB3: bool, // bit offset: 7 desc: Select Tx Buffer 3. + TR: enum(u1) { // bit offset: 0 desc: Transmission Request. + @"ABSENT_NO_TRANSMISSI" = 0, // desc: Absent.No transmission request. + @"PRESENT_THE_MESSAGE" = 1, // desc: Present. The message, previously written to the CANxTFI, CANxTID, and optionally the CANxTDA and CANxTDB registers, is queued for transmission from the selected Transmit Buffer. If at two or all three of STB1, STB2 and STB3 bits are selected when TR=1 is written, Transmit Buffer will be selected based on the chosen priority scheme (for details see Section 21.5.3 Transmit Buffers (TXB)) + }, + AT: enum(u1) { // bit offset: 1 desc: Abort Transmission. + @"NO_ACTION_DO_NOT_AB" = 0, // desc: No action. Do not abort the transmission. + @"PRESENT_IF_NOT_ALRE" = 1, // desc: Present. if not already in progress, a pending Transmission Request for the selected Transmit Buffer is cancelled. + }, + RRB: enum(u1) { // bit offset: 2 desc: Release Receive Buffer. + @"NO_ACTION_DO_NOT_RE" = 0, // desc: No action. Do not release the receive buffer. + @"RELEASED_THE_INFORM" = 1, // desc: Released. The information in the Receive Buffer (consisting of CANxRFS, CANxRID, and if applicable the CANxRDA and CANxRDB registers) is released, and becomes eligible for replacement by the next received frame. If the next received frame is not available, writing this command clears the RBS bit in the Status Register(s). + }, + CDO: enum(u1) { // bit offset: 3 desc: Clear Data Overrun. + @"NO_ACTION_DO_NOT_CL" = 0, // desc: No action. Do not clear the data overrun bit. + @"CLEAR_THE_DATA_OVER" = 1, // desc: Clear. The Data Overrun bit in Status Register(s) is cleared. + }, + SRR: enum(u1) { // bit offset: 4 desc: Self Reception Request. + @"ABSENT_NO_SELF_RECE" = 0, // desc: Absent. No self reception request. + @"PRESENT_THE_MESSAGE" = 1, // desc: Present. The message, previously written to the CANxTFS, CANxTID, and optionally the CANxTDA and CANxTDB registers, is queued for transmission from the selected Transmit Buffer and received simultaneously. This differs from the TR bit above in that the receiver is not disabled during the transmission, so that it receives the message if its Identifier is recognized by the Acceptance Filter. + }, + STB1: enum(u1) { // bit offset: 5 desc: Select Tx Buffer 1. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 1 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 1 is selected for transmission. + }, + STB2: enum(u1) { // bit offset: 6 desc: Select Tx Buffer 2. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 2 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 2 is selected for transmission. + }, + STB3: enum(u1) { // bit offset: 7 desc: Select Tx Buffer 3. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 3 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 3 is selected for transmission. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7411,14 +9597,39 @@ pub const CAN1 = extern struct { }); // byte offset: 8 Global Controller Status and Error Counters. The error counters can only be written when RM in CANMOD is 1. pub const GSR = mmio(Address + 0x00000008, 32, packed struct { - RBS: bool, // bit offset: 0 desc: Receive Buffer Status. After reading all messages and releasing their memory space with the command 'Release Receive Buffer,' this bit is cleared. - DOS: bool, // bit offset: 1 desc: Data Overrun Status. If there is not enough space to store the message within the Receive Buffer, that message is dropped and the Data Overrun condition is signalled to the CPU in the moment this message becomes valid. If this message is not completed successfully (e.g. because of an error), no overrun condition is signalled. - TBS: bool, // bit offset: 2 desc: Transmit Buffer Status. - TCS: bool, // bit offset: 3 desc: Transmit Complete Status. The Transmission Complete Status bit is set '0' (incomplete) whenever the Transmission Request bit or the Self Reception Request bit is set '1' at least for one of the three Transmit Buffers. The Transmission Complete Status bit will remain '0' until all messages are transmitted successfully. - RS: bool, // bit offset: 4 desc: Receive Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. - TS: bool, // bit offset: 5 desc: Transmit Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. - ES: bool, // bit offset: 6 desc: Error Status. Errors detected during reception or transmission will effect the error counters according to the CAN specification. The Error Status bit is set when at least one of the error counters has reached or exceeded the Error Warning Limit. An Error Warning Interrupt is generated, if enabled. The default value of the Error Warning Limit after hardware reset is 96 decimal, see also Section 21.7.7 CAN Error Warning Limit register (CAN1EWL - 0x4004 4018, CAN2EWL - 0x4004 8018). - BS: bool, // bit offset: 7 desc: Bus Status. Mode bit '1' (present) and an Error Warning Interrupt is generated, if enabled. Afterwards the Transmit Error Counter is set to '127', and the Receive Error Counter is cleared. It will stay in this mode until the CPU clears the Reset Mode bit. Once this is completed the CAN Controller will wait the minimum protocol-defined time (128 occurrences of the Bus-Free signal) counting down the Transmit Error Counter. After that, the Bus Status bit is cleared (Bus-On), the Error Status bit is set '0' (ok), the Error Counters are reset, and an Error Warning Interrupt is generated, if enabled. Reading the TX Error Counter during this time gives information about the status of the Bus-Off recovery. + RBS: enum(u1) { // bit offset: 0 desc: Receive Buffer Status. After reading all messages and releasing their memory space with the command 'Release Receive Buffer,' this bit is cleared. + @"EMPTY_NO_MESSAGE_IS" = 0, // desc: Empty. No message is available. + @"FULL_AT_LEAST_ONE_C" = 1, // desc: Full. At least one complete message is received by the Double Receive Buffer and available in the CANxRFS, CANxRID, and if applicable the CANxRDA and CANxRDB registers. This bit is cleared by the Release Receive Buffer command in CANxCMR, if no subsequent received message is available. + }, + DOS: enum(u1) { // bit offset: 1 desc: Data Overrun Status. If there is not enough space to store the message within the Receive Buffer, that message is dropped and the Data Overrun condition is signalled to the CPU in the moment this message becomes valid. If this message is not completed successfully (e.g. because of an error), no overrun condition is signalled. + @"ABSENT_NO_DATA_OVER" = 0, // desc: Absent. No data overrun has occurred since the last Clear Data Overrun command was given/written to CANxCMR (or since Reset). + @"OVERRUN_A_MESSAGE_W" = 1, // desc: Overrun. A message was lost because the preceding message to this CAN controller was not read and released quickly enough (there was not enough space for a new message in the Double Receive Buffer). + }, + TBS: enum(u1) { // bit offset: 2 desc: Transmit Buffer Status. + @"LOCKED_AT_LEAST_ONE" = 0, // desc: Locked. At least one of the Transmit Buffers is not available for the CPU, i.e. at least one previously queued message for this CAN controller has not yet been sent, and therefore software should not write to the CANxTFI, CANxTID, CANxTDA, nor CANxTDB registers of that (those) Tx buffer(s). + @"RELEASED_ALL_THREE_" = 1, // desc: Released. All three Transmit Buffers are available for the CPU. No transmit message is pending for this CAN controller (in any of the 3 Tx buffers), and software may write to any of the CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS: enum(u1) { // bit offset: 3 desc: Transmit Complete Status. The Transmission Complete Status bit is set '0' (incomplete) whenever the Transmission Request bit or the Self Reception Request bit is set '1' at least for one of the three Transmit Buffers. The Transmission Complete Status bit will remain '0' until all messages are transmitted successfully. + @"INCOMPLETE_AT_LEAST" = 0, // desc: Incomplete. At least one requested transmission has not been successfully completed yet. + @"COMPLETE_ALL_REQUES" = 1, // desc: Complete. All requested transmission(s) has (have) been successfully completed. + }, + RS: enum(u1) { // bit offset: 4 desc: Receive Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. + @"IDLE_THE_CAN_CONTRO" = 0, // desc: Idle. The CAN controller is idle. + @"RECEIVE_THE_CAN_CON" = 1, // desc: Receive. The CAN controller is receiving a message. + }, + TS: enum(u1) { // bit offset: 5 desc: Transmit Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. + @"IDLE_THE_CAN_CONTRO" = 0, // desc: Idle. The CAN controller is idle. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN controller is sending a message. + }, + ES: enum(u1) { // bit offset: 6 desc: Error Status. Errors detected during reception or transmission will effect the error counters according to the CAN specification. The Error Status bit is set when at least one of the error counters has reached or exceeded the Error Warning Limit. An Error Warning Interrupt is generated, if enabled. The default value of the Error Warning Limit after hardware reset is 96 decimal, see also Section 21.7.7 CAN Error Warning Limit register (CAN1EWL - 0x4004 4018, CAN2EWL - 0x4004 8018). + @"OK_BOTH_ERROR_COUNT" = 0, // desc: OK. Both error counters are below the Error Warning Limit. + @"ERROR_ONE_OR_BOTH_O" = 1, // desc: Error. One or both of the Transmit and Receive Error Counters has reached the limit set in the Error Warning Limit register. + }, + BS: enum(u1) { // bit offset: 7 desc: Bus Status. Mode bit '1' (present) and an Error Warning Interrupt is generated, if enabled. Afterwards the Transmit Error Counter is set to '127', and the Receive Error Counter is cleared. It will stay in this mode until the CPU clears the Reset Mode bit. Once this is completed the CAN Controller will wait the minimum protocol-defined time (128 occurrences of the Bus-Free signal) counting down the Transmit Error Counter. After that, the Bus Status bit is cleared (Bus-On), the Error Status bit is set '0' (ok), the Error Counters are reset, and an Error Warning Interrupt is generated, if enabled. Reading the TX Error Counter during this time gives information about the status of the Bus-Off recovery. + @"BUS_ON_THE_CAN_CONT" = 0, // desc: Bus-on. The CAN Controller is involved in bus activities + @"BUS_OFF_THE_CAN_CON" = 1, // desc: Bus-off. The CAN controller is currently not involved/prohibited from bus activity because the Transmit Error Counter reached its limiting value of 255. + }, + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -7432,40 +9643,83 @@ pub const CAN1 = extern struct { }); // byte offset: 12 Interrupt status, Arbitration Lost Capture, Error Code Capture pub const ICR = mmio(Address + 0x0000000c, 32, packed struct { - RI: bool, // bit offset: 0 desc: Receive Interrupt. This bit is set whenever the RBS bit in CANxSR and the RIE bit in CANxIER are both 1, indicating that a new message was received and stored in the Receive Buffer. The Receive Interrupt Bit is not cleared upon a read access to the Interrupt Register. Giving the Command Release Receive Buffer will clear RI temporarily. If there is another message available within the Receive Buffer after the release command, RI is set again. Otherwise RI remains cleared. - TI1: bool, // bit offset: 1 desc: Transmit Interrupt 1. This bit is set when the TBS1 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB1 was successfully transmitted or aborted), indicating that Transmit buffer 1 is available, and the TIE1 bit in CANxIER is 1. - EI: bool, // bit offset: 2 desc: Error Warning Interrupt. This bit is set on every change (set or clear) of either the Error Status or Bus Status bit in CANxSR and the EIE bit bit is set within the Interrupt Enable Register at the time of the change. - DOI: bool, // bit offset: 3 desc: Data Overrun Interrupt. This bit is set when the DOS bit in CANxSR goes from 0 to 1 and the DOIE bit in CANxIER is 1. - WUI: bool, // bit offset: 4 desc: Wake-Up Interrupt. This bit is set if the CAN controller is sleeping and bus activity is detected and the WUIE bit in CANxIER is 1. A Wake-Up Interrupt is also generated if the CPU tries to set the Sleep bit while the CAN controller is involved in bus activities or a CAN Interrupt is pending. The WUI flag can also get asserted when the according enable bit WUIE is not set. In this case a Wake-Up Interrupt does not get asserted. - EPI: bool, // bit offset: 5 desc: Error Passive Interrupt. This bit is set if the EPIE bit in CANxIER is 1, and the CAN controller switches between Error Passive and Error Active mode in either direction. This is the case when the CAN Controller has reached the Error Passive Status (at least one error counter exceeds the CAN protocol defined level of 127) or if the CAN Controller is in Error Passive Status and enters the Error Active Status again. - ALI: bool, // bit offset: 6 desc: Arbitration Lost Interrupt. This bit is set if the ALIE bit in CANxIER is 1, and the CAN controller loses arbitration while attempting to transmit. In this case the CAN node becomes a receiver. - BEI: bool, // bit offset: 7 desc: Bus Error Interrupt -- this bit is set if the BEIE bit in CANxIER is 1, and the CAN controller detects an error on the bus. - IDI: bool, // bit offset: 8 desc: ID Ready Interrupt -- this bit is set if the IDIE bit in CANxIER is 1, and a CAN Identifier has been received (a message was successfully transmitted or aborted). This bit is set whenever a message was successfully transmitted or aborted and the IDIE bit is set in the IER register. - TI2: bool, // bit offset: 9 desc: Transmit Interrupt 2. This bit is set when the TBS2 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB2 was successfully transmitted or aborted), indicating that Transmit buffer 2 is available, and the TIE2 bit in CANxIER is 1. - TI3: bool, // bit offset: 10 desc: Transmit Interrupt 3. This bit is set when the TBS3 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB3 was successfully transmitted or aborted), indicating that Transmit buffer 3 is available, and the TIE3 bit in CANxIER is 1. + RI: enum(u1) { // bit offset: 0 desc: Receive Interrupt. This bit is set whenever the RBS bit in CANxSR and the RIE bit in CANxIER are both 1, indicating that a new message was received and stored in the Receive Buffer. The Receive Interrupt Bit is not cleared upon a read access to the Interrupt Register. Giving the Command Release Receive Buffer will clear RI temporarily. If there is another message available within the Receive Buffer after the release command, RI is set again. Otherwise RI remains cleared. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI1: enum(u1) { // bit offset: 1 desc: Transmit Interrupt 1. This bit is set when the TBS1 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB1 was successfully transmitted or aborted), indicating that Transmit buffer 1 is available, and the TIE1 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + EI: enum(u1) { // bit offset: 2 desc: Error Warning Interrupt. This bit is set on every change (set or clear) of either the Error Status or Bus Status bit in CANxSR and the EIE bit bit is set within the Interrupt Enable Register at the time of the change. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + DOI: enum(u1) { // bit offset: 3 desc: Data Overrun Interrupt. This bit is set when the DOS bit in CANxSR goes from 0 to 1 and the DOIE bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + WUI: enum(u1) { // bit offset: 4 desc: Wake-Up Interrupt. This bit is set if the CAN controller is sleeping and bus activity is detected and the WUIE bit in CANxIER is 1. A Wake-Up Interrupt is also generated if the CPU tries to set the Sleep bit while the CAN controller is involved in bus activities or a CAN Interrupt is pending. The WUI flag can also get asserted when the according enable bit WUIE is not set. In this case a Wake-Up Interrupt does not get asserted. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + EPI: enum(u1) { // bit offset: 5 desc: Error Passive Interrupt. This bit is set if the EPIE bit in CANxIER is 1, and the CAN controller switches between Error Passive and Error Active mode in either direction. This is the case when the CAN Controller has reached the Error Passive Status (at least one error counter exceeds the CAN protocol defined level of 127) or if the CAN Controller is in Error Passive Status and enters the Error Active Status again. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + ALI: enum(u1) { // bit offset: 6 desc: Arbitration Lost Interrupt. This bit is set if the ALIE bit in CANxIER is 1, and the CAN controller loses arbitration while attempting to transmit. In this case the CAN node becomes a receiver. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + BEI: enum(u1) { // bit offset: 7 desc: Bus Error Interrupt -- this bit is set if the BEIE bit in CANxIER is 1, and the CAN controller detects an error on the bus. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + IDI: enum(u1) { // bit offset: 8 desc: ID Ready Interrupt -- this bit is set if the IDIE bit in CANxIER is 1, and a CAN Identifier has been received (a message was successfully transmitted or aborted). This bit is set whenever a message was successfully transmitted or aborted and the IDIE bit is set in the IER register. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI2: enum(u1) { // bit offset: 9 desc: Transmit Interrupt 2. This bit is set when the TBS2 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB2 was successfully transmitted or aborted), indicating that Transmit buffer 2 is available, and the TIE2 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI3: enum(u1) { // bit offset: 10 desc: Transmit Interrupt 3. This bit is set when the TBS3 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB3 was successfully transmitted or aborted), indicating that Transmit buffer 3 is available, and the TIE3 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + // RESERVED: u5, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, ERRBIT4_0: u5, // bit offset: 16 desc: Error Code Capture: when the CAN controller detects a bus error, the location of the error within the frame is captured in this field. The value reflects an internal state variable, and as a result is not very linear: 00011 = Start of Frame 00010 = ID28 ... ID21 00110 = ID20 ... ID18 00100 = SRTR Bit 00101 = IDE bit 00111 = ID17 ... 13 01111 = ID12 ... ID5 01110 = ID4 ... ID0 01100 = RTR Bit 01101 = Reserved Bit 1 01001 = Reserved Bit 0 01011 = Data Length Code 01010 = Data Field 01000 = CRC Sequence 11000 = CRC Delimiter 11001 = Acknowledge Slot 11011 = Acknowledge Delimiter 11010 = End of Frame 10010 = Intermission Whenever a bus error occurs, the corresponding bus error interrupt is forced, if enabled. At the same time, the current position of the Bit Stream Processor is captured into the Error Code Capture Register. The content within this register is fixed until the user software has read out its content once. From now on, the capture mechanism is activated again, i.e. reading the CANxICR enables another Bus Error Interrupt. - ERRDIR: bool, // bit offset: 21 desc: When the CAN controller detects a bus error, the direction of the current bit is captured in this bit. - ERRC1_0: u2, // bit offset: 22 desc: When the CAN controller detects a bus error, the type of error is captured in this field: + ERRDIR: enum(u1) { // bit offset: 21 desc: When the CAN controller detects a bus error, the direction of the current bit is captured in this bit. + @"ERROR_OCCURRED_DURIN" = 0, // desc: Error occurred during transmitting. + @"ERROR_OCCURRED_DURIN" = 1, // desc: Error occurred during receiving. + }, + ERRC1_0: enum(u2) { // bit offset: 22 desc: When the CAN controller detects a bus error, the type of error is captured in this field: + @"BIT_ERROR" = 0, // desc: Bit error + @"FORM_ERROR" = 1, // desc: Form error + @"STUFF_ERROR" = 2, // desc: Stuff error + @"OTHER_ERROR" = 3, // desc: Other error + }, ALCBIT: u8, // bit offset: 24 desc: Each time arbitration is lost while trying to send on the CAN, the bit number within the frame is captured into this field. After the content of ALCBIT is read, the ALI bit is cleared and a new Arbitration Lost interrupt can occur. 00 = arbitration lost in the first bit (MS) of identifier ... 11 = arbitration lost in SRTS bit (RTR bit for standard frame messages) 12 = arbitration lost in IDE bit 13 = arbitration lost in 12th bit of identifier (extended frame only) ... 30 = arbitration lost in last bit of identifier (extended frame only) 31 = arbitration lost in RTR bit (extended frame only) On arbitration lost, the corresponding arbitration lost interrupt is forced, if enabled. At that time, the current bit position of the Bit Stream Processor is captured into the Arbitration Lost Capture Register. The content within this register is fixed until the user application has read out its contents once. From now on, the capture mechanism is activated again. }); // byte offset: 16 Interrupt Enable pub const IER = mmio(Address + 0x00000010, 32, packed struct { - RIE: bool, // bit offset: 0 desc: Receiver Interrupt Enable. When the Receive Buffer Status is 'full', the CAN Controller requests the respective interrupt. - TIE1: bool, // bit offset: 1 desc: Transmit Interrupt Enable for Buffer1. When a message has been successfully transmitted out of TXB1 or Transmit Buffer 1 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. - EIE: bool, // bit offset: 2 desc: Error Warning Interrupt Enable. If the Error or Bus Status change (see Status Register), the CAN Controller requests the respective interrupt. - DOIE: bool, // bit offset: 3 desc: Data Overrun Interrupt Enable. If the Data Overrun Status bit is set (see Status Register), the CAN Controller requests the respective interrupt. - WUIE: bool, // bit offset: 4 desc: Wake-Up Interrupt Enable. If the sleeping CAN controller wakes up, the respective interrupt is requested. - EPIE: bool, // bit offset: 5 desc: Error Passive Interrupt Enable. If the error status of the CAN Controller changes from error active to error passive or vice versa, the respective interrupt is requested. - ALIE: bool, // bit offset: 6 desc: Arbitration Lost Interrupt Enable. If the CAN Controller has lost arbitration, the respective interrupt is requested. - BEIE: bool, // bit offset: 7 desc: Bus Error Interrupt Enable. If a bus error has been detected, the CAN Controller requests the respective interrupt. - IDIE: bool, // bit offset: 8 desc: ID Ready Interrupt Enable. When a CAN identifier has been received, the CAN Controller requests the respective interrupt. - TIE2: bool, // bit offset: 9 desc: Transmit Interrupt Enable for Buffer2. When a message has been successfully transmitted out of TXB2 or Transmit Buffer 2 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. - TIE3: bool, // bit offset: 10 desc: Transmit Interrupt Enable for Buffer3. When a message has been successfully transmitted out of TXB3 or Transmit Buffer 3 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + RIE: u1, // bit offset: 0 desc: Receiver Interrupt Enable. When the Receive Buffer Status is 'full', the CAN Controller requests the respective interrupt. + TIE1: u1, // bit offset: 1 desc: Transmit Interrupt Enable for Buffer1. When a message has been successfully transmitted out of TXB1 or Transmit Buffer 1 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + EIE: u1, // bit offset: 2 desc: Error Warning Interrupt Enable. If the Error or Bus Status change (see Status Register), the CAN Controller requests the respective interrupt. + DOIE: u1, // bit offset: 3 desc: Data Overrun Interrupt Enable. If the Data Overrun Status bit is set (see Status Register), the CAN Controller requests the respective interrupt. + WUIE: u1, // bit offset: 4 desc: Wake-Up Interrupt Enable. If the sleeping CAN controller wakes up, the respective interrupt is requested. + EPIE: u1, // bit offset: 5 desc: Error Passive Interrupt Enable. If the error status of the CAN Controller changes from error active to error passive or vice versa, the respective interrupt is requested. + ALIE: u1, // bit offset: 6 desc: Arbitration Lost Interrupt Enable. If the CAN Controller has lost arbitration, the respective interrupt is requested. + BEIE: u1, // bit offset: 7 desc: Bus Error Interrupt Enable. If a bus error has been detected, the CAN Controller requests the respective interrupt. + IDIE: u1, // bit offset: 8 desc: ID Ready Interrupt Enable. When a CAN identifier has been received, the CAN Controller requests the respective interrupt. + TIE2: u1, // bit offset: 9 desc: Transmit Interrupt Enable for Buffer2. When a message has been successfully transmitted out of TXB2 or Transmit Buffer 2 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + TIE3: u1, // bit offset: 10 desc: Transmit Interrupt Enable for Buffer3. When a message has been successfully transmitted out of TXB3 or Transmit Buffer 3 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7491,6 +9745,7 @@ pub const CAN1 = extern struct { // byte offset: 20 Bus Timing. Can only be written when RM in CANMOD is 1. pub const BTR = mmio(Address + 0x00000014, 32, packed struct { BRP: u10, // bit offset: 0 desc: Baud Rate Prescaler. The APB clock is divided by (this value plus one) to produce the CAN clock. + // RESERVED: u4, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, @@ -7498,7 +9753,11 @@ pub const CAN1 = extern struct { SJW: u2, // bit offset: 14 desc: The Synchronization Jump Width is (this value plus one) CAN clocks. TESG1: u4, // bit offset: 16 desc: The delay from the nominal Sync point to the sample point is (this value plus one) CAN clocks. TESG2: u3, // bit offset: 20 desc: The delay from the sample point to the next nominal sync point is (this value plus one) CAN clocks. The nominal CAN bit time is (this value plus the value in TSEG1 plus 3) CAN clocks. - SAM: bool, // bit offset: 23 desc: Sampling + SAM: enum(u1) { // bit offset: 23 desc: Sampling + @"THE_BUS_IS_SAMPLED_O" = 0, // desc: The bus is sampled once (recommended for high speed buses) + @"THE_BUS_IS_SAMPLED_3" = 1, // desc: The bus is sampled 3 times (recommended for low to medium speed buses to filter spikes on the bus-line) + }, + // RESERVED: u8, // bit offset: 24 desc: Reserved. Read value is undefined, only zero should be written. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -7511,6 +9770,7 @@ pub const CAN1 = extern struct { // byte offset: 24 Error Warning Limit. Can only be written when RM in CANMOD is 1. pub const EWL = mmio(Address + 0x00000018, 32, packed struct { EWL: u8, // bit offset: 0 desc: During CAN operation, this value is compared to both the Tx and Rx Error Counters. If either of these counter matches this value, the Error Status (ES) bit in CANSR is set. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7538,30 +9798,58 @@ pub const CAN1 = extern struct { }); // byte offset: 28 Status Register pub const SR = mmio(Address + 0x0000001c, 32, packed struct { - RBS_1: bool, // bit offset: 0 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_1: bool, // bit offset: 1 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS1_1: bool, // bit offset: 2 desc: Transmit Buffer Status 1. - TCS1_1: bool, // bit offset: 3 desc: Transmission Complete Status. - RS_1: bool, // bit offset: 4 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS1_1: bool, // bit offset: 5 desc: Transmit Status 1. - ES_1: bool, // bit offset: 6 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_1: bool, // bit offset: 7 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. - RBS_2: bool, // bit offset: 8 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_2: bool, // bit offset: 9 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS2_2: bool, // bit offset: 10 desc: Transmit Buffer Status 2. - TCS2_2: bool, // bit offset: 11 desc: Transmission Complete Status. - RS_2: bool, // bit offset: 12 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS2_2: bool, // bit offset: 13 desc: Transmit Status 2. - ES_2: bool, // bit offset: 14 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_2: bool, // bit offset: 15 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. - RBS_3: bool, // bit offset: 16 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_3: bool, // bit offset: 17 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS3_3: bool, // bit offset: 18 desc: Transmit Buffer Status 3. - TCS3_3: bool, // bit offset: 19 desc: Transmission Complete Status. - RS_3: bool, // bit offset: 20 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS3_3: bool, // bit offset: 21 desc: Transmit Status 3. - ES_3: bool, // bit offset: 22 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_3: bool, // bit offset: 23 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_1: u1, // bit offset: 0 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_1: u1, // bit offset: 1 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS1_1: enum(u1) { // bit offset: 2 desc: Transmit Buffer Status 1. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 1 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 1 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS1_1: enum(u1) { // bit offset: 3 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 1 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 1 has been successfully completed. + }, + RS_1: u1, // bit offset: 4 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS1_1: enum(u1) { // bit offset: 5 desc: Transmit Status 1. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 1. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 1. + }, + ES_1: u1, // bit offset: 6 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_1: u1, // bit offset: 7 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_2: u1, // bit offset: 8 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_2: u1, // bit offset: 9 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS2_2: enum(u1) { // bit offset: 10 desc: Transmit Buffer Status 2. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 2 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 2 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS2_2: enum(u1) { // bit offset: 11 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 2 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 2 has been successfully completed. + }, + RS_2: u1, // bit offset: 12 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS2_2: enum(u1) { // bit offset: 13 desc: Transmit Status 2. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 2. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 2. + }, + ES_2: u1, // bit offset: 14 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_2: u1, // bit offset: 15 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_3: u1, // bit offset: 16 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_3: u1, // bit offset: 17 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS3_3: enum(u1) { // bit offset: 18 desc: Transmit Buffer Status 3. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 3 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 3 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS3_3: enum(u1) { // bit offset: 19 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 3 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 3 has been successfully completed. + }, + RS_3: u1, // bit offset: 20 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS3_3: enum(u1) { // bit offset: 21 desc: Transmit Status 3. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 3. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 3. + }, + ES_3: u1, // bit offset: 22 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_3: u1, // bit offset: 23 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + // RESERVED: u8, // bit offset: 24 desc: Reserved, the value read from a reserved bit is not defined. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -7574,13 +9862,16 @@ pub const CAN1 = extern struct { // byte offset: 32 Receive frame status. Can only be written when RM in CANMOD is 1. pub const RFS = mmio(Address + 0x00000020, 32, packed struct { IDINDEX: u10, // bit offset: 0 desc: ID Index. If the BP bit (below) is 0, this value is the zero-based number of the Lookup Table RAM entry at which the Acceptance Filter matched the received Identifier. Disabled entries in the Standard tables are included in this numbering, but will not be matched. See Section 21.17 Examples of acceptance filter tables and ID index values on page 587 for examples of ID Index values. - BP: bool, // bit offset: 10 desc: If this bit is 1, the current message was received in AF Bypass mode, and the ID Index field (above) is meaningless. + BP: u1, // bit offset: 10 desc: If this bit is 1, the current message was received in AF Bypass mode, and the ID Index field (above) is meaningless. + // RESERVED: u5, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: The field contains the Data Length Code (DLC) field of the current received message. When RTR = 0, this is related to the number of data bytes available in the CANRDA and CANRDB registers as follows: 0000-0111 = 0 to 7 bytes1000-1111 = 8 bytes With RTR = 1, this value indicates the number of data bytes requested to be sent back, with the same encoding. + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, @@ -7590,13 +9881,13 @@ pub const CAN1 = extern struct { reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This bit contains the Remote Transmission Request bit of the current received message. 0 indicates a Data Frame, in which (if DLC is non-zero) data can be read from the CANRDA and possibly the CANRDB registers. 1 indicates a Remote frame, in which case the DLC value identifies the number of data bytes requested to be sent using the same Identifier. - FF: bool, // bit offset: 31 desc: A 0 in this bit indicates that the current received message included an 11-bit Identifier, while a 1 indicates a 29-bit Identifier. This affects the contents of the CANid register described below. + RTR: u1, // bit offset: 30 desc: This bit contains the Remote Transmission Request bit of the current received message. 0 indicates a Data Frame, in which (if DLC is non-zero) data can be read from the CANRDA and possibly the CANRDB registers. 1 indicates a Remote frame, in which case the DLC value identifies the number of data bytes requested to be sent using the same Identifier. + FF: u1, // bit offset: 31 desc: A 0 in this bit indicates that the current received message included an 11-bit Identifier, while a 1 indicates a 29-bit Identifier. This affects the contents of the CANid register described below. }); // byte offset: 36 Received Identifier. Can only be written when RM in CANMOD is 1. pub const RID = mmio(Address + 0x00000024, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier field of the current received message. In CAN 2.0A, these bits are called ID10-0, while in CAN 2.0B they're called ID29-18. + // RESERVED: u21, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7636,6 +9927,7 @@ pub const CAN1 = extern struct { // byte offset: 48 Transmit frame info (Tx Buffer ) pub const TFI1 = mmio(Address + 0x00000030, 32, packed struct { PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -7645,22 +9937,45 @@ pub const CAN1 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 52 Transmit Identifier (Tx Buffer) pub const TID1 = mmio(Address + 0x00000034, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 56 Transmit data bytes 1-4 (Tx Buffer) pub const TDA1 = mmio(Address + 0x00000038, 32, packed struct { @@ -7679,6 +9994,7 @@ pub const CAN1 = extern struct { // byte offset: 64 Transmit frame info (Tx Buffer ) pub const TFI2 = mmio(Address + 0x00000040, 32, packed struct { PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -7688,41 +10004,65 @@ pub const CAN1 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 68 Transmit Identifier (Tx Buffer) pub const TID2 = mmio(Address + 0x00000044, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 72 Transmit data bytes 1-4 (Tx Buffer) - pub const TDA2 = mmio(Address + 0x00000048, 32, packed struct { - DATA1: u8, // bit offset: 0 desc: Data 1. If RTR = 0 and DLC >= 0001 in the corresponding CANxTFI, this byte is sent as the first Data byte of the next transmit message. - DATA2: u8, // bit offset: 8 desc: Data 2. If RTR = 0 and DLC >= 0010 in the corresponding CANxTFI, this byte is sent as the 2nd Data byte of the next transmit message. - DATA3: u8, // bit offset: 16 desc: Data 3. If RTR = 0 and DLC >= 0011 in the corresponding CANxTFI, this byte is sent as the 3rd Data byte of the next transmit message. - DATA4: u8, // bit offset: 24 desc: Data 4. If RTR = 0 and DLC >= 0100 in the corresponding CANxTFI, this byte is sent as the 4th Data byte of the next transmit message. - }); - // byte offset: 76 Transmit data bytes 5-8 (Tx Buffer ) - pub const TDB2 = mmio(Address + 0x0000004c, 32, packed struct { - DATA5: u8, // bit offset: 0 desc: Data 5. If RTR = 0 and DLC >= 0101 in the corresponding CANTFI, this byte is sent as the 5th Data byte of the next transmit message. - DATA6: u8, // bit offset: 8 desc: Data 6. If RTR = 0 and DLC >= 0110 in the corresponding CANTFI, this byte is sent as the 6th Data byte of the next transmit message. - DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. - DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. - }); - // byte offset: 80 Transmit frame info (Tx Buffer ) - pub const TFI3 = mmio(Address + 0x00000050, 32, packed struct { - PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. - reserved8: u1 = 0, + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 72 Transmit data bytes 1-4 (Tx Buffer) + pub const TDA2 = mmio(Address + 0x00000048, 32, packed struct { + DATA1: u8, // bit offset: 0 desc: Data 1. If RTR = 0 and DLC >= 0001 in the corresponding CANxTFI, this byte is sent as the first Data byte of the next transmit message. + DATA2: u8, // bit offset: 8 desc: Data 2. If RTR = 0 and DLC >= 0010 in the corresponding CANxTFI, this byte is sent as the 2nd Data byte of the next transmit message. + DATA3: u8, // bit offset: 16 desc: Data 3. If RTR = 0 and DLC >= 0011 in the corresponding CANxTFI, this byte is sent as the 3rd Data byte of the next transmit message. + DATA4: u8, // bit offset: 24 desc: Data 4. If RTR = 0 and DLC >= 0100 in the corresponding CANxTFI, this byte is sent as the 4th Data byte of the next transmit message. + }); + // byte offset: 76 Transmit data bytes 5-8 (Tx Buffer ) + pub const TDB2 = mmio(Address + 0x0000004c, 32, packed struct { + DATA5: u8, // bit offset: 0 desc: Data 5. If RTR = 0 and DLC >= 0101 in the corresponding CANTFI, this byte is sent as the 5th Data byte of the next transmit message. + DATA6: u8, // bit offset: 8 desc: Data 6. If RTR = 0 and DLC >= 0110 in the corresponding CANTFI, this byte is sent as the 6th Data byte of the next transmit message. + DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. + DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. + }); + // byte offset: 80 Transmit frame info (Tx Buffer ) + pub const TFI3 = mmio(Address + 0x00000050, 32, packed struct { + PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. + reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -7731,22 +10071,45 @@ pub const CAN1 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 84 Transmit Identifier (Tx Buffer) pub const TID3 = mmio(Address + 0x00000054, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 88 Transmit data bytes 1-4 (Tx Buffer) pub const TDA3 = mmio(Address + 0x00000058, 32, packed struct { @@ -7767,14 +10130,37 @@ pub const CAN2 = extern struct { pub const Address: u32 = 0x40048000; // byte offset: 0 Controls the operating mode of the CAN Controller. pub const MOD = mmio(Address + 0x00000000, 32, packed struct { - RM: bool, // bit offset: 0 desc: Reset Mode. - LOM: bool, // bit offset: 1 desc: Listen Only Mode. - STM: bool, // bit offset: 2 desc: Self Test Mode. - TPM: bool, // bit offset: 3 desc: Transmit Priority Mode. - SM: bool, // bit offset: 4 desc: Sleep Mode. - RPM: bool, // bit offset: 5 desc: Receive Polarity Mode. + RM: enum(u1) { // bit offset: 0 desc: Reset Mode. + @"NORMAL_THE_CAN_CONTR" = 0, // desc: Normal.The CAN Controller is in the Operating Mode, and certain registers can not be written. + @"RESET_CAN_OPERATION" = 1, // desc: Reset. CAN operation is disabled, writable registers can be written and the current transmission/reception of a message is aborted. + }, + LOM: enum(u1) { // bit offset: 1 desc: Listen Only Mode. + @"NORMAL_THE_CAN_CONT" = 0, // desc: Normal. The CAN controller acknowledges a successfully received message on the CAN bus. The error counters are stopped at the current value. + @"LISTEN_ONLY_THE_CON" = 1, // desc: Listen only. The controller gives no acknowledgment, even if a message is successfully received. Messages cannot be sent, and the controller operates in error passive mode. This mode is intended for software bit rate detection and hot plugging. + }, + STM: enum(u1) { // bit offset: 2 desc: Self Test Mode. + @"NORMAL_A_TRANSMITTE" = 0, // desc: Normal. A transmitted message must be acknowledged to be considered successful. + @"SELF_TEST_THE_CONTR" = 1, // desc: Self test. The controller will consider a Tx message successful even if there is no acknowledgment received. In this mode a full node test is possible without any other active node on the bus using the SRR bit in CANxCMR. + }, + TPM: enum(u1) { // bit offset: 3 desc: Transmit Priority Mode. + @"CAN_ID_THE_TRANSMIT" = 0, // desc: CAN ID. The transmit priority for 3 Transmit Buffers depends on the CAN Identifier. + @"LOCAL_PRIORITY_THE_" = 1, // desc: Local priority. The transmit priority for 3 Transmit Buffers depends on the contents of the Tx Priority register within the Transmit Buffer. + }, + SM: enum(u1) { // bit offset: 4 desc: Sleep Mode. + @"WAKE_UP_NORMAL_OPER" = 0, // desc: Wake-up. Normal operation. + @"SLEEP_THE_CAN_CONTR" = 1, // desc: Sleep. The CAN controller enters Sleep Mode if no CAN interrupt is pending and there is no bus activity. See the Sleep Mode description Section 21.8.2 on page 565. + }, + RPM: enum(u1) { // bit offset: 5 desc: Receive Polarity Mode. + @"LOW_ACTIVE_RD_INPUT" = 0, // desc: Low active. RD input is active Low (dominant bit = 0). + @"HIGH_ACTIVE_RD_INPU" = 1, // desc: High active. RD input is active High (dominant bit = 1) -- reverse polarity. + }, + // RESERVED: u1, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - TM: bool, // bit offset: 7 desc: Test Mode. + TM: enum(u1) { // bit offset: 7 desc: Test Mode. + @"DISABLED_NORMAL_OPE" = 0, // desc: Disabled. Normal operation. + @"ENABLED_THE_TD_PIN_" = 1, // desc: Enabled. The TD pin will reflect the bit, detected on RD pin, with the next positive edge of the system clock. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7802,14 +10188,39 @@ pub const CAN2 = extern struct { }); // byte offset: 4 Command bits that affect the state of the CAN Controller pub const CMR = mmio(Address + 0x00000004, 32, packed struct { - TR: bool, // bit offset: 0 desc: Transmission Request. - AT: bool, // bit offset: 1 desc: Abort Transmission. - RRB: bool, // bit offset: 2 desc: Release Receive Buffer. - CDO: bool, // bit offset: 3 desc: Clear Data Overrun. - SRR: bool, // bit offset: 4 desc: Self Reception Request. - STB1: bool, // bit offset: 5 desc: Select Tx Buffer 1. - STB2: bool, // bit offset: 6 desc: Select Tx Buffer 2. - STB3: bool, // bit offset: 7 desc: Select Tx Buffer 3. + TR: enum(u1) { // bit offset: 0 desc: Transmission Request. + @"ABSENT_NO_TRANSMISSI" = 0, // desc: Absent.No transmission request. + @"PRESENT_THE_MESSAGE" = 1, // desc: Present. The message, previously written to the CANxTFI, CANxTID, and optionally the CANxTDA and CANxTDB registers, is queued for transmission from the selected Transmit Buffer. If at two or all three of STB1, STB2 and STB3 bits are selected when TR=1 is written, Transmit Buffer will be selected based on the chosen priority scheme (for details see Section 21.5.3 Transmit Buffers (TXB)) + }, + AT: enum(u1) { // bit offset: 1 desc: Abort Transmission. + @"NO_ACTION_DO_NOT_AB" = 0, // desc: No action. Do not abort the transmission. + @"PRESENT_IF_NOT_ALRE" = 1, // desc: Present. if not already in progress, a pending Transmission Request for the selected Transmit Buffer is cancelled. + }, + RRB: enum(u1) { // bit offset: 2 desc: Release Receive Buffer. + @"NO_ACTION_DO_NOT_RE" = 0, // desc: No action. Do not release the receive buffer. + @"RELEASED_THE_INFORM" = 1, // desc: Released. The information in the Receive Buffer (consisting of CANxRFS, CANxRID, and if applicable the CANxRDA and CANxRDB registers) is released, and becomes eligible for replacement by the next received frame. If the next received frame is not available, writing this command clears the RBS bit in the Status Register(s). + }, + CDO: enum(u1) { // bit offset: 3 desc: Clear Data Overrun. + @"NO_ACTION_DO_NOT_CL" = 0, // desc: No action. Do not clear the data overrun bit. + @"CLEAR_THE_DATA_OVER" = 1, // desc: Clear. The Data Overrun bit in Status Register(s) is cleared. + }, + SRR: enum(u1) { // bit offset: 4 desc: Self Reception Request. + @"ABSENT_NO_SELF_RECE" = 0, // desc: Absent. No self reception request. + @"PRESENT_THE_MESSAGE" = 1, // desc: Present. The message, previously written to the CANxTFS, CANxTID, and optionally the CANxTDA and CANxTDB registers, is queued for transmission from the selected Transmit Buffer and received simultaneously. This differs from the TR bit above in that the receiver is not disabled during the transmission, so that it receives the message if its Identifier is recognized by the Acceptance Filter. + }, + STB1: enum(u1) { // bit offset: 5 desc: Select Tx Buffer 1. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 1 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 1 is selected for transmission. + }, + STB2: enum(u1) { // bit offset: 6 desc: Select Tx Buffer 2. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 2 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 2 is selected for transmission. + }, + STB3: enum(u1) { // bit offset: 7 desc: Select Tx Buffer 3. + @"NOT_SELECTED_TX_BUF" = 0, // desc: Not selected. Tx Buffer 3 is not selected for transmission. + @"SELECTED_TX_BUFFER_" = 1, // desc: Selected. Tx Buffer 3 is selected for transmission. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7837,14 +10248,39 @@ pub const CAN2 = extern struct { }); // byte offset: 8 Global Controller Status and Error Counters. The error counters can only be written when RM in CANMOD is 1. pub const GSR = mmio(Address + 0x00000008, 32, packed struct { - RBS: bool, // bit offset: 0 desc: Receive Buffer Status. After reading all messages and releasing their memory space with the command 'Release Receive Buffer,' this bit is cleared. - DOS: bool, // bit offset: 1 desc: Data Overrun Status. If there is not enough space to store the message within the Receive Buffer, that message is dropped and the Data Overrun condition is signalled to the CPU in the moment this message becomes valid. If this message is not completed successfully (e.g. because of an error), no overrun condition is signalled. - TBS: bool, // bit offset: 2 desc: Transmit Buffer Status. - TCS: bool, // bit offset: 3 desc: Transmit Complete Status. The Transmission Complete Status bit is set '0' (incomplete) whenever the Transmission Request bit or the Self Reception Request bit is set '1' at least for one of the three Transmit Buffers. The Transmission Complete Status bit will remain '0' until all messages are transmitted successfully. - RS: bool, // bit offset: 4 desc: Receive Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. - TS: bool, // bit offset: 5 desc: Transmit Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. - ES: bool, // bit offset: 6 desc: Error Status. Errors detected during reception or transmission will effect the error counters according to the CAN specification. The Error Status bit is set when at least one of the error counters has reached or exceeded the Error Warning Limit. An Error Warning Interrupt is generated, if enabled. The default value of the Error Warning Limit after hardware reset is 96 decimal, see also Section 21.7.7 CAN Error Warning Limit register (CAN1EWL - 0x4004 4018, CAN2EWL - 0x4004 8018). - BS: bool, // bit offset: 7 desc: Bus Status. Mode bit '1' (present) and an Error Warning Interrupt is generated, if enabled. Afterwards the Transmit Error Counter is set to '127', and the Receive Error Counter is cleared. It will stay in this mode until the CPU clears the Reset Mode bit. Once this is completed the CAN Controller will wait the minimum protocol-defined time (128 occurrences of the Bus-Free signal) counting down the Transmit Error Counter. After that, the Bus Status bit is cleared (Bus-On), the Error Status bit is set '0' (ok), the Error Counters are reset, and an Error Warning Interrupt is generated, if enabled. Reading the TX Error Counter during this time gives information about the status of the Bus-Off recovery. + RBS: enum(u1) { // bit offset: 0 desc: Receive Buffer Status. After reading all messages and releasing their memory space with the command 'Release Receive Buffer,' this bit is cleared. + @"EMPTY_NO_MESSAGE_IS" = 0, // desc: Empty. No message is available. + @"FULL_AT_LEAST_ONE_C" = 1, // desc: Full. At least one complete message is received by the Double Receive Buffer and available in the CANxRFS, CANxRID, and if applicable the CANxRDA and CANxRDB registers. This bit is cleared by the Release Receive Buffer command in CANxCMR, if no subsequent received message is available. + }, + DOS: enum(u1) { // bit offset: 1 desc: Data Overrun Status. If there is not enough space to store the message within the Receive Buffer, that message is dropped and the Data Overrun condition is signalled to the CPU in the moment this message becomes valid. If this message is not completed successfully (e.g. because of an error), no overrun condition is signalled. + @"ABSENT_NO_DATA_OVER" = 0, // desc: Absent. No data overrun has occurred since the last Clear Data Overrun command was given/written to CANxCMR (or since Reset). + @"OVERRUN_A_MESSAGE_W" = 1, // desc: Overrun. A message was lost because the preceding message to this CAN controller was not read and released quickly enough (there was not enough space for a new message in the Double Receive Buffer). + }, + TBS: enum(u1) { // bit offset: 2 desc: Transmit Buffer Status. + @"LOCKED_AT_LEAST_ONE" = 0, // desc: Locked. At least one of the Transmit Buffers is not available for the CPU, i.e. at least one previously queued message for this CAN controller has not yet been sent, and therefore software should not write to the CANxTFI, CANxTID, CANxTDA, nor CANxTDB registers of that (those) Tx buffer(s). + @"RELEASED_ALL_THREE_" = 1, // desc: Released. All three Transmit Buffers are available for the CPU. No transmit message is pending for this CAN controller (in any of the 3 Tx buffers), and software may write to any of the CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS: enum(u1) { // bit offset: 3 desc: Transmit Complete Status. The Transmission Complete Status bit is set '0' (incomplete) whenever the Transmission Request bit or the Self Reception Request bit is set '1' at least for one of the three Transmit Buffers. The Transmission Complete Status bit will remain '0' until all messages are transmitted successfully. + @"INCOMPLETE_AT_LEAST" = 0, // desc: Incomplete. At least one requested transmission has not been successfully completed yet. + @"COMPLETE_ALL_REQUES" = 1, // desc: Complete. All requested transmission(s) has (have) been successfully completed. + }, + RS: enum(u1) { // bit offset: 4 desc: Receive Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. + @"IDLE_THE_CAN_CONTRO" = 0, // desc: Idle. The CAN controller is idle. + @"RECEIVE_THE_CAN_CON" = 1, // desc: Receive. The CAN controller is receiving a message. + }, + TS: enum(u1) { // bit offset: 5 desc: Transmit Status. If both the Receive Status and the Transmit Status bits are '0' (idle), the CAN-Bus is idle. If both bits are set, the controller is waiting to become idle again. After hardware reset 11 consecutive recessive bits have to be detected until idle status is reached. After Bus-off this will take 128 times of 11 consecutive recessive bits. + @"IDLE_THE_CAN_CONTRO" = 0, // desc: Idle. The CAN controller is idle. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN controller is sending a message. + }, + ES: enum(u1) { // bit offset: 6 desc: Error Status. Errors detected during reception or transmission will effect the error counters according to the CAN specification. The Error Status bit is set when at least one of the error counters has reached or exceeded the Error Warning Limit. An Error Warning Interrupt is generated, if enabled. The default value of the Error Warning Limit after hardware reset is 96 decimal, see also Section 21.7.7 CAN Error Warning Limit register (CAN1EWL - 0x4004 4018, CAN2EWL - 0x4004 8018). + @"OK_BOTH_ERROR_COUNT" = 0, // desc: OK. Both error counters are below the Error Warning Limit. + @"ERROR_ONE_OR_BOTH_O" = 1, // desc: Error. One or both of the Transmit and Receive Error Counters has reached the limit set in the Error Warning Limit register. + }, + BS: enum(u1) { // bit offset: 7 desc: Bus Status. Mode bit '1' (present) and an Error Warning Interrupt is generated, if enabled. Afterwards the Transmit Error Counter is set to '127', and the Receive Error Counter is cleared. It will stay in this mode until the CPU clears the Reset Mode bit. Once this is completed the CAN Controller will wait the minimum protocol-defined time (128 occurrences of the Bus-Free signal) counting down the Transmit Error Counter. After that, the Bus Status bit is cleared (Bus-On), the Error Status bit is set '0' (ok), the Error Counters are reset, and an Error Warning Interrupt is generated, if enabled. Reading the TX Error Counter during this time gives information about the status of the Bus-Off recovery. + @"BUS_ON_THE_CAN_CONT" = 0, // desc: Bus-on. The CAN Controller is involved in bus activities + @"BUS_OFF_THE_CAN_CON" = 1, // desc: Bus-off. The CAN controller is currently not involved/prohibited from bus activity because the Transmit Error Counter reached its limiting value of 255. + }, + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -7858,40 +10294,83 @@ pub const CAN2 = extern struct { }); // byte offset: 12 Interrupt status, Arbitration Lost Capture, Error Code Capture pub const ICR = mmio(Address + 0x0000000c, 32, packed struct { - RI: bool, // bit offset: 0 desc: Receive Interrupt. This bit is set whenever the RBS bit in CANxSR and the RIE bit in CANxIER are both 1, indicating that a new message was received and stored in the Receive Buffer. The Receive Interrupt Bit is not cleared upon a read access to the Interrupt Register. Giving the Command Release Receive Buffer will clear RI temporarily. If there is another message available within the Receive Buffer after the release command, RI is set again. Otherwise RI remains cleared. - TI1: bool, // bit offset: 1 desc: Transmit Interrupt 1. This bit is set when the TBS1 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB1 was successfully transmitted or aborted), indicating that Transmit buffer 1 is available, and the TIE1 bit in CANxIER is 1. - EI: bool, // bit offset: 2 desc: Error Warning Interrupt. This bit is set on every change (set or clear) of either the Error Status or Bus Status bit in CANxSR and the EIE bit bit is set within the Interrupt Enable Register at the time of the change. - DOI: bool, // bit offset: 3 desc: Data Overrun Interrupt. This bit is set when the DOS bit in CANxSR goes from 0 to 1 and the DOIE bit in CANxIER is 1. - WUI: bool, // bit offset: 4 desc: Wake-Up Interrupt. This bit is set if the CAN controller is sleeping and bus activity is detected and the WUIE bit in CANxIER is 1. A Wake-Up Interrupt is also generated if the CPU tries to set the Sleep bit while the CAN controller is involved in bus activities or a CAN Interrupt is pending. The WUI flag can also get asserted when the according enable bit WUIE is not set. In this case a Wake-Up Interrupt does not get asserted. - EPI: bool, // bit offset: 5 desc: Error Passive Interrupt. This bit is set if the EPIE bit in CANxIER is 1, and the CAN controller switches between Error Passive and Error Active mode in either direction. This is the case when the CAN Controller has reached the Error Passive Status (at least one error counter exceeds the CAN protocol defined level of 127) or if the CAN Controller is in Error Passive Status and enters the Error Active Status again. - ALI: bool, // bit offset: 6 desc: Arbitration Lost Interrupt. This bit is set if the ALIE bit in CANxIER is 1, and the CAN controller loses arbitration while attempting to transmit. In this case the CAN node becomes a receiver. - BEI: bool, // bit offset: 7 desc: Bus Error Interrupt -- this bit is set if the BEIE bit in CANxIER is 1, and the CAN controller detects an error on the bus. - IDI: bool, // bit offset: 8 desc: ID Ready Interrupt -- this bit is set if the IDIE bit in CANxIER is 1, and a CAN Identifier has been received (a message was successfully transmitted or aborted). This bit is set whenever a message was successfully transmitted or aborted and the IDIE bit is set in the IER register. - TI2: bool, // bit offset: 9 desc: Transmit Interrupt 2. This bit is set when the TBS2 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB2 was successfully transmitted or aborted), indicating that Transmit buffer 2 is available, and the TIE2 bit in CANxIER is 1. - TI3: bool, // bit offset: 10 desc: Transmit Interrupt 3. This bit is set when the TBS3 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB3 was successfully transmitted or aborted), indicating that Transmit buffer 3 is available, and the TIE3 bit in CANxIER is 1. + RI: enum(u1) { // bit offset: 0 desc: Receive Interrupt. This bit is set whenever the RBS bit in CANxSR and the RIE bit in CANxIER are both 1, indicating that a new message was received and stored in the Receive Buffer. The Receive Interrupt Bit is not cleared upon a read access to the Interrupt Register. Giving the Command Release Receive Buffer will clear RI temporarily. If there is another message available within the Receive Buffer after the release command, RI is set again. Otherwise RI remains cleared. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI1: enum(u1) { // bit offset: 1 desc: Transmit Interrupt 1. This bit is set when the TBS1 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB1 was successfully transmitted or aborted), indicating that Transmit buffer 1 is available, and the TIE1 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + EI: enum(u1) { // bit offset: 2 desc: Error Warning Interrupt. This bit is set on every change (set or clear) of either the Error Status or Bus Status bit in CANxSR and the EIE bit bit is set within the Interrupt Enable Register at the time of the change. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + DOI: enum(u1) { // bit offset: 3 desc: Data Overrun Interrupt. This bit is set when the DOS bit in CANxSR goes from 0 to 1 and the DOIE bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + WUI: enum(u1) { // bit offset: 4 desc: Wake-Up Interrupt. This bit is set if the CAN controller is sleeping and bus activity is detected and the WUIE bit in CANxIER is 1. A Wake-Up Interrupt is also generated if the CPU tries to set the Sleep bit while the CAN controller is involved in bus activities or a CAN Interrupt is pending. The WUI flag can also get asserted when the according enable bit WUIE is not set. In this case a Wake-Up Interrupt does not get asserted. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + EPI: enum(u1) { // bit offset: 5 desc: Error Passive Interrupt. This bit is set if the EPIE bit in CANxIER is 1, and the CAN controller switches between Error Passive and Error Active mode in either direction. This is the case when the CAN Controller has reached the Error Passive Status (at least one error counter exceeds the CAN protocol defined level of 127) or if the CAN Controller is in Error Passive Status and enters the Error Active Status again. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + ALI: enum(u1) { // bit offset: 6 desc: Arbitration Lost Interrupt. This bit is set if the ALIE bit in CANxIER is 1, and the CAN controller loses arbitration while attempting to transmit. In this case the CAN node becomes a receiver. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + BEI: enum(u1) { // bit offset: 7 desc: Bus Error Interrupt -- this bit is set if the BEIE bit in CANxIER is 1, and the CAN controller detects an error on the bus. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + IDI: enum(u1) { // bit offset: 8 desc: ID Ready Interrupt -- this bit is set if the IDIE bit in CANxIER is 1, and a CAN Identifier has been received (a message was successfully transmitted or aborted). This bit is set whenever a message was successfully transmitted or aborted and the IDIE bit is set in the IER register. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI2: enum(u1) { // bit offset: 9 desc: Transmit Interrupt 2. This bit is set when the TBS2 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB2 was successfully transmitted or aborted), indicating that Transmit buffer 2 is available, and the TIE2 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + TI3: enum(u1) { // bit offset: 10 desc: Transmit Interrupt 3. This bit is set when the TBS3 bit in CANxSR goes from 0 to 1 (whenever a message out of TXB3 was successfully transmitted or aborted), indicating that Transmit buffer 3 is available, and the TIE3 bit in CANxIER is 1. + @"RESET" = 0, // desc: Reset + @"SET" = 1, // desc: Set + }, + // RESERVED: u5, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, ERRBIT4_0: u5, // bit offset: 16 desc: Error Code Capture: when the CAN controller detects a bus error, the location of the error within the frame is captured in this field. The value reflects an internal state variable, and as a result is not very linear: 00011 = Start of Frame 00010 = ID28 ... ID21 00110 = ID20 ... ID18 00100 = SRTR Bit 00101 = IDE bit 00111 = ID17 ... 13 01111 = ID12 ... ID5 01110 = ID4 ... ID0 01100 = RTR Bit 01101 = Reserved Bit 1 01001 = Reserved Bit 0 01011 = Data Length Code 01010 = Data Field 01000 = CRC Sequence 11000 = CRC Delimiter 11001 = Acknowledge Slot 11011 = Acknowledge Delimiter 11010 = End of Frame 10010 = Intermission Whenever a bus error occurs, the corresponding bus error interrupt is forced, if enabled. At the same time, the current position of the Bit Stream Processor is captured into the Error Code Capture Register. The content within this register is fixed until the user software has read out its content once. From now on, the capture mechanism is activated again, i.e. reading the CANxICR enables another Bus Error Interrupt. - ERRDIR: bool, // bit offset: 21 desc: When the CAN controller detects a bus error, the direction of the current bit is captured in this bit. - ERRC1_0: u2, // bit offset: 22 desc: When the CAN controller detects a bus error, the type of error is captured in this field: + ERRDIR: enum(u1) { // bit offset: 21 desc: When the CAN controller detects a bus error, the direction of the current bit is captured in this bit. + @"ERROR_OCCURRED_DURIN" = 0, // desc: Error occurred during transmitting. + @"ERROR_OCCURRED_DURIN" = 1, // desc: Error occurred during receiving. + }, + ERRC1_0: enum(u2) { // bit offset: 22 desc: When the CAN controller detects a bus error, the type of error is captured in this field: + @"BIT_ERROR" = 0, // desc: Bit error + @"FORM_ERROR" = 1, // desc: Form error + @"STUFF_ERROR" = 2, // desc: Stuff error + @"OTHER_ERROR" = 3, // desc: Other error + }, ALCBIT: u8, // bit offset: 24 desc: Each time arbitration is lost while trying to send on the CAN, the bit number within the frame is captured into this field. After the content of ALCBIT is read, the ALI bit is cleared and a new Arbitration Lost interrupt can occur. 00 = arbitration lost in the first bit (MS) of identifier ... 11 = arbitration lost in SRTS bit (RTR bit for standard frame messages) 12 = arbitration lost in IDE bit 13 = arbitration lost in 12th bit of identifier (extended frame only) ... 30 = arbitration lost in last bit of identifier (extended frame only) 31 = arbitration lost in RTR bit (extended frame only) On arbitration lost, the corresponding arbitration lost interrupt is forced, if enabled. At that time, the current bit position of the Bit Stream Processor is captured into the Arbitration Lost Capture Register. The content within this register is fixed until the user application has read out its contents once. From now on, the capture mechanism is activated again. }); // byte offset: 16 Interrupt Enable pub const IER = mmio(Address + 0x00000010, 32, packed struct { - RIE: bool, // bit offset: 0 desc: Receiver Interrupt Enable. When the Receive Buffer Status is 'full', the CAN Controller requests the respective interrupt. - TIE1: bool, // bit offset: 1 desc: Transmit Interrupt Enable for Buffer1. When a message has been successfully transmitted out of TXB1 or Transmit Buffer 1 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. - EIE: bool, // bit offset: 2 desc: Error Warning Interrupt Enable. If the Error or Bus Status change (see Status Register), the CAN Controller requests the respective interrupt. - DOIE: bool, // bit offset: 3 desc: Data Overrun Interrupt Enable. If the Data Overrun Status bit is set (see Status Register), the CAN Controller requests the respective interrupt. - WUIE: bool, // bit offset: 4 desc: Wake-Up Interrupt Enable. If the sleeping CAN controller wakes up, the respective interrupt is requested. - EPIE: bool, // bit offset: 5 desc: Error Passive Interrupt Enable. If the error status of the CAN Controller changes from error active to error passive or vice versa, the respective interrupt is requested. - ALIE: bool, // bit offset: 6 desc: Arbitration Lost Interrupt Enable. If the CAN Controller has lost arbitration, the respective interrupt is requested. - BEIE: bool, // bit offset: 7 desc: Bus Error Interrupt Enable. If a bus error has been detected, the CAN Controller requests the respective interrupt. - IDIE: bool, // bit offset: 8 desc: ID Ready Interrupt Enable. When a CAN identifier has been received, the CAN Controller requests the respective interrupt. - TIE2: bool, // bit offset: 9 desc: Transmit Interrupt Enable for Buffer2. When a message has been successfully transmitted out of TXB2 or Transmit Buffer 2 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. - TIE3: bool, // bit offset: 10 desc: Transmit Interrupt Enable for Buffer3. When a message has been successfully transmitted out of TXB3 or Transmit Buffer 3 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + RIE: u1, // bit offset: 0 desc: Receiver Interrupt Enable. When the Receive Buffer Status is 'full', the CAN Controller requests the respective interrupt. + TIE1: u1, // bit offset: 1 desc: Transmit Interrupt Enable for Buffer1. When a message has been successfully transmitted out of TXB1 or Transmit Buffer 1 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + EIE: u1, // bit offset: 2 desc: Error Warning Interrupt Enable. If the Error or Bus Status change (see Status Register), the CAN Controller requests the respective interrupt. + DOIE: u1, // bit offset: 3 desc: Data Overrun Interrupt Enable. If the Data Overrun Status bit is set (see Status Register), the CAN Controller requests the respective interrupt. + WUIE: u1, // bit offset: 4 desc: Wake-Up Interrupt Enable. If the sleeping CAN controller wakes up, the respective interrupt is requested. + EPIE: u1, // bit offset: 5 desc: Error Passive Interrupt Enable. If the error status of the CAN Controller changes from error active to error passive or vice versa, the respective interrupt is requested. + ALIE: u1, // bit offset: 6 desc: Arbitration Lost Interrupt Enable. If the CAN Controller has lost arbitration, the respective interrupt is requested. + BEIE: u1, // bit offset: 7 desc: Bus Error Interrupt Enable. If a bus error has been detected, the CAN Controller requests the respective interrupt. + IDIE: u1, // bit offset: 8 desc: ID Ready Interrupt Enable. When a CAN identifier has been received, the CAN Controller requests the respective interrupt. + TIE2: u1, // bit offset: 9 desc: Transmit Interrupt Enable for Buffer2. When a message has been successfully transmitted out of TXB2 or Transmit Buffer 2 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + TIE3: u1, // bit offset: 10 desc: Transmit Interrupt Enable for Buffer3. When a message has been successfully transmitted out of TXB3 or Transmit Buffer 3 is accessible again (e.g. after an Abort Transmission command), the CAN Controller requests the respective interrupt. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -7917,6 +10396,7 @@ pub const CAN2 = extern struct { // byte offset: 20 Bus Timing. Can only be written when RM in CANMOD is 1. pub const BTR = mmio(Address + 0x00000014, 32, packed struct { BRP: u10, // bit offset: 0 desc: Baud Rate Prescaler. The APB clock is divided by (this value plus one) to produce the CAN clock. + // RESERVED: u4, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, @@ -7924,7 +10404,11 @@ pub const CAN2 = extern struct { SJW: u2, // bit offset: 14 desc: The Synchronization Jump Width is (this value plus one) CAN clocks. TESG1: u4, // bit offset: 16 desc: The delay from the nominal Sync point to the sample point is (this value plus one) CAN clocks. TESG2: u3, // bit offset: 20 desc: The delay from the sample point to the next nominal sync point is (this value plus one) CAN clocks. The nominal CAN bit time is (this value plus the value in TSEG1 plus 3) CAN clocks. - SAM: bool, // bit offset: 23 desc: Sampling + SAM: enum(u1) { // bit offset: 23 desc: Sampling + @"THE_BUS_IS_SAMPLED_O" = 0, // desc: The bus is sampled once (recommended for high speed buses) + @"THE_BUS_IS_SAMPLED_3" = 1, // desc: The bus is sampled 3 times (recommended for low to medium speed buses to filter spikes on the bus-line) + }, + // RESERVED: u8, // bit offset: 24 desc: Reserved. Read value is undefined, only zero should be written. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -7937,6 +10421,7 @@ pub const CAN2 = extern struct { // byte offset: 24 Error Warning Limit. Can only be written when RM in CANMOD is 1. pub const EWL = mmio(Address + 0x00000018, 32, packed struct { EWL: u8, // bit offset: 0 desc: During CAN operation, this value is compared to both the Tx and Rx Error Counters. If either of these counter matches this value, the Error Status (ES) bit in CANSR is set. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -7964,30 +10449,58 @@ pub const CAN2 = extern struct { }); // byte offset: 28 Status Register pub const SR = mmio(Address + 0x0000001c, 32, packed struct { - RBS_1: bool, // bit offset: 0 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_1: bool, // bit offset: 1 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS1_1: bool, // bit offset: 2 desc: Transmit Buffer Status 1. - TCS1_1: bool, // bit offset: 3 desc: Transmission Complete Status. - RS_1: bool, // bit offset: 4 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS1_1: bool, // bit offset: 5 desc: Transmit Status 1. - ES_1: bool, // bit offset: 6 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_1: bool, // bit offset: 7 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. - RBS_2: bool, // bit offset: 8 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_2: bool, // bit offset: 9 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS2_2: bool, // bit offset: 10 desc: Transmit Buffer Status 2. - TCS2_2: bool, // bit offset: 11 desc: Transmission Complete Status. - RS_2: bool, // bit offset: 12 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS2_2: bool, // bit offset: 13 desc: Transmit Status 2. - ES_2: bool, // bit offset: 14 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_2: bool, // bit offset: 15 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. - RBS_3: bool, // bit offset: 16 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. - DOS_3: bool, // bit offset: 17 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. - TBS3_3: bool, // bit offset: 18 desc: Transmit Buffer Status 3. - TCS3_3: bool, // bit offset: 19 desc: Transmission Complete Status. - RS_3: bool, // bit offset: 20 desc: Receive Status. This bit is identical to the RS bit in the GSR. - TS3_3: bool, // bit offset: 21 desc: Transmit Status 3. - ES_3: bool, // bit offset: 22 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. - BS_3: bool, // bit offset: 23 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_1: u1, // bit offset: 0 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_1: u1, // bit offset: 1 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS1_1: enum(u1) { // bit offset: 2 desc: Transmit Buffer Status 1. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 1 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 1 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS1_1: enum(u1) { // bit offset: 3 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 1 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 1 has been successfully completed. + }, + RS_1: u1, // bit offset: 4 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS1_1: enum(u1) { // bit offset: 5 desc: Transmit Status 1. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 1. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 1. + }, + ES_1: u1, // bit offset: 6 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_1: u1, // bit offset: 7 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_2: u1, // bit offset: 8 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_2: u1, // bit offset: 9 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS2_2: enum(u1) { // bit offset: 10 desc: Transmit Buffer Status 2. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 2 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 2 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS2_2: enum(u1) { // bit offset: 11 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 2 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 2 has been successfully completed. + }, + RS_2: u1, // bit offset: 12 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS2_2: enum(u1) { // bit offset: 13 desc: Transmit Status 2. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 2. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 2. + }, + ES_2: u1, // bit offset: 14 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_2: u1, // bit offset: 15 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + RBS_3: u1, // bit offset: 16 desc: Receive Buffer Status. This bit is identical to the RBS bit in the CANxGSR. + DOS_3: u1, // bit offset: 17 desc: Data Overrun Status. This bit is identical to the DOS bit in the CANxGSR. + TBS3_3: enum(u1) { // bit offset: 18 desc: Transmit Buffer Status 3. + @"LOCKED_SOFTWARE_CAN" = 0, // desc: Locked. Software cannot access the Tx Buffer 3 nor write to the corresponding CANxTFI, CANxTID, CANxTDA, and CANxTDB registers because a message is either waiting for transmission or is in transmitting process. + @"RELEASED_SOFTWARE_M" = 1, // desc: Released. Software may write a message into the Transmit Buffer 3 and its CANxTFI, CANxTID, CANxTDA, and CANxTDB registers. + }, + TCS3_3: enum(u1) { // bit offset: 19 desc: Transmission Complete Status. + @"INCOMPLETE_THE_PREV" = 0, // desc: Incomplete. The previously requested transmission for Tx Buffer 3 is not complete. + @"COMPLETE_THE_PREVIO" = 1, // desc: Complete. The previously requested transmission for Tx Buffer 3 has been successfully completed. + }, + RS_3: u1, // bit offset: 20 desc: Receive Status. This bit is identical to the RS bit in the GSR. + TS3_3: enum(u1) { // bit offset: 21 desc: Transmit Status 3. + @"IDLE_THERE_IS_NO_TR" = 0, // desc: Idle. There is no transmission from Tx Buffer 3. + @"TRANSMIT_THE_CAN_CO" = 1, // desc: Transmit. The CAN Controller is transmitting a message from Tx Buffer 3. + }, + ES_3: u1, // bit offset: 22 desc: Error Status. This bit is identical to the ES bit in the CANxGSR. + BS_3: u1, // bit offset: 23 desc: Bus Status. This bit is identical to the BS bit in the CANxGSR. + // RESERVED: u8, // bit offset: 24 desc: Reserved, the value read from a reserved bit is not defined. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -8000,13 +10513,16 @@ pub const CAN2 = extern struct { // byte offset: 32 Receive frame status. Can only be written when RM in CANMOD is 1. pub const RFS = mmio(Address + 0x00000020, 32, packed struct { IDINDEX: u10, // bit offset: 0 desc: ID Index. If the BP bit (below) is 0, this value is the zero-based number of the Lookup Table RAM entry at which the Acceptance Filter matched the received Identifier. Disabled entries in the Standard tables are included in this numbering, but will not be matched. See Section 21.17 Examples of acceptance filter tables and ID index values on page 587 for examples of ID Index values. - BP: bool, // bit offset: 10 desc: If this bit is 1, the current message was received in AF Bypass mode, and the ID Index field (above) is meaningless. + BP: u1, // bit offset: 10 desc: If this bit is 1, the current message was received in AF Bypass mode, and the ID Index field (above) is meaningless. + // RESERVED: u5, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: The field contains the Data Length Code (DLC) field of the current received message. When RTR = 0, this is related to the number of data bytes available in the CANRDA and CANRDB registers as follows: 0000-0111 = 0 to 7 bytes1000-1111 = 8 bytes With RTR = 1, this value indicates the number of data bytes requested to be sent back, with the same encoding. + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, @@ -8016,13 +10532,13 @@ pub const CAN2 = extern struct { reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This bit contains the Remote Transmission Request bit of the current received message. 0 indicates a Data Frame, in which (if DLC is non-zero) data can be read from the CANRDA and possibly the CANRDB registers. 1 indicates a Remote frame, in which case the DLC value identifies the number of data bytes requested to be sent using the same Identifier. - FF: bool, // bit offset: 31 desc: A 0 in this bit indicates that the current received message included an 11-bit Identifier, while a 1 indicates a 29-bit Identifier. This affects the contents of the CANid register described below. + RTR: u1, // bit offset: 30 desc: This bit contains the Remote Transmission Request bit of the current received message. 0 indicates a Data Frame, in which (if DLC is non-zero) data can be read from the CANRDA and possibly the CANRDB registers. 1 indicates a Remote frame, in which case the DLC value identifies the number of data bytes requested to be sent using the same Identifier. + FF: u1, // bit offset: 31 desc: A 0 in this bit indicates that the current received message included an 11-bit Identifier, while a 1 indicates a 29-bit Identifier. This affects the contents of the CANid register described below. }); // byte offset: 36 Received Identifier. Can only be written when RM in CANMOD is 1. pub const RID = mmio(Address + 0x00000024, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier field of the current received message. In CAN 2.0A, these bits are called ID10-0, while in CAN 2.0B they're called ID29-18. + // RESERVED: u21, // bit offset: 11 desc: Reserved. The value read from a reserved bit is not defined. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -8062,6 +10578,7 @@ pub const CAN2 = extern struct { // byte offset: 48 Transmit frame info (Tx Buffer ) pub const TFI1 = mmio(Address + 0x00000030, 32, packed struct { PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -8071,58 +10588,45 @@ pub const CAN2 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). - }); - // byte offset: 48 Transmit frame info (Tx Buffer ) - pub const TFI1 = mmio(Address + 0x00000030, 32, packed struct { - PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - reserved1: u1 = 0, - DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes - reserved14: u1 = 0, - reserved13: u1 = 0, - reserved12: u1 = 0, - reserved11: u1 = 0, - reserved10: u1 = 0, - reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 52 Transmit Identifier (Tx Buffer) pub const TID1 = mmio(Address + 0x00000034, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 52 Transmit Identifier (Tx Buffer) - pub const TID1 = mmio(Address + 0x00000034, 32, packed struct { - ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 56 Transmit data bytes 1-4 (Tx Buffer) - pub const TDA1 = mmio(Address + 0x00000038, 32, packed struct { - DATA1: u8, // bit offset: 0 desc: Data 1. If RTR = 0 and DLC >= 0001 in the corresponding CANxTFI, this byte is sent as the first Data byte of the next transmit message. - DATA2: u8, // bit offset: 8 desc: Data 2. If RTR = 0 and DLC >= 0010 in the corresponding CANxTFI, this byte is sent as the 2nd Data byte of the next transmit message. - DATA3: u8, // bit offset: 16 desc: Data 3. If RTR = 0 and DLC >= 0011 in the corresponding CANxTFI, this byte is sent as the 3rd Data byte of the next transmit message. - DATA4: u8, // bit offset: 24 desc: Data 4. If RTR = 0 and DLC >= 0100 in the corresponding CANxTFI, this byte is sent as the 4th Data byte of the next transmit message. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 56 Transmit data bytes 1-4 (Tx Buffer) pub const TDA1 = mmio(Address + 0x00000038, 32, packed struct { @@ -8138,41 +10642,10 @@ pub const CAN2 = extern struct { DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. }); - // byte offset: 60 Transmit data bytes 5-8 (Tx Buffer ) - pub const TDB1 = mmio(Address + 0x0000003c, 32, packed struct { - DATA5: u8, // bit offset: 0 desc: Data 5. If RTR = 0 and DLC >= 0101 in the corresponding CANTFI, this byte is sent as the 5th Data byte of the next transmit message. - DATA6: u8, // bit offset: 8 desc: Data 6. If RTR = 0 and DLC >= 0110 in the corresponding CANTFI, this byte is sent as the 6th Data byte of the next transmit message. - DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. - DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. - }); - // byte offset: 64 Transmit frame info (Tx Buffer ) - pub const TFI2 = mmio(Address + 0x00000040, 32, packed struct { - PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - reserved1: u1 = 0, - DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes - reserved14: u1 = 0, - reserved13: u1 = 0, - reserved12: u1 = 0, - reserved11: u1 = 0, - reserved10: u1 = 0, - reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). - }); // byte offset: 64 Transmit frame info (Tx Buffer ) pub const TFI2 = mmio(Address + 0x00000040, 32, packed struct { PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -8182,33 +10655,45 @@ pub const CAN2 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 68 Transmit Identifier (Tx Buffer) pub const TID2 = mmio(Address + 0x00000044, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 68 Transmit Identifier (Tx Buffer) - pub const TID2 = mmio(Address + 0x00000044, 32, packed struct { - ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 72 Transmit data bytes 1-4 (Tx Buffer) - pub const TDA2 = mmio(Address + 0x00000048, 32, packed struct { - DATA1: u8, // bit offset: 0 desc: Data 1. If RTR = 0 and DLC >= 0001 in the corresponding CANxTFI, this byte is sent as the first Data byte of the next transmit message. - DATA2: u8, // bit offset: 8 desc: Data 2. If RTR = 0 and DLC >= 0010 in the corresponding CANxTFI, this byte is sent as the 2nd Data byte of the next transmit message. - DATA3: u8, // bit offset: 16 desc: Data 3. If RTR = 0 and DLC >= 0011 in the corresponding CANxTFI, this byte is sent as the 3rd Data byte of the next transmit message. - DATA4: u8, // bit offset: 24 desc: Data 4. If RTR = 0 and DLC >= 0100 in the corresponding CANxTFI, this byte is sent as the 4th Data byte of the next transmit message. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 72 Transmit data bytes 1-4 (Tx Buffer) pub const TDA2 = mmio(Address + 0x00000048, 32, packed struct { @@ -8224,41 +10709,10 @@ pub const CAN2 = extern struct { DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. }); - // byte offset: 76 Transmit data bytes 5-8 (Tx Buffer ) - pub const TDB2 = mmio(Address + 0x0000004c, 32, packed struct { - DATA5: u8, // bit offset: 0 desc: Data 5. If RTR = 0 and DLC >= 0101 in the corresponding CANTFI, this byte is sent as the 5th Data byte of the next transmit message. - DATA6: u8, // bit offset: 8 desc: Data 6. If RTR = 0 and DLC >= 0110 in the corresponding CANTFI, this byte is sent as the 6th Data byte of the next transmit message. - DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. - DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. - }); - // byte offset: 80 Transmit frame info (Tx Buffer ) - pub const TFI3 = mmio(Address + 0x00000050, 32, packed struct { - PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - reserved1: u1 = 0, - DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes - reserved14: u1 = 0, - reserved13: u1 = 0, - reserved12: u1 = 0, - reserved11: u1 = 0, - reserved10: u1 = 0, - reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). - }); // byte offset: 80 Transmit frame info (Tx Buffer ) pub const TFI3 = mmio(Address + 0x00000050, 32, packed struct { PRIO: u8, // bit offset: 0 desc: If the TPM (Transmit Priority Mode) bit in the CANxMOD register is set to 1, enabled Tx Buffers contend for the right to send their messages based on this field. The buffer with the lowest TX Priority value wins the prioritization and is sent first. + // RESERVED: u8, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -8268,33 +10722,45 @@ pub const CAN2 = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, DLC: u4, // bit offset: 16 desc: Data Length Code. This value is sent in the DLC field of the next transmit message. In addition, if RTR = 0, this value controls the number of Data bytes sent in the next transmit message, from the CANxTDA and CANxTDB registers: 0000-0111 = 0-7 bytes 1xxx = 8 bytes + // RESERVED: u10, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. + reserved18: u1 = 0, + reserved17: u1 = 0, + reserved16: u1 = 0, + reserved15: u1 = 0, reserved14: u1 = 0, reserved13: u1 = 0, reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, - reserved8: u1 = 0, - reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - RTR: bool, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. - FF: bool, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). + RTR: u1, // bit offset: 30 desc: This value is sent in the RTR bit of the next transmit message. If this bit is 0, the number of data bytes called out by the DLC field are sent from the CANxTDA and CANxTDB registers. If this bit is 1, a Remote Frame is sent, containing a request for that number of bytes. + FF: u1, // bit offset: 31 desc: If this bit is 0, the next transmit message will be sent with an 11-bit Identifier (standard frame format), while if it's 1, the message will be sent with a 29-bit Identifier (extended frame format). }); // byte offset: 84 Transmit Identifier (Tx Buffer) pub const TID3 = mmio(Address + 0x00000054, 32, packed struct { ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 84 Transmit Identifier (Tx Buffer) - pub const TID3 = mmio(Address + 0x00000054, 32, packed struct { - ID: u11, // bit offset: 0 desc: The 11-bit Identifier to be sent in the next transmit message. - }); - // byte offset: 88 Transmit data bytes 1-4 (Tx Buffer) - pub const TDA3 = mmio(Address + 0x00000058, 32, packed struct { - DATA1: u8, // bit offset: 0 desc: Data 1. If RTR = 0 and DLC >= 0001 in the corresponding CANxTFI, this byte is sent as the first Data byte of the next transmit message. - DATA2: u8, // bit offset: 8 desc: Data 2. If RTR = 0 and DLC >= 0010 in the corresponding CANxTFI, this byte is sent as the 2nd Data byte of the next transmit message. - DATA3: u8, // bit offset: 16 desc: Data 3. If RTR = 0 and DLC >= 0011 in the corresponding CANxTFI, this byte is sent as the 3rd Data byte of the next transmit message. - DATA4: u8, // bit offset: 24 desc: Data 4. If RTR = 0 and DLC >= 0100 in the corresponding CANxTFI, this byte is sent as the 4th Data byte of the next transmit message. + // RESERVED: u21, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 88 Transmit data bytes 1-4 (Tx Buffer) pub const TDA3 = mmio(Address + 0x00000058, 32, packed struct { @@ -8310,25 +10776,20 @@ pub const CAN2 = extern struct { DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. }); - // byte offset: 92 Transmit data bytes 5-8 (Tx Buffer ) - pub const TDB3 = mmio(Address + 0x0000005c, 32, packed struct { - DATA5: u8, // bit offset: 0 desc: Data 5. If RTR = 0 and DLC >= 0101 in the corresponding CANTFI, this byte is sent as the 5th Data byte of the next transmit message. - DATA6: u8, // bit offset: 8 desc: Data 6. If RTR = 0 and DLC >= 0110 in the corresponding CANTFI, this byte is sent as the 6th Data byte of the next transmit message. - DATA7: u8, // bit offset: 16 desc: Data 7. If RTR = 0 and DLC >= 0111 in the corresponding CANTFI, this byte is sent as the 7th Data byte of the next transmit message. - DATA8: u8, // bit offset: 24 desc: Data 8. If RTR = 0 and DLC >= 1000 in the corresponding CANTFI, this byte is sent as the 8th Data byte of the next transmit message. - }); }; pub const I2C1 = extern struct { pub const Address: u32 = 0x4005c000; // byte offset: 0 I2C Control Set Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is set. Writing a zero has no effect on the corresponding bit in the I2C control register. pub const CONSET = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - AA: bool, // bit offset: 2 desc: Assert acknowledge flag. - SI: bool, // bit offset: 3 desc: I2C interrupt flag. - STO: bool, // bit offset: 4 desc: STOP flag. - STA: bool, // bit offset: 5 desc: START flag. - I2EN: bool, // bit offset: 6 desc: I2C interface enable. + AA: u1, // bit offset: 2 desc: Assert acknowledge flag. + SI: u1, // bit offset: 3 desc: I2C interrupt flag. + STO: u1, // bit offset: 4 desc: STOP flag. + STA: u1, // bit offset: 5 desc: START flag. + I2EN: u1, // bit offset: 6 desc: I2C interface enable. + // RESERVED: u25, // bit offset: 7 desc: Reserved. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -8357,10 +10818,12 @@ pub const I2C1 = extern struct { }); // byte offset: 4 I2C Status Register. During I2C operation, this register provides detailed status codes that allow software to determine the next action needed. pub const STAT = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: These bits are unused and are always 0. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, Status: u5, // bit offset: 3 desc: These bits give the actual status information about the I 2C interface. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -8389,6 +10852,7 @@ pub const I2C1 = extern struct { // byte offset: 8 I2C Data Register. During master or slave transmit mode, data to be transmitted is written to this register. During master or slave receive mode, data that has been received may be read from this register. pub const DAT = mmio(Address + 0x00000008, 32, packed struct { Data: u8, // bit offset: 0 desc: This register holds data values that have been received or are to be transmitted. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -8416,8 +10880,9 @@ pub const I2C1 = extern struct { }); // byte offset: 12 I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR0 = mmio(Address + 0x0000000c, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -8446,6 +10911,7 @@ pub const I2C1 = extern struct { // byte offset: 16 SCH Duty Cycle Register High Half Word. Determines the high time of the I2C clock. pub const SCLH = mmio(Address + 0x00000010, 32, packed struct { SCLH: u16, // bit offset: 0 desc: Count for SCL HIGH time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -8466,6 +10932,7 @@ pub const I2C1 = extern struct { // byte offset: 20 SCL Duty Cycle Register Low Half Word. Determines the low time of the I2C clock. SCLL and SCLH together determine the clock frequency generated by an I2C master and certain times used in slave mode. pub const SCLL = mmio(Address + 0x00000014, 32, packed struct { SCLL: u16, // bit offset: 0 desc: Count for SCL low time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -8485,13 +10952,17 @@ pub const I2C1 = extern struct { }); // byte offset: 24 I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. pub const CONCLR = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - AAC: bool, // bit offset: 2 desc: Assert acknowledge Clear bit. - SIC: bool, // bit offset: 3 desc: I2C interrupt Clear bit. - reserved2: u1 = 0, - STAC: bool, // bit offset: 5 desc: START flag Clear bit. - I2ENC: bool, // bit offset: 6 desc: I2C interface Disable bit. + AAC: u1, // bit offset: 2 desc: Assert acknowledge Clear bit. + SIC: u1, // bit offset: 3 desc: I2C interrupt Clear bit. + // RESERVED: u1, // bit offset: 4 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved3: u1 = 0, + STAC: u1, // bit offset: 5 desc: START flag Clear bit. + I2ENC: u1, // bit offset: 6 desc: I2C interface Disable bit. + // RESERVED: u1, // bit offset: 7 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -8520,9 +10991,19 @@ pub const I2C1 = extern struct { }); // byte offset: 28 Monitor mode control register. pub const MMCTRL = mmio(Address + 0x0000001c, 32, packed struct { - MM_ENA: bool, // bit offset: 0 desc: Monitor mode enable. - ENA_SCL: bool, // bit offset: 1 desc: SCL output enable. - MATCH_ALL: bool, // bit offset: 2 desc: Select interrupt register match. + MM_ENA: enum(u1) { // bit offset: 0 desc: Monitor mode enable. + @"MONITOR_MODE_DISABLE" = 0, // desc: Monitor mode disabled. + @"THE_I_2C_MODULE_WILL" = 1, // desc: The I 2C module will enter monitor mode. In this mode the SDA output will be forced high. This will prevent the I2C module from outputting data of any kind (including ACK) onto the I2C data bus. Depending on the state of the ENA_SCL bit, the output may be also forced high, preventing the module from having control over the I2C clock line. + }, + ENA_SCL: enum(u1) { // bit offset: 1 desc: SCL output enable. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared to 0, the SCL output will be forced high when the module is in monitor mode. As described above, this will prevent the module from having any control over the I2C clock line. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set, the I2C module may exercise the same control over the clock line that it would in normal operation. This means that, acting as a slave peripheral, the I2C module can stretch the clock line (hold it low) until it has had time to respond to an I2C interrupt.[1] + }, + MATCH_ALL: enum(u1) { // bit offset: 2 desc: Select interrupt register match. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared, an interrupt will only be generated when a match occurs to one of the (up-to) four address registers described above. That is, the module will respond as a normal slave as far as address-recognition is concerned. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set to 1 and the I2C is in monitor mode, an interrupt will be generated on ANY address received. This will enable the part to monitor all traffic on the bus. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. The value read from reserved bits is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -8555,37 +11036,98 @@ pub const I2C1 = extern struct { }); // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 44 Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. pub const DATA_BUFFER = mmio(Address + 0x0000002c, 32, packed struct { Data: u8, // bit offset: 0 desc: This register holds contents of the 8 MSBs of the DAT shift register. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -8613,54 +11155,165 @@ pub const I2C1 = extern struct { }); // byte offset: 48 I2C Slave address mask register pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 48 I2C Slave address mask register - pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 52 I2C Slave address mask register - pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 52 I2C Slave address mask register pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 56 I2C Slave address mask register pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 56 I2C Slave address mask register - pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 60 I2C Slave address mask register - pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 60 I2C Slave address mask register pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); }; pub const SSP0 = extern struct { pub const Address: u32 = 0x40088000; // byte offset: 0 Control Register 0. Selects the serial clock rate, bus type, and data size. pub const CR0 = mmio(Address + 0x00000000, 32, packed struct { - DSS: u4, // bit offset: 0 desc: Data Size Select. This field controls the number of bits transferred in each frame. Values 0000-0010 are not supported and should not be used. - FRF: u2, // bit offset: 4 desc: Frame Format. - CPOL: bool, // bit offset: 6 desc: Clock Out Polarity. This bit is only used in SPI mode. - CPHA: bool, // bit offset: 7 desc: Clock Out Phase. This bit is only used in SPI mode. + DSS: enum(u4) { // bit offset: 0 desc: Data Size Select. This field controls the number of bits transferred in each frame. Values 0000-0010 are not supported and should not be used. + @"4_BIT_TRANSFER" = 3, // desc: 4-bit transfer + @"5_BIT_TRANSFER" = 4, // desc: 5-bit transfer + @"6_BIT_TRANSFER" = 5, // desc: 6-bit transfer + @"7_BIT_TRANSFER" = 6, // desc: 7-bit transfer + @"8_BIT_TRANSFER" = 7, // desc: 8-bit transfer + @"9_BIT_TRANSFER" = 8, // desc: 9-bit transfer + @"10_BIT_TRANSFER" = 9, // desc: 10-bit transfer + @"11_BIT_TRANSFER" = 10, // desc: 11-bit transfer + @"12_BIT_TRANSFER" = 11, // desc: 12-bit transfer + @"13_BIT_TRANSFER" = 12, // desc: 13-bit transfer + @"14_BIT_TRANSFER" = 13, // desc: 14-bit transfer + @"15_BIT_TRANSFER" = 14, // desc: 15-bit transfer + @"16_BIT_TRANSFER" = 15, // desc: 16-bit transfer + _, // non-exhaustive + }, + FRF: enum(u2) { // bit offset: 4 desc: Frame Format. + @"SPI" = 0, // desc: SPI + @"TI" = 1, // desc: TI + @"MICROWIRE" = 2, // desc: Microwire + @"THIS_COMBINATION_IS_" = 3, // desc: This combination is not supported and should not be used. + }, + CPOL: enum(u1) { // bit offset: 6 desc: Clock Out Polarity. This bit is only used in SPI mode. + @"BUS_LOW" = 0, // desc: SSP controller maintains the bus clock low between frames. + @"BUS_HIGH" = 1, // desc: SSP controller maintains the bus clock high between frames. + }, + CPHA: enum(u1) { // bit offset: 7 desc: Clock Out Phase. This bit is only used in SPI mode. + @"FIRST_CLOCK" = 0, // desc: SSP controller captures serial data on the first clock transition of the frame, that is, the transition away from the inter-frame state of the clock line. + @"SECOND_CLOCK" = 1, // desc: SSP controller captures serial data on the second clock transition of the frame, that is, the transition back to the inter-frame state of the clock line. + }, SCR: u8, // bit offset: 8 desc: Serial Clock Rate. The number of prescaler-output clocks per bit on the bus, minus one. Given that CPSDVSR is the prescale divider, and the APB clock PCLK clocks the prescaler, the bit frequency is PCLK / (CPSDVSR X [SCR+1]). + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -8680,10 +11333,20 @@ pub const SSP0 = extern struct { }); // byte offset: 4 Control Register 1. Selects master/slave and other modes. pub const CR1 = mmio(Address + 0x00000004, 32, packed struct { - LBM: bool, // bit offset: 0 desc: Loop Back Mode. - SSE: bool, // bit offset: 1 desc: SSP Enable. - MS: bool, // bit offset: 2 desc: Master/Slave Mode.This bit can only be written when the SSE bit is 0. - SOD: bool, // bit offset: 3 desc: Slave Output Disable. This bit is relevant only in slave mode (MS = 1). If it is 1, this blocks this SSP controller from driving the transmit data line (MISO). + LBM: enum(u1) { // bit offset: 0 desc: Loop Back Mode. + @"NORMAL" = 0, // desc: During normal operation. + @"OUPTU" = 1, // desc: Serial input is taken from the serial output (MOSI or MISO) rather than the serial input pin (MISO or MOSI respectively). + }, + SSE: enum(u1) { // bit offset: 1 desc: SSP Enable. + @"DISABLED" = 0, // desc: The SSP controller is disabled. + @"ENABLED" = 1, // desc: The SSP controller will interact with other devices on the serial bus. Software should write the appropriate control information to the other SSP registers and interrupt controller registers, before setting this bit. + }, + MS: enum(u1) { // bit offset: 2 desc: Master/Slave Mode.This bit can only be written when the SSE bit is 0. + @"MASTER" = 0, // desc: The SSP controller acts as a master on the bus, driving the SCLK, MOSI, and SSEL lines and receiving the MISO line. + @"SLAVE" = 1, // desc: The SSP controller acts as a slave on the bus, driving MISO line and receiving SCLK, MOSI, and SSEL lines. + }, + SOD: u1, // bit offset: 3 desc: Slave Output Disable. This bit is relevant only in slave mode (MS = 1). If it is 1, this blocks this SSP controller from driving the transmit data line (MISO). + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -8716,6 +11379,7 @@ pub const SSP0 = extern struct { // byte offset: 8 Data Register. Writes fill the transmit FIFO, and reads empty the receive FIFO. pub const DR = mmio(Address + 0x00000008, 32, packed struct { DATA: u16, // bit offset: 0 desc: Write: software can write data to be sent in a future frame to this register whenever the TNF bit in the Status register is 1, indicating that the Tx FIFO is not full. If the Tx FIFO was previously empty and the SSP controller is not busy on the bus, transmission of the data will begin immediately. Otherwise the data written to this register will be sent as soon as all previous data has been sent (and received). If the data length is less than 16 bits, software must right-justify the data written to this register. Read: software can read data from this register whenever the RNE bit in the Status register is 1, indicating that the Rx FIFO is not empty. When software reads this register, the SSP controller returns data from the least recent frame in the Rx FIFO. If the data length is less than 16 bits, the data is right-justified in this field with higher order bits filled with 0s. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -8735,11 +11399,12 @@ pub const SSP0 = extern struct { }); // byte offset: 12 Status Register pub const SR = mmio(Address + 0x0000000c, 32, packed struct { - TFE: bool, // bit offset: 0 desc: Transmit FIFO Empty. This bit is 1 is the Transmit FIFO is empty, 0 if not. - TNF: bool, // bit offset: 1 desc: Transmit FIFO Not Full. This bit is 0 if the Tx FIFO is full, 1 if not. - RNE: bool, // bit offset: 2 desc: Receive FIFO Not Empty. This bit is 0 if the Receive FIFO is empty, 1 if not. - RFF: bool, // bit offset: 3 desc: Receive FIFO Full. This bit is 1 if the Receive FIFO is full, 0 if not. - BSY: bool, // bit offset: 4 desc: Busy. This bit is 0 if the SSPn controller is idle, or 1 if it is currently sending/receiving a frame and/or the Tx FIFO is not empty. + TFE: u1, // bit offset: 0 desc: Transmit FIFO Empty. This bit is 1 is the Transmit FIFO is empty, 0 if not. + TNF: u1, // bit offset: 1 desc: Transmit FIFO Not Full. This bit is 0 if the Tx FIFO is full, 1 if not. + RNE: u1, // bit offset: 2 desc: Receive FIFO Not Empty. This bit is 0 if the Receive FIFO is empty, 1 if not. + RFF: u1, // bit offset: 3 desc: Receive FIFO Full. This bit is 1 if the Receive FIFO is full, 0 if not. + BSY: u1, // bit offset: 4 desc: Busy. This bit is 0 if the SSPn controller is idle, or 1 if it is currently sending/receiving a frame and/or the Tx FIFO is not empty. + // RESERVED: u27, // bit offset: 5 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -8771,6 +11436,7 @@ pub const SSP0 = extern struct { // byte offset: 16 Clock Prescale Register pub const CPSR = mmio(Address + 0x00000010, 32, packed struct { CPSDVSR: u8, // bit offset: 0 desc: This even value between 2 and 254, by which PCLK is divided to yield the prescaler output clock. Bit 0 always reads as 0. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -8798,10 +11464,11 @@ pub const SSP0 = extern struct { }); // byte offset: 20 Interrupt Mask Set and Clear Register pub const IMSC = mmio(Address + 0x00000014, 32, packed struct { - RORIM: bool, // bit offset: 0 desc: Software should set this bit to enable interrupt when a Receive Overrun occurs, that is, when the Rx FIFO is full and another frame is completely received. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. - RTIM: bool, // bit offset: 1 desc: Software should set this bit to enable interrupt when a Receive Time-out condition occurs. A Receive Time-out occurs when the Rx FIFO is not empty, and no has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXIM: bool, // bit offset: 2 desc: Software should set this bit to enable interrupt when the Rx FIFO is at least half full. - TXIM: bool, // bit offset: 3 desc: Software should set this bit to enable interrupt when the Tx FIFO is at least half empty. + RORIM: u1, // bit offset: 0 desc: Software should set this bit to enable interrupt when a Receive Overrun occurs, that is, when the Rx FIFO is full and another frame is completely received. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. + RTIM: u1, // bit offset: 1 desc: Software should set this bit to enable interrupt when a Receive Time-out condition occurs. A Receive Time-out occurs when the Rx FIFO is not empty, and no has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXIM: u1, // bit offset: 2 desc: Software should set this bit to enable interrupt when the Rx FIFO is at least half full. + TXIM: u1, // bit offset: 3 desc: Software should set this bit to enable interrupt when the Tx FIFO is at least half empty. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -8833,10 +11500,11 @@ pub const SSP0 = extern struct { }); // byte offset: 24 Raw Interrupt Status Register pub const RIS = mmio(Address + 0x00000018, 32, packed struct { - RORRIS: bool, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. - RTRIS: bool, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, and has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXRIS: bool, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full. - TXRIS: bool, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty. + RORRIS: u1, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full. The ARM spec implies that the preceding frame data is overwritten by the new frame data when this occurs. + RTRIS: u1, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, and has not been read for a time-out period. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXRIS: u1, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full. + TXRIS: u1, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -8868,10 +11536,11 @@ pub const SSP0 = extern struct { }); // byte offset: 28 Masked Interrupt Status Register pub const MIS = mmio(Address + 0x0000001c, 32, packed struct { - RORMIS: bool, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full, and this interrupt is enabled. - RTMIS: bool, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, has not been read for a time-out period, and this interrupt is enabled. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). - RXMIS: bool, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full, and this interrupt is enabled. - TXMIS: bool, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty, and this interrupt is enabled. + RORMIS: u1, // bit offset: 0 desc: This bit is 1 if another frame was completely received while the RxFIFO was full, and this interrupt is enabled. + RTMIS: u1, // bit offset: 1 desc: This bit is 1 if the Rx FIFO is not empty, has not been read for a time-out period, and this interrupt is enabled. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR X [SCR+1]). + RXMIS: u1, // bit offset: 2 desc: This bit is 1 if the Rx FIFO is at least half full, and this interrupt is enabled. + TXMIS: u1, // bit offset: 3 desc: This bit is 1 if the Tx FIFO is at least half empty, and this interrupt is enabled. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -8903,8 +11572,9 @@ pub const SSP0 = extern struct { }); // byte offset: 32 SSPICR Interrupt Clear Register pub const ICR = mmio(Address + 0x00000020, 32, packed struct { - RORIC: bool, // bit offset: 0 desc: Writing a 1 to this bit clears the frame was received when RxFIFO was full interrupt. - RTIC: bool, // bit offset: 1 desc: Writing a 1 to this bit clears the Rx FIFO was not empty and has not been read for a time-out period interrupt. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR / [SCR+1]). + RORIC: u1, // bit offset: 0 desc: Writing a 1 to this bit clears the frame was received when RxFIFO was full interrupt. + RTIC: u1, // bit offset: 1 desc: Writing a 1 to this bit clears the Rx FIFO was not empty and has not been read for a time-out period interrupt. The time-out period is the same for master and slave modes and is determined by the SSP bit rate: 32 bits at PCLK / (CPSDVSR / [SCR+1]). + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -8938,8 +11608,9 @@ pub const SSP0 = extern struct { }); // byte offset: 36 SSP0 DMA control register pub const DMACR = mmio(Address + 0x00000024, 32, packed struct { - RXDMAE: bool, // bit offset: 0 desc: Receive DMA Enable. When this bit is set to one 1, DMA for the receive FIFO is enabled, otherwise receive DMA is disabled. - TXDMAE: bool, // bit offset: 1 desc: Transmit DMA Enable. When this bit is set to one 1, DMA for the transmit FIFO is enabled, otherwise transmit DMA is disabled + RXDMAE: u1, // bit offset: 0 desc: Receive DMA Enable. When this bit is set to one 1, DMA for the receive FIFO is enabled, otherwise receive DMA is disabled. + TXDMAE: u1, // bit offset: 1 desc: Transmit DMA Enable. When this bit is set to one 1, DMA for the transmit FIFO is enabled, otherwise transmit DMA is disabled + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -8976,6 +11647,7 @@ pub const DAC = extern struct { pub const Address: u32 = 0x4008c000; // byte offset: 0 D/A Converter Register. This register contains the digital value to be converted to analog and a power control bit. pub const CR = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u6, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, @@ -8983,7 +11655,11 @@ pub const DAC = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, VALUE: u10, // bit offset: 6 desc: After the selected settling time after this field is written with a new VALUE, the voltage on the DAC_OUT pin (with respect to VSSA) is VALUE x ((VREFP - V REFN)/1024) + VREFN. - BIAS: bool, // bit offset: 16 desc: Settling time The settling times noted in the description of the BIAS bit are valid for a capacitance load on the DAC_OUT pin not exceeding 100 pF. A load impedance value greater than that value will cause settling time longer than the specified time. One or more graphs of load impedance vs. settling time will be included in the final data sheet. + BIAS: enum(u1) { // bit offset: 16 desc: Settling time The settling times noted in the description of the BIAS bit are valid for a capacitance load on the DAC_OUT pin not exceeding 100 pF. A load impedance value greater than that value will cause settling time longer than the specified time. One or more graphs of load impedance vs. settling time will be included in the final data sheet. + @"FAST" = 0, // desc: The settling time of the DAC is 1 us max, and the maximum current is 700 uA. This allows a maximum update rate of 1 MHz. + @"SLOW" = 1, // desc: The settling time of the DAC is 2.5 us and the maximum current is 350 uA. This allows a maximum update rate of 400 kHz. + }, + // RESERVED: u15, // bit offset: 17 desc: Reserved. Read value is undefined, only zero should be written. padding15: u1 = 0, padding14: u1 = 0, padding13: u1 = 0, @@ -9002,10 +11678,23 @@ pub const DAC = extern struct { }); // byte offset: 4 DAC Control register. This register controls DMA and timer operation. pub const CTRL = mmio(Address + 0x00000004, 32, packed struct { - INT_DMA_REQ: bool, // bit offset: 0 desc: DMA interrupt request - DBLBUF_ENA: bool, // bit offset: 1 desc: Double buffering - CNT_ENA: bool, // bit offset: 2 desc: Time-out counter operation - DMA_ENA: bool, // bit offset: 3 desc: DMA access + INT_DMA_REQ: enum(u1) { // bit offset: 0 desc: DMA interrupt request + @"CLEAR_ON_ANY_WRITE_T" = 0, // desc: Clear on any write to the DACR register. + @"SET_BY_HARDWARE_WHEN" = 1, // desc: Set by hardware when the timer times out. + }, + DBLBUF_ENA: enum(u1) { // bit offset: 1 desc: Double buffering + @"DISABLE" = 0, // desc: Disable + @"ENABLE_WHEN_THIS_BI" = 1, // desc: Enable. When this bit and the CNT_ENA bit are both set, the double-buffering feature in the DACR register will be enabled. Writes to the DACR register are written to a pre-buffer and then transferred to the DACR on the next time-out of the counter. + }, + CNT_ENA: enum(u1) { // bit offset: 2 desc: Time-out counter operation + @"DISABLE" = 0, // desc: Disable + @"ENABLE" = 1, // desc: Enable + }, + DMA_ENA: enum(u1) { // bit offset: 3 desc: DMA access + @"DISABLE" = 0, // desc: Disable + @"ENABLE_DMA_BURST_RE" = 1, // desc: Enable. DMA Burst Request Input 7 is enabled for the DAC (see Table 672). + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -9038,6 +11727,7 @@ pub const DAC = extern struct { // byte offset: 8 DAC Counter Value register. This register contains the reload value for the DAC DMA/Interrupt timer. pub const CNTVAL = mmio(Address + 0x00000008, 32, packed struct { VALUE: u16, // bit offset: 0 desc: 16-bit reload value for the DAC interrupt/DMA timer. + // RESERVED: u16, // bit offset: 16 desc: Reserved padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -9060,12 +11750,13 @@ pub const TIMER2 = extern struct { pub const Address: u32 = 0x40090000; // byte offset: 0 Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. pub const IR = mmio(Address + 0x00000000, 32, packed struct { - MR0INT: bool, // bit offset: 0 desc: Interrupt flag for match channel 0. - MR1INT: bool, // bit offset: 1 desc: Interrupt flag for match channel 1. - MR2INT: bool, // bit offset: 2 desc: Interrupt flag for match channel 2. - MR3INT: bool, // bit offset: 3 desc: Interrupt flag for match channel 3. - CR0INT: bool, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. - CR1INT: bool, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + MR0INT: u1, // bit offset: 0 desc: Interrupt flag for match channel 0. + MR1INT: u1, // bit offset: 1 desc: Interrupt flag for match channel 1. + MR2INT: u1, // bit offset: 2 desc: Interrupt flag for match channel 2. + MR3INT: u1, // bit offset: 3 desc: Interrupt flag for match channel 3. + CR0INT: u1, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. + CR1INT: u1, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -9095,8 +11786,9 @@ pub const TIMER2 = extern struct { }); // byte offset: 4 Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. pub const TCR = mmio(Address + 0x00000004, 32, packed struct { - CEN: bool, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. - CRST: bool, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + CEN: u1, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. + CRST: u1, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -9142,18 +11834,55 @@ pub const TIMER2 = extern struct { }); // byte offset: 20 Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. pub const MCR = mmio(Address + 0x00000014, 32, packed struct { - MR0I: bool, // bit offset: 0 desc: Interrupt on MR0 - MR0R: bool, // bit offset: 1 desc: Reset on MR0 - MR0S: bool, // bit offset: 2 desc: Stop on MR0 - MR1I: bool, // bit offset: 3 desc: Interrupt on MR1 - MR1R: bool, // bit offset: 4 desc: Reset on MR1 - MR1S: bool, // bit offset: 5 desc: Stop on MR1 - MR2I: bool, // bit offset: 6 desc: Interrupt on MR2 - MR2R: bool, // bit offset: 7 desc: Reset on MR2 - MR2S: bool, // bit offset: 8 desc: Stop on MR2. - MR3I: bool, // bit offset: 9 desc: Interrupt on MR3 - MR3R: bool, // bit offset: 10 desc: Reset on MR3 - MR3S: bool, // bit offset: 11 desc: Stop on MR3 + MR0I: enum(u1) { // bit offset: 0 desc: Interrupt on MR0 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR0 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR0R: enum(u1) { // bit offset: 1 desc: Reset on MR0 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR0 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR0S: enum(u1) { // bit offset: 2 desc: Stop on MR0 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR0 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1I: enum(u1) { // bit offset: 3 desc: Interrupt on MR1 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR1 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled. + }, + MR1R: enum(u1) { // bit offset: 4 desc: Reset on MR1 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR1 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1S: enum(u1) { // bit offset: 5 desc: Stop on MR1 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR1 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2I: enum(u1) { // bit offset: 6 desc: Interrupt on MR2 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR2 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR2R: enum(u1) { // bit offset: 7 desc: Reset on MR2 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR2 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2S: enum(u1) { // bit offset: 8 desc: Stop on MR2. + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR2 matches the TC + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3I: enum(u1) { // bit offset: 9 desc: Interrupt on MR3 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR3 matches the value in the TC. + @"THIS_INTERRUPT_IS_DI" = 0, // desc: This interrupt is disabled + }, + MR3R: enum(u1) { // bit offset: 10 desc: Reset on MR3 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR3 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3S: enum(u1) { // bit offset: 11 desc: Stop on MR3 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR3 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -9179,14 +11908,6 @@ pub const TIMER2 = extern struct { pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 24 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. @@ -9195,26 +11916,37 @@ pub const TIMER2 = extern struct { pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 32 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); // byte offset: 40 Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. pub const CCR = mmio(Address + 0x00000028, 32, packed struct { - CAP0RE: bool, // bit offset: 0 desc: Capture on CAPn.0 rising edge - CAP0FE: bool, // bit offset: 1 desc: Capture on CAPn.0 falling edge - CAP0I: bool, // bit offset: 2 desc: Interrupt on CAPn.0 event - CAP1RE: bool, // bit offset: 3 desc: Capture on CAPn.1 rising edge - CAP1FE: bool, // bit offset: 4 desc: Capture on CAPn.1 falling edge - CAP1I: bool, // bit offset: 5 desc: Interrupt on CAPn.1 event + CAP0RE: enum(u1) { // bit offset: 0 desc: Capture on CAPn.0 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0FE: enum(u1) { // bit offset: 1 desc: Capture on CAPn.0 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0I: enum(u1) { // bit offset: 2 desc: Interrupt on CAPn.0 event + @"ENABLE" = 1, // desc: A CR0 load due to a CAPn.0 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1RE: enum(u1) { // bit offset: 3 desc: Capture on CAPn.1 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1FE: enum(u1) { // bit offset: 4 desc: Capture on CAPn.1 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1I: enum(u1) { // bit offset: 5 desc: Interrupt on CAPn.1 event + @"ENABLE" = 1, // desc: A CR1 load due to a CAPn.1 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -9246,28 +11978,41 @@ pub const TIMER2 = extern struct { pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); - // byte offset: 44 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); - // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); // byte offset: 60 External Match Register. The EMR controls the external match pins. pub const EMR = mmio(Address + 0x0000003c, 32, packed struct { - EM0: bool, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM1: bool, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). - EM2: bool, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM3: bool, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EMC0: u2, // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. - EMC1: u2, // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. - EMC2: u2, // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. - EMC3: u2, // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + EM0: u1, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM1: u1, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). + EM2: u1, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM3: u1, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EMC0: enum(u2) { // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC1: enum(u2) { // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC2: enum(u2) { // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC3: enum(u2) { // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -9291,8 +12036,18 @@ pub const TIMER2 = extern struct { }); // byte offset: 112 Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. pub const CTCR = mmio(Address + 0x00000070, 32, packed struct { - CTMODE: u2, // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. - CINSEL: u2, // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + CTMODE: enum(u2) { // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. + @"TIMER_MODE_EVERY_RI" = 0, // desc: Timer Mode: every rising PCLK edge + @"RISING" = 1, // desc: Counter Mode: TC is incremented on rising edges on the CAP input selected by bits 3:2. + @"FALLING" = 2, // desc: Counter Mode: TC is incremented on falling edges on the CAP input selected by bits 3:2. + @"DUALEDGE" = 3, // desc: Counter Mode: TC is incremented on both edges on the CAP input selected by bits 3:2. + }, + CINSEL: enum(u2) { // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + @"CAPN_0_FOR_TIMERN" = 0, // desc: CAPn.0 for TIMERn + @"CAPN_1_FOR_TIMERN" = 1, // desc: CAPn.1 for TIMERn + _, // non-exhaustive + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -9327,12 +12082,13 @@ pub const TIMER3 = extern struct { pub const Address: u32 = 0x40094000; // byte offset: 0 Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. pub const IR = mmio(Address + 0x00000000, 32, packed struct { - MR0INT: bool, // bit offset: 0 desc: Interrupt flag for match channel 0. - MR1INT: bool, // bit offset: 1 desc: Interrupt flag for match channel 1. - MR2INT: bool, // bit offset: 2 desc: Interrupt flag for match channel 2. - MR3INT: bool, // bit offset: 3 desc: Interrupt flag for match channel 3. - CR0INT: bool, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. - CR1INT: bool, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + MR0INT: u1, // bit offset: 0 desc: Interrupt flag for match channel 0. + MR1INT: u1, // bit offset: 1 desc: Interrupt flag for match channel 1. + MR2INT: u1, // bit offset: 2 desc: Interrupt flag for match channel 2. + MR3INT: u1, // bit offset: 3 desc: Interrupt flag for match channel 3. + CR0INT: u1, // bit offset: 4 desc: Interrupt flag for capture channel 0 event. + CR1INT: u1, // bit offset: 5 desc: Interrupt flag for capture channel 1 event. + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -9362,8 +12118,9 @@ pub const TIMER3 = extern struct { }); // byte offset: 4 Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. pub const TCR = mmio(Address + 0x00000004, 32, packed struct { - CEN: bool, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. - CRST: bool, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + CEN: u1, // bit offset: 0 desc: When one, the Timer Counter and Prescale Counter are enabled for counting. When zero, the counters are disabled. + CRST: u1, // bit offset: 1 desc: When one, the Timer Counter and the Prescale Counter are synchronously reset on the next positive edge of PCLK. The counters remain reset until TCR[1] is returned to zero. + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -9409,18 +12166,55 @@ pub const TIMER3 = extern struct { }); // byte offset: 20 Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. pub const MCR = mmio(Address + 0x00000014, 32, packed struct { - MR0I: bool, // bit offset: 0 desc: Interrupt on MR0 - MR0R: bool, // bit offset: 1 desc: Reset on MR0 - MR0S: bool, // bit offset: 2 desc: Stop on MR0 - MR1I: bool, // bit offset: 3 desc: Interrupt on MR1 - MR1R: bool, // bit offset: 4 desc: Reset on MR1 - MR1S: bool, // bit offset: 5 desc: Stop on MR1 - MR2I: bool, // bit offset: 6 desc: Interrupt on MR2 - MR2R: bool, // bit offset: 7 desc: Reset on MR2 - MR2S: bool, // bit offset: 8 desc: Stop on MR2. - MR3I: bool, // bit offset: 9 desc: Interrupt on MR3 - MR3R: bool, // bit offset: 10 desc: Reset on MR3 - MR3S: bool, // bit offset: 11 desc: Stop on MR3 + MR0I: enum(u1) { // bit offset: 0 desc: Interrupt on MR0 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR0 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR0R: enum(u1) { // bit offset: 1 desc: Reset on MR0 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR0 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR0S: enum(u1) { // bit offset: 2 desc: Stop on MR0 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR0 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1I: enum(u1) { // bit offset: 3 desc: Interrupt on MR1 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR1 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled. + }, + MR1R: enum(u1) { // bit offset: 4 desc: Reset on MR1 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR1 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR1S: enum(u1) { // bit offset: 5 desc: Stop on MR1 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR1 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2I: enum(u1) { // bit offset: 6 desc: Interrupt on MR2 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR2 matches the value in the TC. + @"INTERRUPT_IS_DISABLE" = 0, // desc: Interrupt is disabled + }, + MR2R: enum(u1) { // bit offset: 7 desc: Reset on MR2 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR2 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR2S: enum(u1) { // bit offset: 8 desc: Stop on MR2. + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR2 matches the TC + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3I: enum(u1) { // bit offset: 9 desc: Interrupt on MR3 + @"INTERRUPT_IS_GENERAT" = 1, // desc: Interrupt is generated when MR3 matches the value in the TC. + @"THIS_INTERRUPT_IS_DI" = 0, // desc: This interrupt is disabled + }, + MR3R: enum(u1) { // bit offset: 10 desc: Reset on MR3 + @"TC_WILL_BE_RESET_IF_" = 1, // desc: TC will be reset if MR3 matches it. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + MR3S: enum(u1) { // bit offset: 11 desc: Stop on MR3 + @"TC_AND_PC_WILL_BE_ST" = 1, // desc: TC and PC will be stopped and TCR[0] will be set to 0 if MR3 matches the TC. + @"FEATURE_DISABLED_" = 0, // desc: Feature disabled. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -9446,14 +12240,6 @@ pub const TIMER3 = extern struct { pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 24 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_0 = mmio(Address + 0x00000018, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 28 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_1 = mmio(Address + 0x0000001c, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. @@ -9462,26 +12248,37 @@ pub const TIMER3 = extern struct { pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); - // byte offset: 32 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_2 = mmio(Address + 0x00000020, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); - // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. - pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { - MATCH: u32, // bit offset: 0 desc: Timer counter match value. - }); // byte offset: 36 Match Register 0. MR0 can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR0 matches the TC. pub const MR_3 = mmio(Address + 0x00000024, 32, packed struct { MATCH: u32, // bit offset: 0 desc: Timer counter match value. }); // byte offset: 40 Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. pub const CCR = mmio(Address + 0x00000028, 32, packed struct { - CAP0RE: bool, // bit offset: 0 desc: Capture on CAPn.0 rising edge - CAP0FE: bool, // bit offset: 1 desc: Capture on CAPn.0 falling edge - CAP0I: bool, // bit offset: 2 desc: Interrupt on CAPn.0 event - CAP1RE: bool, // bit offset: 3 desc: Capture on CAPn.1 rising edge - CAP1FE: bool, // bit offset: 4 desc: Capture on CAPn.1 falling edge - CAP1I: bool, // bit offset: 5 desc: Interrupt on CAPn.1 event + CAP0RE: enum(u1) { // bit offset: 0 desc: Capture on CAPn.0 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0FE: enum(u1) { // bit offset: 1 desc: Capture on CAPn.0 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.0 will cause CR0 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP0I: enum(u1) { // bit offset: 2 desc: Interrupt on CAPn.0 event + @"ENABLE" = 1, // desc: A CR0 load due to a CAPn.0 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1RE: enum(u1) { // bit offset: 3 desc: Capture on CAPn.1 rising edge + @"ENABLE" = 1, // desc: A sequence of 0 then 1 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1FE: enum(u1) { // bit offset: 4 desc: Capture on CAPn.1 falling edge + @"ENABLE" = 1, // desc: A sequence of 1 then 0 on CAPn.1 will cause CR1 to be loaded with the contents of TC. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + CAP1I: enum(u1) { // bit offset: 5 desc: Interrupt on CAPn.1 event + @"ENABLE" = 1, // desc: A CR1 load due to a CAPn.1 event will generate an interrupt. + @"DISABLE" = 0, // desc: This feature is disabled. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -9513,28 +12310,41 @@ pub const TIMER3 = extern struct { pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); - // byte offset: 44 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_0 = mmio(Address + 0x0000002c, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); - // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. - pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { - CAP: u32, // bit offset: 0 desc: Timer counter capture value. - }); // byte offset: 48 Capture Register 0. CR0 is loaded with the value of TC when there is an event on the CAPn.0 input. pub const CR_1 = mmio(Address + 0x00000030, 32, packed struct { CAP: u32, // bit offset: 0 desc: Timer counter capture value. }); // byte offset: 60 External Match Register. The EMR controls the external match pins. pub const EMR = mmio(Address + 0x0000003c, 32, packed struct { - EM0: bool, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM1: bool, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). - EM2: bool, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EM3: bool, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). - EMC0: u2, // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. - EMC1: u2, // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. - EMC2: u2, // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. - EMC3: u2, // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + EM0: u1, // bit offset: 0 desc: External Match 0. When a match occurs between the TC and MR0, this bit can either toggle, go low, go high, or do nothing, depending on bits 5:4 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM1: u1, // bit offset: 1 desc: External Match 1. When a match occurs between the TC and MR1, this bit can either toggle, go low, go high, or do nothing, depending on bits 7:6 of this register. This bit can be driven onto a MATn.1 pin, in a positive-logic manner (0 = low, 1 = high). + EM2: u1, // bit offset: 2 desc: External Match 2. When a match occurs between the TC and MR2, this bit can either toggle, go low, go high, or do nothing, depending on bits 9:8 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EM3: u1, // bit offset: 3 desc: External Match 3. When a match occurs between the TC and MR3, this bit can either toggle, go low, go high, or do nothing, depending on bits 11:10 of this register. This bit can be driven onto a MATn.0 pin, in a positive-logic manner (0 = low, 1 = high). + EMC0: enum(u2) { // bit offset: 4 desc: External Match Control 0. Determines the functionality of External Match 0. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC1: enum(u2) { // bit offset: 6 desc: External Match Control 1. Determines the functionality of External Match 1. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC2: enum(u2) { // bit offset: 8 desc: External Match Control 2. Determines the functionality of External Match 2. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + EMC3: enum(u2) { // bit offset: 10 desc: External Match Control 3. Determines the functionality of External Match 3. + @"DO_NOTHING_" = 0, // desc: Do Nothing. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding External Match bit/output to 0 (MATn.m pin is LOW if pinned out). + @"SET_THE_CORRESPONDIN" = 2, // desc: Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out). + @"TOGGLE_THE_CORRESPON" = 3, // desc: Toggle the corresponding External Match bit/output. + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -9558,8 +12368,18 @@ pub const TIMER3 = extern struct { }); // byte offset: 112 Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. pub const CTCR = mmio(Address + 0x00000070, 32, packed struct { - CTMODE: u2, // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. - CINSEL: u2, // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + CTMODE: enum(u2) { // bit offset: 0 desc: Counter/Timer Mode This field selects which rising PCLK edges can increment Timer's Prescale Counter (PC), or clear PC and increment Timer Counter (TC). Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register. + @"TIMER_MODE_EVERY_RI" = 0, // desc: Timer Mode: every rising PCLK edge + @"RISING" = 1, // desc: Counter Mode: TC is incremented on rising edges on the CAP input selected by bits 3:2. + @"FALLING" = 2, // desc: Counter Mode: TC is incremented on falling edges on the CAP input selected by bits 3:2. + @"DUALEDGE" = 3, // desc: Counter Mode: TC is incremented on both edges on the CAP input selected by bits 3:2. + }, + CINSEL: enum(u2) { // bit offset: 2 desc: Count Input Select When bits 1:0 in this register are not 00, these bits select which CAP pin is sampled for clocking. Note: If Counter mode is selected for a particular CAPn input in the TnCTCR, the 3 bits for that input in the Capture Control Register (TnCCR) must be programmed as 000. However, capture and/or interrupt can be selected for the other 3 CAPn inputs in the same timer. + @"CAPN_0_FOR_TIMERN" = 0, // desc: CAPn.0 for TIMERn + @"CAPN_1_FOR_TIMERN" = 1, // desc: CAPn.1 for TIMERn + _, // non-exhaustive + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -9595,6 +12415,7 @@ pub const UART2 = extern struct { // byte offset: 0 Receiver Buffer Register. Contains the next received character to be read (DLAB =0). pub const RBR = mmio(Address + 0x00000000, 32, packed struct { RBR: u8, // bit offset: 0 desc: The UARTn Receiver Buffer Register contains the oldest received byte in the UARTn Rx FIFO. + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9623,6 +12444,7 @@ pub const UART2 = extern struct { // byte offset: 0 Transmit Holding Regiter. The next character to be transmitted is written here (DLAB =0). pub const THR = mmio(Address + 0x00000000, 32, packed struct { THR: u8, // bit offset: 0 desc: Writing to the UARTn Transmit Holding Register causes the data to be stored in the UARTn transmit FIFO. The byte will be sent when it reaches the bottom of the FIFO and the transmitter is available. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9651,6 +12473,7 @@ pub const UART2 = extern struct { // byte offset: 0 Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLL = mmio(Address + 0x00000000, 32, packed struct { DLLSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch LSB Register, along with the UnDLM register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9679,6 +12502,7 @@ pub const UART2 = extern struct { // byte offset: 4 Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLM = mmio(Address + 0x00000004, 32, packed struct { DLMSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch MSB Register, along with the U0DLL register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9706,16 +12530,33 @@ pub const UART2 = extern struct { }); // byte offset: 4 Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB =0). pub const IER = mmio(Address + 0x00000004, 32, packed struct { - RBRIE: bool, // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. - THREIE: bool, // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. - RXIE: bool, // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + RBRIE: enum(u1) { // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. + @"DISABLE_THE_RDA_INTE" = 0, // desc: Disable the RDA interrupts. + @"ENABLE_THE_RDA_INTER" = 1, // desc: Enable the RDA interrupts. + }, + THREIE: enum(u1) { // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. + @"DISABLE_THE_THRE_INT" = 0, // desc: Disable the THRE interrupts. + @"ENABLE_THE_THRE_INTE" = 1, // desc: Enable the THRE interrupts. + }, + RXIE: enum(u1) { // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + @"DISABLE_THE_RX_LINE_" = 0, // desc: Disable the RX line status interrupts. + @"ENABLE_THE_RX_LINE_S" = 1, // desc: Enable the RX line status interrupts. + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTEN: bool, // bit offset: 8 desc: Enables the end of auto-baud interrupt. - ABTOINTEN: bool, // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + ABEOINTEN: enum(u1) { // bit offset: 8 desc: Enables the end of auto-baud interrupt. + @"DISABLE_END_OF_AUTO_" = 0, // desc: Disable end of auto-baud Interrupt. + @"ENABLE_END_OF_AUTO_B" = 1, // desc: Enable end of auto-baud Interrupt. + }, + ABTOINTEN: enum(u1) { // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + @"DISABLE_AUTO_BAUD_TI" = 0, // desc: Disable auto-baud time-out Interrupt. + @"ENABLE_AUTO_BAUD_TIM" = 1, // desc: Enable auto-baud time-out Interrupt. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -9741,13 +12582,24 @@ pub const UART2 = extern struct { }); // byte offset: 8 Interrupt ID Register. Identifies which interrupt(s) are pending. pub const IIR = mmio(Address + 0x00000008, 32, packed struct { - INTSTATUS: bool, // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. - INTID: u3, // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + INTSTATUS: enum(u1) { // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. + @"AT_LEAST_ONE_INTERRU" = 0, // desc: At least one interrupt is pending. + @"NO_INTERRUPT_IS_PEND" = 1, // desc: No interrupt is pending. + }, + INTID: enum(u3) { // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + @"1_RECEIVE_LINE_S" = 3, // desc: 1 - Receive Line Status (RLS). + @"2A__RECEIVE_DATA_AV" = 2, // desc: 2a - Receive Data Available (RDA). + @"2B__CHARACTER_TIME_" = 6, // desc: 2b - Character Time-out Indicator (CTI). + @"3_THRE_INTERRUPT" = 1, // desc: 3 - THRE Interrupt + _, // non-exhaustive + }, + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, FIFOENABLE: u2, // bit offset: 6 desc: Copies of UnFCR[0]. - ABEOINT: bool, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. - ABTOINT: bool, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + ABEOINT: u1, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. + ABTOINT: u1, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -9773,13 +12625,29 @@ pub const UART2 = extern struct { }); // byte offset: 8 FIFO Control Register. Controls UART FIFO usage and modes. pub const FCR = mmio(Address + 0x00000008, 32, packed struct { - FIFOEN: bool, // bit offset: 0 desc: FIFO Enable. - RXFIFORES: bool, // bit offset: 1 desc: RX FIFO Reset. - TXFIFORES: bool, // bit offset: 2 desc: TX FIFO Reset. - DMAMODE: bool, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + FIFOEN: enum(u1) { // bit offset: 0 desc: FIFO Enable. + @"UARTN_FIFOS_ARE_DISA" = 0, // desc: UARTn FIFOs are disabled. Must not be used in the application. + @"ACTIVE_HIGH_ENABLE_F" = 1, // desc: Active high enable for both UARTn Rx and TX FIFOs and UnFCR[7:1] access. This bit must be set for proper UART operation. Any transition on this bit will automatically clear the related UART FIFOs. + }, + RXFIFORES: enum(u1) { // bit offset: 1 desc: RX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[1] will clear all bytes in UARTn Rx FIFO, reset the pointer logic. This bit is self-clearing. + }, + TXFIFORES: enum(u1) { // bit offset: 2 desc: TX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[2] will clear all bytes in UARTn TX FIFO, reset the pointer logic. This bit is self-clearing. + }, + DMAMODE: u1, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, - RXTRIGLVL: u2, // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + RXTRIGLVL: enum(u2) { // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + @"TRIGGER_LEVEL_0_1_C" = 0, // desc: Trigger level 0 (1 character or 0x01). + @"TRIGGER_LEVEL_1_4_C" = 1, // desc: Trigger level 1 (4 characters or 0x04). + @"TRIGGER_LEVEL_2_8_C" = 2, // desc: Trigger level 2 (8 characters or 0x08). + @"TRIGGER_LEVEL_3_14_" = 3, // desc: Trigger level 3 (14 characters or 0x0E). + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9807,12 +12675,35 @@ pub const UART2 = extern struct { }); // byte offset: 12 Line Control Register. Contains controls for frame formatting and break generation. pub const LCR = mmio(Address + 0x0000000c, 32, packed struct { - WLS: u2, // bit offset: 0 desc: Word Length Select. - SBS: bool, // bit offset: 2 desc: Stop Bit Select - PE: bool, // bit offset: 3 desc: Parity Enable. - PS: u2, // bit offset: 4 desc: Parity Select - BC: bool, // bit offset: 6 desc: Break Control - DLAB: bool, // bit offset: 7 desc: Divisor Latch Access Bit + WLS: enum(u2) { // bit offset: 0 desc: Word Length Select. + @"5_BIT_CHARACTER_LENG" = 0, // desc: 5-bit character length + @"6_BIT_CHARACTER_LENG" = 1, // desc: 6-bit character length + @"7_BIT_CHARACTER_LENG" = 2, // desc: 7-bit character length + @"8_BIT_CHARACTER_LENG" = 3, // desc: 8-bit character length + }, + SBS: enum(u1) { // bit offset: 2 desc: Stop Bit Select + @"1_STOP_BIT_" = 0, // desc: 1 stop bit. + @"2_STOP_BITS_1_5_IF_" = 1, // desc: 2 stop bits (1.5 if UnLCR[1:0]=00). + }, + PE: enum(u1) { // bit offset: 3 desc: Parity Enable. + @"DISABLE_PARITY_GENER" = 0, // desc: Disable parity generation and checking. + @"ENABLE_PARITY_GENERA" = 1, // desc: Enable parity generation and checking. + }, + PS: enum(u2) { // bit offset: 4 desc: Parity Select + @"ODD_PARITY_NUMBER_O" = 0, // desc: Odd parity. Number of 1s in the transmitted character and the attached parity bit will be odd. + @"EVEN_PARITY_NUMBER_" = 1, // desc: Even Parity. Number of 1s in the transmitted character and the attached parity bit will be even. + @"FORCED_1_STICK_PARIT" = 2, // desc: Forced 1 stick parity. + @"FORCED_0_STICK_PARIT" = 3, // desc: Forced 0 stick parity. + }, + BC: enum(u1) { // bit offset: 6 desc: Break Control + @"DISABLE_BREAK_TRANSM" = 0, // desc: Disable break transmission. + @"ENABLE_BREAK_TRANSMI" = 1, // desc: Enable break transmission. Output pin UARTn TXD is forced to logic 0 when UnLCR[6] is active high. + }, + DLAB: enum(u1) { // bit offset: 7 desc: Divisor Latch Access Bit + @"DISABLE_ACCESS_TO_DI" = 0, // desc: Disable access to Divisor Latches. + @"ENABLE_ACCESS_TO_DIV" = 1, // desc: Enable access to Divisor Latches. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9840,14 +12731,39 @@ pub const UART2 = extern struct { }); // byte offset: 20 Line Status Register. Contains flags for transmit and receive status, including line errors. pub const LSR = mmio(Address + 0x00000014, 32, packed struct { - RDR: bool, // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. - OE: bool, // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. - PE: bool, // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. - FE: bool, // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. - BI: bool, // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. - THRE: bool, // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. - TEMT: bool, // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. - RXFE: bool, // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + RDR: enum(u1) { // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. + @"EMPTY" = 0, // desc: The UARTn receiver FIFO is empty. + @"NOTEMPTY" = 1, // desc: The UARTn receiver FIFO is not empty. + }, + OE: enum(u1) { // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. + @"INACTIVE" = 0, // desc: Overrun error status is inactive. + @"ACTIVE" = 1, // desc: Overrun error status is active. + }, + PE: enum(u1) { // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Parity error status is inactive. + @"ACTIVE" = 1, // desc: Parity error status is active. + }, + FE: enum(u1) { // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Framing error status is inactive. + @"ACTIVE" = 1, // desc: Framing error status is active. + }, + BI: enum(u1) { // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Break interrupt status is inactive. + @"ACTIVE" = 1, // desc: Break interrupt status is active. + }, + THRE: enum(u1) { // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. + @"VALIDDATA" = 0, // desc: UnTHR contains valid data. + @"EMPTY" = 1, // desc: UnTHR is empty. + }, + TEMT: enum(u1) { // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. + @"VALIDDATA" = 0, // desc: UnTHR and/or the UnTSR contains valid data. + @"EMPTY" = 1, // desc: UnTHR and the UnTSR are empty. + }, + RXFE: enum(u1) { // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + @"NOERROR" = 0, // desc: UnRBR contains no UARTn RX errors or UnFCR[0]=0. + @"ERRORS" = 1, // desc: UARTn RBR contains at least one UARTn RX error. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9876,6 +12792,7 @@ pub const UART2 = extern struct { // byte offset: 28 Scratch Pad Register. 8-bit temporary storage for software. pub const SCR = mmio(Address + 0x0000001c, 32, packed struct { PAD: u8, // bit offset: 0 desc: A readable, writable byte. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9903,16 +12820,33 @@ pub const UART2 = extern struct { }); // byte offset: 32 Auto-baud Control Register. Contains controls for the auto-baud feature. pub const ACR = mmio(Address + 0x00000020, 32, packed struct { - START: bool, // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. - MODE: bool, // bit offset: 1 desc: Auto-baud mode select bit. - AUTORESTART: bool, // bit offset: 2 desc: Restart bit. + START: enum(u1) { // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. + @"AUTO_BAUD_STOP_AUTO" = 0, // desc: Auto-baud stop (auto-baud is not running). + @"AUTO_BAUD_START_AUT" = 1, // desc: Auto-baud start (auto-baud is running). Auto-baud run bit. This bit is automatically cleared after auto-baud completion. + }, + MODE: enum(u1) { // bit offset: 1 desc: Auto-baud mode select bit. + @"MODE_0_" = 0, // desc: Mode 0. + @"MODE_1_" = 1, // desc: Mode 1. + }, + AUTORESTART: enum(u1) { // bit offset: 2 desc: Restart bit. + @"NO_RESTART_" = 0, // desc: No restart. + @"RESTART_IN_CASE_OF_T" = 1, // desc: Restart in case of time-out (counter restarts at next UARTn Rx falling edge) + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTCLR: bool, // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. - ABTOINTCLR: bool, // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + ABEOINTCLR: enum(u1) { // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + ABTOINTCLR: enum(u1) { // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -9940,6 +12874,7 @@ pub const UART2 = extern struct { pub const FDR = mmio(Address + 0x00000028, 32, packed struct { DIVADDVAL: u4, // bit offset: 0 desc: Baud-rate generation pre-scaler divisor value. If this field is 0, fractional baud-rate generator will not impact the UARTn baudrate. MULVAL: u4, // bit offset: 4 desc: Baud-rate pre-scaler multiplier value. This field must be greater or equal 1 for UARTn to operate properly, regardless of whether the fractional baud-rate generator is used or not. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -9967,6 +12902,7 @@ pub const UART2 = extern struct { }); // byte offset: 48 Transmit Enable Register. Turns off UART transmitter for use with software flow control. pub const TER = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u7, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -9974,7 +12910,8 @@ pub const UART2 = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TXEN: bool, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + TXEN: u1, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10002,12 +12939,29 @@ pub const UART2 = extern struct { }); // byte offset: 76 RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. pub const RS485CTRL = mmio(Address + 0x0000004c, 32, packed struct { - NMMEN: bool, // bit offset: 0 desc: NMM enable. - RXDIS: bool, // bit offset: 1 desc: Receiver enable. - AADEN: bool, // bit offset: 2 desc: AAD enable. + NMMEN: enum(u1) { // bit offset: 0 desc: NMM enable. + @"DISABLED" = 0, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is disabled. + @"ENABLED" = 1, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is enabled. In this mode, an address is detected when a received byte has the parity bit = 1, generating a received data interrupt. See Section 18.6.16 RS-485/EIA-485 modes of operation. + }, + RXDIS: enum(u1) { // bit offset: 1 desc: Receiver enable. + @"ENABLED" = 0, // desc: The receiver is enabled. + @"DISABLED" = 1, // desc: The receiver is disabled. + }, + AADEN: enum(u1) { // bit offset: 2 desc: AAD enable. + @"DISABLED" = 0, // desc: Auto Address Detect (AAD) is disabled. + @"ENABLED" = 1, // desc: Auto Address Detect (AAD) is enabled. + }, + // RESERVED: u1, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - DCTRL: bool, // bit offset: 4 desc: Direction control enable. - OINV: bool, // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + DCTRL: enum(u1) { // bit offset: 4 desc: Direction control enable. + @"DISABLE_AUTO_DIRECTI" = 0, // desc: Disable Auto Direction Control. + @"ENABLE_AUTO_DIRECTIO" = 1, // desc: Enable Auto Direction Control. + }, + OINV: enum(u1) { // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + @"DIRLOW" = 0, // desc: The direction control pin will be driven to logic 0 when the transmitter has data to be sent. It will be driven to logic 1 after the last bit of data has been transmitted. + @"DIRHIGH" = 1, // desc: The direction control pin will be driven to logic 1 when the transmitter has data to be sent. It will be driven to logic 0 after the last bit of data has been transmitted. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -10038,6 +12992,7 @@ pub const UART2 = extern struct { // byte offset: 80 RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. pub const RS485ADRMATCH = mmio(Address + 0x00000050, 32, packed struct { ADRMATCH: u8, // bit offset: 0 desc: Contains the address match value. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10066,6 +13021,7 @@ pub const UART2 = extern struct { // byte offset: 84 RS-485/EIA-485 direction control delay. pub const RS485DLY = mmio(Address + 0x00000054, 32, packed struct { DLY: u8, // bit offset: 0 desc: Contains the direction control (UnOE) delay value. This register works in conjunction with an 8-bit counter. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10097,6 +13053,7 @@ pub const UART3 = extern struct { // byte offset: 0 Receiver Buffer Register. Contains the next received character to be read (DLAB =0). pub const RBR = mmio(Address + 0x00000000, 32, packed struct { RBR: u8, // bit offset: 0 desc: The UARTn Receiver Buffer Register contains the oldest received byte in the UARTn Rx FIFO. + // RESERVED: u24, // bit offset: 8 desc: Reserved, the value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10125,6 +13082,7 @@ pub const UART3 = extern struct { // byte offset: 0 Transmit Holding Regiter. The next character to be transmitted is written here (DLAB =0). pub const THR = mmio(Address + 0x00000000, 32, packed struct { THR: u8, // bit offset: 0 desc: Writing to the UARTn Transmit Holding Register causes the data to be stored in the UARTn transmit FIFO. The byte will be sent when it reaches the bottom of the FIFO and the transmitter is available. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10153,6 +13111,7 @@ pub const UART3 = extern struct { // byte offset: 0 Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLL = mmio(Address + 0x00000000, 32, packed struct { DLLSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch LSB Register, along with the UnDLM register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10181,6 +13140,7 @@ pub const UART3 = extern struct { // byte offset: 4 Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB =1). pub const DLM = mmio(Address + 0x00000004, 32, packed struct { DLMSB: u8, // bit offset: 0 desc: The UARTn Divisor Latch MSB Register, along with the U0DLL register, determines the baud rate of the UARTn. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10208,16 +13168,33 @@ pub const UART3 = extern struct { }); // byte offset: 4 Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB =0). pub const IER = mmio(Address + 0x00000004, 32, packed struct { - RBRIE: bool, // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. - THREIE: bool, // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. - RXIE: bool, // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + RBRIE: enum(u1) { // bit offset: 0 desc: RBR Interrupt Enable. Enables the Receive Data Available interrupt for UARTn. It also controls the Character Receive Time-out interrupt. + @"DISABLE_THE_RDA_INTE" = 0, // desc: Disable the RDA interrupts. + @"ENABLE_THE_RDA_INTER" = 1, // desc: Enable the RDA interrupts. + }, + THREIE: enum(u1) { // bit offset: 1 desc: THRE Interrupt Enable. Enables the THRE interrupt for UARTn. The status of this can be read from UnLSR[5]. + @"DISABLE_THE_THRE_INT" = 0, // desc: Disable the THRE interrupts. + @"ENABLE_THE_THRE_INTE" = 1, // desc: Enable the THRE interrupts. + }, + RXIE: enum(u1) { // bit offset: 2 desc: RX Line Status Interrupt Enable. Enables the UARTn RX line status interrupts. The status of this interrupt can be read from UnLSR[4:1]. + @"DISABLE_THE_RX_LINE_" = 0, // desc: Disable the RX line status interrupts. + @"ENABLE_THE_RX_LINE_S" = 1, // desc: Enable the RX line status interrupts. + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTEN: bool, // bit offset: 8 desc: Enables the end of auto-baud interrupt. - ABTOINTEN: bool, // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + ABEOINTEN: enum(u1) { // bit offset: 8 desc: Enables the end of auto-baud interrupt. + @"DISABLE_END_OF_AUTO_" = 0, // desc: Disable end of auto-baud Interrupt. + @"ENABLE_END_OF_AUTO_B" = 1, // desc: Enable end of auto-baud Interrupt. + }, + ABTOINTEN: enum(u1) { // bit offset: 9 desc: Enables the auto-baud time-out interrupt. + @"DISABLE_AUTO_BAUD_TI" = 0, // desc: Disable auto-baud time-out Interrupt. + @"ENABLE_AUTO_BAUD_TIM" = 1, // desc: Enable auto-baud time-out Interrupt. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -10243,13 +13220,24 @@ pub const UART3 = extern struct { }); // byte offset: 8 Interrupt ID Register. Identifies which interrupt(s) are pending. pub const IIR = mmio(Address + 0x00000008, 32, packed struct { - INTSTATUS: bool, // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. - INTID: u3, // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + INTSTATUS: enum(u1) { // bit offset: 0 desc: Interrupt status. Note that UnIIR[0] is active low. The pending interrupt can be determined by evaluating UnIIR[3:1]. + @"AT_LEAST_ONE_INTERRU" = 0, // desc: At least one interrupt is pending. + @"NO_INTERRUPT_IS_PEND" = 1, // desc: No interrupt is pending. + }, + INTID: enum(u3) { // bit offset: 1 desc: Interrupt identification. UnIER[3:1] identifies an interrupt corresponding to the UARTn Rx or TX FIFO. All other combinations of UnIER[3:1] not listed below are reserved (000,100,101,111). + @"1_RECEIVE_LINE_S" = 3, // desc: 1 - Receive Line Status (RLS). + @"2A__RECEIVE_DATA_AV" = 2, // desc: 2a - Receive Data Available (RDA). + @"2B__CHARACTER_TIME_" = 6, // desc: 2b - Character Time-out Indicator (CTI). + @"3_THRE_INTERRUPT" = 1, // desc: 3 - THRE Interrupt + _, // non-exhaustive + }, + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, FIFOENABLE: u2, // bit offset: 6 desc: Copies of UnFCR[0]. - ABEOINT: bool, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. - ABTOINT: bool, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + ABEOINT: u1, // bit offset: 8 desc: End of auto-baud interrupt. True if auto-baud has finished successfully and interrupt is enabled. + ABTOINT: u1, // bit offset: 9 desc: Auto-baud time-out interrupt. True if auto-baud has timed out and interrupt is enabled. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -10275,13 +13263,29 @@ pub const UART3 = extern struct { }); // byte offset: 8 FIFO Control Register. Controls UART FIFO usage and modes. pub const FCR = mmio(Address + 0x00000008, 32, packed struct { - FIFOEN: bool, // bit offset: 0 desc: FIFO Enable. - RXFIFORES: bool, // bit offset: 1 desc: RX FIFO Reset. - TXFIFORES: bool, // bit offset: 2 desc: TX FIFO Reset. - DMAMODE: bool, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + FIFOEN: enum(u1) { // bit offset: 0 desc: FIFO Enable. + @"UARTN_FIFOS_ARE_DISA" = 0, // desc: UARTn FIFOs are disabled. Must not be used in the application. + @"ACTIVE_HIGH_ENABLE_F" = 1, // desc: Active high enable for both UARTn Rx and TX FIFOs and UnFCR[7:1] access. This bit must be set for proper UART operation. Any transition on this bit will automatically clear the related UART FIFOs. + }, + RXFIFORES: enum(u1) { // bit offset: 1 desc: RX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[1] will clear all bytes in UARTn Rx FIFO, reset the pointer logic. This bit is self-clearing. + }, + TXFIFORES: enum(u1) { // bit offset: 2 desc: TX FIFO Reset. + @"NO_IMPACT_ON_EITHER_" = 0, // desc: No impact on either of UARTn FIFOs. + @"WRITING_A_LOGIC_1_TO" = 1, // desc: Writing a logic 1 to UnFCR[2] will clear all bytes in UARTn TX FIFO, reset the pointer logic. This bit is self-clearing. + }, + DMAMODE: u1, // bit offset: 3 desc: DMA Mode Select. When the FIFO enable (bit 0 of this register) is set, this bit selects the DMA mode. See Section 18.6.6.1. + // RESERVED: u2, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, - RXTRIGLVL: u2, // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + RXTRIGLVL: enum(u2) { // bit offset: 6 desc: RX Trigger Level. These two bits determine how many receiver UARTn FIFO characters must be written before an interrupt or DMA request is activated. + @"TRIGGER_LEVEL_0_1_C" = 0, // desc: Trigger level 0 (1 character or 0x01). + @"TRIGGER_LEVEL_1_4_C" = 1, // desc: Trigger level 1 (4 characters or 0x04). + @"TRIGGER_LEVEL_2_8_C" = 2, // desc: Trigger level 2 (8 characters or 0x08). + @"TRIGGER_LEVEL_3_14_" = 3, // desc: Trigger level 3 (14 characters or 0x0E). + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10309,12 +13313,35 @@ pub const UART3 = extern struct { }); // byte offset: 12 Line Control Register. Contains controls for frame formatting and break generation. pub const LCR = mmio(Address + 0x0000000c, 32, packed struct { - WLS: u2, // bit offset: 0 desc: Word Length Select. - SBS: bool, // bit offset: 2 desc: Stop Bit Select - PE: bool, // bit offset: 3 desc: Parity Enable. - PS: u2, // bit offset: 4 desc: Parity Select - BC: bool, // bit offset: 6 desc: Break Control - DLAB: bool, // bit offset: 7 desc: Divisor Latch Access Bit + WLS: enum(u2) { // bit offset: 0 desc: Word Length Select. + @"5_BIT_CHARACTER_LENG" = 0, // desc: 5-bit character length + @"6_BIT_CHARACTER_LENG" = 1, // desc: 6-bit character length + @"7_BIT_CHARACTER_LENG" = 2, // desc: 7-bit character length + @"8_BIT_CHARACTER_LENG" = 3, // desc: 8-bit character length + }, + SBS: enum(u1) { // bit offset: 2 desc: Stop Bit Select + @"1_STOP_BIT_" = 0, // desc: 1 stop bit. + @"2_STOP_BITS_1_5_IF_" = 1, // desc: 2 stop bits (1.5 if UnLCR[1:0]=00). + }, + PE: enum(u1) { // bit offset: 3 desc: Parity Enable. + @"DISABLE_PARITY_GENER" = 0, // desc: Disable parity generation and checking. + @"ENABLE_PARITY_GENERA" = 1, // desc: Enable parity generation and checking. + }, + PS: enum(u2) { // bit offset: 4 desc: Parity Select + @"ODD_PARITY_NUMBER_O" = 0, // desc: Odd parity. Number of 1s in the transmitted character and the attached parity bit will be odd. + @"EVEN_PARITY_NUMBER_" = 1, // desc: Even Parity. Number of 1s in the transmitted character and the attached parity bit will be even. + @"FORCED_1_STICK_PARIT" = 2, // desc: Forced 1 stick parity. + @"FORCED_0_STICK_PARIT" = 3, // desc: Forced 0 stick parity. + }, + BC: enum(u1) { // bit offset: 6 desc: Break Control + @"DISABLE_BREAK_TRANSM" = 0, // desc: Disable break transmission. + @"ENABLE_BREAK_TRANSMI" = 1, // desc: Enable break transmission. Output pin UARTn TXD is forced to logic 0 when UnLCR[6] is active high. + }, + DLAB: enum(u1) { // bit offset: 7 desc: Divisor Latch Access Bit + @"DISABLE_ACCESS_TO_DI" = 0, // desc: Disable access to Divisor Latches. + @"ENABLE_ACCESS_TO_DIV" = 1, // desc: Enable access to Divisor Latches. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10342,14 +13369,39 @@ pub const UART3 = extern struct { }); // byte offset: 20 Line Status Register. Contains flags for transmit and receive status, including line errors. pub const LSR = mmio(Address + 0x00000014, 32, packed struct { - RDR: bool, // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. - OE: bool, // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. - PE: bool, // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. - FE: bool, // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. - BI: bool, // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. - THRE: bool, // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. - TEMT: bool, // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. - RXFE: bool, // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + RDR: enum(u1) { // bit offset: 0 desc: Receiver Data Ready. UnLSR[0] is set when the UnRBR holds an unread character and is cleared when the UARTn RBR FIFO is empty. + @"EMPTY" = 0, // desc: The UARTn receiver FIFO is empty. + @"NOTEMPTY" = 1, // desc: The UARTn receiver FIFO is not empty. + }, + OE: enum(u1) { // bit offset: 1 desc: Overrun Error. The overrun error condition is set as soon as it occurs. An UnLSR read clears UnLSR[1]. UnLSR[1] is set when UARTn RSR has a new character assembled and the UARTn RBR FIFO is full. In this case, the UARTn RBR FIFO will not be overwritten and the character in the UARTn RSR will be lost. + @"INACTIVE" = 0, // desc: Overrun error status is inactive. + @"ACTIVE" = 1, // desc: Overrun error status is active. + }, + PE: enum(u1) { // bit offset: 2 desc: Parity Error. When the parity bit of a received character is in the wrong state, a parity error occurs. An UnLSR read clears UnLSR[2]. Time of parity error detection is dependent on UnFCR[0]. Note: A parity error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Parity error status is inactive. + @"ACTIVE" = 1, // desc: Parity error status is active. + }, + FE: enum(u1) { // bit offset: 3 desc: Framing Error. When the stop bit of a received character is a logic 0, a framing error occurs. An UnLSR read clears UnLSR[3]. The time of the framing error detection is dependent on UnFCR[0]. Upon detection of a framing error, the Rx will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit. However, it cannot be assumed that the next received byte will be correct even if there is no Framing Error. Note: A framing error is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Framing error status is inactive. + @"ACTIVE" = 1, // desc: Framing error status is active. + }, + BI: enum(u1) { // bit offset: 4 desc: Break Interrupt. When RXDn is held in the spacing state (all zeroes) for one full character transmission (start, data, parity, stop), a break interrupt occurs. Once the break condition has been detected, the receiver goes idle until RXDn goes to marking state (all ones). An UnLSR read clears this status bit. The time of break detection is dependent on UnFCR[0]. Note: The break interrupt is associated with the character at the top of the UARTn RBR FIFO. + @"INACTIVE" = 0, // desc: Break interrupt status is inactive. + @"ACTIVE" = 1, // desc: Break interrupt status is active. + }, + THRE: enum(u1) { // bit offset: 5 desc: Transmitter Holding Register Empty. THRE is set immediately upon detection of an empty UARTn THR and is cleared on a UnTHR write. + @"VALIDDATA" = 0, // desc: UnTHR contains valid data. + @"EMPTY" = 1, // desc: UnTHR is empty. + }, + TEMT: enum(u1) { // bit offset: 6 desc: Transmitter Empty. TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when either the UnTSR or the UnTHR contain valid data. + @"VALIDDATA" = 0, // desc: UnTHR and/or the UnTSR contains valid data. + @"EMPTY" = 1, // desc: UnTHR and the UnTSR are empty. + }, + RXFE: enum(u1) { // bit offset: 7 desc: Error in RX FIFO . UnLSR[7] is set when a character with a Rx error such as framing error, parity error or break interrupt, is loaded into the UnRBR. This bit is cleared when the UnLSR register is read and there are no subsequent errors in the UARTn FIFO. + @"NOERROR" = 0, // desc: UnRBR contains no UARTn RX errors or UnFCR[0]=0. + @"ERRORS" = 1, // desc: UARTn RBR contains at least one UARTn RX error. + }, + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10378,6 +13430,7 @@ pub const UART3 = extern struct { // byte offset: 28 Scratch Pad Register. 8-bit temporary storage for software. pub const SCR = mmio(Address + 0x0000001c, 32, packed struct { PAD: u8, // bit offset: 0 desc: A readable, writable byte. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10405,16 +13458,33 @@ pub const UART3 = extern struct { }); // byte offset: 32 Auto-baud Control Register. Contains controls for the auto-baud feature. pub const ACR = mmio(Address + 0x00000020, 32, packed struct { - START: bool, // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. - MODE: bool, // bit offset: 1 desc: Auto-baud mode select bit. - AUTORESTART: bool, // bit offset: 2 desc: Restart bit. + START: enum(u1) { // bit offset: 0 desc: Start bit. This bit is automatically cleared after auto-baud completion. + @"AUTO_BAUD_STOP_AUTO" = 0, // desc: Auto-baud stop (auto-baud is not running). + @"AUTO_BAUD_START_AUT" = 1, // desc: Auto-baud start (auto-baud is running). Auto-baud run bit. This bit is automatically cleared after auto-baud completion. + }, + MODE: enum(u1) { // bit offset: 1 desc: Auto-baud mode select bit. + @"MODE_0_" = 0, // desc: Mode 0. + @"MODE_1_" = 1, // desc: Mode 1. + }, + AUTORESTART: enum(u1) { // bit offset: 2 desc: Restart bit. + @"NO_RESTART_" = 0, // desc: No restart. + @"RESTART_IN_CASE_OF_T" = 1, // desc: Restart in case of time-out (counter restarts at next UARTn Rx falling edge) + }, + // RESERVED: u5, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - ABEOINTCLR: bool, // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. - ABTOINTCLR: bool, // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + ABEOINTCLR: enum(u1) { // bit offset: 8 desc: End of auto-baud interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + ABTOINTCLR: enum(u1) { // bit offset: 9 desc: Auto-baud time-out interrupt clear bit (write-only accessible). Writing a 1 will clear the corresponding interrupt in the UnIIR. Writing a 0 has no impact. + @"NO_IMPACT_" = 0, // desc: No impact. + @"CLEAR_THE_CORRESPOND" = 1, // desc: Clear the corresponding interrupt in the IIR. + }, + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -10442,6 +13512,7 @@ pub const UART3 = extern struct { pub const FDR = mmio(Address + 0x00000028, 32, packed struct { DIVADDVAL: u4, // bit offset: 0 desc: Baud-rate generation pre-scaler divisor value. If this field is 0, fractional baud-rate generator will not impact the UARTn baudrate. MULVAL: u4, // bit offset: 4 desc: Baud-rate pre-scaler multiplier value. This field must be greater or equal 1 for UARTn to operate properly, regardless of whether the fractional baud-rate generator is used or not. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10469,6 +13540,7 @@ pub const UART3 = extern struct { }); // byte offset: 48 Transmit Enable Register. Turns off UART transmitter for use with software flow control. pub const TER = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u7, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -10476,7 +13548,8 @@ pub const UART3 = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - TXEN: bool, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + TXEN: u1, // bit offset: 7 desc: When this bit is 1, as it is after a Reset, data written to the THR is output on the TXD pin as soon as any preceding data has been sent. If this bit is cleared to 0 while a character is being sent, the transmission of that character is completed, but no further characters are sent until this bit is set again. In other words, a 0 in this bit blocks the transfer of characters from the THR or TX FIFO into the transmit shift register. Software implementing software-handshaking can clear this bit when it receives an XOFF character (DC3). Software can set this bit again when it receives an XON (DC1) character. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10504,12 +13577,29 @@ pub const UART3 = extern struct { }); // byte offset: 76 RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. pub const RS485CTRL = mmio(Address + 0x0000004c, 32, packed struct { - NMMEN: bool, // bit offset: 0 desc: NMM enable. - RXDIS: bool, // bit offset: 1 desc: Receiver enable. - AADEN: bool, // bit offset: 2 desc: AAD enable. + NMMEN: enum(u1) { // bit offset: 0 desc: NMM enable. + @"DISABLED" = 0, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is disabled. + @"ENABLED" = 1, // desc: RS-485/EIA-485 Normal Multidrop Mode (NMM) is enabled. In this mode, an address is detected when a received byte has the parity bit = 1, generating a received data interrupt. See Section 18.6.16 RS-485/EIA-485 modes of operation. + }, + RXDIS: enum(u1) { // bit offset: 1 desc: Receiver enable. + @"ENABLED" = 0, // desc: The receiver is enabled. + @"DISABLED" = 1, // desc: The receiver is disabled. + }, + AADEN: enum(u1) { // bit offset: 2 desc: AAD enable. + @"DISABLED" = 0, // desc: Auto Address Detect (AAD) is disabled. + @"ENABLED" = 1, // desc: Auto Address Detect (AAD) is enabled. + }, + // RESERVED: u1, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - DCTRL: bool, // bit offset: 4 desc: Direction control enable. - OINV: bool, // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + DCTRL: enum(u1) { // bit offset: 4 desc: Direction control enable. + @"DISABLE_AUTO_DIRECTI" = 0, // desc: Disable Auto Direction Control. + @"ENABLE_AUTO_DIRECTIO" = 1, // desc: Enable Auto Direction Control. + }, + OINV: enum(u1) { // bit offset: 5 desc: Direction control pin polarity. This bit reverses the polarity of the direction control signal on the Un_OE pin. + @"DIRLOW" = 0, // desc: The direction control pin will be driven to logic 0 when the transmitter has data to be sent. It will be driven to logic 1 after the last bit of data has been transmitted. + @"DIRHIGH" = 1, // desc: The direction control pin will be driven to logic 1 when the transmitter has data to be sent. It will be driven to logic 0 after the last bit of data has been transmitted. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -10540,6 +13630,7 @@ pub const UART3 = extern struct { // byte offset: 80 RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. pub const RS485ADRMATCH = mmio(Address + 0x00000050, 32, packed struct { ADRMATCH: u8, // bit offset: 0 desc: Contains the address match value. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10568,6 +13659,7 @@ pub const UART3 = extern struct { // byte offset: 84 RS-485/EIA-485 direction control delay. pub const RS485DLY = mmio(Address + 0x00000054, 32, packed struct { DLY: u8, // bit offset: 0 desc: Contains the direction control (UnOE) delay value. This register works in conjunction with an 8-bit counter. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10598,13 +13690,15 @@ pub const I2C2 = extern struct { pub const Address: u32 = 0x400a0000; // byte offset: 0 I2C Control Set Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is set. Writing a zero has no effect on the corresponding bit in the I2C control register. pub const CONSET = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved2: u1 = 0, reserved1: u1 = 0, - AA: bool, // bit offset: 2 desc: Assert acknowledge flag. - SI: bool, // bit offset: 3 desc: I2C interrupt flag. - STO: bool, // bit offset: 4 desc: STOP flag. - STA: bool, // bit offset: 5 desc: START flag. - I2EN: bool, // bit offset: 6 desc: I2C interface enable. + AA: u1, // bit offset: 2 desc: Assert acknowledge flag. + SI: u1, // bit offset: 3 desc: I2C interrupt flag. + STO: u1, // bit offset: 4 desc: STOP flag. + STA: u1, // bit offset: 5 desc: START flag. + I2EN: u1, // bit offset: 6 desc: I2C interface enable. + // RESERVED: u25, // bit offset: 7 desc: Reserved. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -10633,10 +13727,12 @@ pub const I2C2 = extern struct { }); // byte offset: 4 I2C Status Register. During I2C operation, this register provides detailed status codes that allow software to determine the next action needed. pub const STAT = mmio(Address + 0x00000004, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: These bits are unused and are always 0. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, Status: u5, // bit offset: 3 desc: These bits give the actual status information about the I 2C interface. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10665,6 +13761,7 @@ pub const I2C2 = extern struct { // byte offset: 8 I2C Data Register. During master or slave transmit mode, data to be transmitted is written to this register. During master or slave receive mode, data that has been received may be read from this register. pub const DAT = mmio(Address + 0x00000008, 32, packed struct { Data: u8, // bit offset: 0 desc: This register holds data values that have been received or are to be transmitted. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10692,8 +13789,9 @@ pub const I2C2 = extern struct { }); // byte offset: 12 I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. pub const ADR0 = mmio(Address + 0x0000000c, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. + GC: u1, // bit offset: 0 desc: General Call enable bit. Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10722,6 +13820,7 @@ pub const I2C2 = extern struct { // byte offset: 16 SCH Duty Cycle Register High Half Word. Determines the high time of the I2C clock. pub const SCLH = mmio(Address + 0x00000010, 32, packed struct { SCLH: u16, // bit offset: 0 desc: Count for SCL HIGH time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -10742,6 +13841,241 @@ pub const I2C2 = extern struct { // byte offset: 20 SCL Duty Cycle Register Low Half Word. Determines the low time of the I2C clock. SCLL and SCLH together determine the clock frequency generated by an I2C master and certain times used in slave mode. pub const SCLL = mmio(Address + 0x00000014, 32, packed struct { SCLL: u16, // bit offset: 0 desc: Count for SCL low time period selection. + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 24 I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. + pub const CONCLR = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved2: u1 = 0, + reserved1: u1 = 0, + AAC: u1, // bit offset: 2 desc: Assert acknowledge Clear bit. + SIC: u1, // bit offset: 3 desc: I2C interrupt Clear bit. + // RESERVED: u1, // bit offset: 4 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved3: u1 = 0, + STAC: u1, // bit offset: 5 desc: START flag Clear bit. + I2ENC: u1, // bit offset: 6 desc: I2C interface Disable bit. + // RESERVED: u1, // bit offset: 7 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding25: u1 = 0, + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 28 Monitor mode control register. + pub const MMCTRL = mmio(Address + 0x0000001c, 32, packed struct { + MM_ENA: enum(u1) { // bit offset: 0 desc: Monitor mode enable. + @"MONITOR_MODE_DISABLE" = 0, // desc: Monitor mode disabled. + @"THE_I_2C_MODULE_WILL" = 1, // desc: The I 2C module will enter monitor mode. In this mode the SDA output will be forced high. This will prevent the I2C module from outputting data of any kind (including ACK) onto the I2C data bus. Depending on the state of the ENA_SCL bit, the output may be also forced high, preventing the module from having control over the I2C clock line. + }, + ENA_SCL: enum(u1) { // bit offset: 1 desc: SCL output enable. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared to 0, the SCL output will be forced high when the module is in monitor mode. As described above, this will prevent the module from having any control over the I2C clock line. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set, the I2C module may exercise the same control over the clock line that it would in normal operation. This means that, acting as a slave peripheral, the I2C module can stretch the clock line (hold it low) until it has had time to respond to an I2C interrupt.[1] + }, + MATCH_ALL: enum(u1) { // bit offset: 2 desc: Select interrupt register match. + @"WHEN_THIS_BIT_IS_CLE" = 0, // desc: When this bit is cleared, an interrupt will only be generated when a match occurs to one of the (up-to) four address registers described above. That is, the module will respond as a normal slave as far as address-recognition is concerned. + @"WHEN_THIS_BIT_IS_SET" = 1, // desc: When this bit is set to 1 and the I2C is in monitor mode, an interrupt will be generated on ANY address received. This will enable the part to monitor all traffic on the bus. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. The value read from reserved bits is not defined. + padding29: u1 = 0, + padding28: u1 = 0, + padding27: u1 = 0, + padding26: u1 = 0, + padding25: u1 = 0, + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. + pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { + GC: u1, // bit offset: 0 desc: General Call enable bit. + Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. + pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { + GC: u1, // bit offset: 0 desc: General Call enable bit. + Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. + pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { + GC: u1, // bit offset: 0 desc: General Call enable bit. + Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 44 Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. + pub const DATA_BUFFER = mmio(Address + 0x0000002c, 32, packed struct { + Data: u8, // bit offset: 0 desc: This register holds contents of the 8 MSBs of the DAT shift register. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, + padding16: u1 = 0, + padding15: u1 = 0, + padding14: u1 = 0, + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, + }); + // byte offset: 48 I2C Slave address mask register + pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. + reserved1: u1 = 0, + MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. + padding24: u1 = 0, + padding23: u1 = 0, + padding22: u1 = 0, + padding21: u1 = 0, + padding20: u1 = 0, + padding19: u1 = 0, + padding18: u1 = 0, + padding17: u1 = 0, padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -10759,16 +14093,12 @@ pub const I2C2 = extern struct { padding2: u1 = 0, padding1: u1 = 0, }); - // byte offset: 24 I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. - pub const CONCLR = mmio(Address + 0x00000018, 32, packed struct { - reserved2: u1 = 0, + // byte offset: 52 I2C Slave address mask register + pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. reserved1: u1 = 0, - AAC: bool, // bit offset: 2 desc: Assert acknowledge Clear bit. - SIC: bool, // bit offset: 3 desc: I2C interrupt Clear bit. - reserved2: u1 = 0, - STAC: bool, // bit offset: 5 desc: START flag Clear bit. - I2ENC: bool, // bit offset: 6 desc: I2C interface Disable bit. - padding25: u1 = 0, + MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10794,16 +14124,12 @@ pub const I2C2 = extern struct { padding2: u1 = 0, padding1: u1 = 0, }); - // byte offset: 28 Monitor mode control register. - pub const MMCTRL = mmio(Address + 0x0000001c, 32, packed struct { - MM_ENA: bool, // bit offset: 0 desc: Monitor mode enable. - ENA_SCL: bool, // bit offset: 1 desc: SCL output enable. - MATCH_ALL: bool, // bit offset: 2 desc: Select interrupt register match. - padding29: u1 = 0, - padding28: u1 = 0, - padding27: u1 = 0, - padding26: u1 = 0, - padding25: u1 = 0, + // byte offset: 56 I2C Slave address mask register + pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. + reserved1: u1 = 0, + MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10829,39 +14155,12 @@ pub const I2C2 = extern struct { padding2: u1 = 0, padding1: u1 = 0, }); - // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 32 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR1 = mmio(Address + 0x00000020, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 36 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR2 = mmio(Address + 0x00000024, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 40 I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. - pub const ADR3 = mmio(Address + 0x00000028, 32, packed struct { - GC: bool, // bit offset: 0 desc: General Call enable bit. - Address: u7, // bit offset: 1 desc: The I2C device address for slave mode. - }); - // byte offset: 44 Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. - pub const DATA_BUFFER = mmio(Address + 0x0000002c, 32, packed struct { - Data: u8, // bit offset: 0 desc: This register holds contents of the 8 MSBs of the DAT shift register. + // byte offset: 60 I2C Slave address mask register + pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. This bit reads always back as 0. + reserved1: u1 = 0, + MASK: u7, // bit offset: 1 desc: Mask bits. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -10887,58 +14186,24 @@ pub const I2C2 = extern struct { padding2: u1 = 0, padding1: u1 = 0, }); - // byte offset: 48 I2C Slave address mask register - pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 48 I2C Slave address mask register - pub const MASK_0 = mmio(Address + 0x00000030, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 52 I2C Slave address mask register - pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 52 I2C Slave address mask register - pub const MASK_1 = mmio(Address + 0x00000034, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 56 I2C Slave address mask register - pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 56 I2C Slave address mask register - pub const MASK_2 = mmio(Address + 0x00000038, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 60 I2C Slave address mask register - pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); - // byte offset: 60 I2C Slave address mask register - pub const MASK_3 = mmio(Address + 0x0000003c, 32, packed struct { - reserved1: u1 = 0, - MASK: u7, // bit offset: 1 desc: Mask bits. - }); }; pub const I2S = extern struct { pub const Address: u32 = 0x400a8000; // byte offset: 0 I2S Digital Audio Output Register. Contains control bits for the I2S transmit channel. pub const DAO = mmio(Address + 0x00000000, 32, packed struct { - WORDWIDTH: u2, // bit offset: 0 desc: Selects the number of bytes in data as follows: - MONO: bool, // bit offset: 2 desc: When 1, data is of monaural format. When 0, the data is in stereo format. - STOP: bool, // bit offset: 3 desc: When 1, disables accesses on FIFOs, places the transmit channel in mute mode. - RESET: bool, // bit offset: 4 desc: When 1, asynchronously resets the transmit channel and FIFO. - WS_SEL: bool, // bit offset: 5 desc: When 0, the interface is in master mode. When 1, the interface is in slave mode. See Section 34.7.2 for a summary of useful combinations for this bit with TXMODE. + WORDWIDTH: enum(u2) { // bit offset: 0 desc: Selects the number of bytes in data as follows: + @"8_BIT_DATA" = 0, // desc: 8-bit data + @"16_BIT_DATA" = 1, // desc: 16-bit data + @"32_BIT_DATA" = 3, // desc: 32-bit data + _, // non-exhaustive + }, + MONO: u1, // bit offset: 2 desc: When 1, data is of monaural format. When 0, the data is in stereo format. + STOP: u1, // bit offset: 3 desc: When 1, disables accesses on FIFOs, places the transmit channel in mute mode. + RESET: u1, // bit offset: 4 desc: When 1, asynchronously resets the transmit channel and FIFO. + WS_SEL: u1, // bit offset: 5 desc: When 0, the interface is in master mode. When 1, the interface is in slave mode. See Section 34.7.2 for a summary of useful combinations for this bit with TXMODE. WS_HALFPERIOD: u9, // bit offset: 6 desc: Word select half period minus 1, i.e. WS 64clk period -> ws_halfperiod = 31. - MUTE: bool, // bit offset: 15 desc: When 1, the transmit channel sends only zeroes. + MUTE: u1, // bit offset: 15 desc: When 1, the transmit channel sends only zeroes. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -10958,12 +14223,18 @@ pub const I2S = extern struct { }); // byte offset: 4 I2S Digital Audio Input Register. Contains control bits for the I2S receive channel. pub const DAI = mmio(Address + 0x00000004, 32, packed struct { - WORDWIDTH: u2, // bit offset: 0 desc: Selects the number of bytes in data as follows: - MONO: bool, // bit offset: 2 desc: When 1, data is of monaural format. When 0, the data is in stereo format. - STOP: bool, // bit offset: 3 desc: When 1, disables accesses on FIFOs, places the transmit channel in mute mode. - RESET: bool, // bit offset: 4 desc: When 1, asynchronously reset the transmit channel and FIFO. - WS_SEL: bool, // bit offset: 5 desc: When 0, the interface is in master mode. When 1, the interface is in slave mode. See Section 34.7.2 for a summary of useful combinations for this bit with RXMODE. + WORDWIDTH: enum(u2) { // bit offset: 0 desc: Selects the number of bytes in data as follows: + @"8_BIT_DATA" = 0, // desc: 8-bit data + @"16_BIT_DATA" = 1, // desc: 16-bit data + @"32_BIT_DATA" = 3, // desc: 32-bit data + _, // non-exhaustive + }, + MONO: u1, // bit offset: 2 desc: When 1, data is of monaural format. When 0, the data is in stereo format. + STOP: u1, // bit offset: 3 desc: When 1, disables accesses on FIFOs, places the transmit channel in mute mode. + RESET: u1, // bit offset: 4 desc: When 1, asynchronously reset the transmit channel and FIFO. + WS_SEL: u1, // bit offset: 5 desc: When 0, the interface is in master mode. When 1, the interface is in slave mode. See Section 34.7.2 for a summary of useful combinations for this bit with RXMODE. WS_HALFPERIOD: u9, // bit offset: 6 desc: Word select half period minus 1, i.e. WS 64clk period -> ws_halfperiod = 31. + // RESERVED: u17, // bit offset: 15 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding17: u1 = 0, padding16: u1 = 0, padding15: u1 = 0, @@ -10992,20 +14263,23 @@ pub const I2S = extern struct { }); // byte offset: 16 I2S Status Feedback Register. Contains status information about the I2S interface. pub const STATE = mmio(Address + 0x00000010, 32, packed struct { - IRQ: bool, // bit offset: 0 desc: This bit reflects the presence of Receive Interrupt or Transmit Interrupt. This is determined by comparing the current FIFO levels to the rx_depth_irq and tx_depth_irq fields in the IRQ register. - DMAREQ1: bool, // bit offset: 1 desc: This bit reflects the presence of Receive or Transmit DMA Request 1. This is determined by comparing the current FIFO levels to the rx_depth_dma1 and tx_depth_dma1 fields in the DMA1 register. - DMAREQ2: bool, // bit offset: 2 desc: This bit reflects the presence of Receive or Transmit DMA Request 2. This is determined by comparing the current FIFO levels to the rx_depth_dma2 and tx_depth_dma2 fields in the DMA2 register. + IRQ: u1, // bit offset: 0 desc: This bit reflects the presence of Receive Interrupt or Transmit Interrupt. This is determined by comparing the current FIFO levels to the rx_depth_irq and tx_depth_irq fields in the IRQ register. + DMAREQ1: u1, // bit offset: 1 desc: This bit reflects the presence of Receive or Transmit DMA Request 1. This is determined by comparing the current FIFO levels to the rx_depth_dma1 and tx_depth_dma1 fields in the DMA1 register. + DMAREQ2: u1, // bit offset: 2 desc: This bit reflects the presence of Receive or Transmit DMA Request 2. This is determined by comparing the current FIFO levels to the rx_depth_dma2 and tx_depth_dma2 fields in the DMA2 register. + // RESERVED: u5, // bit offset: 3 desc: Reserved. reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, RX_LEVEL: u4, // bit offset: 8 desc: Reflects the current level of the Receive FIFO. + // RESERVED: u4, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, - reserved5: u1 = 0, TX_LEVEL: u4, // bit offset: 16 desc: Reflects the current level of the Transmit FIFO. + // RESERVED: u12, // bit offset: 20 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -11021,8 +14295,9 @@ pub const I2S = extern struct { }); // byte offset: 20 I2S DMA Configuration Register 1. Contains control information for DMA request 1. pub const DMA1 = mmio(Address + 0x00000014, 32, packed struct { - RX_DMA1_ENABLE: bool, // bit offset: 0 desc: When 1, enables DMA1 for I2S receive. - TX_DMA1_ENABLE: bool, // bit offset: 1 desc: When 1, enables DMA1 for I2S transmit. + RX_DMA1_ENABLE: u1, // bit offset: 0 desc: When 1, enables DMA1 for I2S receive. + TX_DMA1_ENABLE: u1, // bit offset: 1 desc: When 1, enables DMA1 for I2S transmit. + // RESERVED: u6, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, @@ -11030,11 +14305,13 @@ pub const I2S = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, RX_DEPTH_DMA1: u4, // bit offset: 8 desc: Set the FIFO level that triggers a receive DMA request on DMA1. + // RESERVED: u4, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved10: u1 = 0, + reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, TX_DEPTH_DMA1: u4, // bit offset: 16 desc: Set the FIFO level that triggers a transmit DMA request on DMA1. + // RESERVED: u12, // bit offset: 20 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -11050,8 +14327,9 @@ pub const I2S = extern struct { }); // byte offset: 24 I2S DMA Configuration Register 2. Contains control information for DMA request 2. pub const DMA2 = mmio(Address + 0x00000018, 32, packed struct { - RX_DMA2_ENABLE: bool, // bit offset: 0 desc: When 1, enables DMA1 for I2S receive. - TX_DMA2_ENABLE: bool, // bit offset: 1 desc: When 1, enables DMA1 for I2S transmit. + RX_DMA2_ENABLE: u1, // bit offset: 0 desc: When 1, enables DMA1 for I2S receive. + TX_DMA2_ENABLE: u1, // bit offset: 1 desc: When 1, enables DMA1 for I2S transmit. + // RESERVED: u6, // bit offset: 2 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, @@ -11059,11 +14337,13 @@ pub const I2S = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, RX_DEPTH_DMA2: u4, // bit offset: 8 desc: Set the FIFO level that triggers a receive DMA request on DMA2. + // RESERVED: u4, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved10: u1 = 0, + reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, TX_DEPTH_DMA2: u4, // bit offset: 16 desc: Set the FIFO level that triggers a transmit DMA request on DMA2. + // RESERVED: u12, // bit offset: 20 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -11079,8 +14359,9 @@ pub const I2S = extern struct { }); // byte offset: 28 I2S Interrupt Request Control Register. Contains bits that control how the I2S interrupt request is generated. pub const IRQ = mmio(Address + 0x0000001c, 32, packed struct { - RX_IRQ_ENABLE: bool, // bit offset: 0 desc: When 1, enables I2S receive interrupt. - TX_IRQ_ENABLE: bool, // bit offset: 1 desc: When 1, enables I2S transmit interrupt. + RX_IRQ_ENABLE: u1, // bit offset: 0 desc: When 1, enables I2S receive interrupt. + TX_IRQ_ENABLE: u1, // bit offset: 1 desc: When 1, enables I2S transmit interrupt. + // RESERVED: u6, // bit offset: 2 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, @@ -11088,11 +14369,13 @@ pub const I2S = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, RX_DEPTH_IRQ: u4, // bit offset: 8 desc: Set the FIFO level on which to create an irq request. + // RESERVED: u4, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + reserved10: u1 = 0, + reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, TX_DEPTH_IRQ: u4, // bit offset: 16 desc: Set the FIFO level on which to create an irq request. + // RESERVED: u12, // bit offset: 20 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -11110,6 +14393,7 @@ pub const I2S = extern struct { pub const TXRATE = mmio(Address + 0x00000020, 32, packed struct { Y_DIVIDER: u8, // bit offset: 0 desc: I2S transmit MCLK rate denominator. This value is used to divide PCLK to produce the transmit MCLK. Eight bits of fractional divide supports a wide range of possibilities. A value of 0 stops the clock. X_DIVIDER: u8, // bit offset: 8 desc: I2S transmit MCLK rate numerator. This value is used to multiply PCLK by to produce the transmit MCLK. A value of 0 stops the clock. Eight bits of fractional divide supports a wide range of possibilities. Note: the resulting ratio X/Y is divided by 2. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11131,6 +14415,7 @@ pub const I2S = extern struct { pub const RXRATE = mmio(Address + 0x00000024, 32, packed struct { Y_DIVIDER: u8, // bit offset: 0 desc: I2S receive MCLK rate denominator. This value is used to divide PCLK to produce the receive MCLK. Eight bits of fractional divide supports a wide range of possibilities. A value of 0 stops the clock. X_DIVIDER: u8, // bit offset: 8 desc: I2S receive MCLK rate numerator. This value is used to multiply PCLK by to produce the receive MCLK. A value of 0 stops the clock. Eight bits of fractional divide supports a wide range of possibilities. Note: the resulting ratio X/Y is divided by 2. + // RESERVED: u16, // bit offset: 16 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11151,6 +14436,7 @@ pub const I2S = extern struct { // byte offset: 40 I2S Transmit bit rate divider. This register determines the I2S transmit bit rate by specifying the value to divide TX_MCLK by in order to produce the transmit bit clock. pub const TXBITRATE = mmio(Address + 0x00000028, 32, packed struct { TX_BITRATE: u6, // bit offset: 0 desc: I2S transmit bit rate. This value plus one is used to divide TX_MCLK to produce the transmit bit clock. + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -11181,6 +14467,7 @@ pub const I2S = extern struct { // byte offset: 44 I2S Receive bit rate divider. This register determines the I2S receive bit rate by specifying the value to divide RX_MCLK by in order to produce the receive bit clock. pub const RXBITRATE = mmio(Address + 0x0000002c, 32, packed struct { RX_BITRATE: u6, // bit offset: 0 desc: I2S receive bit rate. This value plus one is used to divide RX_MCLK to produce the receive bit clock. + // RESERVED: u26, // bit offset: 6 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -11210,9 +14497,14 @@ pub const I2S = extern struct { }); // byte offset: 48 I2S Transmit mode control. pub const TXMODE = mmio(Address + 0x00000030, 32, packed struct { - TXCLKSEL: u2, // bit offset: 0 desc: Clock source selection for the transmit bit clock divider. - TX4PIN: bool, // bit offset: 2 desc: Transmit 4-pin mode selection. When 1, enables 4-pin mode. - TXMCENA: bool, // bit offset: 3 desc: Enable for the TX_MCLK output. When 0, output of TX_MCLK is not enabled. When 1, output of TX_MCLK is enabled. + TXCLKSEL: enum(u2) { // bit offset: 0 desc: Clock source selection for the transmit bit clock divider. + @"SELECT_THE_TX_FRACTI" = 0, // desc: Select the TX fractional rate divider clock output as the source + @"SELECT_THE_RX_MCLK_S" = 2, // desc: Select the RX_MCLK signal as the TX_MCLK clock source + _, // non-exhaustive + }, + TX4PIN: u1, // bit offset: 2 desc: Transmit 4-pin mode selection. When 1, enables 4-pin mode. + TXMCENA: u1, // bit offset: 3 desc: Enable for the TX_MCLK output. When 0, output of TX_MCLK is not enabled. When 1, output of TX_MCLK is enabled. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -11244,9 +14536,14 @@ pub const I2S = extern struct { }); // byte offset: 52 I2S Receive mode control. pub const RXMODE = mmio(Address + 0x00000034, 32, packed struct { - RXCLKSEL: u2, // bit offset: 0 desc: Clock source selection for the receive bit clock divider. - RX4PIN: bool, // bit offset: 2 desc: Receive 4-pin mode selection. When 1, enables 4-pin mode. - RXMCENA: bool, // bit offset: 3 desc: Enable for the RX_MCLK output. When 0, output of RX_MCLK is not enabled. When 1, output of RX_MCLK is enabled. + RXCLKSEL: enum(u2) { // bit offset: 0 desc: Clock source selection for the receive bit clock divider. + @"SELECT_THE_RX_FRACTI" = 0, // desc: Select the RX fractional rate divider clock output as the source + @"SELECT_THE_TX_MCLK_S" = 2, // desc: Select the TX_MCLK signal as the RX_MCLK clock source + _, // non-exhaustive + }, + RX4PIN: u1, // bit offset: 2 desc: Receive 4-pin mode selection. When 1, enables 4-pin mode. + RXMCENA: u1, // bit offset: 3 desc: Enable for the RX_MCLK output. When 0, output of RX_MCLK is not enabled. When 1, output of RX_MCLK is enabled. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -11289,10 +14586,23 @@ pub const RITIMER = extern struct { }); // byte offset: 8 Control register. pub const CTRL = mmio(Address + 0x00000008, 32, packed struct { - RITINT: bool, // bit offset: 0 desc: Interrupt flag - RITENCLR: bool, // bit offset: 1 desc: Timer enable clear - RITENBR: bool, // bit offset: 2 desc: Timer enable for debug - RITEN: bool, // bit offset: 3 desc: Timer enable. + RITINT: enum(u1) { // bit offset: 0 desc: Interrupt flag + @"THIS_BIT_IS_SET_TO_1" = 1, // desc: This bit is set to 1 by hardware whenever the counter value equals the masked compare value specified by the contents of RICOMPVAL and RIMASK registers. Writing a 1 to this bit will clear it to 0. Writing a 0 has no effect. + @"THE_COUNTER_VALUE_DO" = 0, // desc: The counter value does not equal the masked compare value. + }, + RITENCLR: enum(u1) { // bit offset: 1 desc: Timer enable clear + @"THE_TIMER_WILL_BE_CL" = 1, // desc: The timer will be cleared to 0 whenever the counter value equals the masked compare value specified by the contents of RICOMPVAL and RIMASK registers. This will occur on the same clock that sets the interrupt flag. + @"THE_TIMER_WILL_NOT_B" = 0, // desc: The timer will not be cleared to 0. + }, + RITENBR: enum(u1) { // bit offset: 2 desc: Timer enable for debug + @"THE_TIMER_IS_HALTED_" = 1, // desc: The timer is halted when the processor is halted for debugging. + @"DEBUG_HAS_NO_EFFECT_" = 0, // desc: Debug has no effect on the timer operation. + }, + RITEN: enum(u1) { // bit offset: 3 desc: Timer enable. + @"TIMER_ENABLED_THIS_" = 1, // desc: Timer enabled. This can be overruled by a debug halt if enabled in bit 2. + @"TIMER_DISABLED_" = 0, // desc: Timer disabled. + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -11331,132 +14641,196 @@ pub const MCPWM = extern struct { pub const Address: u32 = 0x400b8000; // byte offset: 0 PWM Control read address pub const CON = mmio(Address + 0x00000000, 32, packed struct { - RUN0: bool, // bit offset: 0 desc: Stops/starts timer channel 0. - CENTER0: bool, // bit offset: 1 desc: Edge/center aligned operation for channel 0. - POLA0: bool, // bit offset: 2 desc: Selects polarity of the MCOA0 and MCOB0 pins. - DTE0: bool, // bit offset: 3 desc: Controls the dead-time feature for channel 0. - DISUP0: bool, // bit offset: 4 desc: Enable/disable updates of functional registers for channel 0 (see Section 24.8.2). + RUN0: enum(u1) { // bit offset: 0 desc: Stops/starts timer channel 0. + @"STOP_" = 0, // desc: Stop. + @"RUN_" = 1, // desc: Run. + }, + CENTER0: enum(u1) { // bit offset: 1 desc: Edge/center aligned operation for channel 0. + @"EDGE_ALIGNED_" = 0, // desc: Edge-aligned. + @"CENTER_ALIGNED_" = 1, // desc: Center-aligned. + }, + POLA0: enum(u1) { // bit offset: 2 desc: Selects polarity of the MCOA0 and MCOB0 pins. + @"PASSIVE_STATE_IS_LOW" = 0, // desc: Passive state is LOW, active state is HIGH. + @"PASSIVE_STATE_IS_HIG" = 1, // desc: Passive state is HIGH, active state is LOW. + }, + DTE0: enum(u1) { // bit offset: 3 desc: Controls the dead-time feature for channel 0. + @"DEAD_TIME_DISABLED_" = 0, // desc: Dead-time disabled. + @"DEAD_TIME_ENABLED_" = 1, // desc: Dead-time enabled. + }, + DISUP0: enum(u1) { // bit offset: 4 desc: Enable/disable updates of functional registers for channel 0 (see Section 24.8.2). + @"UPDATE" = 0, // desc: Functional registers are updated from the write registers at the end of each PWM cycle. + @"NOUPDATE" = 1, // desc: Functional registers remain the same as long as the timer is running. + }, + // RESERVED: u3, // bit offset: 5 desc: Reserved. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RUN1: bool, // bit offset: 8 desc: Stops/starts timer channel 1. - CENTER1: bool, // bit offset: 9 desc: Edge/center aligned operation for channel 1. - POLA1: bool, // bit offset: 10 desc: Selects polarity of the MCOA1 and MCOB1 pins. - DTE1: bool, // bit offset: 11 desc: Controls the dead-time feature for channel 1. - DISUP1: bool, // bit offset: 12 desc: Enable/disable updates of functional registers for channel 1 (see Section 24.8.2). + RUN1: enum(u1) { // bit offset: 8 desc: Stops/starts timer channel 1. + @"STOP_" = 0, // desc: Stop. + @"RUN_" = 1, // desc: Run. + }, + CENTER1: enum(u1) { // bit offset: 9 desc: Edge/center aligned operation for channel 1. + @"EDGE_ALIGNED_" = 0, // desc: Edge-aligned. + @"CENTER_ALIGNED_" = 1, // desc: Center-aligned. + }, + POLA1: enum(u1) { // bit offset: 10 desc: Selects polarity of the MCOA1 and MCOB1 pins. + @"PASSIVE_STATE_IS_LOW" = 0, // desc: Passive state is LOW, active state is HIGH. + @"PASSIVE_STATE_IS_HIG" = 1, // desc: Passive state is HIGH, active state is LOW. + }, + DTE1: enum(u1) { // bit offset: 11 desc: Controls the dead-time feature for channel 1. + @"DEAD_TIME_DISABLED_" = 0, // desc: Dead-time disabled. + @"DEAD_TIME_ENABLED_" = 1, // desc: Dead-time enabled. + }, + DISUP1: enum(u1) { // bit offset: 12 desc: Enable/disable updates of functional registers for channel 1 (see Section 24.8.2). + @"UPDATE" = 0, // desc: Functional registers are updated from the write registers at the end of each PWM cycle. + @"NOUPDATE" = 1, // desc: Functional registers remain the same as long as the timer is running. + }, + // RESERVED: u3, // bit offset: 13 desc: Reserved. + reserved6: u1 = 0, + reserved5: u1 = 0, reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - RUN2: bool, // bit offset: 16 desc: Stops/starts timer channel 2. - CENTER2: bool, // bit offset: 17 desc: Edge/center aligned operation for channel 2. - POLA2: bool, // bit offset: 18 desc: Selects polarity of the MCOA2 and MCOB2 pins. - DTE2: bool, // bit offset: 19 desc: Controls the dead-time feature for channel 1. - DISUP2: bool, // bit offset: 20 desc: Enable/disable updates of functional registers for channel 2 (see Section 24.8.2). + RUN2: enum(u1) { // bit offset: 16 desc: Stops/starts timer channel 2. + @"STOP_" = 0, // desc: Stop. + @"RUN_" = 1, // desc: Run. + }, + CENTER2: enum(u1) { // bit offset: 17 desc: Edge/center aligned operation for channel 2. + @"EDGE_ALIGNED_" = 0, // desc: Edge-aligned. + @"CENTER_ALIGNED_" = 1, // desc: Center-aligned. + }, + POLA2: enum(u1) { // bit offset: 18 desc: Selects polarity of the MCOA2 and MCOB2 pins. + @"PASSIVE_STATE_IS_LOW" = 0, // desc: Passive state is LOW, active state is HIGH. + @"PASSIVE_STATE_IS_HIG" = 1, // desc: Passive state is HIGH, active state is LOW. + }, + DTE2: enum(u1) { // bit offset: 19 desc: Controls the dead-time feature for channel 1. + @"DEAD_TIME_DISABLED_" = 0, // desc: Dead-time disabled. + @"DEAD_TIME_ENABLED_" = 1, // desc: Dead-time enabled. + }, + DISUP2: enum(u1) { // bit offset: 20 desc: Enable/disable updates of functional registers for channel 2 (see Section 24.8.2). + @"UPDATE" = 0, // desc: Functional registers are updated from the write registers at the end of each PWM cycle. + @"NOUPDATE" = 1, // desc: Functional registers remain the same as long as the timer is running. + }, + // RESERVED: u8, // bit offset: 21 desc: Reserved. + reserved14: u1 = 0, + reserved13: u1 = 0, + reserved12: u1 = 0, + reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - INVBDC: bool, // bit offset: 29 desc: Controls the polarity of the MCOB outputs for all 3 channels. This bit is typically set to 1 only in 3-phase DC mode. - ACMODE: bool, // bit offset: 30 desc: 3-phase AC mode select (see Section 24.8.7). - DCMODE: bool, // bit offset: 31 desc: 3-phase DC mode select (see Section 24.8.6). + INVBDC: enum(u1) { // bit offset: 29 desc: Controls the polarity of the MCOB outputs for all 3 channels. This bit is typically set to 1 only in 3-phase DC mode. + @"OPPOSITE" = 0, // desc: The MCOB outputs have opposite polarity from the MCOA outputs (aside from dead time). + @"SAME" = 1, // desc: The MCOB outputs have the same basic polarity as the MCOA outputs. (see Section 24.8.6) + }, + ACMODE: enum(u1) { // bit offset: 30 desc: 3-phase AC mode select (see Section 24.8.7). + @"3_PHASE_AC_MODE_OFF" = 0, // desc: 3-phase AC-mode off: Each PWM channel uses its own timer-counter and period register. + @"3_PHASE_AC_MODE_ON_" = 1, // desc: 3-phase AC-mode on: All PWM channels use the timer-counter and period register of channel 0. + }, + DCMODE: enum(u1) { // bit offset: 31 desc: 3-phase DC mode select (see Section 24.8.6). + @"3_PHASE_DC_MODE_OFF" = 0, // desc: 3-phase DC mode off: PWM channels are independent (unless bit ACMODE = 1) + @"3_PHASE_DC_MODE_ON_" = 1, // desc: 3-phase DC mode on: The internal MCOA0 output is routed through the CP register (i.e. a mask) register to all six PWM outputs. + }, }); // byte offset: 4 PWM Control set address pub const CON_SET = mmio(Address + 0x00000004, 32, packed struct { - RUN0_SET: bool, // bit offset: 0 desc: Writing a one sets the corresponding bit in the CON register. - CENTER0_SET: bool, // bit offset: 1 desc: Writing a one sets the corresponding bit in the CON register. - POLA0_SET: bool, // bit offset: 2 desc: Writing a one sets the corresponding bit in the CON register. - DTE0_SET: bool, // bit offset: 3 desc: Writing a one sets the corresponding bit in the CON register. - DISUP0_SET: bool, // bit offset: 4 desc: Writing a one sets the corresponding bit in the CON register. + RUN0_SET: u1, // bit offset: 0 desc: Writing a one sets the corresponding bit in the CON register. + CENTER0_SET: u1, // bit offset: 1 desc: Writing a one sets the corresponding bit in the CON register. + POLA0_SET: u1, // bit offset: 2 desc: Writing a one sets the corresponding bit in the CON register. + DTE0_SET: u1, // bit offset: 3 desc: Writing a one sets the corresponding bit in the CON register. + DISUP0_SET: u1, // bit offset: 4 desc: Writing a one sets the corresponding bit in the CON register. + // RESERVED: u3, // bit offset: 5 desc: Writing a one sets the corresponding bit in the CON register. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RUN1_SET: bool, // bit offset: 8 desc: Writing a one sets the corresponding bit in the CON register. - CENTER1_SET: bool, // bit offset: 9 desc: Writing a one sets the corresponding bit in the CON register. - POLA1_SET: bool, // bit offset: 10 desc: Writing a one sets the corresponding bit in the CON register. - DTE1_SET: bool, // bit offset: 11 desc: Writing a one sets the corresponding bit in the CON register. - DISUP1_SET: bool, // bit offset: 12 desc: Writing a one sets the corresponding bit in the CON register. + RUN1_SET: u1, // bit offset: 8 desc: Writing a one sets the corresponding bit in the CON register. + CENTER1_SET: u1, // bit offset: 9 desc: Writing a one sets the corresponding bit in the CON register. + POLA1_SET: u1, // bit offset: 10 desc: Writing a one sets the corresponding bit in the CON register. + DTE1_SET: u1, // bit offset: 11 desc: Writing a one sets the corresponding bit in the CON register. + DISUP1_SET: u1, // bit offset: 12 desc: Writing a one sets the corresponding bit in the CON register. + // RESERVED: u3, // bit offset: 13 desc: Writing a one sets the corresponding bit in the CON register. + reserved6: u1 = 0, + reserved5: u1 = 0, reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - RUN2_SET: bool, // bit offset: 16 desc: Writing a one sets the corresponding bit in the CON register. - CENTER2_SET: bool, // bit offset: 17 desc: Writing a one sets the corresponding bit in the CON register. - POLA2_SET: bool, // bit offset: 18 desc: Writing a one sets the corresponding bit in the CON register. - DTE2_SET: bool, // bit offset: 19 desc: Writing a one sets the corresponding bit in the CON register. - DISUP2_SET: bool, // bit offset: 20 desc: Writing a one sets the corresponding bit in the CON register. + RUN2_SET: u1, // bit offset: 16 desc: Writing a one sets the corresponding bit in the CON register. + CENTER2_SET: u1, // bit offset: 17 desc: Writing a one sets the corresponding bit in the CON register. + POLA2_SET: u1, // bit offset: 18 desc: Writing a one sets the corresponding bit in the CON register. + DTE2_SET: u1, // bit offset: 19 desc: Writing a one sets the corresponding bit in the CON register. + DISUP2_SET: u1, // bit offset: 20 desc: Writing a one sets the corresponding bit in the CON register. + // RESERVED: u8, // bit offset: 21 desc: Writing a one sets the corresponding bit in the CON register. + reserved14: u1 = 0, + reserved13: u1 = 0, + reserved12: u1 = 0, + reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - INVBDC_SET: bool, // bit offset: 29 desc: Writing a one sets the corresponding bit in the CON register. - ACMODE_SET: bool, // bit offset: 30 desc: Writing a one sets the corresponding bit in the CON register. - DCMODE_SET: bool, // bit offset: 31 desc: Writing a one sets the corresponding bit in the CON register. + INVBDC_SET: u1, // bit offset: 29 desc: Writing a one sets the corresponding bit in the CON register. + ACMODE_SET: u1, // bit offset: 30 desc: Writing a one sets the corresponding bit in the CON register. + DCMODE_SET: u1, // bit offset: 31 desc: Writing a one sets the corresponding bit in the CON register. }); // byte offset: 8 PWM Control clear address pub const CON_CLR = mmio(Address + 0x00000008, 32, packed struct { - RUN0_CLR: bool, // bit offset: 0 desc: Writing a one clears the corresponding bit in the CON register. - CENTER0_CLR: bool, // bit offset: 1 desc: Writing a one clears the corresponding bit in the CON register. - POLA0_CLR: bool, // bit offset: 2 desc: Writing a one clears the corresponding bit in the CON register. - DTE0_CLR: bool, // bit offset: 3 desc: Writing a one clears the corresponding bit in the CON register. - DISUP0_CLR: bool, // bit offset: 4 desc: Writing a one clears the corresponding bit in the CON register. + RUN0_CLR: u1, // bit offset: 0 desc: Writing a one clears the corresponding bit in the CON register. + CENTER0_CLR: u1, // bit offset: 1 desc: Writing a one clears the corresponding bit in the CON register. + POLA0_CLR: u1, // bit offset: 2 desc: Writing a one clears the corresponding bit in the CON register. + DTE0_CLR: u1, // bit offset: 3 desc: Writing a one clears the corresponding bit in the CON register. + DISUP0_CLR: u1, // bit offset: 4 desc: Writing a one clears the corresponding bit in the CON register. + // RESERVED: u3, // bit offset: 5 desc: Writing a one clears the corresponding bit in the CON register. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RUN1_CLR: bool, // bit offset: 8 desc: Writing a one clears the corresponding bit in the CON register. - CENTER1_CLR: bool, // bit offset: 9 desc: Writing a one clears the corresponding bit in the CON register. - POLA1_CLR: bool, // bit offset: 10 desc: Writing a one clears the corresponding bit in the CON register. - DTE1_CLR: bool, // bit offset: 11 desc: Writing a one clears the corresponding bit in the CON register. - DISUP1_CLR: bool, // bit offset: 12 desc: Writing a one clears the corresponding bit in the CON register. + RUN1_CLR: u1, // bit offset: 8 desc: Writing a one clears the corresponding bit in the CON register. + CENTER1_CLR: u1, // bit offset: 9 desc: Writing a one clears the corresponding bit in the CON register. + POLA1_CLR: u1, // bit offset: 10 desc: Writing a one clears the corresponding bit in the CON register. + DTE1_CLR: u1, // bit offset: 11 desc: Writing a one clears the corresponding bit in the CON register. + DISUP1_CLR: u1, // bit offset: 12 desc: Writing a one clears the corresponding bit in the CON register. + // RESERVED: u3, // bit offset: 13 desc: Writing a one clears the corresponding bit in the CON register. + reserved6: u1 = 0, + reserved5: u1 = 0, reserved4: u1 = 0, - reserved3: u1 = 0, - reserved2: u1 = 0, - RUN2_CLR: bool, // bit offset: 16 desc: Writing a one clears the corresponding bit in the CON register. - CENTER2_CLR: bool, // bit offset: 17 desc: Writing a one clears the corresponding bit in the CON register. - POLA2_CLR: bool, // bit offset: 18 desc: Writing a one clears the corresponding bit in the CON register. - DTE2_CLR: bool, // bit offset: 19 desc: Writing a one clears the corresponding bit in the CON register. - DISUP2_CLR: bool, // bit offset: 20 desc: Writing a one clears the corresponding bit in the CON register. + RUN2_CLR: u1, // bit offset: 16 desc: Writing a one clears the corresponding bit in the CON register. + CENTER2_CLR: u1, // bit offset: 17 desc: Writing a one clears the corresponding bit in the CON register. + POLA2_CLR: u1, // bit offset: 18 desc: Writing a one clears the corresponding bit in the CON register. + DTE2_CLR: u1, // bit offset: 19 desc: Writing a one clears the corresponding bit in the CON register. + DISUP2_CLR: u1, // bit offset: 20 desc: Writing a one clears the corresponding bit in the CON register. + // RESERVED: u8, // bit offset: 21 desc: Writing a one clears the corresponding bit in the CON register. + reserved14: u1 = 0, + reserved13: u1 = 0, + reserved12: u1 = 0, + reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, - reserved6: u1 = 0, - reserved5: u1 = 0, - reserved4: u1 = 0, - reserved3: u1 = 0, - INVBDC_CLR: bool, // bit offset: 29 desc: Writing a one clears the corresponding bit in the CON register. - ACMOD_CLR: bool, // bit offset: 30 desc: Writing a one clears the corresponding bit in the CON register. - DCMODE_CLR: bool, // bit offset: 31 desc: Writing a one clears the corresponding bit in the CON register. + INVBDC_CLR: u1, // bit offset: 29 desc: Writing a one clears the corresponding bit in the CON register. + ACMOD_CLR: u1, // bit offset: 30 desc: Writing a one clears the corresponding bit in the CON register. + DCMODE_CLR: u1, // bit offset: 31 desc: Writing a one clears the corresponding bit in the CON register. }); // byte offset: 12 Capture Control read address pub const CAPCON = mmio(Address + 0x0000000c, 32, packed struct { - CAP0MCI0_RE: bool, // bit offset: 0 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI0. - CAP0MCI0_FE: bool, // bit offset: 1 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI0. - CAP0MCI1_RE: bool, // bit offset: 2 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI1. - CAP0MCI1_FE: bool, // bit offset: 3 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI1. - CAP0MCI2_RE: bool, // bit offset: 4 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI2. - CAP0MCI2_FE: bool, // bit offset: 5 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI2. - CAP1MCI0_RE: bool, // bit offset: 6 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI0. - CAP1MCI0_FE: bool, // bit offset: 7 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI0. - CAP1MCI1_RE: bool, // bit offset: 8 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI1. - CAP1MCI1_FE: bool, // bit offset: 9 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI1. - CAP1MCI2_RE: bool, // bit offset: 10 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI2. - CAP1MCI2_FE: bool, // bit offset: 11 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI2. - CAP2MCI0_RE: bool, // bit offset: 12 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI0. - CAP2MCI0_FE: bool, // bit offset: 13 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI0. - CAP2MCI1_RE: bool, // bit offset: 14 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI1. - CAP2MCI1_FE: bool, // bit offset: 15 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI1. - CAP2MCI2_RE: bool, // bit offset: 16 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI2. - CAP2MCI2_FE: bool, // bit offset: 17 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI2. - RT0: bool, // bit offset: 18 desc: If this bit is 1, TC0 is reset by a channel 0 capture event. - RT1: bool, // bit offset: 19 desc: If this bit is 1, TC1 is reset by a channel 1 capture event. - RT2: bool, // bit offset: 20 desc: If this bit is 1, TC2 is reset by a channel 2 capture event. + CAP0MCI0_RE: u1, // bit offset: 0 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI0. + CAP0MCI0_FE: u1, // bit offset: 1 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI0. + CAP0MCI1_RE: u1, // bit offset: 2 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI1. + CAP0MCI1_FE: u1, // bit offset: 3 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI1. + CAP0MCI2_RE: u1, // bit offset: 4 desc: A 1 in this bit enables a channel 0 capture event on a rising edge on MCI2. + CAP0MCI2_FE: u1, // bit offset: 5 desc: A 1 in this bit enables a channel 0 capture event on a falling edge on MCI2. + CAP1MCI0_RE: u1, // bit offset: 6 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI0. + CAP1MCI0_FE: u1, // bit offset: 7 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI0. + CAP1MCI1_RE: u1, // bit offset: 8 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI1. + CAP1MCI1_FE: u1, // bit offset: 9 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI1. + CAP1MCI2_RE: u1, // bit offset: 10 desc: A 1 in this bit enables a channel 1 capture event on a rising edge on MCI2. + CAP1MCI2_FE: u1, // bit offset: 11 desc: A 1 in this bit enables a channel 1 capture event on a falling edge on MCI2. + CAP2MCI0_RE: u1, // bit offset: 12 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI0. + CAP2MCI0_FE: u1, // bit offset: 13 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI0. + CAP2MCI1_RE: u1, // bit offset: 14 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI1. + CAP2MCI1_FE: u1, // bit offset: 15 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI1. + CAP2MCI2_RE: u1, // bit offset: 16 desc: A 1 in this bit enables a channel 2 capture event on a rising edge on MCI2. + CAP2MCI2_FE: u1, // bit offset: 17 desc: A 1 in this bit enables a channel 2 capture event on a falling edge on MCI2. + RT0: u1, // bit offset: 18 desc: If this bit is 1, TC0 is reset by a channel 0 capture event. + RT1: u1, // bit offset: 19 desc: If this bit is 1, TC1 is reset by a channel 1 capture event. + RT2: u1, // bit offset: 20 desc: If this bit is 1, TC2 is reset by a channel 2 capture event. + // RESERVED: u11, // bit offset: 21 desc: Reserved. padding11: u1 = 0, padding10: u1 = 0, padding9: u1 = 0, @@ -11471,27 +14845,28 @@ pub const MCPWM = extern struct { }); // byte offset: 16 Capture Control set address pub const CAPCON_SET = mmio(Address + 0x00000010, 32, packed struct { - CAP0MCI0_RE_SET: bool, // bit offset: 0 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP0MCI0_FE_SET: bool, // bit offset: 1 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP0MCI1_RE_SET: bool, // bit offset: 2 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP0MCI1_FE_SET: bool, // bit offset: 3 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP0MCI2_RE_SET: bool, // bit offset: 4 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP0MCI2_FE_SET: bool, // bit offset: 5 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI0_RE_SET: bool, // bit offset: 6 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI0_FE_SET: bool, // bit offset: 7 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI1_RE_SET: bool, // bit offset: 8 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI1_FE_SET: bool, // bit offset: 9 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI2_RE_SET: bool, // bit offset: 10 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP1MCI2_FE_SET: bool, // bit offset: 11 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI0_RE_SET: bool, // bit offset: 12 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI0_FE_SET: bool, // bit offset: 13 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI1_RE_SET: bool, // bit offset: 14 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI1_FE_SET: bool, // bit offset: 15 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI2_RE_SET: bool, // bit offset: 16 desc: Writing a one sets the corresponding bits in the CAPCON register. - CAP2MCI2_FE_SET: bool, // bit offset: 17 desc: Writing a one sets the corresponding bits in the CAPCON register. - RT0_SET: bool, // bit offset: 18 desc: Writing a one sets the corresponding bits in the CAPCON register. - RT1_SET: bool, // bit offset: 19 desc: Writing a one sets the corresponding bits in the CAPCON register. - RT2_SET: bool, // bit offset: 20 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI0_RE_SET: u1, // bit offset: 0 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI0_FE_SET: u1, // bit offset: 1 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI1_RE_SET: u1, // bit offset: 2 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI1_FE_SET: u1, // bit offset: 3 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI2_RE_SET: u1, // bit offset: 4 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP0MCI2_FE_SET: u1, // bit offset: 5 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI0_RE_SET: u1, // bit offset: 6 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI0_FE_SET: u1, // bit offset: 7 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI1_RE_SET: u1, // bit offset: 8 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI1_FE_SET: u1, // bit offset: 9 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI2_RE_SET: u1, // bit offset: 10 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP1MCI2_FE_SET: u1, // bit offset: 11 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI0_RE_SET: u1, // bit offset: 12 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI0_FE_SET: u1, // bit offset: 13 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI1_RE_SET: u1, // bit offset: 14 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI1_FE_SET: u1, // bit offset: 15 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI2_RE_SET: u1, // bit offset: 16 desc: Writing a one sets the corresponding bits in the CAPCON register. + CAP2MCI2_FE_SET: u1, // bit offset: 17 desc: Writing a one sets the corresponding bits in the CAPCON register. + RT0_SET: u1, // bit offset: 18 desc: Writing a one sets the corresponding bits in the CAPCON register. + RT1_SET: u1, // bit offset: 19 desc: Writing a one sets the corresponding bits in the CAPCON register. + RT2_SET: u1, // bit offset: 20 desc: Writing a one sets the corresponding bits in the CAPCON register. + // RESERVED: u11, // bit offset: 21 desc: Reserved. padding11: u1 = 0, padding10: u1 = 0, padding9: u1 = 0, @@ -11506,27 +14881,28 @@ pub const MCPWM = extern struct { }); // byte offset: 20 Event Control clear address pub const CAPCON_CLR = mmio(Address + 0x00000014, 32, packed struct { - CAP0MCI0_RE_CLR: bool, // bit offset: 0 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP0MCI0_FE_CLR: bool, // bit offset: 1 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP0MCI1_RE_CLR: bool, // bit offset: 2 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP0MCI1_FE_CLR: bool, // bit offset: 3 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP0MCI2_RE_CLR: bool, // bit offset: 4 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP0MCI2_FE_CLR: bool, // bit offset: 5 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI0_RE_CLR: bool, // bit offset: 6 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI0_FE_CLR: bool, // bit offset: 7 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI1_RE_CLR: bool, // bit offset: 8 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI1_FE_CLR: bool, // bit offset: 9 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI2_RE_CLR: bool, // bit offset: 10 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP1MCI2_FE_CLR: bool, // bit offset: 11 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI0_RE_CLR: bool, // bit offset: 12 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI0_FE_CLR: bool, // bit offset: 13 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI1_RE_CLR: bool, // bit offset: 14 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI1_FE_CLR: bool, // bit offset: 15 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI2_RE_CLR: bool, // bit offset: 16 desc: Writing a one clears the corresponding bits in the CAPCON register. - CAP2MCI2_FE_CLR: bool, // bit offset: 17 desc: Writing a one clears the corresponding bits in the CAPCON register. - RT0_CLR: bool, // bit offset: 18 desc: Writing a one clears the corresponding bits in the CAPCON register. - RT1_CLR: bool, // bit offset: 19 desc: Writing a one clears the corresponding bits in the CAPCON register. - RT2_CLR: bool, // bit offset: 20 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI0_RE_CLR: u1, // bit offset: 0 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI0_FE_CLR: u1, // bit offset: 1 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI1_RE_CLR: u1, // bit offset: 2 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI1_FE_CLR: u1, // bit offset: 3 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI2_RE_CLR: u1, // bit offset: 4 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP0MCI2_FE_CLR: u1, // bit offset: 5 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI0_RE_CLR: u1, // bit offset: 6 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI0_FE_CLR: u1, // bit offset: 7 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI1_RE_CLR: u1, // bit offset: 8 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI1_FE_CLR: u1, // bit offset: 9 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI2_RE_CLR: u1, // bit offset: 10 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP1MCI2_FE_CLR: u1, // bit offset: 11 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI0_RE_CLR: u1, // bit offset: 12 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI0_FE_CLR: u1, // bit offset: 13 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI1_RE_CLR: u1, // bit offset: 14 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI1_FE_CLR: u1, // bit offset: 15 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI2_RE_CLR: u1, // bit offset: 16 desc: Writing a one clears the corresponding bits in the CAPCON register. + CAP2MCI2_FE_CLR: u1, // bit offset: 17 desc: Writing a one clears the corresponding bits in the CAPCON register. + RT0_CLR: u1, // bit offset: 18 desc: Writing a one clears the corresponding bits in the CAPCON register. + RT1_CLR: u1, // bit offset: 19 desc: Writing a one clears the corresponding bits in the CAPCON register. + RT2_CLR: u1, // bit offset: 20 desc: Writing a one clears the corresponding bits in the CAPCON register. + // RESERVED: u11, // bit offset: 21 desc: Reserved. padding11: u1 = 0, padding10: u1 = 0, padding9: u1 = 0, @@ -11580,17 +14956,37 @@ pub const MCPWM = extern struct { DT0: u10, // bit offset: 0 desc: Dead time for channel 0.[1] DT1: u10, // bit offset: 10 desc: Dead time for channel 1.[2] DT2: u10, // bit offset: 20 desc: Dead time for channel 2.[2] + // RESERVED: u2, // bit offset: 30 desc: reserved padding2: u1 = 0, padding1: u1 = 0, }); // byte offset: 64 Communication Pattern register pub const CP = mmio(Address + 0x00000040, 32, packed struct { - CCPA0: bool, // bit offset: 0 desc: Communication pattern output A, channel 0. - CCPB0: bool, // bit offset: 1 desc: Communication pattern output B, channel 0. - CCPA1: bool, // bit offset: 2 desc: Communication pattern output A, channel 1. - CCPB1: bool, // bit offset: 3 desc: Communication pattern output B, channel 1. - CCPA2: bool, // bit offset: 4 desc: Communication pattern output A, channel 2. - CCPB2: bool, // bit offset: 5 desc: Communication pattern output B, channel 2. + CCPA0: enum(u1) { // bit offset: 0 desc: Communication pattern output A, channel 0. + @"MCOA0_PASSIVE_" = 0, // desc: MCOA0 passive. + @"INTERNAL_MCOA0_" = 1, // desc: internal MCOA0. + }, + CCPB0: enum(u1) { // bit offset: 1 desc: Communication pattern output B, channel 0. + @"MCOB0_PASSIVE_" = 0, // desc: MCOB0 passive. + @"MCOB0_TRACKS_INTERNA" = 1, // desc: MCOB0 tracks internal MCOA0. + }, + CCPA1: enum(u1) { // bit offset: 2 desc: Communication pattern output A, channel 1. + @"MCOA1_PASSIVE_" = 0, // desc: MCOA1 passive. + @"MCOA1_TRACKS_INTERNA" = 1, // desc: MCOA1 tracks internal MCOA0. + }, + CCPB1: enum(u1) { // bit offset: 3 desc: Communication pattern output B, channel 1. + @"MCOB1_PASSIVE_" = 0, // desc: MCOB1 passive. + @"MCOB1_TRACKS_INTERNA" = 1, // desc: MCOB1 tracks internal MCOA0. + }, + CCPA2: enum(u1) { // bit offset: 4 desc: Communication pattern output A, channel 2. + @"MCOA2_PASSIVE_" = 0, // desc: MCOA2 passive. + @"MCOA2_TRACKS_INTERNA" = 1, // desc: MCOA2 tracks internal MCOA0. + }, + CCPB2: enum(u1) { // bit offset: 5 desc: Communication pattern output B, channel 2. + @"MCOB2_PASSIVE_" = 0, // desc: MCOB2 passive. + @"MCOB2_TRACKS_INTERNA" = 1, // desc: MCOB2 tracks internal MCOA0. + }, + // RESERVED: u26, // bit offset: 6 desc: Reserved. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -11632,22 +15028,56 @@ pub const MCPWM = extern struct { }); // byte offset: 80 Interrupt Enable read address pub const INTEN = mmio(Address + 0x00000050, 32, packed struct { - ILIM0: bool, // bit offset: 0 desc: Limit interrupt for channel 0. - IMAT0: bool, // bit offset: 1 desc: Match interrupt for channel 0. - ICAP0: bool, // bit offset: 2 desc: Capture interrupt for channel 0. + ILIM0: enum(u1) { // bit offset: 0 desc: Limit interrupt for channel 0. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + IMAT0: enum(u1) { // bit offset: 1 desc: Match interrupt for channel 0. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + ICAP0: enum(u1) { // bit offset: 2 desc: Capture interrupt for channel 0. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1: bool, // bit offset: 4 desc: Limit interrupt for channel 1. - IMAT1: bool, // bit offset: 5 desc: Match interrupt for channel 1. - ICAP1: bool, // bit offset: 6 desc: Capture interrupt for channel 1. + ILIM1: enum(u1) { // bit offset: 4 desc: Limit interrupt for channel 1. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + IMAT1: enum(u1) { // bit offset: 5 desc: Match interrupt for channel 1. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + ICAP1: enum(u1) { // bit offset: 6 desc: Capture interrupt for channel 1. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved2: u1 = 0, - ILIM2: bool, // bit offset: 8 desc: Limit interrupt for channel 2. - IMAT2: bool, // bit offset: 9 desc: Match interrupt for channel 2. - ICAP2: bool, // bit offset: 10 desc: Capture interrupt for channel 2. + ILIM2: enum(u1) { // bit offset: 8 desc: Limit interrupt for channel 2. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + IMAT2: enum(u1) { // bit offset: 9 desc: Match interrupt for channel 2. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + ICAP2: enum(u1) { // bit offset: 10 desc: Capture interrupt for channel 2. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + // RESERVED: u4, // bit offset: 11 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - ABORT: bool, // bit offset: 15 desc: Fast abort interrupt. + ABORT: enum(u1) { // bit offset: 15 desc: Fast abort interrupt. + @"INTERRUPT_DISABLED_" = 0, // desc: Interrupt disabled. + @"INTERRUPT_ENABLED_" = 1, // desc: Interrupt enabled. + }, + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11667,22 +15097,26 @@ pub const MCPWM = extern struct { }); // byte offset: 84 Interrupt Enable set address pub const INTEN_SET = mmio(Address + 0x00000054, 32, packed struct { - ILIM0_SET: bool, // bit offset: 0 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - IMAT0_SET: bool, // bit offset: 1 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - ICAP0_SET: bool, // bit offset: 2 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ILIM0_SET: u1, // bit offset: 0 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + IMAT0_SET: u1, // bit offset: 1 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ICAP0_SET: u1, // bit offset: 2 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1_SET: bool, // bit offset: 4 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - IMAT1_SET: bool, // bit offset: 5 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - ICAP1_SET: bool, // bit offset: 6 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ILIM1_SET: u1, // bit offset: 4 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + IMAT1_SET: u1, // bit offset: 5 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ICAP1_SET: u1, // bit offset: 6 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved3: u1 = 0, reserved2: u1 = 0, - ILIM2_SET: bool, // bit offset: 9 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - IMAT2_SET: bool, // bit offset: 10 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. - ICAP2_SET: bool, // bit offset: 11 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ILIM2_SET: u1, // bit offset: 9 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + IMAT2_SET: u1, // bit offset: 10 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ICAP2_SET: u1, // bit offset: 11 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + // RESERVED: u3, // bit offset: 12 desc: Reserved. + reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, - reserved3: u1 = 0, - ABORT_SET: bool, // bit offset: 15 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + ABORT_SET: u1, // bit offset: 15 desc: Writing a one sets the corresponding bit in INTEN, thus enabling the interrupt. + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11702,22 +15136,26 @@ pub const MCPWM = extern struct { }); // byte offset: 88 Interrupt Enable clear address pub const INTEN_CLR = mmio(Address + 0x00000058, 32, packed struct { - ILIM0_CLR: bool, // bit offset: 0 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - IMAT0_CLR: bool, // bit offset: 1 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP0_CLR: bool, // bit offset: 2 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM0_CLR: u1, // bit offset: 0 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + IMAT0_CLR: u1, // bit offset: 1 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP0_CLR: u1, // bit offset: 2 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1_CLR: bool, // bit offset: 4 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - IMAT1_CLR: bool, // bit offset: 5 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP1_CLR: bool, // bit offset: 6 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM1_CLR: u1, // bit offset: 4 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + IMAT1_CLR: u1, // bit offset: 5 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP1_CLR: u1, // bit offset: 6 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved2: u1 = 0, - ILIM2_CLR: bool, // bit offset: 8 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - IMAT2_CLR: bool, // bit offset: 9 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP2_CLR: bool, // bit offset: 10 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM2_CLR: u1, // bit offset: 8 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + IMAT2_CLR: u1, // bit offset: 9 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP2_CLR: u1, // bit offset: 10 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u4, // bit offset: 11 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - ABORT_CLR: bool, // bit offset: 15 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ABORT_CLR: u1, // bit offset: 15 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11737,24 +15175,79 @@ pub const MCPWM = extern struct { }); // byte offset: 92 Count Control read address pub const CNTCON = mmio(Address + 0x0000005c, 32, packed struct { - TC0MCI0_RE: bool, // bit offset: 0 desc: Counter 0 rising edge mode, channel 0. - TC0MCI0_FE: bool, // bit offset: 1 desc: Counter 0 falling edge mode, channel 0. - TC0MCI1_RE: bool, // bit offset: 2 desc: Counter 0 rising edge mode, channel 1. - TC0MCI1_FE: bool, // bit offset: 3 desc: Counter 0 falling edge mode, channel 1. - TC0MCI2_RE: bool, // bit offset: 4 desc: Counter 0 rising edge mode, channel 2. - TC0MCI2_FE: bool, // bit offset: 5 desc: Counter 0 falling edge mode, channel 2. - TC1MCI0_RE: bool, // bit offset: 6 desc: Counter 1 rising edge mode, channel 0. - TC1MCI0_FE: bool, // bit offset: 7 desc: Counter 1 falling edge mode, channel 0. - TC1MCI1_RE: bool, // bit offset: 8 desc: Counter 1 rising edge mode, channel 1. - TC1MCI1_FE: bool, // bit offset: 9 desc: Counter 1 falling edge mode, channel 1. - TC1MCI2_RE: bool, // bit offset: 10 desc: Counter 1 rising edge mode, channel 2. - TC1MCI2_FE: bool, // bit offset: 11 desc: Counter 1 falling edge mode, channel 2. - TC2MCI0_RE: bool, // bit offset: 12 desc: Counter 2 rising edge mode, channel 0. - TC2MCI0_FE: bool, // bit offset: 13 desc: Counter 2 falling edge mode, channel 0. - TC2MCI1_RE: bool, // bit offset: 14 desc: Counter 2 rising edge mode, channel 1. - TC2MCI1_FE: bool, // bit offset: 15 desc: Counter 2 falling edge mode, channel 1. - TC2MCI2_RE: bool, // bit offset: 16 desc: Counter 2 rising edge mode, channel 2. - TC2MCI2_FE: bool, // bit offset: 17 desc: Counter 2 falling edge mode, channel 2. + TC0MCI0_RE: enum(u1) { // bit offset: 0 desc: Counter 0 rising edge mode, channel 0. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI0 does not affect counter 0. + @"RISING" = 1, // desc: If MODE0 is 1, counter 0 advances on a rising edge on MCI0. + }, + TC0MCI0_FE: enum(u1) { // bit offset: 1 desc: Counter 0 falling edge mode, channel 0. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI0 does not affect counter 0. + @"FALLING" = 1, // desc: If MODE0 is 1, counter 0 advances on a falling edge on MCI0. + }, + TC0MCI1_RE: enum(u1) { // bit offset: 2 desc: Counter 0 rising edge mode, channel 1. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI1 does not affect counter 0. + @"RISING" = 1, // desc: If MODE0 is 1, counter 0 advances on a rising edge on MCI1. + }, + TC0MCI1_FE: enum(u1) { // bit offset: 3 desc: Counter 0 falling edge mode, channel 1. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI1 does not affect counter 0. + @"FALLING" = 1, // desc: If MODE0 is 1, counter 0 advances on a falling edge on MCI1. + }, + TC0MCI2_RE: enum(u1) { // bit offset: 4 desc: Counter 0 rising edge mode, channel 2. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI0 does not affect counter 0. + @"RISING" = 1, // desc: If MODE0 is 1, counter 0 advances on a rising edge on MCI2. + }, + TC0MCI2_FE: enum(u1) { // bit offset: 5 desc: Counter 0 falling edge mode, channel 2. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI0 does not affect counter 0. + @"FALLLING" = 1, // desc: If MODE0 is 1, counter 0 advances on a falling edge on MCI2. + }, + TC1MCI0_RE: enum(u1) { // bit offset: 6 desc: Counter 1 rising edge mode, channel 0. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI0 does not affect counter 1. + @"RISING" = 1, // desc: If MODE1 is 1, counter 1 advances on a rising edge on MCI0. + }, + TC1MCI0_FE: enum(u1) { // bit offset: 7 desc: Counter 1 falling edge mode, channel 0. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI0 does not affect counter 1. + @"FALLING" = 1, // desc: If MODE1 is 1, counter 1 advances on a falling edge on MCI0. + }, + TC1MCI1_RE: enum(u1) { // bit offset: 8 desc: Counter 1 rising edge mode, channel 1. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI1 does not affect counter 1. + @"RISING" = 1, // desc: If MODE1 is 1, counter 1 advances on a rising edge on MCI1. + }, + TC1MCI1_FE: enum(u1) { // bit offset: 9 desc: Counter 1 falling edge mode, channel 1. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI0 does not affect counter 1. + @"FALLING" = 1, // desc: If MODE1 is 1, counter 1 advances on a falling edge on MCI1. + }, + TC1MCI2_RE: enum(u1) { // bit offset: 10 desc: Counter 1 rising edge mode, channel 2. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI2 does not affect counter 1. + @"RISING" = 1, // desc: If MODE1 is 1, counter 1 advances on a rising edge on MCI2. + }, + TC1MCI2_FE: enum(u1) { // bit offset: 11 desc: Counter 1 falling edge mode, channel 2. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI2 does not affect counter 1. + @"FALLING" = 1, // desc: If MODE1 is 1, counter 1 advances on a falling edge on MCI2. + }, + TC2MCI0_RE: enum(u1) { // bit offset: 12 desc: Counter 2 rising edge mode, channel 0. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI0 does not affect counter 2. + @"RISING" = 1, // desc: If MODE2 is 1, counter 2 advances on a rising edge on MCI0. + }, + TC2MCI0_FE: enum(u1) { // bit offset: 13 desc: Counter 2 falling edge mode, channel 0. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI0 does not affect counter 2. + @"FALLING" = 1, // desc: If MODE2 is 1, counter 2 advances on a falling edge on MCI0. + }, + TC2MCI1_RE: enum(u1) { // bit offset: 14 desc: Counter 2 rising edge mode, channel 1. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI1 does not affect counter 2. + @"RISING" = 1, // desc: If MODE2 is 1, counter 2 advances on a rising edge on MCI1. + }, + TC2MCI1_FE: enum(u1) { // bit offset: 15 desc: Counter 2 falling edge mode, channel 1. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI1 does not affect counter 2. + @"FALLING" = 1, // desc: If MODE2 is 1, counter 2 advances on a falling edge on MCI1. + }, + TC2MCI2_RE: enum(u1) { // bit offset: 16 desc: Counter 2 rising edge mode, channel 2. + @"A_RISING_EDGE_ON_MCI" = 0, // desc: A rising edge on MCI2 does not affect counter 2. + @"RISIING" = 1, // desc: If MODE2 is 1, counter 2 advances on a rising edge on MCI2. + }, + TC2MCI2_FE: enum(u1) { // bit offset: 17 desc: Counter 2 falling edge mode, channel 2. + @"A_FALLING_EDGE_ON_MC" = 0, // desc: A falling edge on MCI2 does not affect counter 2. + @"FALLING" = 1, // desc: If MODE2 is 1, counter 2 advances on a falling edge on MCI2. + }, + // RESERVED: u11, // bit offset: 18 desc: Reserved. reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, @@ -11766,30 +15259,40 @@ pub const MCPWM = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - CNTR0: bool, // bit offset: 29 desc: Channel 0 counter/timer mode. - CNTR1: bool, // bit offset: 30 desc: Channel 1 counter/timer mode. - CNTR2: bool, // bit offset: 31 desc: Channel 2 counter/timer mode. + CNTR0: enum(u1) { // bit offset: 29 desc: Channel 0 counter/timer mode. + @"CHANNEL_0_IS_IN_TIME" = 0, // desc: Channel 0 is in timer mode. + @"CHANNEL_0_IS_IN_COUN" = 1, // desc: Channel 0 is in counter mode. + }, + CNTR1: enum(u1) { // bit offset: 30 desc: Channel 1 counter/timer mode. + @"CHANNEL_1_IS_IN_TIME" = 0, // desc: Channel 1 is in timer mode. + @"CHANNEL_1_IS_IN_COUN" = 1, // desc: Channel 1 is in counter mode. + }, + CNTR2: enum(u1) { // bit offset: 31 desc: Channel 2 counter/timer mode. + @"CHANNEL_2_IS_IN_TIME" = 0, // desc: Channel 2 is in timer mode. + @"CHANNEL_2_IS_IN_COUN" = 1, // desc: Channel 2 is in counter mode. + }, }); // byte offset: 96 Count Control set address pub const CNTCON_SET = mmio(Address + 0x00000060, 32, packed struct { - TC0MCI0_RE_SET: bool, // bit offset: 0 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC0MCI0_FE_SET: bool, // bit offset: 1 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC0MCI1_RE_SET: bool, // bit offset: 2 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC0MCI1_FE_SET: bool, // bit offset: 3 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC0MCI2_RE_SET: bool, // bit offset: 4 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC0MCI2_FE_SET: bool, // bit offset: 5 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI0_RE_SET: bool, // bit offset: 6 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI0_FE_SET: bool, // bit offset: 7 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI1_RE_SET: bool, // bit offset: 8 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI1_FE_SET: bool, // bit offset: 9 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI2_RE_SET: bool, // bit offset: 10 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC1MCI2_FE_SET: bool, // bit offset: 11 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI0_RE_SET: bool, // bit offset: 12 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI0_FE_SET: bool, // bit offset: 13 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI1_RE_SET: bool, // bit offset: 14 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI1_FE_SET: bool, // bit offset: 15 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI2_RE_SET: bool, // bit offset: 16 desc: Writing a one sets the corresponding bit in the CNTCON register. - TC2MCI2_FE_SET: bool, // bit offset: 17 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI0_RE_SET: u1, // bit offset: 0 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI0_FE_SET: u1, // bit offset: 1 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI1_RE_SET: u1, // bit offset: 2 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI1_FE_SET: u1, // bit offset: 3 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI2_RE_SET: u1, // bit offset: 4 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC0MCI2_FE_SET: u1, // bit offset: 5 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI0_RE_SET: u1, // bit offset: 6 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI0_FE_SET: u1, // bit offset: 7 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI1_RE_SET: u1, // bit offset: 8 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI1_FE_SET: u1, // bit offset: 9 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI2_RE_SET: u1, // bit offset: 10 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC1MCI2_FE_SET: u1, // bit offset: 11 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI0_RE_SET: u1, // bit offset: 12 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI0_FE_SET: u1, // bit offset: 13 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI1_RE_SET: u1, // bit offset: 14 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI1_FE_SET: u1, // bit offset: 15 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI2_RE_SET: u1, // bit offset: 16 desc: Writing a one sets the corresponding bit in the CNTCON register. + TC2MCI2_FE_SET: u1, // bit offset: 17 desc: Writing a one sets the corresponding bit in the CNTCON register. + // RESERVED: u11, // bit offset: 18 desc: Reserved. reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, @@ -11801,30 +15304,31 @@ pub const MCPWM = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - CNTR0_SET: bool, // bit offset: 29 desc: Writing a one sets the corresponding bit in the CNTCON register. - CNTR1_SET: bool, // bit offset: 30 desc: Writing a one sets the corresponding bit in the CNTCON register. - CNTR2_SET: bool, // bit offset: 31 desc: Writing a one sets the corresponding bit in the CNTCON register. + CNTR0_SET: u1, // bit offset: 29 desc: Writing a one sets the corresponding bit in the CNTCON register. + CNTR1_SET: u1, // bit offset: 30 desc: Writing a one sets the corresponding bit in the CNTCON register. + CNTR2_SET: u1, // bit offset: 31 desc: Writing a one sets the corresponding bit in the CNTCON register. }); // byte offset: 100 Count Control clear address pub const CNTCON_CLR = mmio(Address + 0x00000064, 32, packed struct { - TC0MCI0_RE_CLR: bool, // bit offset: 0 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC0MCI0_FE_CLR: bool, // bit offset: 1 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC0MCI1_RE_CLR: bool, // bit offset: 2 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC0MCI1_FE_CLR: bool, // bit offset: 3 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC0MCI2_RE: bool, // bit offset: 4 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC0MCI2_FE_CLR: bool, // bit offset: 5 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI0_RE_CLR: bool, // bit offset: 6 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI0_FE_CLR: bool, // bit offset: 7 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI1_RE_CLR: bool, // bit offset: 8 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI1_FE_CLR: bool, // bit offset: 9 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI2_RE_CLR: bool, // bit offset: 10 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC1MCI2_FE_CLR: bool, // bit offset: 11 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI0_RE_CLR: bool, // bit offset: 12 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI0_FE_CLR: bool, // bit offset: 13 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI1_RE_CLR: bool, // bit offset: 14 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI1_FE_CLR: bool, // bit offset: 15 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI2_RE_CLR: bool, // bit offset: 16 desc: Writing a one clears the corresponding bit in the CNTCON register. - TC2MCI2_FE_CLR: bool, // bit offset: 17 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI0_RE_CLR: u1, // bit offset: 0 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI0_FE_CLR: u1, // bit offset: 1 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI1_RE_CLR: u1, // bit offset: 2 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI1_FE_CLR: u1, // bit offset: 3 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI2_RE: u1, // bit offset: 4 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC0MCI2_FE_CLR: u1, // bit offset: 5 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI0_RE_CLR: u1, // bit offset: 6 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI0_FE_CLR: u1, // bit offset: 7 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI1_RE_CLR: u1, // bit offset: 8 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI1_FE_CLR: u1, // bit offset: 9 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI2_RE_CLR: u1, // bit offset: 10 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC1MCI2_FE_CLR: u1, // bit offset: 11 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI0_RE_CLR: u1, // bit offset: 12 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI0_FE_CLR: u1, // bit offset: 13 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI1_RE_CLR: u1, // bit offset: 14 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI1_FE_CLR: u1, // bit offset: 15 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI2_RE_CLR: u1, // bit offset: 16 desc: Writing a one clears the corresponding bit in the CNTCON register. + TC2MCI2_FE_CLR: u1, // bit offset: 17 desc: Writing a one clears the corresponding bit in the CNTCON register. + // RESERVED: u11, // bit offset: 18 desc: Reserved. reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, @@ -11836,28 +15340,62 @@ pub const MCPWM = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - CNTR0_CLR: bool, // bit offset: 29 desc: Writing a one clears the corresponding bit in the CNTCON register. - CNTR1_CLR: bool, // bit offset: 30 desc: Writing a one clears the corresponding bit in the CNTCON register. - CNTR2_CLR: bool, // bit offset: 31 desc: Writing a one clears the corresponding bit in the CNTCON register. + CNTR0_CLR: u1, // bit offset: 29 desc: Writing a one clears the corresponding bit in the CNTCON register. + CNTR1_CLR: u1, // bit offset: 30 desc: Writing a one clears the corresponding bit in the CNTCON register. + CNTR2_CLR: u1, // bit offset: 31 desc: Writing a one clears the corresponding bit in the CNTCON register. }); // byte offset: 104 Interrupt flags read address pub const INTF = mmio(Address + 0x00000068, 32, packed struct { - ILIM0_F: bool, // bit offset: 0 desc: Limit interrupt flag for channel 0. - IMAT0_F: bool, // bit offset: 1 desc: Match interrupt flag for channel 0. - ICAP0_F: bool, // bit offset: 2 desc: Capture interrupt flag for channel 0. + ILIM0_F: enum(u1) { // bit offset: 0 desc: Limit interrupt flag for channel 0. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + IMAT0_F: enum(u1) { // bit offset: 1 desc: Match interrupt flag for channel 0. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + ICAP0_F: enum(u1) { // bit offset: 2 desc: Capture interrupt flag for channel 0. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1_F: bool, // bit offset: 4 desc: Limit interrupt flag for channel 1. - IMAT1_F: bool, // bit offset: 5 desc: Match interrupt flag for channel 1. - ICAP1_F: bool, // bit offset: 6 desc: Capture interrupt flag for channel 1. + ILIM1_F: enum(u1) { // bit offset: 4 desc: Limit interrupt flag for channel 1. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + IMAT1_F: enum(u1) { // bit offset: 5 desc: Match interrupt flag for channel 1. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + ICAP1_F: enum(u1) { // bit offset: 6 desc: Capture interrupt flag for channel 1. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved2: u1 = 0, - ILIM2_F: bool, // bit offset: 8 desc: Limit interrupt flag for channel 2. - IMAT2_F: bool, // bit offset: 9 desc: Match interrupt flag for channel 2. - ICAP2_F: bool, // bit offset: 10 desc: Capture interrupt flag for channel 2. + ILIM2_F: enum(u1) { // bit offset: 8 desc: Limit interrupt flag for channel 2. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + IMAT2_F: enum(u1) { // bit offset: 9 desc: Match interrupt flag for channel 2. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + ICAP2_F: enum(u1) { // bit offset: 10 desc: Capture interrupt flag for channel 2. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + // RESERVED: u4, // bit offset: 11 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - ABORT_F: bool, // bit offset: 15 desc: Fast abort interrupt flag. + ABORT_F: enum(u1) { // bit offset: 15 desc: Fast abort interrupt flag. + @"THIS_INTERRUPT_SOURC" = 0, // desc: This interrupt source is not contributing to the MCPWM interrupt request. + @"IF_THE_CORRESPONDING" = 1, // desc: If the corresponding bit in INTEN is 1, the MCPWM module is asserting its interrupt request to the Interrupt Controller. + }, + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11877,22 +15415,26 @@ pub const MCPWM = extern struct { }); // byte offset: 108 Interrupt flags set address pub const INTF_SET = mmio(Address + 0x0000006c, 32, packed struct { - ILIM0_F_SET: bool, // bit offset: 0 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - IMAT0_F_SET: bool, // bit offset: 1 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - ICAP0_F_SET: bool, // bit offset: 2 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ILIM0_F_SET: u1, // bit offset: 0 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + IMAT0_F_SET: u1, // bit offset: 1 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ICAP0_F_SET: u1, // bit offset: 2 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1_F_SET: bool, // bit offset: 4 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - IMAT1_F_SET: bool, // bit offset: 5 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - ICAP1_F_SET: bool, // bit offset: 6 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ILIM1_F_SET: u1, // bit offset: 4 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + IMAT1_F_SET: u1, // bit offset: 5 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ICAP1_F_SET: u1, // bit offset: 6 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved2: u1 = 0, - ILIM2_F_SET: bool, // bit offset: 8 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - IMAT2_F_SET: bool, // bit offset: 9 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. - ICAP2_F_SET: bool, // bit offset: 10 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ILIM2_F_SET: u1, // bit offset: 8 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + IMAT2_F_SET: u1, // bit offset: 9 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ICAP2_F_SET: u1, // bit offset: 10 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + // RESERVED: u4, // bit offset: 11 desc: Reserved. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - ABORT_F_SET: bool, // bit offset: 15 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + ABORT_F_SET: u1, // bit offset: 15 desc: Writing a one sets the corresponding bit in the INTF register, thus possibly simulating hardware interrupt. + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11912,22 +15454,26 @@ pub const MCPWM = extern struct { }); // byte offset: 112 Interrupt flags clear address pub const INTF_CLR = mmio(Address + 0x00000070, 32, packed struct { - ILIM0_F_CLR: bool, // bit offset: 0 desc: Writing a one clears the corresponding bit in the INTF register, thus clearing the corresponding interrupt request. - IMAT0_F_CLR: bool, // bit offset: 1 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP0_F_CLR: bool, // bit offset: 2 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM0_F_CLR: u1, // bit offset: 0 desc: Writing a one clears the corresponding bit in the INTF register, thus clearing the corresponding interrupt request. + IMAT0_F_CLR: u1, // bit offset: 1 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP0_F_CLR: u1, // bit offset: 2 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u1, // bit offset: 3 desc: Reserved. reserved1: u1 = 0, - ILIM1_F_CLR: bool, // bit offset: 4 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - IMAT1_F_CLR: bool, // bit offset: 5 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP1_F_CLR: bool, // bit offset: 6 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM1_F_CLR: u1, // bit offset: 4 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + IMAT1_F_CLR: u1, // bit offset: 5 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP1_F_CLR: u1, // bit offset: 6 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u1, // bit offset: 7 desc: Reserved. reserved2: u1 = 0, - ILIM2_F_CLR: bool, // bit offset: 8 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - IMAT2_F_CLR: bool, // bit offset: 9 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. - ICAP2_F_CLR: bool, // bit offset: 10 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ILIM2_F_CLR: u1, // bit offset: 8 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + IMAT2_F_CLR: u1, // bit offset: 9 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ICAP2_F_CLR: u1, // bit offset: 10 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u4, // bit offset: 11 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, - ABORT_F_CLR: bool, // bit offset: 15 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + ABORT_F_CLR: u1, // bit offset: 15 desc: Writing a one clears the corresponding bit in INTEN, thus disabling the interrupt. + // RESERVED: u16, // bit offset: 16 desc: Reserved. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -11947,9 +15493,10 @@ pub const MCPWM = extern struct { }); // byte offset: 116 Capture clear address pub const CAP_CLR = mmio(Address + 0x00000074, 32, packed struct { - CAP_CLR0: bool, // bit offset: 0 desc: Writing a 1 to this bit clears the CAP0 register. - CAP_CLR1: bool, // bit offset: 1 desc: Writing a 1 to this bit clears the CAP1 register. - CAP_CLR2: bool, // bit offset: 2 desc: Writing a 1 to this bit clears the CAP2 register. + CAP_CLR0: u1, // bit offset: 0 desc: Writing a 1 to this bit clears the CAP0 register. + CAP_CLR1: u1, // bit offset: 1 desc: Writing a 1 to this bit clears the CAP1 register. + CAP_CLR2: u1, // bit offset: 2 desc: Writing a 1 to this bit clears the CAP2 register. + // RESERVED: u29, // bit offset: 3 desc: Reserved padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -11985,10 +15532,11 @@ pub const QEI = extern struct { pub const Address: u32 = 0x400bc000; // byte offset: 0 Control register pub const CON = mmio(Address + 0x00000000, 32, packed struct { - RESP: bool, // bit offset: 0 desc: Reset position counter. When set = 1, resets the position counter to all zeros. Autoclears when the position counter is cleared. - RESPI: bool, // bit offset: 1 desc: Reset position counter on index. When set = 1, resets the position counter to all zeros once only the first time an index pulse occurs. Autoclears when the position counter is cleared. - RESV: bool, // bit offset: 2 desc: Reset velocity. When set = 1, resets the velocity counter to all zeros, reloads the velocity timer, and presets the velocity compare register. Autoclears when the velocity counter is cleared. - RESI: bool, // bit offset: 3 desc: Reset index counter. When set = 1, resets the index counter to all zeros. Autoclears when the index counter is cleared. + RESP: u1, // bit offset: 0 desc: Reset position counter. When set = 1, resets the position counter to all zeros. Autoclears when the position counter is cleared. + RESPI: u1, // bit offset: 1 desc: Reset position counter on index. When set = 1, resets the position counter to all zeros once only the first time an index pulse occurs. Autoclears when the position counter is cleared. + RESV: u1, // bit offset: 2 desc: Reset velocity. When set = 1, resets the velocity counter to all zeros, reloads the velocity timer, and presets the velocity compare register. Autoclears when the velocity counter is cleared. + RESI: u1, // bit offset: 3 desc: Reset index counter. When set = 1, resets the index counter to all zeros. Autoclears when the index counter is cleared. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12020,7 +15568,8 @@ pub const QEI = extern struct { }); // byte offset: 4 Status register pub const STAT = mmio(Address + 0x00000004, 32, packed struct { - DIR: bool, // bit offset: 0 desc: Direction bit. In combination with DIRINV bit indicates forward or reverse direction. See Table 597. + DIR: u1, // bit offset: 0 desc: Direction bit. In combination with DIRINV bit indicates forward or reverse direction. See Table 597. + // RESERVED: u31, // bit offset: 1 desc: Reserved. Read value is undefined, only zero should be written. padding31: u1 = 0, padding30: u1 = 0, padding29: u1 = 0, @@ -12055,11 +15604,12 @@ pub const QEI = extern struct { }); // byte offset: 8 Configuration register pub const CONF = mmio(Address + 0x00000008, 32, packed struct { - DIRINV: bool, // bit offset: 0 desc: Direction invert. When 1, complements the DIR bit. - SIGMODE: bool, // bit offset: 1 desc: Signal Mode. When 0, PhA and PhB function as quadrature encoder inputs. When 1, PhA functions as the direction signal and PhB functions as the clock signal. - CAPMODE: bool, // bit offset: 2 desc: Capture Mode. When 0, only PhA edges are counted (2X). When 1, BOTH PhA and PhB edges are counted (4X), increasing resolution but decreasing range. - INVINX: bool, // bit offset: 3 desc: Invert Index. When 1, inverts the sense of the index input. - CRESPI: bool, // bit offset: 4 desc: Continuously reset the position counter on index. When 1, resets the position counter to all zeros whenever an index pulse occurs after the next position increase (recalibration). + DIRINV: u1, // bit offset: 0 desc: Direction invert. When 1, complements the DIR bit. + SIGMODE: u1, // bit offset: 1 desc: Signal Mode. When 0, PhA and PhB function as quadrature encoder inputs. When 1, PhA functions as the direction signal and PhB functions as the clock signal. + CAPMODE: u1, // bit offset: 2 desc: Capture Mode. When 0, only PhA edges are counted (2X). When 1, BOTH PhA and PhB edges are counted (4X), increasing resolution but decreasing range. + INVINX: u1, // bit offset: 3 desc: Invert Index. When 1, inverts the sense of the index input. + CRESPI: u1, // bit offset: 4 desc: Continuously reset the position counter on index. When 1, resets the position counter to all zeros whenever an index pulse occurs after the next position increase (recalibration). + // RESERVED: u11, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. reserved11: u1 = 0, reserved10: u1 = 0, reserved9: u1 = 0, @@ -12072,6 +15622,7 @@ pub const QEI = extern struct { reserved2: u1 = 0, reserved1: u1 = 0, INXGATE: u4, // bit offset: 16 desc: Index gating configuration: When INXGATE[16] = 1, pass the index when PHA = 1 and PHB = 0, otherwise block index. When INXGATE[17] = 1, pass the index when PHA = 1 and PHB = 1, otherwise block index. When INXGATE[18] = 1, pass the index when PHA = 0 and PHB = 1, otherwise block index. When INXGATE[19] = 1, pass the index when PHA = 0 and PHB = 0, otherwise block index. + // RESERVED: u12, // bit offset: 20 desc: Reserved. Read value is undefined, only zero should be written. padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -12139,22 +15690,23 @@ pub const QEI = extern struct { }); // byte offset: 4056 Interrupt enable clear register pub const IEC = mmio(Address + 0x00000fd8, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: Writing a 1 disables the INX_Int interrupt in the QEIIE register. - TIM_INT: bool, // bit offset: 1 desc: Writing a 1 disables the TIN_Int interrupt in the QEIIE register. - VELC_INT: bool, // bit offset: 2 desc: Writing a 1 disables the VELC_Int interrupt in the QEIIE register. - DIR_INT: bool, // bit offset: 3 desc: Writing a 1 disables the DIR_Int interrupt in the QEIIE register. - ERR_INT: bool, // bit offset: 4 desc: Writing a 1 disables the ERR_Int interrupt in the QEIIE register. - ENCLK_INT: bool, // bit offset: 5 desc: Writing a 1 disables the ENCLK_Int interrupt in the QEIIE register. - POS0_INT: bool, // bit offset: 6 desc: Writing a 1 disables the POS0_Int interrupt in the QEIIE register. - POS1_INT: bool, // bit offset: 7 desc: Writing a 1 disables the POS1_Int interrupt in the QEIIE register. - POS2_INT: bool, // bit offset: 8 desc: Writing a 1 disables the POS2_Int interrupt in the QEIIE register. - REV0_INT: bool, // bit offset: 9 desc: Writing a 1 disables the REV0_Int interrupt in the QEIIE register. - POS0REV_INT: bool, // bit offset: 10 desc: Writing a 1 disables the POS0REV_Int interrupt in the QEIIE register. - POS1REV_INT: bool, // bit offset: 11 desc: Writing a 1 disables the POS1REV_Int interrupt in the QEIIE register. - POS2REV_INT: bool, // bit offset: 12 desc: Writing a 1 disables the POS2REV_Int interrupt in the QEIIE register. - REV1_INT: bool, // bit offset: 13 desc: Writing a 1 disables the REV1_Int interrupt in the QEIIE register. - REV2_INT: bool, // bit offset: 14 desc: Writing a 1 disables the REV2_Int interrupt in the QEIIE register. - MAXPOS_INT: bool, // bit offset: 15 desc: Writing a 1 disables the MAXPOS_Int interrupt in the QEIIE register. + INX_INT: u1, // bit offset: 0 desc: Writing a 1 disables the INX_Int interrupt in the QEIIE register. + TIM_INT: u1, // bit offset: 1 desc: Writing a 1 disables the TIN_Int interrupt in the QEIIE register. + VELC_INT: u1, // bit offset: 2 desc: Writing a 1 disables the VELC_Int interrupt in the QEIIE register. + DIR_INT: u1, // bit offset: 3 desc: Writing a 1 disables the DIR_Int interrupt in the QEIIE register. + ERR_INT: u1, // bit offset: 4 desc: Writing a 1 disables the ERR_Int interrupt in the QEIIE register. + ENCLK_INT: u1, // bit offset: 5 desc: Writing a 1 disables the ENCLK_Int interrupt in the QEIIE register. + POS0_INT: u1, // bit offset: 6 desc: Writing a 1 disables the POS0_Int interrupt in the QEIIE register. + POS1_INT: u1, // bit offset: 7 desc: Writing a 1 disables the POS1_Int interrupt in the QEIIE register. + POS2_INT: u1, // bit offset: 8 desc: Writing a 1 disables the POS2_Int interrupt in the QEIIE register. + REV0_INT: u1, // bit offset: 9 desc: Writing a 1 disables the REV0_Int interrupt in the QEIIE register. + POS0REV_INT: u1, // bit offset: 10 desc: Writing a 1 disables the POS0REV_Int interrupt in the QEIIE register. + POS1REV_INT: u1, // bit offset: 11 desc: Writing a 1 disables the POS1REV_Int interrupt in the QEIIE register. + POS2REV_INT: u1, // bit offset: 12 desc: Writing a 1 disables the POS2REV_Int interrupt in the QEIIE register. + REV1_INT: u1, // bit offset: 13 desc: Writing a 1 disables the REV1_Int interrupt in the QEIIE register. + REV2_INT: u1, // bit offset: 14 desc: Writing a 1 disables the REV2_Int interrupt in the QEIIE register. + MAXPOS_INT: u1, // bit offset: 15 desc: Writing a 1 disables the MAXPOS_Int interrupt in the QEIIE register. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12174,22 +15726,23 @@ pub const QEI = extern struct { }); // byte offset: 4060 Interrupt enable set register pub const IES = mmio(Address + 0x00000fdc, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: Writing a 1 enables the INX_Int interrupt in the QEIIE register. - TIM_INT: bool, // bit offset: 1 desc: Writing a 1 enables the TIN_Int interrupt in the QEIIE register. - VELC_INT: bool, // bit offset: 2 desc: Writing a 1 enables the VELC_Int interrupt in the QEIIE register. - DIR_INT: bool, // bit offset: 3 desc: Writing a 1 enables the DIR_Int interrupt in the QEIIE register. - ERR_INT: bool, // bit offset: 4 desc: Writing a 1 enables the ERR_Int interrupt in the QEIIE register. - ENCLK_INT: bool, // bit offset: 5 desc: Writing a 1 enables the ENCLK_Int interrupt in the QEIIE register. - POS0_INT: bool, // bit offset: 6 desc: Writing a 1 enables the POS0_Int interrupt in the QEIIE register. - POS1_INT: bool, // bit offset: 7 desc: Writing a 1 enables the POS1_Int interrupt in the QEIIE register. - POS2_INT: bool, // bit offset: 8 desc: Writing a 1 enables the POS2_Int interrupt in the QEIIE register. - REV0_INT: bool, // bit offset: 9 desc: Writing a 1 enables the REV0_Int interrupt in the QEIIE register. - POS0REV_INT: bool, // bit offset: 10 desc: Writing a 1 enables the POS0REV_Int interrupt in the QEIIE register. - POS1REV_INT: bool, // bit offset: 11 desc: Writing a 1 enables the POS1REV_Int interrupt in the QEIIE register. - POS2REV_INT: bool, // bit offset: 12 desc: Writing a 1 enables the POS2REV_Int interrupt in the QEIIE register. - REV1_INT: bool, // bit offset: 13 desc: Writing a 1 enables the REV1_Int interrupt in the QEIIE register. - REV2_INT: bool, // bit offset: 14 desc: Writing a 1 enables the REV2_Int interrupt in the QEIIE register. - MAXPOS_INT: bool, // bit offset: 15 desc: Writing a 1 enables the MAXPOS_Int interrupt in the QEIIE register. + INX_INT: u1, // bit offset: 0 desc: Writing a 1 enables the INX_Int interrupt in the QEIIE register. + TIM_INT: u1, // bit offset: 1 desc: Writing a 1 enables the TIN_Int interrupt in the QEIIE register. + VELC_INT: u1, // bit offset: 2 desc: Writing a 1 enables the VELC_Int interrupt in the QEIIE register. + DIR_INT: u1, // bit offset: 3 desc: Writing a 1 enables the DIR_Int interrupt in the QEIIE register. + ERR_INT: u1, // bit offset: 4 desc: Writing a 1 enables the ERR_Int interrupt in the QEIIE register. + ENCLK_INT: u1, // bit offset: 5 desc: Writing a 1 enables the ENCLK_Int interrupt in the QEIIE register. + POS0_INT: u1, // bit offset: 6 desc: Writing a 1 enables the POS0_Int interrupt in the QEIIE register. + POS1_INT: u1, // bit offset: 7 desc: Writing a 1 enables the POS1_Int interrupt in the QEIIE register. + POS2_INT: u1, // bit offset: 8 desc: Writing a 1 enables the POS2_Int interrupt in the QEIIE register. + REV0_INT: u1, // bit offset: 9 desc: Writing a 1 enables the REV0_Int interrupt in the QEIIE register. + POS0REV_INT: u1, // bit offset: 10 desc: Writing a 1 enables the POS0REV_Int interrupt in the QEIIE register. + POS1REV_INT: u1, // bit offset: 11 desc: Writing a 1 enables the POS1REV_Int interrupt in the QEIIE register. + POS2REV_INT: u1, // bit offset: 12 desc: Writing a 1 enables the POS2REV_Int interrupt in the QEIIE register. + REV1_INT: u1, // bit offset: 13 desc: Writing a 1 enables the REV1_Int interrupt in the QEIIE register. + REV2_INT: u1, // bit offset: 14 desc: Writing a 1 enables the REV2_Int interrupt in the QEIIE register. + MAXPOS_INT: u1, // bit offset: 15 desc: Writing a 1 enables the MAXPOS_Int interrupt in the QEIIE register. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12209,22 +15762,23 @@ pub const QEI = extern struct { }); // byte offset: 4064 Interrupt status register pub const INTSTAT = mmio(Address + 0x00000fe0, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: Indicates that an index pulse was detected. - TIM_INT: bool, // bit offset: 1 desc: Indicates that a velocity timer overflow occurred - VELC_INT: bool, // bit offset: 2 desc: Indicates that captured velocity is less than compare velocity. - DIR_INT: bool, // bit offset: 3 desc: Indicates that a change of direction was detected. - ERR_INT: bool, // bit offset: 4 desc: Indicates that an encoder phase error was detected. - ENCLK_INT: bool, // bit offset: 5 desc: Indicates that and encoder clock pulse was detected. - POS0_INT: bool, // bit offset: 6 desc: Indicates that the position 0 compare value is equal to the current position. - POS1_INT: bool, // bit offset: 7 desc: Indicates that the position 1compare value is equal to the current position. - POS2_INT: bool, // bit offset: 8 desc: Indicates that the position 2 compare value is equal to the current position. - REV0_INT: bool, // bit offset: 9 desc: Indicates that the index compare 0 value is equal to the current index count. - POS0REV_INT: bool, // bit offset: 10 desc: Combined position 0 and revolution count interrupt. Set when both the POS0_Int bit is set and the REV0_Int is set. - POS1REV_INT: bool, // bit offset: 11 desc: Combined position 1 and revolution count interrupt. Set when both the POS1_Int bit is set and the REV1_Int is set. - POS2REV_INT: bool, // bit offset: 12 desc: Combined position 2 and revolution count interrupt. Set when both the POS2_Int bit is set and the REV2_Int is set. - REV1_INT: bool, // bit offset: 13 desc: Indicates that the index compare 1value is equal to the current index count. - REV2_INT: bool, // bit offset: 14 desc: Indicates that the index compare 2 value is equal to the current index count. - MAXPOS_INT: bool, // bit offset: 15 desc: Indicates that the current position count goes through the MAXPOS value to zero in the forward direction, or through zero to MAXPOS in the reverse direction. + INX_INT: u1, // bit offset: 0 desc: Indicates that an index pulse was detected. + TIM_INT: u1, // bit offset: 1 desc: Indicates that a velocity timer overflow occurred + VELC_INT: u1, // bit offset: 2 desc: Indicates that captured velocity is less than compare velocity. + DIR_INT: u1, // bit offset: 3 desc: Indicates that a change of direction was detected. + ERR_INT: u1, // bit offset: 4 desc: Indicates that an encoder phase error was detected. + ENCLK_INT: u1, // bit offset: 5 desc: Indicates that and encoder clock pulse was detected. + POS0_INT: u1, // bit offset: 6 desc: Indicates that the position 0 compare value is equal to the current position. + POS1_INT: u1, // bit offset: 7 desc: Indicates that the position 1compare value is equal to the current position. + POS2_INT: u1, // bit offset: 8 desc: Indicates that the position 2 compare value is equal to the current position. + REV0_INT: u1, // bit offset: 9 desc: Indicates that the index compare 0 value is equal to the current index count. + POS0REV_INT: u1, // bit offset: 10 desc: Combined position 0 and revolution count interrupt. Set when both the POS0_Int bit is set and the REV0_Int is set. + POS1REV_INT: u1, // bit offset: 11 desc: Combined position 1 and revolution count interrupt. Set when both the POS1_Int bit is set and the REV1_Int is set. + POS2REV_INT: u1, // bit offset: 12 desc: Combined position 2 and revolution count interrupt. Set when both the POS2_Int bit is set and the REV2_Int is set. + REV1_INT: u1, // bit offset: 13 desc: Indicates that the index compare 1value is equal to the current index count. + REV2_INT: u1, // bit offset: 14 desc: Indicates that the index compare 2 value is equal to the current index count. + MAXPOS_INT: u1, // bit offset: 15 desc: Indicates that the current position count goes through the MAXPOS value to zero in the forward direction, or through zero to MAXPOS in the reverse direction. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12244,22 +15798,23 @@ pub const QEI = extern struct { }); // byte offset: 4068 Interrupt enable register pub const IE = mmio(Address + 0x00000fe4, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: When 1, the INX_Int interrupt is enabled. - TIM_INT: bool, // bit offset: 1 desc: When 1, the TIN_Int interrupt is enabled. - VELC_INT: bool, // bit offset: 2 desc: When 1, the VELC_Int interrupt is enabled. - DIR_INT: bool, // bit offset: 3 desc: When 1, the DIR_Int interrupt is enabled. - ERR_INT: bool, // bit offset: 4 desc: When 1, the ERR_Int interrupt is enabled. - ENCLK_INT: bool, // bit offset: 5 desc: When 1, the ENCLK_Int interrupt is enabled. - POS0_INT: bool, // bit offset: 6 desc: When 1, the POS0_Int interrupt is enabled. - POS1_INT: bool, // bit offset: 7 desc: When 1, the POS1_Int interrupt is enabled. - POS2_INT: bool, // bit offset: 8 desc: When 1, the POS2_Int interrupt is enabled. - REV0_INT: bool, // bit offset: 9 desc: When 1, the REV0_Int interrupt is enabled. - POS0REV_INT: bool, // bit offset: 10 desc: When 1, the POS0REV_Int interrupt is enabled. - POS1REV_INT: bool, // bit offset: 11 desc: When 1, the POS1REV_Int interrupt is enabled. - POS2REV_INT: bool, // bit offset: 12 desc: When 1, the POS2REV_Int interrupt is enabled. - REV1_INT: bool, // bit offset: 13 desc: When 1, the REV1_Int interrupt is enabled. - REV2_INT: bool, // bit offset: 14 desc: When 1, the REV2_Int interrupt is enabled. - MAXPOS_INT: bool, // bit offset: 15 desc: When 1, the MAXPOS_Int interrupt is enabled. + INX_INT: u1, // bit offset: 0 desc: When 1, the INX_Int interrupt is enabled. + TIM_INT: u1, // bit offset: 1 desc: When 1, the TIN_Int interrupt is enabled. + VELC_INT: u1, // bit offset: 2 desc: When 1, the VELC_Int interrupt is enabled. + DIR_INT: u1, // bit offset: 3 desc: When 1, the DIR_Int interrupt is enabled. + ERR_INT: u1, // bit offset: 4 desc: When 1, the ERR_Int interrupt is enabled. + ENCLK_INT: u1, // bit offset: 5 desc: When 1, the ENCLK_Int interrupt is enabled. + POS0_INT: u1, // bit offset: 6 desc: When 1, the POS0_Int interrupt is enabled. + POS1_INT: u1, // bit offset: 7 desc: When 1, the POS1_Int interrupt is enabled. + POS2_INT: u1, // bit offset: 8 desc: When 1, the POS2_Int interrupt is enabled. + REV0_INT: u1, // bit offset: 9 desc: When 1, the REV0_Int interrupt is enabled. + POS0REV_INT: u1, // bit offset: 10 desc: When 1, the POS0REV_Int interrupt is enabled. + POS1REV_INT: u1, // bit offset: 11 desc: When 1, the POS1REV_Int interrupt is enabled. + POS2REV_INT: u1, // bit offset: 12 desc: When 1, the POS2REV_Int interrupt is enabled. + REV1_INT: u1, // bit offset: 13 desc: When 1, the REV1_Int interrupt is enabled. + REV2_INT: u1, // bit offset: 14 desc: When 1, the REV2_Int interrupt is enabled. + MAXPOS_INT: u1, // bit offset: 15 desc: When 1, the MAXPOS_Int interrupt is enabled. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12279,22 +15834,23 @@ pub const QEI = extern struct { }); // byte offset: 4072 Interrupt status clear register pub const CLR = mmio(Address + 0x00000fe8, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: Writing a 1 clears the INX_Int bit in QEIINTSTAT. - TIM_INT: bool, // bit offset: 1 desc: Writing a 1 clears the TIN_Int bit in QEIINTSTAT. - VELC_INT: bool, // bit offset: 2 desc: Writing a 1 clears the VELC_Int bit in QEIINTSTAT. - DIR_INT: bool, // bit offset: 3 desc: Writing a 1 clears the DIR_Int bit in QEIINTSTAT. - ERR_INT: bool, // bit offset: 4 desc: Writing a 1 clears the ERR_Int bit in QEIINTSTAT. - ENCLK_INT: bool, // bit offset: 5 desc: Writing a 1 clears the ENCLK_Int bit in QEIINTSTAT. - POS0_INT: bool, // bit offset: 6 desc: Writing a 1 clears the POS0_Int bit in QEIINTSTAT. - POS1_INT: bool, // bit offset: 7 desc: Writing a 1 clears the POS1_Int bit in QEIINTSTAT. - POS2_INT: bool, // bit offset: 8 desc: Writing a 1 clears the POS2_Int bit in QEIINTSTAT. - REV0_INT: bool, // bit offset: 9 desc: Writing a 1 clears the REV0_Int bit in QEIINTSTAT. - POS0REV_INT: bool, // bit offset: 10 desc: Writing a 1 clears the POS0REV_Int bit in QEIINTSTAT. - POS1REV_INT: bool, // bit offset: 11 desc: Writing a 1 clears the POS1REV_Int bit in QEIINTSTAT. - POS2REV_INT: bool, // bit offset: 12 desc: Writing a 1 clears the POS2REV_Int bit in QEIINTSTAT. - REV1_INT: bool, // bit offset: 13 desc: Writing a 1 clears the REV1_Int bit in QEIINTSTAT. - REV2_INT: bool, // bit offset: 14 desc: Writing a 1 clears the REV2_Int bit in QEIINTSTAT. - MAXPOS_INT: bool, // bit offset: 15 desc: Writing a 1 clears the MAXPOS_Int bit in QEIINTSTAT. + INX_INT: u1, // bit offset: 0 desc: Writing a 1 clears the INX_Int bit in QEIINTSTAT. + TIM_INT: u1, // bit offset: 1 desc: Writing a 1 clears the TIN_Int bit in QEIINTSTAT. + VELC_INT: u1, // bit offset: 2 desc: Writing a 1 clears the VELC_Int bit in QEIINTSTAT. + DIR_INT: u1, // bit offset: 3 desc: Writing a 1 clears the DIR_Int bit in QEIINTSTAT. + ERR_INT: u1, // bit offset: 4 desc: Writing a 1 clears the ERR_Int bit in QEIINTSTAT. + ENCLK_INT: u1, // bit offset: 5 desc: Writing a 1 clears the ENCLK_Int bit in QEIINTSTAT. + POS0_INT: u1, // bit offset: 6 desc: Writing a 1 clears the POS0_Int bit in QEIINTSTAT. + POS1_INT: u1, // bit offset: 7 desc: Writing a 1 clears the POS1_Int bit in QEIINTSTAT. + POS2_INT: u1, // bit offset: 8 desc: Writing a 1 clears the POS2_Int bit in QEIINTSTAT. + REV0_INT: u1, // bit offset: 9 desc: Writing a 1 clears the REV0_Int bit in QEIINTSTAT. + POS0REV_INT: u1, // bit offset: 10 desc: Writing a 1 clears the POS0REV_Int bit in QEIINTSTAT. + POS1REV_INT: u1, // bit offset: 11 desc: Writing a 1 clears the POS1REV_Int bit in QEIINTSTAT. + POS2REV_INT: u1, // bit offset: 12 desc: Writing a 1 clears the POS2REV_Int bit in QEIINTSTAT. + REV1_INT: u1, // bit offset: 13 desc: Writing a 1 clears the REV1_Int bit in QEIINTSTAT. + REV2_INT: u1, // bit offset: 14 desc: Writing a 1 clears the REV2_Int bit in QEIINTSTAT. + MAXPOS_INT: u1, // bit offset: 15 desc: Writing a 1 clears the MAXPOS_Int bit in QEIINTSTAT. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12314,22 +15870,23 @@ pub const QEI = extern struct { }); // byte offset: 4076 Interrupt status set register pub const SET = mmio(Address + 0x00000fec, 32, packed struct { - INX_INT: bool, // bit offset: 0 desc: Writing a 1 sets the INX_Int bit in QEIINTSTAT. - TIM_INT: bool, // bit offset: 1 desc: Writing a 1 sets the TIN_Int bit in QEIINTSTAT. - VELC_INT: bool, // bit offset: 2 desc: Writing a 1 sets the VELC_Int bit in QEIINTSTAT. - DIR_INT: bool, // bit offset: 3 desc: Writing a 1 sets the DIR_Int bit in QEIINTSTAT. - ERR_INT: bool, // bit offset: 4 desc: Writing a 1 sets the ERR_Int bit in QEIINTSTAT. - ENCLK_INT: bool, // bit offset: 5 desc: Writing a 1 sets the ENCLK_Int bit in QEIINTSTAT. - POS0_INT: bool, // bit offset: 6 desc: Writing a 1 sets the POS0_Int bit in QEIINTSTAT. - POS1_INT: bool, // bit offset: 7 desc: Writing a 1 sets the POS1_Int bit in QEIINTSTAT. - POS2_INT: bool, // bit offset: 8 desc: Writing a 1 sets the POS2_Int bit in QEIINTSTAT. - REV0_INT: bool, // bit offset: 9 desc: Writing a 1 sets the REV0_Int bit in QEIINTSTAT. - POS0REV_INT: bool, // bit offset: 10 desc: Writing a 1 sets the POS0REV_Int bit in QEIINTSTAT. - POS1REV_INT: bool, // bit offset: 11 desc: Writing a 1 sets the POS1REV_Int bit in QEIINTSTAT. - POS2REV_INT: bool, // bit offset: 12 desc: Writing a 1 sets the POS2REV_Int bit in QEIINTSTAT. - REV1_INT: bool, // bit offset: 13 desc: Writing a 1 sets the REV1_Int bit in QEIINTSTAT. - REV2_INT: bool, // bit offset: 14 desc: Writing a 1 sets the REV2_Int bit in QEIINTSTAT. - MAXPOS_INT: bool, // bit offset: 15 desc: Writing a 1 sets the MAXPOS_Int bit in QEIINTSTAT. + INX_INT: u1, // bit offset: 0 desc: Writing a 1 sets the INX_Int bit in QEIINTSTAT. + TIM_INT: u1, // bit offset: 1 desc: Writing a 1 sets the TIN_Int bit in QEIINTSTAT. + VELC_INT: u1, // bit offset: 2 desc: Writing a 1 sets the VELC_Int bit in QEIINTSTAT. + DIR_INT: u1, // bit offset: 3 desc: Writing a 1 sets the DIR_Int bit in QEIINTSTAT. + ERR_INT: u1, // bit offset: 4 desc: Writing a 1 sets the ERR_Int bit in QEIINTSTAT. + ENCLK_INT: u1, // bit offset: 5 desc: Writing a 1 sets the ENCLK_Int bit in QEIINTSTAT. + POS0_INT: u1, // bit offset: 6 desc: Writing a 1 sets the POS0_Int bit in QEIINTSTAT. + POS1_INT: u1, // bit offset: 7 desc: Writing a 1 sets the POS1_Int bit in QEIINTSTAT. + POS2_INT: u1, // bit offset: 8 desc: Writing a 1 sets the POS2_Int bit in QEIINTSTAT. + REV0_INT: u1, // bit offset: 9 desc: Writing a 1 sets the REV0_Int bit in QEIINTSTAT. + POS0REV_INT: u1, // bit offset: 10 desc: Writing a 1 sets the POS0REV_Int bit in QEIINTSTAT. + POS1REV_INT: u1, // bit offset: 11 desc: Writing a 1 sets the POS1REV_Int bit in QEIINTSTAT. + POS2REV_INT: u1, // bit offset: 12 desc: Writing a 1 sets the POS2REV_Int bit in QEIINTSTAT. + REV1_INT: u1, // bit offset: 13 desc: Writing a 1 sets the REV1_Int bit in QEIINTSTAT. + REV2_INT: u1, // bit offset: 14 desc: Writing a 1 sets the REV2_Int bit in QEIINTSTAT. + MAXPOS_INT: u1, // bit offset: 15 desc: Writing a 1 sets the MAXPOS_Int bit in QEIINTSTAT. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12352,6 +15909,7 @@ pub const SYSCON = extern struct { pub const Address: u32 = 0x400fc000; // byte offset: 0 Flash Accelerator Configuration Register. Controls flash access timing. pub const FLASHCFG = mmio(Address + 0x00000000, 32, packed struct { + // RESERVED: u12, // bit offset: 0 desc: Reserved, user software should not change these bits from the reset value. reserved12: u1 = 0, reserved11: u1 = 0, reserved10: u1 = 0, @@ -12364,7 +15922,16 @@ pub const SYSCON = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - FLASHTIM: u4, // bit offset: 12 desc: Flash access time. The value of this field plus 1 gives the number of CPU clocks used for a flash access. Warning: improper setting of this value may result in incorrect operation of the device. Other values are reserved. + FLASHTIM: enum(u4) { // bit offset: 12 desc: Flash access time. The value of this field plus 1 gives the number of CPU clocks used for a flash access. Warning: improper setting of this value may result in incorrect operation of the device. Other values are reserved. + @"1CLK" = 0, // desc: Flash accesses use 1 CPU clock. Use for up to 20 MHz CPU clock. + @"2CLK" = 1, // desc: Flash accesses use 2 CPU clocks. Use for up to 40 MHz CPU clock. + @"3CLK" = 2, // desc: Flash accesses use 3 CPU clocks. Use for up to 60 MHz CPU clock. + @"4CLK" = 3, // desc: Flash accesses use 4 CPU clocks. Use for up to 80 MHz CPU clock. + @"5CLK" = 4, // desc: Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock. Use for up to 120 Mhz for LPC1759 and LPC1769 only. + @"6CLK" = 5, // desc: Flash accesses use 6 CPU clocks. This safe setting will work under any conditions. + _, // non-exhaustive + }, + // RESERVED: u16, // bit offset: 16 desc: Reserved. The value read from a reserved bit is not defined. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -12384,8 +15951,9 @@ pub const SYSCON = extern struct { }); // byte offset: 128 PLL0 Control Register pub const PLL0CON = mmio(Address + 0x00000080, 32, packed struct { - PLLE0: bool, // bit offset: 0 desc: PLL0 Enable. When one, and after a valid PLL0 feed, this bit will activate PLL0 and allow it to lock to the requested frequency. See PLL0STAT register. - PLLC0: bool, // bit offset: 1 desc: PLL0 Connect. Setting PLLC0 to one after PLL0 has been enabled and locked, then followed by a valid PLL0 feed sequence causes PLL0 to become the clock source for the CPU, AHB peripherals, and used to derive the clocks for APB peripherals. The PLL0 output may potentially be used to clock the USB subsystem if the frequency is 48 MHz. See PLL0STAT register. + PLLE0: u1, // bit offset: 0 desc: PLL0 Enable. When one, and after a valid PLL0 feed, this bit will activate PLL0 and allow it to lock to the requested frequency. See PLL0STAT register. + PLLC0: u1, // bit offset: 1 desc: PLL0 Connect. Setting PLLC0 to one after PLL0 has been enabled and locked, then followed by a valid PLL0 feed sequence causes PLL0 to become the clock source for the CPU, AHB peripherals, and used to derive the clocks for APB peripherals. The PLL0 output may potentially be used to clock the USB subsystem if the frequency is 48 MHz. See PLL0STAT register. + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -12420,8 +15988,10 @@ pub const SYSCON = extern struct { // byte offset: 132 PLL0 Configuration Register pub const PLL0CFG = mmio(Address + 0x00000084, 32, packed struct { MSEL0: u15, // bit offset: 0 desc: PLL0 Multiplier value. Supplies the value M in PLL0 frequency calculations. The value stored here is M - 1. Note: Not all values of M are needed, and therefore some are not supported by hardware. + // RESERVED: u1, // bit offset: 15 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved1: u1 = 0, NSEL0: u8, // bit offset: 16 desc: PLL0 Pre-Divider value. Supplies the value N in PLL0 frequency calculations. The value stored here is N - 1. Supported values for N are 1 through 32. + // RESERVED: u8, // bit offset: 24 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -12434,11 +16004,13 @@ pub const SYSCON = extern struct { // byte offset: 136 PLL0 Status Register pub const PLL0STAT = mmio(Address + 0x00000088, 32, packed struct { MSEL0: u15, // bit offset: 0 desc: Read-back for the PLL0 Multiplier value. This is the value currently used by PLL0, and is one less than the actual multiplier. + // RESERVED: u1, // bit offset: 15 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved1: u1 = 0, NSEL0: u8, // bit offset: 16 desc: Read-back for the PLL0 Pre-Divider value. This is the value currently used by PLL0, and is one less than the actual divider. - PLLE0_STAT: bool, // bit offset: 24 desc: Read-back for the PLL0 Enable bit. This bit reflects the state of the PLEC0 bit in PLL0CON after a valid PLL0 feed. When one, PLL0 is currently enabled. When zero, PLL0 is turned off. This bit is automatically cleared when Power-down mode is entered. - PLLC0_STAT: bool, // bit offset: 25 desc: Read-back for the PLL0 Connect bit. This bit reflects the state of the PLLC0 bit in PLL0CON after a valid PLL0 feed. When PLLC0 and PLLE0 are both one, PLL0 is connected as the clock source for the CPU. When either PLLC0 or PLLE0 is zero, PLL0 is bypassed. This bit is automatically cleared when Power-down mode is entered. - PLOCK0: bool, // bit offset: 26 desc: Reflects the PLL0 Lock status. When zero, PLL0 is not locked. When one, PLL0 is locked onto the requested frequency. See text for details. + PLLE0_STAT: u1, // bit offset: 24 desc: Read-back for the PLL0 Enable bit. This bit reflects the state of the PLEC0 bit in PLL0CON after a valid PLL0 feed. When one, PLL0 is currently enabled. When zero, PLL0 is turned off. This bit is automatically cleared when Power-down mode is entered. + PLLC0_STAT: u1, // bit offset: 25 desc: Read-back for the PLL0 Connect bit. This bit reflects the state of the PLLC0 bit in PLL0CON after a valid PLL0 feed. When PLLC0 and PLLE0 are both one, PLL0 is connected as the clock source for the CPU. When either PLLC0 or PLLE0 is zero, PLL0 is bypassed. This bit is automatically cleared when Power-down mode is entered. + PLOCK0: u1, // bit offset: 26 desc: Reflects the PLL0 Lock status. When zero, PLL0 is not locked. When one, PLL0 is locked onto the requested frequency. See text for details. + // RESERVED: u5, // bit offset: 27 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding5: u1 = 0, padding4: u1 = 0, padding3: u1 = 0, @@ -12448,6 +16020,7 @@ pub const SYSCON = extern struct { // byte offset: 140 PLL0 Feed Register pub const PLL0FEED = mmio(Address + 0x0000008c, 32, packed struct { PLL0FEED: u8, // bit offset: 0 desc: The PLL0 feed sequence must be written to this register in order for PLL0 configuration and control register changes to take effect. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -12475,8 +16048,9 @@ pub const SYSCON = extern struct { }); // byte offset: 160 PLL1 Control Register pub const PLL1CON = mmio(Address + 0x000000a0, 32, packed struct { - PLLE1: bool, // bit offset: 0 desc: PLL1 Enable. When one, and after a valid PLL1 feed, this bit will activate PLL1 and allow it to lock to the requested frequency. - PLLC1: bool, // bit offset: 1 desc: PLL1 Connect. Setting PLLC to one after PLL1 has been enabled and locked, then followed by a valid PLL1 feed sequence causes PLL1 to become the clock source for the USB subsystem via the USB clock divider. See PLL1STAT register. + PLLE1: u1, // bit offset: 0 desc: PLL1 Enable. When one, and after a valid PLL1 feed, this bit will activate PLL1 and allow it to lock to the requested frequency. + PLLC1: u1, // bit offset: 1 desc: PLL1 Connect. Setting PLLC to one after PLL1 has been enabled and locked, then followed by a valid PLL1 feed sequence causes PLL1 to become the clock source for the USB subsystem via the USB clock divider. See PLL1STAT register. + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -12512,6 +16086,7 @@ pub const SYSCON = extern struct { pub const PLL1CFG = mmio(Address + 0x000000a4, 32, packed struct { MSEL1: u5, // bit offset: 0 desc: PLL1 Multiplier value. Supplies the value M in the PLL1 frequency calculations. PSEL1: u2, // bit offset: 5 desc: PLL1 Divider value. Supplies the value P in the PLL1 frequency calculations. + // RESERVED: u25, // bit offset: 7 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -12542,10 +16117,12 @@ pub const SYSCON = extern struct { pub const PLL1STAT = mmio(Address + 0x000000a8, 32, packed struct { MSEL1: u5, // bit offset: 0 desc: Read-back for the PLL1 Multiplier value. This is the value currently used by PLL1. PSEL1: u2, // bit offset: 5 desc: Read-back for the PLL1 Divider value. This is the value currently used by PLL1. + // RESERVED: u1, // bit offset: 7 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved1: u1 = 0, - PLLE1_STAT: bool, // bit offset: 8 desc: Read-back for the PLL1 Enable bit. When one, PLL1 is currently activated. When zero, PLL1 is turned off. This bit is automatically cleared when Power-down mode is activated. - PLLC1_STAT: bool, // bit offset: 9 desc: Read-back for the PLL1 Connect bit. When PLLC and PLLE are both one, PLL1 is connected as the clock source for the microcontroller. When either PLLC or PLLE is zero, PLL1 is bypassed and the oscillator clock is used directly by the microcontroller. This bit is automatically cleared when Power-down mode is activated. - PLOCK1: bool, // bit offset: 10 desc: Reflects the PLL1 Lock status. When zero, PLL1 is not locked. When one, PLL1 is locked onto the requested frequency. + PLLE1_STAT: u1, // bit offset: 8 desc: Read-back for the PLL1 Enable bit. When one, PLL1 is currently activated. When zero, PLL1 is turned off. This bit is automatically cleared when Power-down mode is activated. + PLLC1_STAT: u1, // bit offset: 9 desc: Read-back for the PLL1 Connect bit. When PLLC and PLLE are both one, PLL1 is connected as the clock source for the microcontroller. When either PLLC or PLLE is zero, PLL1 is bypassed and the oscillator clock is used directly by the microcontroller. This bit is automatically cleared when Power-down mode is activated. + PLOCK1: u1, // bit offset: 10 desc: Reflects the PLL1 Lock status. When zero, PLL1 is not locked. When one, PLL1 is locked onto the requested frequency. + // RESERVED: u21, // bit offset: 11 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -12571,6 +16148,7 @@ pub const SYSCON = extern struct { // byte offset: 172 PLL1 Feed Register pub const PLL1FEED = mmio(Address + 0x000000ac, 32, packed struct { PLL1FEED: u8, // bit offset: 0 desc: The PLL1 feed sequence must be written to this register in order for PLL1 configuration and control register changes to take effect. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -12598,18 +16176,20 @@ pub const SYSCON = extern struct { }); // byte offset: 192 Power Control Register pub const PCON = mmio(Address + 0x000000c0, 32, packed struct { - PM0: bool, // bit offset: 0 desc: Power mode control bit 0. This bit controls entry to the Power-down mode. - PM1: bool, // bit offset: 1 desc: Power mode control bit 1. This bit controls entry to the Deep Power-down mode. - BODRPM: bool, // bit offset: 2 desc: Brown-Out Reduced Power Mode. When BODRPM is 1, the Brown-Out Detect circuitry will be turned off when chip Power-down mode or Deep Sleep mode is entered, resulting in a further reduction in power usage. However, the possibility of using Brown-Out Detect as a wake-up source from the reduced power mode will be lost. When 0, the Brown-Out Detect function remains active during Power-down and Deep Sleep modes. See the System Control Block chapter for details of Brown-Out detection. - BOGD: bool, // bit offset: 3 desc: Brown-Out Global Disable. When BOGD is 1, the Brown-Out Detect circuitry is fully disabled at all times, and does not consume power. When 0, the Brown-Out Detect circuitry is enabled. See the System Control Block chapter for details of Brown-Out detection. Note: the Brown-Out Reset Disable (BORD, in this register) and the Brown-Out Interrupt (xx) must be disabled when software changes the value of this bit. - BORD: bool, // bit offset: 4 desc: Brown-Out Reset Disable. When BORD is 1, the BOD will not reset the device when the VDD(REG)(3V3) voltage dips goes below the BOD reset trip level. The Brown-Out interrupt is not affected. When BORD is 0, the BOD reset is enabled. + PM0: u1, // bit offset: 0 desc: Power mode control bit 0. This bit controls entry to the Power-down mode. + PM1: u1, // bit offset: 1 desc: Power mode control bit 1. This bit controls entry to the Deep Power-down mode. + BODRPM: u1, // bit offset: 2 desc: Brown-Out Reduced Power Mode. When BODRPM is 1, the Brown-Out Detect circuitry will be turned off when chip Power-down mode or Deep Sleep mode is entered, resulting in a further reduction in power usage. However, the possibility of using Brown-Out Detect as a wake-up source from the reduced power mode will be lost. When 0, the Brown-Out Detect function remains active during Power-down and Deep Sleep modes. See the System Control Block chapter for details of Brown-Out detection. + BOGD: u1, // bit offset: 3 desc: Brown-Out Global Disable. When BOGD is 1, the Brown-Out Detect circuitry is fully disabled at all times, and does not consume power. When 0, the Brown-Out Detect circuitry is enabled. See the System Control Block chapter for details of Brown-Out detection. Note: the Brown-Out Reset Disable (BORD, in this register) and the Brown-Out Interrupt (xx) must be disabled when software changes the value of this bit. + // RESERVED: u5, // bit offset: 3 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. + BORD: u1, // bit offset: 4 desc: Brown-Out Reset Disable. When BORD is 1, the BOD will not reset the device when the VDD(REG)(3V3) voltage dips goes below the BOD reset trip level. The Brown-Out interrupt is not affected. When BORD is 0, the BOD reset is enabled. reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SMFLAG: bool, // bit offset: 8 desc: Sleep Mode entry flag. Set when the Sleep mode is successfully entered. Cleared by software writing a one to this bit. - DSFLAG: bool, // bit offset: 9 desc: Deep Sleep entry flag. Set when the Deep Sleep mode is successfully entered. Cleared by software writing a one to this bit. - PDFLAG: bool, // bit offset: 10 desc: Power-down entry flag. Set when the Power-down mode is successfully entered. Cleared by software writing a one to this bit. - DPDFLAG: bool, // bit offset: 11 desc: Deep Power-down entry flag. Set when the Deep Power-down mode is successfully entered. Cleared by software writing a one to this bit. + SMFLAG: u1, // bit offset: 8 desc: Sleep Mode entry flag. Set when the Sleep mode is successfully entered. Cleared by software writing a one to this bit. + DSFLAG: u1, // bit offset: 9 desc: Deep Sleep entry flag. Set when the Deep Sleep mode is successfully entered. Cleared by software writing a one to this bit. + PDFLAG: u1, // bit offset: 10 desc: Power-down entry flag. Set when the Power-down mode is successfully entered. Cleared by software writing a one to this bit. + DPDFLAG: u1, // bit offset: 11 desc: Deep Power-down entry flag. Set when the Deep Power-down mode is successfully entered. Cleared by software writing a one to this bit. + // RESERVED: u20, // bit offset: 12 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -12633,42 +16213,48 @@ pub const SYSCON = extern struct { }); // byte offset: 196 Power Control for Peripherals Register pub const PCONP = mmio(Address + 0x000000c4, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. reserved1: u1 = 0, - PCTIM0: bool, // bit offset: 1 desc: Timer/Counter 0 power/clock control bit. - PCTIM1: bool, // bit offset: 2 desc: Timer/Counter 1 power/clock control bit. - PCUART0: bool, // bit offset: 3 desc: UART0 power/clock control bit. - PCUART1: bool, // bit offset: 4 desc: UART1 power/clock control bit. + PCTIM0: u1, // bit offset: 1 desc: Timer/Counter 0 power/clock control bit. + PCTIM1: u1, // bit offset: 2 desc: Timer/Counter 1 power/clock control bit. + PCUART0: u1, // bit offset: 3 desc: UART0 power/clock control bit. + PCUART1: u1, // bit offset: 4 desc: UART1 power/clock control bit. + // RESERVED: u1, // bit offset: 5 desc: Reserved. reserved2: u1 = 0, - PCPWM1: bool, // bit offset: 6 desc: PWM1 power/clock control bit. - PCI2C0: bool, // bit offset: 7 desc: The I2C0 interface power/clock control bit. - PCSPI: bool, // bit offset: 8 desc: The SPI interface power/clock control bit. - PCRTC: bool, // bit offset: 9 desc: The RTC power/clock control bit. - PCSSP1: bool, // bit offset: 10 desc: The SSP 1 interface power/clock control bit. + PCPWM1: u1, // bit offset: 6 desc: PWM1 power/clock control bit. + PCI2C0: u1, // bit offset: 7 desc: The I2C0 interface power/clock control bit. + PCSPI: u1, // bit offset: 8 desc: The SPI interface power/clock control bit. + PCRTC: u1, // bit offset: 9 desc: The RTC power/clock control bit. + PCSSP1: u1, // bit offset: 10 desc: The SSP 1 interface power/clock control bit. + // RESERVED: u1, // bit offset: 11 desc: Reserved. reserved3: u1 = 0, - PCADC: bool, // bit offset: 12 desc: A/D converter (ADC) power/clock control bit. Note: Clear the PDN bit in the AD0CR before clearing this bit, and set this bit before setting PDN. - PCCAN1: bool, // bit offset: 13 desc: CAN Controller 1 power/clock control bit. - PCCAN2: bool, // bit offset: 14 desc: CAN Controller 2 power/clock control bit. - PCGPIO: bool, // bit offset: 15 desc: Power/clock control bit for IOCON, GPIO, and GPIO interrupts. - PCRIT: bool, // bit offset: 16 desc: Repetitive Interrupt Timer power/clock control bit. - PCMCPWM: bool, // bit offset: 17 desc: Motor Control PWM - PCQEI: bool, // bit offset: 18 desc: Quadrature Encoder Interface power/clock control bit. - PCI2C1: bool, // bit offset: 19 desc: The I2C1 interface power/clock control bit. + PCADC: u1, // bit offset: 12 desc: A/D converter (ADC) power/clock control bit. Note: Clear the PDN bit in the AD0CR before clearing this bit, and set this bit before setting PDN. + PCCAN1: u1, // bit offset: 13 desc: CAN Controller 1 power/clock control bit. + PCCAN2: u1, // bit offset: 14 desc: CAN Controller 2 power/clock control bit. + PCGPIO: u1, // bit offset: 15 desc: Power/clock control bit for IOCON, GPIO, and GPIO interrupts. + PCRIT: u1, // bit offset: 16 desc: Repetitive Interrupt Timer power/clock control bit. + PCMCPWM: u1, // bit offset: 17 desc: Motor Control PWM + PCQEI: u1, // bit offset: 18 desc: Quadrature Encoder Interface power/clock control bit. + PCI2C1: u1, // bit offset: 19 desc: The I2C1 interface power/clock control bit. + // RESERVED: u1, // bit offset: 20 desc: Reserved. reserved4: u1 = 0, - PCSSP0: bool, // bit offset: 21 desc: The SSP0 interface power/clock control bit. - PCTIM2: bool, // bit offset: 22 desc: Timer 2 power/clock control bit. - PCTIM3: bool, // bit offset: 23 desc: Timer 3 power/clock control bit. - PCUART2: bool, // bit offset: 24 desc: UART 2 power/clock control bit. - PCUART3: bool, // bit offset: 25 desc: UART 3 power/clock control bit. - PCI2C2: bool, // bit offset: 26 desc: I2C interface 2 power/clock control bit. - PCI2S: bool, // bit offset: 27 desc: I2S interface power/clock control bit. + PCSSP0: u1, // bit offset: 21 desc: The SSP0 interface power/clock control bit. + PCTIM2: u1, // bit offset: 22 desc: Timer 2 power/clock control bit. + PCTIM3: u1, // bit offset: 23 desc: Timer 3 power/clock control bit. + PCUART2: u1, // bit offset: 24 desc: UART 2 power/clock control bit. + PCUART3: u1, // bit offset: 25 desc: UART 3 power/clock control bit. + PCI2C2: u1, // bit offset: 26 desc: I2C interface 2 power/clock control bit. + PCI2S: u1, // bit offset: 27 desc: I2S interface power/clock control bit. + // RESERVED: u1, // bit offset: 28 desc: Reserved. reserved5: u1 = 0, - PCGPDMA: bool, // bit offset: 29 desc: GPDMA function power/clock control bit. - PCENET: bool, // bit offset: 30 desc: Ethernet block power/clock control bit. - PCUSB: bool, // bit offset: 31 desc: USB interface power/clock control bit. + PCGPDMA: u1, // bit offset: 29 desc: GPDMA function power/clock control bit. + PCENET: u1, // bit offset: 30 desc: Ethernet block power/clock control bit. + PCUSB: u1, // bit offset: 31 desc: USB interface power/clock control bit. }); // byte offset: 260 CPU Clock Configuration Register pub const CCLKCFG = mmio(Address + 0x00000104, 32, packed struct { CCLKSEL: u8, // bit offset: 0 desc: Selects the divide value for creating the CPU clock (CCLK) from the PLL0 output. 0 = pllclk is divided by 1 to produce the CPU clock. This setting is not allowed when the PLL0 is connected, because the rate would always be greater than the maximum allowed CPU clock. 1 = pllclk is divided by 2 to produce the CPU clock. This setting is not allowed when the PLL0 is connected, because the rate would always be greater than the maximum allowed CPU clock. 2 = pllclk is divided by 3 to produce the CPU clock. 3 = pllclk is divided by 4 to produce the CPU clock. ... 255 = pllclk is divided by 256 to produce the CPU clock. + // RESERVED: u24, // bit offset: 8 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -12697,6 +16283,7 @@ pub const SYSCON = extern struct { // byte offset: 264 USB Clock Configuration Register pub const USBCLKCFG = mmio(Address + 0x00000108, 32, packed struct { USBSEL: u4, // bit offset: 0 desc: Selects the divide value for creating the USB clock from the PLL0 output. Only the values shown below can produce even number multiples of 48 MHz from the PLL0 output. Warning: Improper setting of this value will result in incorrect operation of the USB interface. 5 = PLL0 output is divided by 6. PLL0 output must be 288 MHz. 7 = PLL0 output is divided by 8. PLL0 output must be 384 MHz. 9 = PLL0 output is divided by 10. PLL0 output must be 480 MHz. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12728,7 +16315,14 @@ pub const SYSCON = extern struct { }); // byte offset: 268 Clock Source Select Register pub const CLKSRCSEL = mmio(Address + 0x0000010c, 32, packed struct { - CLKSRC: u2, // bit offset: 0 desc: Selects the clock source for PLL0 as follows. Warning: Improper setting of this value, or an incorrect sequence of changing this value may result in incorrect operation of the device. + CLKSRC: enum(u2) { // bit offset: 0 desc: Selects the clock source for PLL0 as follows. Warning: Improper setting of this value, or an incorrect sequence of changing this value may result in incorrect operation of the device. + @"SELECTS_THE_INTERNAL" = 0, // desc: Selects the Internal RC oscillator as the PLL0 clock source (default). + @"SELECTS_THE_MAIN_OSC" = 1, // desc: Selects the main oscillator as the PLL0 clock source. Select the main oscillator as PLL0 clock source if the PLL0 clock output is used for USB or for CAN with baudrates > 100 kBit/s. + @"SELECTS_THE_RTC_OSCI" = 2, // desc: Selects the RTC oscillator as the PLL0 clock source. + // @"RESERVED", // desc: Reserved, do not use this setting. + _, // non-exhaustive + }, + // RESERVED: u30, // bit offset: 2 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -12762,9 +16356,11 @@ pub const SYSCON = extern struct { }); // byte offset: 272 Allows clearing the current CAN channel sleep state as well as reading that state. pub const CANSLEEPCLR = mmio(Address + 0x00000110, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - CAN1SLEEP: bool, // bit offset: 1 desc: Sleep status and control for CAN channel 1. Read: when 1, indicates that CAN channel 1 is in the sleep mode. Write: writing a 1 causes clocks to be restored to CAN channel 1. - CAN2SLEEP: bool, // bit offset: 2 desc: Sleep status and control for CAN channel 2. Read: when 1, indicates that CAN channel 2 is in the sleep mode. Write: writing a 1 causes clocks to be restored to CAN channel 2. + CAN1SLEEP: u1, // bit offset: 1 desc: Sleep status and control for CAN channel 1. Read: when 1, indicates that CAN channel 1 is in the sleep mode. Write: writing a 1 causes clocks to be restored to CAN channel 1. + CAN2SLEEP: u1, // bit offset: 2 desc: Sleep status and control for CAN channel 2. Read: when 1, indicates that CAN channel 2 is in the sleep mode. Write: writing a 1 causes clocks to be restored to CAN channel 2. + // RESERVED: u29, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -12797,9 +16393,11 @@ pub const SYSCON = extern struct { }); // byte offset: 276 Allows reading the wake-up state of the CAN channels. pub const CANWAKEFLAGS = mmio(Address + 0x00000114, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - CAN1WAKE: bool, // bit offset: 1 desc: Wake-up status for CAN channel 1. Read: when 1, indicates that a falling edge has occurred on the receive data line of CAN channel 1. Write: writing a 1 clears this bit. - CAN2WAKE: bool, // bit offset: 2 desc: Wake-up status for CAN channel 2. Read: when 1, indicates that a falling edge has occurred on the receive data line of CAN channel 2. Write: writing a 1 clears this bit. + CAN1WAKE: u1, // bit offset: 1 desc: Wake-up status for CAN channel 1. Read: when 1, indicates that a falling edge has occurred on the receive data line of CAN channel 1. Write: writing a 1 clears this bit. + CAN2WAKE: u1, // bit offset: 2 desc: Wake-up status for CAN channel 2. Read: when 1, indicates that a falling edge has occurred on the receive data line of CAN channel 2. Write: writing a 1 clears this bit. + // RESERVED: u29, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -12832,10 +16430,11 @@ pub const SYSCON = extern struct { }); // byte offset: 320 External Interrupt Flag Register pub const EXTINT = mmio(Address + 0x00000140, 32, packed struct { - EINT0: bool, // bit offset: 0 desc: In level-sensitive mode, this bit is set if the EINT0 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT0 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. - EINT1: bool, // bit offset: 1 desc: In level-sensitive mode, this bit is set if the EINT1 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT1 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. - EINT2: bool, // bit offset: 2 desc: In level-sensitive mode, this bit is set if the EINT2 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT2 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. - EINT3: bool, // bit offset: 3 desc: In level-sensitive mode, this bit is set if the EINT3 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT3 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. + EINT0: u1, // bit offset: 0 desc: In level-sensitive mode, this bit is set if the EINT0 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT0 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. + EINT1: u1, // bit offset: 1 desc: In level-sensitive mode, this bit is set if the EINT1 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT1 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. + EINT2: u1, // bit offset: 2 desc: In level-sensitive mode, this bit is set if the EINT2 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT2 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. + EINT3: u1, // bit offset: 3 desc: In level-sensitive mode, this bit is set if the EINT3 function is selected for its pin, and the pin is in its active state. In edge-sensitive mode, this bit is set if the EINT3 function is selected for its pin, and the selected edge occurs on the pin. This bit is cleared by writing a one to it, except in level sensitive mode when the pin is in its active state. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12867,10 +16466,23 @@ pub const SYSCON = extern struct { }); // byte offset: 328 External Interrupt Mode register pub const EXTMODE = mmio(Address + 0x00000148, 32, packed struct { - EXTMODE0: bool, // bit offset: 0 desc: External interrupt 0 EINT0 mode. - EXTMODE1: bool, // bit offset: 1 desc: External interrupt 1 EINT1 mode. - EXTMODE2: bool, // bit offset: 2 desc: External interrupt 2 EINT2 mode. - EXTMODE3: bool, // bit offset: 3 desc: External interrupt 3 EINT3 mode. + EXTMODE0: enum(u1) { // bit offset: 0 desc: External interrupt 0 EINT0 mode. + @"LEVEL_SENSITIVE" = 0, // desc: Level-sensitive. Level-sensitivity is selected for EINT0. + @"EDGE_SENSITIVE" = 1, // desc: Edge-sensitive. EINT0 is edge sensitive. + }, + EXTMODE1: enum(u1) { // bit offset: 1 desc: External interrupt 1 EINT1 mode. + @"LEVEL_SENSITIVE" = 0, // desc: Level-sensitive. Level-sensitivity is selected for EINT1. + @"EDGE_SENSITIVE" = 1, // desc: Edge-sensitive. EINT1 is edge sensitive. + }, + EXTMODE2: enum(u1) { // bit offset: 2 desc: External interrupt 2 EINT2 mode. + @"LEVEL_SENSITIVE" = 0, // desc: Level-sensitive. Level-sensitivity is selected for EINT2. + @"EDGE_SENSITIVE" = 1, // desc: Edge-sensitive. EINT2 is edge sensitive. + }, + EXTMODE3: enum(u1) { // bit offset: 3 desc: External interrupt 3 EINT3 mode. + @"LEVEL_SENSITIVE" = 0, // desc: Level-sensitive. Level-sensitivity is selected for EINT3. + @"EDGE_SENSITIVE" = 1, // desc: Edge-sensitive. EINT3 is edge sensitive. + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12902,10 +16514,23 @@ pub const SYSCON = extern struct { }); // byte offset: 332 External Interrupt Polarity Register pub const EXTPOLAR = mmio(Address + 0x0000014c, 32, packed struct { - EXTPOLAR0: bool, // bit offset: 0 desc: External interrupt 0 EINT0 polarity. - EXTPOLAR1: bool, // bit offset: 1 desc: External interrupt 1 EINT1 polarity. - EXTPOLAR2: bool, // bit offset: 2 desc: External interrupt 2 EINT2 polarity. - EXTPOLAR3: bool, // bit offset: 3 desc: External interrupt 3 EINT3 polarity. + EXTPOLAR0: enum(u1) { // bit offset: 0 desc: External interrupt 0 EINT0 polarity. + @"FALLING_EDGE" = 0, // desc: Falling edge. EINT0 is low-active or falling-edge sensitive (depending on EXTMODE0). + @"RISING_EDGE" = 1, // desc: Rising edge. EINT0 is high-active or rising-edge sensitive (depending on EXTMODE0). + }, + EXTPOLAR1: enum(u1) { // bit offset: 1 desc: External interrupt 1 EINT1 polarity. + @"FALLING_EDGE" = 0, // desc: Falling edge. EINT1 is low-active or falling-edge sensitive (depending on EXTMODE1). + @"RISING_EDGE" = 1, // desc: Rising edge. EINT1 is high-active or rising-edge sensitive (depending on EXTMODE1). + }, + EXTPOLAR2: enum(u1) { // bit offset: 2 desc: External interrupt 2 EINT2 polarity. + @"FALLING_EDGE" = 0, // desc: Falling edge. EINT2 is low-active or falling-edge sensitive (depending on EXTMODE2). + @"RISING_EDGE" = 1, // desc: Rising edge. EINT2 is high-active or rising-edge sensitive (depending on EXTMODE2). + }, + EXTPOLAR3: enum(u1) { // bit offset: 3 desc: External interrupt 3 EINT3 polarity. + @"FALLING_EDGE" = 0, // desc: Falling edge. EINT3 is low-active or falling-edge sensitive (depending on EXTMODE3). + @"RISING_EDGE" = 1, // desc: Rising edge. EINT3 is high-active or rising-edge sensitive (depending on EXTMODE3). + }, + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12937,10 +16562,11 @@ pub const SYSCON = extern struct { }); // byte offset: 384 Reset Source Identification Register pub const RSID = mmio(Address + 0x00000180, 32, packed struct { - POR: bool, // bit offset: 0 desc: Assertion of the POR signal sets this bit, and clears all of the other bits in this register. But if another Reset signal (e.g., External Reset) remains asserted after the POR signal is negated, then its bit is set. This bit is not affected by any of the other sources of Reset. - EXTR: bool, // bit offset: 1 desc: Assertion of the RESET signal sets this bit. This bit is cleared only by software or POR. - WDTR: bool, // bit offset: 2 desc: This bit is set when the Watchdog Timer times out and the WDTRESET bit in the Watchdog Mode Register is 1. This bit is cleared only by software or POR. - BODR: bool, // bit offset: 3 desc: This bit is set when the VDD(REG)(3V3) voltage reaches a level below the BOD reset trip level (typically 1.85 V under nominal room temperature conditions). If the VDD(REG)(3V3) voltage dips from the normal operating range to below the BOD reset trip level and recovers, the BODR bit will be set to 1. If the VDD(REG)(3V3) voltage dips from the normal operating range to below the BOD reset trip level and continues to decline to the level at which POR is asserted (nominally 1 V), the BODR bit is cleared. If the VDD(REG)(3V3) voltage rises continuously from below 1 V to a level above the BOD reset trip level, the BODR will be set to 1. This bit is cleared only by software or POR. Note: Only in the case where a reset occurs and the POR = 0, the BODR bit indicates if the VDD(REG)(3V3) voltage was below the BOD reset trip level or not. + POR: u1, // bit offset: 0 desc: Assertion of the POR signal sets this bit, and clears all of the other bits in this register. But if another Reset signal (e.g., External Reset) remains asserted after the POR signal is negated, then its bit is set. This bit is not affected by any of the other sources of Reset. + EXTR: u1, // bit offset: 1 desc: Assertion of the RESET signal sets this bit. This bit is cleared only by software or POR. + WDTR: u1, // bit offset: 2 desc: This bit is set when the Watchdog Timer times out and the WDTRESET bit in the Watchdog Mode Register is 1. This bit is cleared only by software or POR. + BODR: u1, // bit offset: 3 desc: This bit is set when the VDD(REG)(3V3) voltage reaches a level below the BOD reset trip level (typically 1.85 V under nominal room temperature conditions). If the VDD(REG)(3V3) voltage dips from the normal operating range to below the BOD reset trip level and recovers, the BODR bit will be set to 1. If the VDD(REG)(3V3) voltage dips from the normal operating range to below the BOD reset trip level and continues to decline to the level at which POR is asserted (nominally 1 V), the BODR bit is cleared. If the VDD(REG)(3V3) voltage rises continuously from below 1 V to a level above the BOD reset trip level, the BODR will be set to 1. This bit is cleared only by software or POR. Note: Only in the case where a reset occurs and the POR = 0, the BODR bit indicates if the VDD(REG)(3V3) voltage was below the BOD reset trip level or not. + // RESERVED: u28, // bit offset: 4 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -12972,13 +16598,24 @@ pub const SYSCON = extern struct { }); // byte offset: 416 System control and status pub const SCS = mmio(Address + 0x000001a0, 32, packed struct { + // RESERVED: u4, // bit offset: 0 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - OSCRANGE: bool, // bit offset: 4 desc: Main oscillator range select. - OSCEN: bool, // bit offset: 5 desc: Main oscillator enable. - OSCSTAT: bool, // bit offset: 6 desc: Main oscillator status. + OSCRANGE: enum(u1) { // bit offset: 4 desc: Main oscillator range select. + @"LOW" = 0, // desc: Low. The frequency range of the main oscillator is 1 MHz to 20 MHz. + @"HIGH" = 1, // desc: High. The frequency range of the main oscillator is 15 MHz to 25 MHz. + }, + OSCEN: enum(u1) { // bit offset: 5 desc: Main oscillator enable. + @"DISABLED" = 0, // desc: Disabled. The main oscillator is disabled. + @"ENABLED" = 1, // desc: Enabled.The main oscillator is enabled, and will start up if the correct external circuitry is connected to the XTAL1 and XTAL2 pins. + }, + OSCSTAT: enum(u1) { // bit offset: 6 desc: Main oscillator status. + @"NOT_READY" = 0, // desc: Not ready. The main oscillator is not ready to be used as a clock source. + @"READY" = 1, // desc: Ready. The main oscillator is ready to be used as a clock source. The main oscillator must be enabled via the OSCEN bit. + }, + // RESERVED: u25, // bit offset: 7 desc: Reserved. User software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -13007,57 +16644,203 @@ pub const SYSCON = extern struct { }); // byte offset: 424 Peripheral Clock Selection register 0. pub const PCLKSEL0 = mmio(Address + 0x000001a8, 32, packed struct { - PCLK_WDT: u2, // bit offset: 0 desc: Peripheral clock selection for WDT. - PCLK_TIMER0: u2, // bit offset: 2 desc: Peripheral clock selection for TIMER0. - PCLK_TIMER1: u2, // bit offset: 4 desc: Peripheral clock selection for TIMER1. - PCLK_UART0: u2, // bit offset: 6 desc: Peripheral clock selection for UART0. - PCLK_UART1: u2, // bit offset: 8 desc: Peripheral clock selection for UART1. + PCLK_WDT: enum(u2) { // bit offset: 0 desc: Peripheral clock selection for WDT. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_TIMER0: enum(u2) { // bit offset: 2 desc: Peripheral clock selection for TIMER0. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_TIMER1: enum(u2) { // bit offset: 4 desc: Peripheral clock selection for TIMER1. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_UART0: enum(u2) { // bit offset: 6 desc: Peripheral clock selection for UART0. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_UART1: enum(u2) { // bit offset: 8 desc: Peripheral clock selection for UART1. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + // RESERVED: u2, // bit offset: 10 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - PCLK_PWM1: u2, // bit offset: 12 desc: Peripheral clock selection for PWM1. - PCLK_I2C0: u2, // bit offset: 14 desc: Peripheral clock selection for I2C0. - PCLK_SPI: u2, // bit offset: 16 desc: Peripheral clock selection for SPI. + PCLK_PWM1: enum(u2) { // bit offset: 12 desc: Peripheral clock selection for PWM1. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_I2C0: enum(u2) { // bit offset: 14 desc: Peripheral clock selection for I2C0. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_SPI: enum(u2) { // bit offset: 16 desc: Peripheral clock selection for SPI. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + // RESERVED: u2, // bit offset: 18 desc: Reserved. reserved4: u1 = 0, reserved3: u1 = 0, - PCLK_SSP1: u2, // bit offset: 20 desc: Peripheral clock selection for SSP1. - PCLK_DAC: u2, // bit offset: 22 desc: Peripheral clock selection for DAC. - PCLK_ADC: u2, // bit offset: 24 desc: Peripheral clock selection for ADC. - PCLK_CAN1: u2, // bit offset: 26 desc: Peripheral clock selection for CAN1.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. - PCLK_CAN2: u2, // bit offset: 28 desc: Peripheral clock selection for CAN2.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. - PCLK_ACF: u2, // bit offset: 30 desc: Peripheral clock selection for CAN acceptance filtering.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. + PCLK_SSP1: enum(u2) { // bit offset: 20 desc: Peripheral clock selection for SSP1. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_DAC: enum(u2) { // bit offset: 22 desc: Peripheral clock selection for DAC. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_ADC: enum(u2) { // bit offset: 24 desc: Peripheral clock selection for ADC. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_CAN1: enum(u2) { // bit offset: 26 desc: Peripheral clock selection for CAN1.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_6" = 3, // desc: CCLK div 6. PCLK_peripheral = CCLK/6. + }, + PCLK_CAN2: enum(u2) { // bit offset: 28 desc: Peripheral clock selection for CAN2.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_6" = 3, // desc: CCLK div 6. PCLK_peripheral = CCLK/6, + }, + PCLK_ACF: enum(u2) { // bit offset: 30 desc: Peripheral clock selection for CAN acceptance filtering.PCLK_CAN1 and PCLK_CAN2 must have the same PCLK divide value when the CAN function is used. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_6" = 3, // desc: CCLK div 6. PCLK_peripheral = CCLK/6 + }, }); // byte offset: 428 Peripheral Clock Selection register 1. pub const PCLKSEL1 = mmio(Address + 0x000001ac, 32, packed struct { - PCLK_QEI: u2, // bit offset: 0 desc: Peripheral clock selection for the Quadrature Encoder Interface. - PCLK_GPIOINT: u2, // bit offset: 2 desc: Peripheral clock selection for GPIO interrupts. - PCLK_PCB: u2, // bit offset: 4 desc: Peripheral clock selection for the Pin Connect block. - PCLK_I2C1: u2, // bit offset: 6 desc: Peripheral clock selection for I2C1. + PCLK_QEI: enum(u2) { // bit offset: 0 desc: Peripheral clock selection for the Quadrature Encoder Interface. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_GPIOINT: enum(u2) { // bit offset: 2 desc: Peripheral clock selection for GPIO interrupts. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_PCB: enum(u2) { // bit offset: 4 desc: Peripheral clock selection for the Pin Connect block. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_I2C1: enum(u2) { // bit offset: 6 desc: Peripheral clock selection for I2C1. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + // RESERVED: u2, // bit offset: 8 desc: Reserved. reserved2: u1 = 0, reserved1: u1 = 0, - PCLK_SSP0: u2, // bit offset: 10 desc: Peripheral clock selection for SSP0. - PCLK_TIMER2: u2, // bit offset: 12 desc: Peripheral clock selection for TIMER2. - PCLK_TIMER3: u2, // bit offset: 14 desc: Peripheral clock selection for TIMER3. - PCLK_UART2: u2, // bit offset: 16 desc: Peripheral clock selection for UART2. - PCLK_UART3: u2, // bit offset: 18 desc: Peripheral clock selection for UART3. - PCLK_I2C2: u2, // bit offset: 20 desc: Peripheral clock selection for I2C2. - PCLK_I2S: u2, // bit offset: 22 desc: Peripheral clock selection for I2S. + PCLK_SSP0: enum(u2) { // bit offset: 10 desc: Peripheral clock selection for SSP0. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_TIMER2: enum(u2) { // bit offset: 12 desc: Peripheral clock selection for TIMER2. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_TIMER3: enum(u2) { // bit offset: 14 desc: Peripheral clock selection for TIMER3. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_UART2: enum(u2) { // bit offset: 16 desc: Peripheral clock selection for UART2. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_UART3: enum(u2) { // bit offset: 18 desc: Peripheral clock selection for UART3. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_I2C2: enum(u2) { // bit offset: 20 desc: Peripheral clock selection for I2C2. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_I2S: enum(u2) { // bit offset: 22 desc: Peripheral clock selection for I2S. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + // RESERVED: u2, // bit offset: 24 desc: Reserved. reserved4: u1 = 0, reserved3: u1 = 0, - PCLK_RIT: u2, // bit offset: 26 desc: Peripheral clock selection for Repetitive Interrupt Timer. - PCLK_SYSCON: u2, // bit offset: 28 desc: Peripheral clock selection for the System Control block. - PCLK_MC: u2, // bit offset: 30 desc: Peripheral clock selection for the Motor Control PWM. + PCLK_RIT: enum(u2) { // bit offset: 26 desc: Peripheral clock selection for Repetitive Interrupt Timer. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_SYSCON: enum(u2) { // bit offset: 28 desc: Peripheral clock selection for the System Control block. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, + PCLK_MC: enum(u2) { // bit offset: 30 desc: Peripheral clock selection for the Motor Control PWM. + @"CCLK_DIV_4" = 0, // desc: CCLK div 4. PCLK_peripheral = CCLK/4 + @"CCLK" = 1, // desc: CCLK. PCLK_peripheral = CCLK + @"CCLK_DIV_2" = 2, // desc: CCLK div 2. PCLK_peripheral = CCLK/2 + @"CCLK_DIV_8" = 3, // desc: CCLK div 8. PCLK_peripheral = CCLK/8 + }, }); // byte offset: 448 USB Interrupt Status pub const USBINTST = mmio(Address + 0x000001c0, 32, packed struct { - USB_INT_REQ_LP: bool, // bit offset: 0 desc: Low priority interrupt line status. This bit is read-only. - USB_INT_REQ_HP: bool, // bit offset: 1 desc: High priority interrupt line status. This bit is read-only. - USB_INT_REQ_DMA: bool, // bit offset: 2 desc: DMA interrupt line status. This bit is read-only. - USB_HOST_INT: bool, // bit offset: 3 desc: USB host interrupt line status. This bit is read-only. - USB_ATX_INT: bool, // bit offset: 4 desc: External ATX interrupt line status. This bit is read-only. - USB_OTG_INT: bool, // bit offset: 5 desc: OTG interrupt line status. This bit is read-only. - USB_I2C_INT: bool, // bit offset: 6 desc: I2C module interrupt line status. This bit is read-only. + USB_INT_REQ_LP: u1, // bit offset: 0 desc: Low priority interrupt line status. This bit is read-only. + USB_INT_REQ_HP: u1, // bit offset: 1 desc: High priority interrupt line status. This bit is read-only. + USB_INT_REQ_DMA: u1, // bit offset: 2 desc: DMA interrupt line status. This bit is read-only. + USB_HOST_INT: u1, // bit offset: 3 desc: USB host interrupt line status. This bit is read-only. + USB_ATX_INT: u1, // bit offset: 4 desc: External ATX interrupt line status. This bit is read-only. + USB_OTG_INT: u1, // bit offset: 5 desc: OTG interrupt line status. This bit is read-only. + USB_I2C_INT: u1, // bit offset: 6 desc: I2C module interrupt line status. This bit is read-only. + // RESERVED: u1, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - USB_NEED_CLK: bool, // bit offset: 8 desc: USB need clock indicator. This bit is read-only. This bit is set to 1 when USB activity or a change of state on the USB data pins is detected, and it indicates that a PLL supplied clock of 48 MHz is needed. Once USB_NEED_CLK becomes one, it resets to zero 5 ms after the last packet has been received/sent, or 2 ms after the Suspend Change (SUS_CH) interrupt has occurred. A change of this bit from 0 to 1 can wake up the microcontroller if activity on the USB bus is selected to wake up the part from the Power-down mode (see Section 4.7.9 Wake-up from Reduced Power Modes for details). Also see Section 4.5.8 PLLs and Power-down mode and Section 4.7.10 Power Control for Peripherals register (PCONP - 0x400F C0C4) for considerations about the PLL and invoking the Power-down mode. This bit is read-only. + USB_NEED_CLK: u1, // bit offset: 8 desc: USB need clock indicator. This bit is read-only. This bit is set to 1 when USB activity or a change of state on the USB data pins is detected, and it indicates that a PLL supplied clock of 48 MHz is needed. Once USB_NEED_CLK becomes one, it resets to zero 5 ms after the last packet has been received/sent, or 2 ms after the Suspend Change (SUS_CH) interrupt has occurred. A change of this bit from 0 to 1 can wake up the microcontroller if activity on the USB bus is selected to wake up the part from the Power-down mode (see Section 4.7.9 Wake-up from Reduced Power Modes for details). Also see Section 4.5.8 PLLs and Power-down mode and Section 4.7.10 Power Control for Peripherals register (PCONP - 0x400F C0C4) for considerations about the PLL and invoking the Power-down mode. This bit is read-only. + // RESERVED: u22, // bit offset: 9 desc: Reserved. Read value is undefined, only zero should be written. reserved23: u1 = 0, reserved22: u1 = 0, reserved21: u1 = 0, @@ -13080,18 +16863,19 @@ pub const SYSCON = extern struct { reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, - EN_USB_INTS: bool, // bit offset: 31 desc: Enable all USB interrupts. When this bit is cleared, the NVIC does not see the ORed output of the USB interrupt lines. + EN_USB_INTS: u1, // bit offset: 31 desc: Enable all USB interrupts. When this bit is cleared, the NVIC does not see the ORed output of the USB interrupt lines. }); // byte offset: 452 Selects between alternative requests on DMA channels 0 through 7 and 10 through 15 pub const DMACREQSEL = mmio(Address + 0x000001c4, 32, packed struct { - DMASEL08: bool, // bit offset: 0 desc: Selects the DMA request for GPDMA input 8: 0 - uart0 tx 1 - Timer 0 match 0 is selected. - DMASEL09: bool, // bit offset: 1 desc: Selects the DMA request for GPDMA input 9: 0 - uart0 rx 1 - Timer 0 match 1 is selected. - DMASEL10: bool, // bit offset: 2 desc: Selects the DMA request for GPDMA input 10: 0 - uart1 tx is selected. 1 - Timer 1 match 0 is selected. - DMASEL11: bool, // bit offset: 3 desc: Selects the DMA request for GPDMA input 11: 0 - uart1 rx is selected. 1 - Timer 1 match 1 is selected. - DMASEL12: bool, // bit offset: 4 desc: Selects the DMA request for GPDMA input 12: 0 - uart2 tx is selected. 1 - Timer 2 match 0 is selected. - DMASEL13: bool, // bit offset: 5 desc: Selects the DMA request for GPDMA input 13: 0 - uart2 rx is selected. 1 - Timer 2 match 1 is selected. - DMASEL14: bool, // bit offset: 6 desc: Selects the DMA request for GPDMA input 14: 0 - uart3 tx is selected. 1 - I2S channel 0 is selected. - DMASEL15: bool, // bit offset: 7 desc: Selects the DMA request for GPDMA input 15: 0 - uart3 rx is selected. 1 - I2S channel 1 is selected. + DMASEL08: u1, // bit offset: 0 desc: Selects the DMA request for GPDMA input 8: 0 - uart0 tx 1 - Timer 0 match 0 is selected. + DMASEL09: u1, // bit offset: 1 desc: Selects the DMA request for GPDMA input 9: 0 - uart0 rx 1 - Timer 0 match 1 is selected. + DMASEL10: u1, // bit offset: 2 desc: Selects the DMA request for GPDMA input 10: 0 - uart1 tx is selected. 1 - Timer 1 match 0 is selected. + DMASEL11: u1, // bit offset: 3 desc: Selects the DMA request for GPDMA input 11: 0 - uart1 rx is selected. 1 - Timer 1 match 1 is selected. + DMASEL12: u1, // bit offset: 4 desc: Selects the DMA request for GPDMA input 12: 0 - uart2 tx is selected. 1 - Timer 2 match 0 is selected. + DMASEL13: u1, // bit offset: 5 desc: Selects the DMA request for GPDMA input 13: 0 - uart2 rx is selected. 1 - Timer 2 match 1 is selected. + DMASEL14: u1, // bit offset: 6 desc: Selects the DMA request for GPDMA input 14: 0 - uart3 tx is selected. 1 - I2S channel 0 is selected. + DMASEL15: u1, // bit offset: 7 desc: Selects the DMA request for GPDMA input 15: 0 - uart3 rx is selected. 1 - I2S channel 1 is selected. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -13119,10 +16903,18 @@ pub const SYSCON = extern struct { }); // byte offset: 456 Clock Output Configuration Register pub const CLKOUTCFG = mmio(Address + 0x000001c8, 32, packed struct { - CLKOUTSEL: u4, // bit offset: 0 desc: Selects the clock source for the CLKOUT function. Other values are reserved. Do not use. + CLKOUTSEL: enum(u4) { // bit offset: 0 desc: Selects the clock source for the CLKOUT function. Other values are reserved. Do not use. + @"SELECTS_THE_CPU_CLOC" = 0, // desc: Selects the CPU clock as the CLKOUT source. + @"SELECTS_THE_MAIN_OSC" = 1, // desc: Selects the main oscillator as the CLKOUT source. + @"SELECTS_THE_INTERNAL" = 2, // desc: Selects the Internal RC oscillator as the CLKOUT source. + @"SELECTS_THE_USB_CLOC" = 3, // desc: Selects the USB clock as the CLKOUT source. + @"SELECTS_THE_RTC_OSCI" = 4, // desc: Selects the RTC oscillator as the CLKOUT source. + _, // non-exhaustive + }, CLKOUTDIV: u4, // bit offset: 4 desc: Integer value to divide the output clock by, minus one. 0 = Clock is divided by 1 1 = Clock is divided by 2. 2 = Clock is divided by 3. ... 15 = Clock is divided by 16. - CLKOUT_EN: bool, // bit offset: 8 desc: CLKOUT enable control, allows switching the CLKOUT source without glitches. Clear to stop CLKOUT on the next falling edge. Set to enable CLKOUT. - CLKOUT_ACT: bool, // bit offset: 9 desc: CLKOUT activity indication. Reads as 1 when CLKOUT is enabled. Read as 0 when CLKOUT has been disabled via the CLKOUT_EN bit and the clock has completed being stopped. + CLKOUT_EN: u1, // bit offset: 8 desc: CLKOUT enable control, allows switching the CLKOUT source without glitches. Clear to stop CLKOUT on the next falling edge. Set to enable CLKOUT. + CLKOUT_ACT: u1, // bit offset: 9 desc: CLKOUT activity indication. Reads as 1 when CLKOUT is enabled. Read as 0 when CLKOUT has been disabled via the CLKOUT_EN bit and the clock has completed being stopped. + // RESERVED: u22, // bit offset: 10 desc: Reserved, user software should not write ones to reserved bits. The value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -13151,22 +16943,25 @@ pub const EMAC = extern struct { pub const Address: u32 = 0x50000000; // byte offset: 0 MAC configuration register 1. pub const MAC1 = mmio(Address + 0x00000000, 32, packed struct { - RXENABLE: bool, // bit offset: 0 desc: RECEIVE ENABLE. Set this to allow receive frames to be received. Internally the MAC synchronizes this control bit to the incoming receive stream. - PARF: bool, // bit offset: 1 desc: PASS ALL RECEIVE FRAMES. When enabled (set to 1), the MAC will pass all frames regardless of type (normal vs. Control). When disabled, the MAC does not pass valid Control frames. - RXFLOWCTRL: bool, // bit offset: 2 desc: RX FLOW CONTROL. When enabled (set to 1), the MAC acts upon received PAUSE Flow Control frames. When disabled, received PAUSE Flow Control frames are ignored. - TXFLOWCTRL: bool, // bit offset: 3 desc: TX FLOW CONTROL. When enabled (set to 1), PAUSE Flow Control frames are allowed to be transmitted. When disabled, Flow Control frames are blocked. - LOOPBACK: bool, // bit offset: 4 desc: Setting this bit will cause the MAC Transmit interface to be looped back to the MAC Receive interface. Clearing this bit results in normal operation. + RXENABLE: u1, // bit offset: 0 desc: RECEIVE ENABLE. Set this to allow receive frames to be received. Internally the MAC synchronizes this control bit to the incoming receive stream. + PARF: u1, // bit offset: 1 desc: PASS ALL RECEIVE FRAMES. When enabled (set to 1), the MAC will pass all frames regardless of type (normal vs. Control). When disabled, the MAC does not pass valid Control frames. + RXFLOWCTRL: u1, // bit offset: 2 desc: RX FLOW CONTROL. When enabled (set to 1), the MAC acts upon received PAUSE Flow Control frames. When disabled, received PAUSE Flow Control frames are ignored. + TXFLOWCTRL: u1, // bit offset: 3 desc: TX FLOW CONTROL. When enabled (set to 1), PAUSE Flow Control frames are allowed to be transmitted. When disabled, Flow Control frames are blocked. + LOOPBACK: u1, // bit offset: 4 desc: Setting this bit will cause the MAC Transmit interface to be looped back to the MAC Receive interface. Clearing this bit results in normal operation. + // RESERVED: u3, // bit offset: 5 desc: Unused reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RESETTX: bool, // bit offset: 8 desc: Setting this bit will put the Transmit Function logic in reset. - RESETMCSTX: bool, // bit offset: 9 desc: Setting this bit resets the MAC Control Sublayer / Transmit logic. The MCS logic implements flow control. - RESETRX: bool, // bit offset: 10 desc: Setting this bit will put the Ethernet receive logic in reset. - RESETMCSRX: bool, // bit offset: 11 desc: Setting this bit resets the MAC Control Sublayer / Receive logic. The MCS logic implements flow control. - reserved3: u1 = 0, - reserved2: u1 = 0, - SIMRESET: bool, // bit offset: 14 desc: SIMULATION RESET. Setting this bit will cause a reset to the random number generator within the Transmit Function. - SOFTRESET: bool, // bit offset: 15 desc: SOFT RESET. Setting this bit will put all modules within the MAC in reset except the Host Interface. + RESETTX: u1, // bit offset: 8 desc: Setting this bit will put the Transmit Function logic in reset. + RESETMCSTX: u1, // bit offset: 9 desc: Setting this bit resets the MAC Control Sublayer / Transmit logic. The MCS logic implements flow control. + RESETRX: u1, // bit offset: 10 desc: Setting this bit will put the Ethernet receive logic in reset. + RESETMCSRX: u1, // bit offset: 11 desc: Setting this bit resets the MAC Control Sublayer / Receive logic. The MCS logic implements flow control. + // RESERVED: u2, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. + reserved5: u1 = 0, + reserved4: u1 = 0, + SIMRESET: u1, // bit offset: 14 desc: SIMULATION RESET. Setting this bit will cause a reset to the random number generator within the Transmit Function. + SOFTRESET: u1, // bit offset: 15 desc: SOFT RESET. Setting this bit will put all modules within the MAC in reset except the Host Interface. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13186,21 +16981,23 @@ pub const EMAC = extern struct { }); // byte offset: 4 MAC configuration register 2. pub const MAC2 = mmio(Address + 0x00000004, 32, packed struct { - FULLDUPLEX: bool, // bit offset: 0 desc: When enabled (set to 1), the MAC operates in Full-Duplex mode. When disabled, the MAC operates in Half-Duplex mode. - FLC: bool, // bit offset: 1 desc: FRAMELENGTH CHECKING. When enabled (set to 1), both transmit and receive frame lengths are compared to the Length/Type field. If the Length/Type field represents a length then the check is performed. Mismatches are reported in the StatusInfo word for each received frame. - HFEN: bool, // bit offset: 2 desc: HUGE FRAME ENABLEWhen enabled (set to 1), frames of any length are transmitted and received. - DELAYEDCRC: bool, // bit offset: 3 desc: DELAYED CRC. This bit determines the number of bytes, if any, of proprietary header information that exist on the front of IEEE 802.3 frames. When 1, four bytes of header (ignored by the CRC function) are added. When 0, there is no proprietary header. - CRCEN: bool, // bit offset: 4 desc: CRC ENABLESet this bit to append a CRC to every frame whether padding was required or not. Must be set if PAD/CRC ENABLE is set. Clear this bit if frames presented to the MAC contain a CRC. - PADCRCEN: bool, // bit offset: 5 desc: PAD CRC ENABLE. Set this bit to have the MAC pad all short frames. Clear this bit if frames presented to the MAC have a valid length. This bit is used in conjunction with AUTO PAD ENABLE and VLAN PAD ENABLE. See Table 153 - Pad Operation for details on the pad function. - VLANPADEN: bool, // bit offset: 6 desc: VLAN PAD ENABLE. Set this bit to cause the MAC to pad all short frames to 64 bytes and append a valid CRC. Consult Table 153 - Pad Operation for more information on the various padding features. Note: This bit is ignored if PAD / CRC ENABLE is cleared. - AUTODETPADEN: bool, // bit offset: 7 desc: AUTODETECTPAD ENABLE. Set this bit to cause the MAC to automatically detect the type of frame, either tagged or un-tagged, by comparing the two octets following the source address with 0x8100 (VLAN Protocol ID) and pad accordingly. Table 153 - Pad Operation provides a description of the pad function based on the configuration of this register. Note: This bit is ignored if PAD / CRC ENABLE is cleared. - PPENF: bool, // bit offset: 8 desc: PURE PREAMBLE ENFORCEMEN. When enabled (set to 1), the MAC will verify the content of the preamble to ensure it contains 0x55 and is error-free. A packet with an incorrect preamble is discarded. When disabled, no preamble checking is performed. - LPENF: bool, // bit offset: 9 desc: LONG PREAMBLE ENFORCEMENT. When enabled (set to 1), the MAC only allows receive packets which contain preamble fields less than 12 bytes in length. When disabled, the MAC allows any length preamble as per the Standard. + FULLDUPLEX: u1, // bit offset: 0 desc: When enabled (set to 1), the MAC operates in Full-Duplex mode. When disabled, the MAC operates in Half-Duplex mode. + FLC: u1, // bit offset: 1 desc: FRAMELENGTH CHECKING. When enabled (set to 1), both transmit and receive frame lengths are compared to the Length/Type field. If the Length/Type field represents a length then the check is performed. Mismatches are reported in the StatusInfo word for each received frame. + HFEN: u1, // bit offset: 2 desc: HUGE FRAME ENABLEWhen enabled (set to 1), frames of any length are transmitted and received. + DELAYEDCRC: u1, // bit offset: 3 desc: DELAYED CRC. This bit determines the number of bytes, if any, of proprietary header information that exist on the front of IEEE 802.3 frames. When 1, four bytes of header (ignored by the CRC function) are added. When 0, there is no proprietary header. + CRCEN: u1, // bit offset: 4 desc: CRC ENABLESet this bit to append a CRC to every frame whether padding was required or not. Must be set if PAD/CRC ENABLE is set. Clear this bit if frames presented to the MAC contain a CRC. + PADCRCEN: u1, // bit offset: 5 desc: PAD CRC ENABLE. Set this bit to have the MAC pad all short frames. Clear this bit if frames presented to the MAC have a valid length. This bit is used in conjunction with AUTO PAD ENABLE and VLAN PAD ENABLE. See Table 153 - Pad Operation for details on the pad function. + VLANPADEN: u1, // bit offset: 6 desc: VLAN PAD ENABLE. Set this bit to cause the MAC to pad all short frames to 64 bytes and append a valid CRC. Consult Table 153 - Pad Operation for more information on the various padding features. Note: This bit is ignored if PAD / CRC ENABLE is cleared. + AUTODETPADEN: u1, // bit offset: 7 desc: AUTODETECTPAD ENABLE. Set this bit to cause the MAC to automatically detect the type of frame, either tagged or un-tagged, by comparing the two octets following the source address with 0x8100 (VLAN Protocol ID) and pad accordingly. Table 153 - Pad Operation provides a description of the pad function based on the configuration of this register. Note: This bit is ignored if PAD / CRC ENABLE is cleared. + PPENF: u1, // bit offset: 8 desc: PURE PREAMBLE ENFORCEMEN. When enabled (set to 1), the MAC will verify the content of the preamble to ensure it contains 0x55 and is error-free. A packet with an incorrect preamble is discarded. When disabled, no preamble checking is performed. + LPENF: u1, // bit offset: 9 desc: LONG PREAMBLE ENFORCEMENT. When enabled (set to 1), the MAC only allows receive packets which contain preamble fields less than 12 bytes in length. When disabled, the MAC allows any length preamble as per the Standard. + // RESERVED: u2, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, reserved1: u1 = 0, - NOBACKOFF: bool, // bit offset: 12 desc: When enabled (set to 1), the MAC will immediately retransmit following a collision rather than using the Binary Exponential Backoff algorithm as specified in the Standard. - BP_NOBACKOFF: bool, // bit offset: 13 desc: BACK PRESSURE / NO BACKOFF. When enabled (set to 1), after the MAC incidentally causes a collision during back pressure, it will immediately retransmit without backoff, reducing the chance of further collisions and ensuring transmit packets get sent. - EXCESSDEFER: bool, // bit offset: 14 desc: When enabled (set to 1) the MAC will defer to carrier indefinitely as per the Standard. When disabled, the MAC will abort when the excessive deferral limit is reached. + NOBACKOFF: u1, // bit offset: 12 desc: When enabled (set to 1), the MAC will immediately retransmit following a collision rather than using the Binary Exponential Backoff algorithm as specified in the Standard. + BP_NOBACKOFF: u1, // bit offset: 13 desc: BACK PRESSURE / NO BACKOFF. When enabled (set to 1), after the MAC incidentally causes a collision during back pressure, it will immediately retransmit without backoff, reducing the chance of further collisions and ensuring transmit packets get sent. + EXCESSDEFER: u1, // bit offset: 14 desc: When enabled (set to 1) the MAC will defer to carrier indefinitely as per the Standard. When disabled, the MAC will abort when the excessive deferral limit is reached. + // RESERVED: u17, // bit offset: 15 desc: Reserved. Read value is undefined, only zero should be written. padding17: u1 = 0, padding16: u1 = 0, padding15: u1 = 0, @@ -13222,6 +17019,7 @@ pub const EMAC = extern struct { // byte offset: 8 Back-to-Back Inter-Packet-Gap register. pub const IPGT = mmio(Address + 0x00000008, 32, packed struct { BTOBINTEGAP: u7, // bit offset: 0 desc: BACK-TO-BACK INTER-PACKET-GAP.This is a programmable field representing the nibble time offset of the minimum possible period between the end of any transmitted packet to the beginning of the next. In Full-Duplex mode, the register value should be the desired period in nibble times minus 3. In Half-Duplex mode, the register value should be the desired period in nibble times minus 6. In Full-Duplex the recommended setting is 0x15 (21d), which represents the minimum IPG of 960 ns (in 100 Mbps mode) or 9.6 us (in 10 Mbps mode). In Half-Duplex the recommended setting is 0x12 (18d), which also represents the minimum IPG of 960 ns (in 100 Mbps mode) or 9.6 us (in 10 Mbps mode). + // RESERVED: u25, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. padding25: u1 = 0, padding24: u1 = 0, padding23: u1 = 0, @@ -13251,8 +17049,10 @@ pub const EMAC = extern struct { // byte offset: 12 Non Back-to-Back Inter-Packet-Gap register. pub const IPGR = mmio(Address + 0x0000000c, 32, packed struct { NBTOBINTEGAP2: u7, // bit offset: 0 desc: NON-BACK-TO-BACK INTER-PACKET-GAP PART2. This is a programmable field representing the Non-Back-to-Back Inter-Packet-Gap. The recommended value is 0x12 (18d), which represents the minimum IPG of 960 ns (in 100 Mbps mode) or 9.6 us (in 10 Mbps mode). + // RESERVED: u1, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, NBTOBINTEGAP1: u7, // bit offset: 8 desc: NON-BACK-TO-BACK INTER-PACKET-GAP PART1. This is a programmable field representing the optional carrierSense window referenced in IEEE 802.3/4.2.3.2.1 'Carrier Deference'. If carrier is detected during the timing of IPGR1, the MAC defers to carrier. If, however, carrier becomes active after IPGR1, the MAC continues timing IPGR2 and transmits, knowingly causing a collision, thus ensuring fair access to medium. Its range of values is 0x0 to IPGR2. The recommended value is 0xC (12d) + // RESERVED: u17, // bit offset: 15 desc: Reserved. Read value is undefined, only zero should be written. padding17: u1 = 0, padding16: u1 = 0, padding15: u1 = 0, @@ -13274,11 +17074,13 @@ pub const EMAC = extern struct { // byte offset: 16 Collision window / Retry register. pub const CLRT = mmio(Address + 0x00000010, 32, packed struct { RETRANSMAX: u4, // bit offset: 0 desc: RETRANSMISSION MAXIMUM.This is a programmable field specifying the number of retransmission attempts following a collision before aborting the packet due to excessive collisions. The Standard specifies the attemptLimit to be 0xF (15d). See IEEE 802.3/4.2.3.2.5. + // RESERVED: u4, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, COLLWIN: u6, // bit offset: 8 desc: COLLISION WINDOW. This is a programmable field representing the slot time or collision window during which collisions occur in properly configured networks. The default value of 0x37 (55d) represents a 56 byte window following the preamble and SFD. + // RESERVED: u18, // bit offset: 14 desc: Reserved. Read value is undefined, only zero should be written. padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -13301,6 +17103,7 @@ pub const EMAC = extern struct { // byte offset: 20 Maximum Frame register. pub const MAXF = mmio(Address + 0x00000014, 32, packed struct { MAXFLEN: u16, // bit offset: 0 desc: MAXIMUM FRAME LENGTH. This field resets to the value 0x0600, which represents a maximum receive frame of 1536 octets. An untagged maximum size Ethernet frame is 1518 octets. A tagged frame adds four octets for a total of 1522 octets. If a shorter maximum length restriction is desired, program this 16-bit field. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13320,6 +17123,7 @@ pub const EMAC = extern struct { }); // byte offset: 24 PHY Support register. pub const SUPP = mmio(Address + 0x00000018, 32, packed struct { + // RESERVED: u8, // bit offset: 0 desc: Unused reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -13328,7 +17132,8 @@ pub const EMAC = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SPEED: bool, // bit offset: 8 desc: This bit configures the Reduced MII logic for the current operating speed. When set, 100 Mbps mode is selected. When cleared, 10 Mbps mode is selected. + SPEED: u1, // bit offset: 8 desc: This bit configures the Reduced MII logic for the current operating speed. When set, 100 Mbps mode is selected. When cleared, 10 Mbps mode is selected. + // RESERVED: u23, // bit offset: 9 desc: Unused padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -13355,9 +17160,10 @@ pub const EMAC = extern struct { }); // byte offset: 28 Test register. pub const TEST = mmio(Address + 0x0000001c, 32, packed struct { - SCPQ: bool, // bit offset: 0 desc: SHORTCUT PAUSE QUANTA. This bit reduces the effective PAUSE quanta from 64 byte-times to 1 byte-time. - TESTPAUSE: bool, // bit offset: 1 desc: This bit causes the MAC Control sublayer to inhibit transmissions, just as if a PAUSE Receive Control frame with a nonzero pause time parameter was received. - TESTBP: bool, // bit offset: 2 desc: TEST BACKPRESSURE. Setting this bit will cause the MAC to assert backpressure on the link. Backpressure causes preamble to be transmitted, raising carrier sense. A transmit packet from the system will be sent during backpressure. + SCPQ: u1, // bit offset: 0 desc: SHORTCUT PAUSE QUANTA. This bit reduces the effective PAUSE quanta from 64 byte-times to 1 byte-time. + TESTPAUSE: u1, // bit offset: 1 desc: This bit causes the MAC Control sublayer to inhibit transmissions, just as if a PAUSE Receive Control frame with a nonzero pause time parameter was received. + TESTBP: u1, // bit offset: 2 desc: TEST BACKPRESSURE. Setting this bit will cause the MAC to assert backpressure on the link. Backpressure causes preamble to be transmitted, raising carrier sense. A transmit packet from the system will be sent during backpressure. + // RESERVED: u29, // bit offset: 3 desc: Unused padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -13390,9 +17196,10 @@ pub const EMAC = extern struct { }); // byte offset: 32 MII Mgmt Configuration register. pub const MCFG = mmio(Address + 0x00000020, 32, packed struct { - SCANINC: bool, // bit offset: 0 desc: SCAN INCREMENT. Set this bit to cause the MII Management hardware to perform read cycles across a range of PHYs. When set, the MII Management hardware will perform read cycles from address 1 through the value set in PHY ADDRESS[4:0]. Clear this bit to allow continuous reads of the same PHY. - SUPPPREAMBLE: bool, // bit offset: 1 desc: SUPPRESS PREAMBLE. Set this bit to cause the MII Management hardware to perform read/write cycles without the 32-bit preamble field. Clear this bit to cause normal cycles to be performed. Some PHYs support suppressed preamble. + SCANINC: u1, // bit offset: 0 desc: SCAN INCREMENT. Set this bit to cause the MII Management hardware to perform read cycles across a range of PHYs. When set, the MII Management hardware will perform read cycles from address 1 through the value set in PHY ADDRESS[4:0]. Clear this bit to allow continuous reads of the same PHY. + SUPPPREAMBLE: u1, // bit offset: 1 desc: SUPPRESS PREAMBLE. Set this bit to cause the MII Management hardware to perform read/write cycles without the 32-bit preamble field. Clear this bit to cause normal cycles to be performed. Some PHYs support suppressed preamble. CLOCKSEL: u4, // bit offset: 2 desc: CLOCK SELECT. This field is used by the clock divide logic in creating the MII Management Clock (MDC) which IEEE 802.3u defines to be no faster than 2.5 MHz. Some PHYs support clock rates up to 12.5 MHz, however. The AHB bus clock (HCLK) is divided by the specified amount. Refer to Table 160 below for the definition of values for this field. + // RESERVED: u9, // bit offset: 6 desc: Unused reserved9: u1 = 0, reserved8: u1 = 0, reserved7: u1 = 0, @@ -13402,7 +17209,8 @@ pub const EMAC = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - RESETMIIMGMT: bool, // bit offset: 15 desc: RESET MII MGMT. This bit resets the MII Management hardware. + RESETMIIMGMT: u1, // bit offset: 15 desc: RESET MII MGMT. This bit resets the MII Management hardware. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13422,8 +17230,9 @@ pub const EMAC = extern struct { }); // byte offset: 36 MII Mgmt Command register. pub const MCMD = mmio(Address + 0x00000024, 32, packed struct { - READ: bool, // bit offset: 0 desc: This bit causes the MII Management hardware to perform a single Read cycle. The Read data is returned in Register MRDD (MII Mgmt Read Data). - SCAN: bool, // bit offset: 1 desc: This bit causes the MII Management hardware to perform Read cycles continuously. This is useful for monitoring Link Fail for example. + READ: u1, // bit offset: 0 desc: This bit causes the MII Management hardware to perform a single Read cycle. The Read data is returned in Register MRDD (MII Mgmt Read Data). + SCAN: u1, // bit offset: 1 desc: This bit causes the MII Management hardware to perform Read cycles continuously. This is useful for monitoring Link Fail for example. + // RESERVED: u30, // bit offset: 2 desc: Unused padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -13458,10 +17267,12 @@ pub const EMAC = extern struct { // byte offset: 40 MII Mgmt Address register. pub const MADR = mmio(Address + 0x00000028, 32, packed struct { REGADDR: u5, // bit offset: 0 desc: REGISTER ADDRESS. This field represents the 5-bit Register Address field of Mgmt cycles. Up to 32 registers can be accessed. + // RESERVED: u3, // bit offset: 5 desc: Unused reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, PHYADDR: u5, // bit offset: 8 desc: PHY ADDRESS. This field represents the 5-bit PHY Address field of Mgmt cycles. Up to 31 PHYs can be addressed (0 is reserved). + // RESERVED: u19, // bit offset: 13 desc: Unused padding19: u1 = 0, padding18: u1 = 0, padding17: u1 = 0, @@ -13485,6 +17296,7 @@ pub const EMAC = extern struct { // byte offset: 44 MII Mgmt Write Data register. pub const MWTD = mmio(Address + 0x0000002c, 32, packed struct { WRITEDATA: u16, // bit offset: 0 desc: WRITE DATA. When written, an MII Mgmt write cycle is performed using the 16-bit data and the pre-configured PHY and Register addresses from the MII Mgmt Address register (MADR). + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13505,6 +17317,7 @@ pub const EMAC = extern struct { // byte offset: 48 MII Mgmt Read Data register. pub const MRDD = mmio(Address + 0x00000030, 32, packed struct { READDATA: u16, // bit offset: 0 desc: READ DATA. Following an MII Mgmt Read Cycle, the 16-bit data can be read from this location. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13524,10 +17337,11 @@ pub const EMAC = extern struct { }); // byte offset: 52 MII Mgmt Indicators register. pub const MIND = mmio(Address + 0x00000034, 32, packed struct { - BUSY: bool, // bit offset: 0 desc: When 1 is returned - indicates MII Mgmt is currently performing an MII Mgmt Read or Write cycle. - SCANNING: bool, // bit offset: 1 desc: When 1 is returned - indicates a scan operation (continuous MII Mgmt Read cycles) is in progress. - NOTVALID: bool, // bit offset: 2 desc: When 1 is returned - indicates MII Mgmt Read cycle has not completed and the Read Data is not yet valid. - MIILINKFAIL: bool, // bit offset: 3 desc: When 1 is returned - indicates that an MII Mgmt link fail has occurred. + BUSY: u1, // bit offset: 0 desc: When 1 is returned - indicates MII Mgmt is currently performing an MII Mgmt Read or Write cycle. + SCANNING: u1, // bit offset: 1 desc: When 1 is returned - indicates a scan operation (continuous MII Mgmt Read cycles) is in progress. + NOTVALID: u1, // bit offset: 2 desc: When 1 is returned - indicates MII Mgmt Read cycle has not completed and the Read Data is not yet valid. + MIILINKFAIL: u1, // bit offset: 3 desc: When 1 is returned - indicates that an MII Mgmt link fail has occurred. + // RESERVED: u28, // bit offset: 4 desc: Unused padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -13561,6 +17375,7 @@ pub const EMAC = extern struct { pub const SA0 = mmio(Address + 0x00000040, 32, packed struct { SADDR2: u8, // bit offset: 0 desc: STATION ADDRESS, 2nd octet. This field holds the second octet of the station address. SADDR1: u8, // bit offset: 8 desc: STATION ADDRESS, 1st octet. This field holds the first octet of the station address. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13582,6 +17397,7 @@ pub const EMAC = extern struct { pub const SA1 = mmio(Address + 0x00000044, 32, packed struct { SADDR4: u8, // bit offset: 0 desc: STATION ADDRESS, 4th octet. This field holds the fourth octet of the station address. SADDR3: u8, // bit offset: 8 desc: STATION ADDRESS, 3rd octet. This field holds the third octet of the station address. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13603,6 +17419,7 @@ pub const EMAC = extern struct { pub const SA2 = mmio(Address + 0x00000048, 32, packed struct { SADDR6: u8, // bit offset: 0 desc: STATION ADDRESS, 6th octet. This field holds the sixth octet of the station address. SADDR5: u8, // bit offset: 8 desc: STATION ADDRESS, 5th octet. This field holds the fifth octet of the station address. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13622,17 +17439,19 @@ pub const EMAC = extern struct { }); // byte offset: 256 Command register. pub const COMMAND = mmio(Address + 0x00000100, 32, packed struct { - RXENABLE: bool, // bit offset: 0 desc: Enable receive. - TXENABLE: bool, // bit offset: 1 desc: Enable transmit. + RXENABLE: u1, // bit offset: 0 desc: Enable receive. + TXENABLE: u1, // bit offset: 1 desc: Enable transmit. + // RESERVED: u1, // bit offset: 2 desc: Unused reserved1: u1 = 0, - REGRESET: bool, // bit offset: 3 desc: When a 1 is written, all datapaths and the host registers are reset. The MAC needs to be reset separately. - TXRESET: bool, // bit offset: 4 desc: When a 1 is written, the transmit datapath is reset. - RXRESET: bool, // bit offset: 5 desc: When a 1 is written, the receive datapath is reset. - PASSRUNTFRAME: bool, // bit offset: 6 desc: When set to 1 , passes runt frames s1maller than 64 bytes to memory unless they have a CRC error. If 0 runt frames are filtered out. - PASSRXFILTER: bool, // bit offset: 7 desc: When set to 1 , disables receive filtering i.e. all frames received are written to memory. - TXFLOWCONTROL: bool, // bit offset: 8 desc: Enable IEEE 802.3 / clause 31 flow control sending pause frames in full duplex and continuous preamble in half duplex. - RMII: bool, // bit offset: 9 desc: When set to 1 , RMII mode is selected; if 0, MII mode is selected. - FULLDUPLEX: bool, // bit offset: 10 desc: When set to 1 , indicates full duplex operation. + REGRESET: u1, // bit offset: 3 desc: When a 1 is written, all datapaths and the host registers are reset. The MAC needs to be reset separately. + TXRESET: u1, // bit offset: 4 desc: When a 1 is written, the transmit datapath is reset. + RXRESET: u1, // bit offset: 5 desc: When a 1 is written, the receive datapath is reset. + PASSRUNTFRAME: u1, // bit offset: 6 desc: When set to 1 , passes runt frames s1maller than 64 bytes to memory unless they have a CRC error. If 0 runt frames are filtered out. + PASSRXFILTER: u1, // bit offset: 7 desc: When set to 1 , disables receive filtering i.e. all frames received are written to memory. + TXFLOWCONTROL: u1, // bit offset: 8 desc: Enable IEEE 802.3 / clause 31 flow control sending pause frames in full duplex and continuous preamble in half duplex. + RMII: u1, // bit offset: 9 desc: When set to 1 , RMII mode is selected; if 0, MII mode is selected. + FULLDUPLEX: u1, // bit offset: 10 desc: When set to 1 , indicates full duplex operation. + // RESERVED: u21, // bit offset: 11 desc: Unused padding21: u1 = 0, padding20: u1 = 0, padding19: u1 = 0, @@ -13657,8 +17476,9 @@ pub const EMAC = extern struct { }); // byte offset: 260 Status register. pub const STATUS = mmio(Address + 0x00000104, 32, packed struct { - RXSTATUS: bool, // bit offset: 0 desc: If 1, the receive channel is active. If 0, the receive channel is inactive. - TXSTATUS: bool, // bit offset: 1 desc: If 1, the transmit channel is active. If 0, the transmit channel is inactive. + RXSTATUS: u1, // bit offset: 0 desc: If 1, the receive channel is active. If 0, the receive channel is inactive. + TXSTATUS: u1, // bit offset: 1 desc: If 1, the transmit channel is active. If 0, the transmit channel is inactive. + // RESERVED: u30, // bit offset: 2 desc: Unused padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -13692,12 +17512,14 @@ pub const EMAC = extern struct { }); // byte offset: 264 Receive descriptor base address register. pub const RXDESCRIPTOR = mmio(Address + 0x00000108, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Fixed to 00 reserved2: u1 = 0, reserved1: u1 = 0, RXDESCRIPTOR: u30, // bit offset: 2 desc: MSBs of receive descriptor base address. }); // byte offset: 268 Receive status base address register. pub const RXSTATUS = mmio(Address + 0x0000010c, 32, packed struct { + // RESERVED: u3, // bit offset: 0 desc: Fixed to 000 reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, @@ -13706,6 +17528,7 @@ pub const EMAC = extern struct { // byte offset: 272 Receive number of descriptors register. pub const RXDESCRIPTORNUMBER = mmio(Address + 0x00000110, 32, packed struct { RXDESCRIPTORN: u16, // bit offset: 0 desc: RxDescriptorNumber. Number of descriptors in the descriptor array for which RxDescriptor is the base address. The number of descriptors is minus one encoded. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13726,6 +17549,7 @@ pub const EMAC = extern struct { // byte offset: 276 Receive produce index register. pub const RXPRODUCEINDEX = mmio(Address + 0x00000114, 32, packed struct { RXPRODUCEIX: u16, // bit offset: 0 desc: Index of the descriptor that is going to be filled next by the receive datapath. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13746,6 +17570,7 @@ pub const EMAC = extern struct { // byte offset: 280 Receive consume index register. pub const RXCONSUMEINDEX = mmio(Address + 0x00000118, 32, packed struct { RXCONSUMEIX: u16, // bit offset: 0 desc: Index of the descriptor that is going to be processed next by the receive + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13765,12 +17590,14 @@ pub const EMAC = extern struct { }); // byte offset: 284 Transmit descriptor base address register. pub const TXDESCRIPTOR = mmio(Address + 0x0000011c, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Fixed to 00 reserved2: u1 = 0, reserved1: u1 = 0, TXD: u30, // bit offset: 2 desc: TxDescriptor. MSBs of transmit descriptor base address. }); // byte offset: 288 Transmit status base address register. pub const TXSTATUS = mmio(Address + 0x00000120, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Fixed to 00 reserved2: u1 = 0, reserved1: u1 = 0, TXSTAT: u30, // bit offset: 2 desc: TxStatus. MSBs of transmit status base address. @@ -13778,6 +17605,7 @@ pub const EMAC = extern struct { // byte offset: 292 Transmit number of descriptors register. pub const TXDESCRIPTORNUMBER = mmio(Address + 0x00000124, 32, packed struct { TXDN: u16, // bit offset: 0 desc: TxDescriptorNumber. Number of descriptors in the descriptor array for which TxDescriptor is the base address. The register is minus one encoded. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13798,6 +17626,7 @@ pub const EMAC = extern struct { // byte offset: 296 Transmit produce index register. pub const TXPRODUCEINDEX = mmio(Address + 0x00000128, 32, packed struct { TXPI: u16, // bit offset: 0 desc: TxProduceIndex. Index of the descriptor that is going to be filled next by the transmit software driver. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13818,6 +17647,7 @@ pub const EMAC = extern struct { // byte offset: 300 Transmit consume index register. pub const TXCONSUMEINDEX = mmio(Address + 0x0000012c, 32, packed struct { TXCI: u16, // bit offset: 0 desc: TxConsumeIndex. Index of the descriptor that is going to be transmitted next by the transmit datapath. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13837,28 +17667,29 @@ pub const EMAC = extern struct { }); // byte offset: 344 Transmit status vector 0 register. pub const TSV0 = mmio(Address + 0x00000158, 32, packed struct { - CRCERR: bool, // bit offset: 0 desc: CRC error. The attached CRC in the packet did not match the internally generated CRC. - LCE: bool, // bit offset: 1 desc: Length check error. Indicates the frame length field does not match the actual number of data items and is not a type field. - LOR: bool, // bit offset: 2 desc: Length out of range. Indicates that frame type/length field was larger than 1500 bytes. The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the status of the received frame. - DONE: bool, // bit offset: 3 desc: Transmission of packet was completed. - MULTICAST: bool, // bit offset: 4 desc: Packet's destination was a multicast address. - BROADCAST: bool, // bit offset: 5 desc: Packet's destination was a broadcast address. - PACKETDEFER: bool, // bit offset: 6 desc: Packet was deferred for at least one attempt, but less than an excessive defer. - EXDF: bool, // bit offset: 7 desc: Excessive Defer. Packet was deferred in excess of 6071 nibble times in 100 Mbps or 24287 bit times in 10 Mbps mode. - EXCOL: bool, // bit offset: 8 desc: Excessive Collision. Packet was aborted due to exceeding of maximum allowed number of collisions. - LCOL: bool, // bit offset: 9 desc: Late Collision. Collision occurred beyond collision window, 512 bit times. - GIANT: bool, // bit offset: 10 desc: Byte count in frame was greater than can be represented in the transmit byte count field in TSV1. - UNDERRUN: bool, // bit offset: 11 desc: Host side caused buffer underrun. + CRCERR: u1, // bit offset: 0 desc: CRC error. The attached CRC in the packet did not match the internally generated CRC. + LCE: u1, // bit offset: 1 desc: Length check error. Indicates the frame length field does not match the actual number of data items and is not a type field. + LOR: u1, // bit offset: 2 desc: Length out of range. Indicates that frame type/length field was larger than 1500 bytes. The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the status of the received frame. + DONE: u1, // bit offset: 3 desc: Transmission of packet was completed. + MULTICAST: u1, // bit offset: 4 desc: Packet's destination was a multicast address. + BROADCAST: u1, // bit offset: 5 desc: Packet's destination was a broadcast address. + PACKETDEFER: u1, // bit offset: 6 desc: Packet was deferred for at least one attempt, but less than an excessive defer. + EXDF: u1, // bit offset: 7 desc: Excessive Defer. Packet was deferred in excess of 6071 nibble times in 100 Mbps or 24287 bit times in 10 Mbps mode. + EXCOL: u1, // bit offset: 8 desc: Excessive Collision. Packet was aborted due to exceeding of maximum allowed number of collisions. + LCOL: u1, // bit offset: 9 desc: Late Collision. Collision occurred beyond collision window, 512 bit times. + GIANT: u1, // bit offset: 10 desc: Byte count in frame was greater than can be represented in the transmit byte count field in TSV1. + UNDERRUN: u1, // bit offset: 11 desc: Host side caused buffer underrun. TOTALBYTES: u16, // bit offset: 12 desc: The total number of bytes transferred including collided attempts. - CONTROLFRAME: bool, // bit offset: 28 desc: The frame was a control frame. - PAUSE: bool, // bit offset: 29 desc: The frame was a control frame with a valid PAUSE opcode. - BACKPRESSURE: bool, // bit offset: 30 desc: Carrier-sense method backpressure was previously applied. - VLAN: bool, // bit offset: 31 desc: Frame's length/type field contained 0x8100 which is the VLAN protocol identifier. + CONTROLFRAME: u1, // bit offset: 28 desc: The frame was a control frame. + PAUSE: u1, // bit offset: 29 desc: The frame was a control frame with a valid PAUSE opcode. + BACKPRESSURE: u1, // bit offset: 30 desc: Carrier-sense method backpressure was previously applied. + VLAN: u1, // bit offset: 31 desc: Frame's length/type field contained 0x8100 which is the VLAN protocol identifier. }); // byte offset: 348 Transmit status vector 1 register. pub const TSV1 = mmio(Address + 0x0000015c, 32, packed struct { TBC: u16, // bit offset: 0 desc: Transmit byte count. The total number of bytes in the frame, not counting the collided bytes. TCC: u4, // bit offset: 16 desc: Transmit collision count. Number of collisions the current packet incurred during transmission attempts. The maximum number of collisions (16) cannot be represented. + // RESERVED: u12, // bit offset: 20 desc: Unused padding12: u1 = 0, padding11: u1 = 0, padding10: u1 = 0, @@ -13875,21 +17706,22 @@ pub const EMAC = extern struct { // byte offset: 352 Receive status vector register. pub const RSV = mmio(Address + 0x00000160, 32, packed struct { RBC: u16, // bit offset: 0 desc: Received byte count. Indicates length of received frame. - PPI: bool, // bit offset: 16 desc: Packet previously ignored. Indicates that a packet was dropped. - RXDVSEEN: bool, // bit offset: 17 desc: RXDV event previously seen. Indicates that the last receive event seen was not long enough to be a valid packet. - CESEEN: bool, // bit offset: 18 desc: Carrier event previously seen. Indicates that at some time since the last receive statistics, a carrier event was detected. - RCV: bool, // bit offset: 19 desc: Receive code violation. Indicates that received PHY data does not represent a valid receive code. - CRCERR: bool, // bit offset: 20 desc: CRC error. The attached CRC in the packet did not match the internally generated CRC. - LCERR: bool, // bit offset: 21 desc: Length check error. Indicates the frame length field does not match the actual number of data items and is not a type field. - LOR: bool, // bit offset: 22 desc: Length out of range. Indicates that frame type/length field was larger than 1518 bytes. The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the status of the received frame. - ROK: bool, // bit offset: 23 desc: Receive OK. The packet had valid CRC and no symbol errors. - MULTICAST: bool, // bit offset: 24 desc: The packet destination was a multicast address. - BROADCAST: bool, // bit offset: 25 desc: The packet destination was a broadcast address. - DRIBBLENIBBLE: bool, // bit offset: 26 desc: Indicates that after the end of packet another 1-7 bits were received. A single nibble, called dribble nibble, is formed but not sent out. - CONTROLFRAME: bool, // bit offset: 27 desc: The frame was a control frame. - PAUSE: bool, // bit offset: 28 desc: The frame was a control frame with a valid PAUSE opcode. - UO: bool, // bit offset: 29 desc: Unsupported Opcode. The current frame was recognized as a Control Frame but contains an unknown opcode. - VLAN: bool, // bit offset: 30 desc: Frame's length/type field contained 0x8100 which is the VLAN protocol identifier. + PPI: u1, // bit offset: 16 desc: Packet previously ignored. Indicates that a packet was dropped. + RXDVSEEN: u1, // bit offset: 17 desc: RXDV event previously seen. Indicates that the last receive event seen was not long enough to be a valid packet. + CESEEN: u1, // bit offset: 18 desc: Carrier event previously seen. Indicates that at some time since the last receive statistics, a carrier event was detected. + RCV: u1, // bit offset: 19 desc: Receive code violation. Indicates that received PHY data does not represent a valid receive code. + CRCERR: u1, // bit offset: 20 desc: CRC error. The attached CRC in the packet did not match the internally generated CRC. + LCERR: u1, // bit offset: 21 desc: Length check error. Indicates the frame length field does not match the actual number of data items and is not a type field. + LOR: u1, // bit offset: 22 desc: Length out of range. Indicates that frame type/length field was larger than 1518 bytes. The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the status of the received frame. + ROK: u1, // bit offset: 23 desc: Receive OK. The packet had valid CRC and no symbol errors. + MULTICAST: u1, // bit offset: 24 desc: The packet destination was a multicast address. + BROADCAST: u1, // bit offset: 25 desc: The packet destination was a broadcast address. + DRIBBLENIBBLE: u1, // bit offset: 26 desc: Indicates that after the end of packet another 1-7 bits were received. A single nibble, called dribble nibble, is formed but not sent out. + CONTROLFRAME: u1, // bit offset: 27 desc: The frame was a control frame. + PAUSE: u1, // bit offset: 28 desc: The frame was a control frame with a valid PAUSE opcode. + UO: u1, // bit offset: 29 desc: Unsupported Opcode. The current frame was recognized as a Control Frame but contains an unknown opcode. + VLAN: u1, // bit offset: 30 desc: Frame's length/type field contained 0x8100 which is the VLAN protocol identifier. + // RESERVED: u1, // bit offset: 31 desc: Unused padding1: u1 = 0, }); // byte offset: 368 Flow control counter register. @@ -13900,6 +17732,7 @@ pub const EMAC = extern struct { // byte offset: 372 Flow control status register. pub const FLOWCONTROLSTATUS = mmio(Address + 0x00000174, 32, packed struct { MCC: u16, // bit offset: 0 desc: MirrorCounterCurrent. In full duplex mode this register represents the current value of the datapath's mirror counter which counts up to the value specified by the MirrorCounter field in the FlowControlCounter register. In half duplex mode the register counts until it reaches the value of the PauseTimer bits in the FlowControlCounter register. + // RESERVED: u16, // bit offset: 16 desc: Unused padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -13919,20 +17752,22 @@ pub const EMAC = extern struct { }); // byte offset: 512 Receive filter control register. pub const RXFILTERCTRL = mmio(Address + 0x00000200, 32, packed struct { - AUE: bool, // bit offset: 0 desc: AcceptUnicastEn. When set to 1, all unicast frames are accepted. - ABE: bool, // bit offset: 1 desc: AcceptBroadcastEn. When set to 1, all broadcast frames are accepted. - AME: bool, // bit offset: 2 desc: AcceptMulticastEn. When set to 1, all multicast frames are accepted. - AUHE: bool, // bit offset: 3 desc: AcceptUnicastHashEn. When set to 1, unicast frames that pass the imperfect hash filter are accepted. - AMHE: bool, // bit offset: 4 desc: AcceptMulticastHashEn. When set to 1, multicast frames that pass the imperfect hash filter are accepted. - APE: bool, // bit offset: 5 desc: AcceptPerfectEn. When set to 1, the frames with a destination address identical to the station address are accepted. + AUE: u1, // bit offset: 0 desc: AcceptUnicastEn. When set to 1, all unicast frames are accepted. + ABE: u1, // bit offset: 1 desc: AcceptBroadcastEn. When set to 1, all broadcast frames are accepted. + AME: u1, // bit offset: 2 desc: AcceptMulticastEn. When set to 1, all multicast frames are accepted. + AUHE: u1, // bit offset: 3 desc: AcceptUnicastHashEn. When set to 1, unicast frames that pass the imperfect hash filter are accepted. + AMHE: u1, // bit offset: 4 desc: AcceptMulticastHashEn. When set to 1, multicast frames that pass the imperfect hash filter are accepted. + APE: u1, // bit offset: 5 desc: AcceptPerfectEn. When set to 1, the frames with a destination address identical to the station address are accepted. + // RESERVED: u6, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - MPEW: bool, // bit offset: 12 desc: MagicPacketEnWoL. When set to 1, the result of the magic packet filter will generate a WoL interrupt when there is a match. - RFEW: bool, // bit offset: 13 desc: RxFilterEnWoL. When set to 1, the result of the perfect address matching filter and the imperfect hash filter will generate a WoL interrupt when there is a match. + MPEW: u1, // bit offset: 12 desc: MagicPacketEnWoL. When set to 1, the result of the magic packet filter will generate a WoL interrupt when there is a match. + RFEW: u1, // bit offset: 13 desc: RxFilterEnWoL. When set to 1, the result of the perfect address matching filter and the imperfect hash filter will generate a WoL interrupt when there is a match. + // RESERVED: u18, // bit offset: 14 desc: Unused padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -13954,15 +17789,17 @@ pub const EMAC = extern struct { }); // byte offset: 516 Receive filter WoL status register. pub const RXFILTERWOLSTATUS = mmio(Address + 0x00000204, 32, packed struct { - AUW: bool, // bit offset: 0 desc: AcceptUnicastWoL. When the value is 1, a unicast frames caused WoL. - ABW: bool, // bit offset: 1 desc: AcceptBroadcastWoL. When the value is 1, a broadcast frame caused WoL. - AMW: bool, // bit offset: 2 desc: AcceptMulticastWoL. When the value is 1, a multicast frame caused WoL. - AUHW: bool, // bit offset: 3 desc: AcceptUnicastHashWoL. When the value is 1, a unicast frame that passes the imperfect hash filter caused WoL. - AMHW: bool, // bit offset: 4 desc: AcceptMulticastHashWoL. When the value is 1, a multicast frame that passes the imperfect hash filter caused WoL. - APW: bool, // bit offset: 5 desc: AcceptPerfectWoL. When the value is 1, the perfect address matching filter caused WoL. + AUW: u1, // bit offset: 0 desc: AcceptUnicastWoL. When the value is 1, a unicast frames caused WoL. + ABW: u1, // bit offset: 1 desc: AcceptBroadcastWoL. When the value is 1, a broadcast frame caused WoL. + AMW: u1, // bit offset: 2 desc: AcceptMulticastWoL. When the value is 1, a multicast frame caused WoL. + AUHW: u1, // bit offset: 3 desc: AcceptUnicastHashWoL. When the value is 1, a unicast frame that passes the imperfect hash filter caused WoL. + AMHW: u1, // bit offset: 4 desc: AcceptMulticastHashWoL. When the value is 1, a multicast frame that passes the imperfect hash filter caused WoL. + APW: u1, // bit offset: 5 desc: AcceptPerfectWoL. When the value is 1, the perfect address matching filter caused WoL. + // RESERVED: u1, // bit offset: 6 desc: Unused reserved1: u1 = 0, - RFW: bool, // bit offset: 7 desc: RxFilterWoL. When the value is 1, the receive filter caused WoL. - MPW: bool, // bit offset: 8 desc: MagicPacketWoL. When the value is 1, the magic packet filter caused WoL. + RFW: u1, // bit offset: 7 desc: RxFilterWoL. When the value is 1, the receive filter caused WoL. + MPW: u1, // bit offset: 8 desc: MagicPacketWoL. When the value is 1, the magic packet filter caused WoL. + // RESERVED: u23, // bit offset: 9 desc: Unused padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -13989,15 +17826,17 @@ pub const EMAC = extern struct { }); // byte offset: 520 Receive filter WoL clear register. pub const RXFILTERWOLCLEAR = mmio(Address + 0x00000208, 32, packed struct { - AUWCLR: bool, // bit offset: 0 desc: AcceptUnicastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - ABWCLR: bool, // bit offset: 1 desc: AcceptBroadcastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - AMWCLR: bool, // bit offset: 2 desc: AcceptMulticastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - AUHWCLR: bool, // bit offset: 3 desc: AcceptUnicastHashWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - AMHWCLR: bool, // bit offset: 4 desc: AcceptMulticastHashWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - APWCLR: bool, // bit offset: 5 desc: AcceptPerfectWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + AUWCLR: u1, // bit offset: 0 desc: AcceptUnicastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + ABWCLR: u1, // bit offset: 1 desc: AcceptBroadcastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + AMWCLR: u1, // bit offset: 2 desc: AcceptMulticastWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + AUHWCLR: u1, // bit offset: 3 desc: AcceptUnicastHashWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + AMHWCLR: u1, // bit offset: 4 desc: AcceptMulticastHashWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + APWCLR: u1, // bit offset: 5 desc: AcceptPerfectWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + // RESERVED: u1, // bit offset: 6 desc: Unused reserved1: u1 = 0, - RFWCLR: bool, // bit offset: 7 desc: RxFilterWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. - MPWCLR: bool, // bit offset: 8 desc: MagicPacketWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + RFWCLR: u1, // bit offset: 7 desc: RxFilterWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + MPWCLR: u1, // bit offset: 8 desc: MagicPacketWoLClr. When a 1 is written, the corresponding status bit in the RxFilterWoLStatus register is cleared. + // RESERVED: u23, // bit offset: 9 desc: Unused padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -14032,20 +17871,22 @@ pub const EMAC = extern struct { }); // byte offset: 4064 Interrupt status register. pub const INTSTATUS = mmio(Address + 0x00000fe0, 32, packed struct { - RXOVERRUNINT: bool, // bit offset: 0 desc: Interrupt set on a fatal overrun error in the receive queue. The fatal interrupt should be resolved by a Rx soft-reset. The bit is not set when there is a nonfatal overrun error. - RXERRORINT: bool, // bit offset: 1 desc: Interrupt trigger on receive errors: AlignmentError, RangeError, LengthError, SymbolError, CRCError or NoDescriptor or Overrun. - RXFINISHEDINT: bool, // bit offset: 2 desc: Interrupt triggered when all receive descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. - RXDONEINT: bool, // bit offset: 3 desc: Interrupt triggered when a receive descriptor has been processed while the Interrupt bit in the Control field of the descriptor was set. - TXUNDERRUNINT: bool, // bit offset: 4 desc: Interrupt set on a fatal underrun error in the transmit queue. The fatal interrupt should be resolved by a Tx soft-reset. The bit is not set when there is a nonfatal underrun error. - TXERRORINT: bool, // bit offset: 5 desc: Interrupt trigger on transmit errors: LateCollision, ExcessiveCollision and ExcessiveDefer, NoDescriptor or Underrun. - TXFINISHEDINT: bool, // bit offset: 6 desc: Interrupt triggered when all transmit descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. - TXDONEINT: bool, // bit offset: 7 desc: Interrupt triggered when a descriptor has been transmitted while the Interrupt bit in the Control field of the descriptor was set. + RXOVERRUNINT: u1, // bit offset: 0 desc: Interrupt set on a fatal overrun error in the receive queue. The fatal interrupt should be resolved by a Rx soft-reset. The bit is not set when there is a nonfatal overrun error. + RXERRORINT: u1, // bit offset: 1 desc: Interrupt trigger on receive errors: AlignmentError, RangeError, LengthError, SymbolError, CRCError or NoDescriptor or Overrun. + RXFINISHEDINT: u1, // bit offset: 2 desc: Interrupt triggered when all receive descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. + RXDONEINT: u1, // bit offset: 3 desc: Interrupt triggered when a receive descriptor has been processed while the Interrupt bit in the Control field of the descriptor was set. + TXUNDERRUNINT: u1, // bit offset: 4 desc: Interrupt set on a fatal underrun error in the transmit queue. The fatal interrupt should be resolved by a Tx soft-reset. The bit is not set when there is a nonfatal underrun error. + TXERRORINT: u1, // bit offset: 5 desc: Interrupt trigger on transmit errors: LateCollision, ExcessiveCollision and ExcessiveDefer, NoDescriptor or Underrun. + TXFINISHEDINT: u1, // bit offset: 6 desc: Interrupt triggered when all transmit descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. + TXDONEINT: u1, // bit offset: 7 desc: Interrupt triggered when a descriptor has been transmitted while the Interrupt bit in the Control field of the descriptor was set. + // RESERVED: u4, // bit offset: 8 desc: Unused reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SOFTINT: bool, // bit offset: 12 desc: Interrupt triggered by software writing a 1 to the SoftIntSet bit in the IntSet register. - WAKEUPINT: bool, // bit offset: 13 desc: Interrupt triggered by a Wake-up event detected by the receive filter. + SOFTINT: u1, // bit offset: 12 desc: Interrupt triggered by software writing a 1 to the SoftIntSet bit in the IntSet register. + WAKEUPINT: u1, // bit offset: 13 desc: Interrupt triggered by a Wake-up event detected by the receive filter. + // RESERVED: u18, // bit offset: 14 desc: Unused padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -14067,20 +17908,22 @@ pub const EMAC = extern struct { }); // byte offset: 4068 Interrupt enable register. pub const INTENABLE = mmio(Address + 0x00000fe4, 32, packed struct { - RXOVERRUNINTEN: bool, // bit offset: 0 desc: Enable for interrupt trigger on receive buffer overrun or descriptor underrun situations. - RXERRORINTEN: bool, // bit offset: 1 desc: Enable for interrupt trigger on receive errors. - RXFINISHEDINTEN: bool, // bit offset: 2 desc: Enable for interrupt triggered when all receive descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. - RXDONEINTEN: bool, // bit offset: 3 desc: Enable for interrupt triggered when a receive descriptor has been processed while the Interrupt bit in the Control field of the descriptor was set. - TXUNDERRUNINTEN: bool, // bit offset: 4 desc: Enable for interrupt trigger on transmit buffer or descriptor underrun situations. - TXERRORINTEN: bool, // bit offset: 5 desc: Enable for interrupt trigger on transmit errors. - TXFINISHEDINTEN: bool, // bit offset: 6 desc: Enable for interrupt triggered when all transmit descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. - TXDONEINTEN: bool, // bit offset: 7 desc: Enable for interrupt triggered when a descriptor has been transmitted while the Interrupt bit in the Control field of the descriptor was set. + RXOVERRUNINTEN: u1, // bit offset: 0 desc: Enable for interrupt trigger on receive buffer overrun or descriptor underrun situations. + RXERRORINTEN: u1, // bit offset: 1 desc: Enable for interrupt trigger on receive errors. + RXFINISHEDINTEN: u1, // bit offset: 2 desc: Enable for interrupt triggered when all receive descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. + RXDONEINTEN: u1, // bit offset: 3 desc: Enable for interrupt triggered when a receive descriptor has been processed while the Interrupt bit in the Control field of the descriptor was set. + TXUNDERRUNINTEN: u1, // bit offset: 4 desc: Enable for interrupt trigger on transmit buffer or descriptor underrun situations. + TXERRORINTEN: u1, // bit offset: 5 desc: Enable for interrupt trigger on transmit errors. + TXFINISHEDINTEN: u1, // bit offset: 6 desc: Enable for interrupt triggered when all transmit descriptors have been processed i.e. on the transition to the situation where ProduceIndex == ConsumeIndex. + TXDONEINTEN: u1, // bit offset: 7 desc: Enable for interrupt triggered when a descriptor has been transmitted while the Interrupt bit in the Control field of the descriptor was set. + // RESERVED: u4, // bit offset: 8 desc: Unused reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SOFTINTEN: bool, // bit offset: 12 desc: Enable for interrupt triggered by the SoftInt bit in the IntStatus register, caused by software writing a 1 to the SoftIntSet bit in the IntSet register. - WAKEUPINTEN: bool, // bit offset: 13 desc: Enable for interrupt triggered by a Wake-up event detected by the receive filter. + SOFTINTEN: u1, // bit offset: 12 desc: Enable for interrupt triggered by the SoftInt bit in the IntStatus register, caused by software writing a 1 to the SoftIntSet bit in the IntSet register. + WAKEUPINTEN: u1, // bit offset: 13 desc: Enable for interrupt triggered by a Wake-up event detected by the receive filter. + // RESERVED: u18, // bit offset: 14 desc: Unused padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -14102,20 +17945,22 @@ pub const EMAC = extern struct { }); // byte offset: 4072 Interrupt clear register. pub const INTCLEAR = mmio(Address + 0x00000fe8, 32, packed struct { - RXOVERRUNINTCLR: bool, // bit offset: 0 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - RXERRORINTCLR: bool, // bit offset: 1 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - RXFINISHEDINTCLR: bool, // bit offset: 2 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - RXDONEINTCLR: bool, // bit offset: 3 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - TXUNDERRUNINTCLR: bool, // bit offset: 4 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - TXERRORINTCLR: bool, // bit offset: 5 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - TXFINISHEDINTCLR: bool, // bit offset: 6 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - TXDONEINTCLR: bool, // bit offset: 7 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + RXOVERRUNINTCLR: u1, // bit offset: 0 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + RXERRORINTCLR: u1, // bit offset: 1 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + RXFINISHEDINTCLR: u1, // bit offset: 2 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + RXDONEINTCLR: u1, // bit offset: 3 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + TXUNDERRUNINTCLR: u1, // bit offset: 4 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + TXERRORINTCLR: u1, // bit offset: 5 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + TXFINISHEDINTCLR: u1, // bit offset: 6 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + TXDONEINTCLR: u1, // bit offset: 7 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + // RESERVED: u4, // bit offset: 8 desc: Unused reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SOFTINTCLR: bool, // bit offset: 12 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. - WAKEUPINTCLR: bool, // bit offset: 13 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + SOFTINTCLR: u1, // bit offset: 12 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + WAKEUPINTCLR: u1, // bit offset: 13 desc: Writing a 1 clears the corresponding status bit in interrupt status register IntStatus. + // RESERVED: u18, // bit offset: 14 desc: Unused padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -14137,20 +17982,22 @@ pub const EMAC = extern struct { }); // byte offset: 4076 Interrupt set register. pub const INTSET = mmio(Address + 0x00000fec, 32, packed struct { - RXOVERRUNINTSET: bool, // bit offset: 0 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - RXERRORINTSET: bool, // bit offset: 1 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - RXFINISHEDINTSET: bool, // bit offset: 2 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - RXDONEINTSET: bool, // bit offset: 3 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - TXUNDERRUNINTSET: bool, // bit offset: 4 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - TXERRORINTSET: bool, // bit offset: 5 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - TXFINISHEDINTSET: bool, // bit offset: 6 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - TXDONEINTSET: bool, // bit offset: 7 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + RXOVERRUNINTSET: u1, // bit offset: 0 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + RXERRORINTSET: u1, // bit offset: 1 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + RXFINISHEDINTSET: u1, // bit offset: 2 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + RXDONEINTSET: u1, // bit offset: 3 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + TXUNDERRUNINTSET: u1, // bit offset: 4 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + TXERRORINTSET: u1, // bit offset: 5 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + TXFINISHEDINTSET: u1, // bit offset: 6 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + TXDONEINTSET: u1, // bit offset: 7 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + // RESERVED: u4, // bit offset: 8 desc: Unused reserved4: u1 = 0, reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - SOFTINTSET: bool, // bit offset: 12 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. - WAKEUPINTSET: bool, // bit offset: 13 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + SOFTINTSET: u1, // bit offset: 12 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + WAKEUPINTSET: u1, // bit offset: 13 desc: Writing a 1 to one sets the corresponding status bit in interrupt status register IntStatus. + // RESERVED: u18, // bit offset: 14 desc: Unused padding18: u1 = 0, padding17: u1 = 0, padding16: u1 = 0, @@ -14172,6 +18019,7 @@ pub const EMAC = extern struct { }); // byte offset: 4084 Power-down register. pub const POWERDOWN = mmio(Address + 0x00000ff4, 32, packed struct { + // RESERVED: u31, // bit offset: 0 desc: Unused reserved31: u1 = 0, reserved30: u1 = 0, reserved29: u1 = 0, @@ -14203,21 +18051,22 @@ pub const EMAC = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - PD: bool, // bit offset: 31 desc: PowerDownMACAHB. If true, all AHB accesses will return a read/write error, except accesses to the Power-Down register. + PD: u1, // bit offset: 31 desc: PowerDownMACAHB. If true, all AHB accesses will return a read/write error, except accesses to the Power-Down register. }); }; pub const GPDMA = extern struct { pub const Address: u32 = 0x50004000; // byte offset: 0 DMA Interrupt Status Register pub const INTSTAT = mmio(Address + 0x00000000, 32, packed struct { - INTSTAT0: bool, // bit offset: 0 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT1: bool, // bit offset: 1 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT2: bool, // bit offset: 2 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT3: bool, // bit offset: 3 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT4: bool, // bit offset: 4 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT5: bool, // bit offset: 5 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT6: bool, // bit offset: 6 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. - INTSTAT7: bool, // bit offset: 7 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT0: u1, // bit offset: 0 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT1: u1, // bit offset: 1 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT2: u1, // bit offset: 2 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT3: u1, // bit offset: 3 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT4: u1, // bit offset: 4 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT5: u1, // bit offset: 5 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT6: u1, // bit offset: 6 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + INTSTAT7: u1, // bit offset: 7 desc: Status of DMA channel interrupts after masking. Each bit represents one channel: 0 - the corresponding channel has no active interrupt request. 1 - the corresponding channel does have an active interrupt request. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14245,14 +18094,15 @@ pub const GPDMA = extern struct { }); // byte offset: 4 DMA Interrupt Terminal Count Request Status Register pub const INTTCSTAT = mmio(Address + 0x00000004, 32, packed struct { - INTTCSTAT0: bool, // bit offset: 0 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT1: bool, // bit offset: 1 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT2: bool, // bit offset: 2 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT3: bool, // bit offset: 3 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT4: bool, // bit offset: 4 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT5: bool, // bit offset: 5 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT6: bool, // bit offset: 6 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - INTTCSTAT7: bool, // bit offset: 7 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT0: u1, // bit offset: 0 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT1: u1, // bit offset: 1 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT2: u1, // bit offset: 2 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT3: u1, // bit offset: 3 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT4: u1, // bit offset: 4 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT5: u1, // bit offset: 5 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT6: u1, // bit offset: 6 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + INTTCSTAT7: u1, // bit offset: 7 desc: Terminal count interrupt request status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14280,14 +18130,15 @@ pub const GPDMA = extern struct { }); // byte offset: 8 DMA Interrupt Terminal Count Request Clear Register pub const INTTCCLEAR = mmio(Address + 0x00000008, 32, packed struct { - INTTCCLEAR0: bool, // bit offset: 0 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR1: bool, // bit offset: 1 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR2: bool, // bit offset: 2 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR3: bool, // bit offset: 3 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR4: bool, // bit offset: 4 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR5: bool, // bit offset: 5 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR6: bool, // bit offset: 6 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. - INTTCCLEAR7: bool, // bit offset: 7 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR0: u1, // bit offset: 0 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR1: u1, // bit offset: 1 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR2: u1, // bit offset: 2 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR3: u1, // bit offset: 3 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR4: u1, // bit offset: 4 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR5: u1, // bit offset: 5 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR6: u1, // bit offset: 6 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + INTTCCLEAR7: u1, // bit offset: 7 desc: Allows clearing the Terminal count interrupt request (IntTCStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel terminal count interrupt. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14315,14 +18166,15 @@ pub const GPDMA = extern struct { }); // byte offset: 12 DMA Interrupt Error Status Register pub const INTERRSTAT = mmio(Address + 0x0000000c, 32, packed struct { - INTERRSTAT0: bool, // bit offset: 0 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT1: bool, // bit offset: 1 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT2: bool, // bit offset: 2 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT3: bool, // bit offset: 3 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT4: bool, // bit offset: 4 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT5: bool, // bit offset: 5 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT6: bool, // bit offset: 6 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - INTERRSTAT7: bool, // bit offset: 7 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT0: u1, // bit offset: 0 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT1: u1, // bit offset: 1 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT2: u1, // bit offset: 2 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT3: u1, // bit offset: 3 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT4: u1, // bit offset: 4 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT5: u1, // bit offset: 5 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT6: u1, // bit offset: 6 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + INTERRSTAT7: u1, // bit offset: 7 desc: Interrupt error status for DMA channels. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14350,14 +18202,15 @@ pub const GPDMA = extern struct { }); // byte offset: 16 DMA Interrupt Error Clear Register pub const INTERRCLR = mmio(Address + 0x00000010, 32, packed struct { - INTERRCLR0: bool, // bit offset: 0 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR1: bool, // bit offset: 1 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR2: bool, // bit offset: 2 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR3: bool, // bit offset: 3 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR4: bool, // bit offset: 4 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR5: bool, // bit offset: 5 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR6: bool, // bit offset: 6 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. - INTERRCLR7: bool, // bit offset: 7 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR0: u1, // bit offset: 0 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR1: u1, // bit offset: 1 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR2: u1, // bit offset: 2 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR3: u1, // bit offset: 3 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR4: u1, // bit offset: 4 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR5: u1, // bit offset: 5 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR6: u1, // bit offset: 6 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + INTERRCLR7: u1, // bit offset: 7 desc: Writing a 1 clears the error interrupt request (IntErrStat) for DMA channels. Each bit represents one channel: 0 - writing 0 has no effect. 1 - clears the corresponding channel error interrupt. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14385,14 +18238,15 @@ pub const GPDMA = extern struct { }); // byte offset: 20 DMA Raw Interrupt Terminal Count Status Register pub const RAWINTTCSTAT = mmio(Address + 0x00000014, 32, packed struct { - RAWINTTCSTAT0: bool, // bit offset: 0 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT1: bool, // bit offset: 1 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT2: bool, // bit offset: 2 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT3: bool, // bit offset: 3 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT4: bool, // bit offset: 4 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT5: bool, // bit offset: 5 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT6: bool, // bit offset: 6 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. - RAWINTTCSTAT7: bool, // bit offset: 7 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT0: u1, // bit offset: 0 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT1: u1, // bit offset: 1 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT2: u1, // bit offset: 2 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT3: u1, // bit offset: 3 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT4: u1, // bit offset: 4 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT5: u1, // bit offset: 5 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT6: u1, // bit offset: 6 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + RAWINTTCSTAT7: u1, // bit offset: 7 desc: Status of the terminal count interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active terminal count interrupt request. 1 - the corresponding channel does have an active terminal count interrupt request. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14420,14 +18274,15 @@ pub const GPDMA = extern struct { }); // byte offset: 24 DMA Raw Error Interrupt Status Register pub const RAWINTERRSTAT = mmio(Address + 0x00000018, 32, packed struct { - RAWINTERRSTAT0: bool, // bit offset: 0 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT1: bool, // bit offset: 1 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT2: bool, // bit offset: 2 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT3: bool, // bit offset: 3 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT4: bool, // bit offset: 4 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT5: bool, // bit offset: 5 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT6: bool, // bit offset: 6 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. - RAWINTERRSTAT7: bool, // bit offset: 7 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT0: u1, // bit offset: 0 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT1: u1, // bit offset: 1 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT2: u1, // bit offset: 2 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT3: u1, // bit offset: 3 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT4: u1, // bit offset: 4 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT5: u1, // bit offset: 5 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT6: u1, // bit offset: 6 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + RAWINTERRSTAT7: u1, // bit offset: 7 desc: Status of the error interrupt for DMA channels prior to masking. Each bit represents one channel: 0 - the corresponding channel has no active error interrupt request. 1 - the corresponding channel does have an active error interrupt request. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14455,14 +18310,15 @@ pub const GPDMA = extern struct { }); // byte offset: 28 DMA Enabled Channel Register pub const ENBLDCHNS = mmio(Address + 0x0000001c, 32, packed struct { - ENABLEDCHANNELS0: bool, // bit offset: 0 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS1: bool, // bit offset: 1 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS2: bool, // bit offset: 2 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS3: bool, // bit offset: 3 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS4: bool, // bit offset: 4 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS5: bool, // bit offset: 5 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS6: bool, // bit offset: 6 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. - ENABLEDCHANNELS7: bool, // bit offset: 7 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS0: u1, // bit offset: 0 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS1: u1, // bit offset: 1 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS2: u1, // bit offset: 2 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS3: u1, // bit offset: 3 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS4: u1, // bit offset: 4 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS5: u1, // bit offset: 5 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS6: u1, // bit offset: 6 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + ENABLEDCHANNELS7: u1, // bit offset: 7 desc: Enable status for DMA channels. Each bit represents one channel: 0 - DMA channel is disabled. 1 - DMA channel is enabled. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -14490,22 +18346,23 @@ pub const GPDMA = extern struct { }); // byte offset: 32 DMA Software Burst Request Register pub const SOFTBREQ = mmio(Address + 0x00000020, 32, packed struct { - SOFTBREQ0: bool, // bit offset: 0 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ1: bool, // bit offset: 1 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ2: bool, // bit offset: 2 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ3: bool, // bit offset: 3 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ4: bool, // bit offset: 4 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ5: bool, // bit offset: 5 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ6: bool, // bit offset: 6 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ7: bool, // bit offset: 7 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ8: bool, // bit offset: 8 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ9: bool, // bit offset: 9 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ10: bool, // bit offset: 10 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ11: bool, // bit offset: 11 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ12: bool, // bit offset: 12 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ13: bool, // bit offset: 13 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ14: bool, // bit offset: 14 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. - SOFTBREQ15: bool, // bit offset: 15 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ0: u1, // bit offset: 0 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ1: u1, // bit offset: 1 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ2: u1, // bit offset: 2 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ3: u1, // bit offset: 3 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ4: u1, // bit offset: 4 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ5: u1, // bit offset: 5 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ6: u1, // bit offset: 6 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ7: u1, // bit offset: 7 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ8: u1, // bit offset: 8 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ9: u1, // bit offset: 9 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ10: u1, // bit offset: 10 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ11: u1, // bit offset: 11 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ12: u1, // bit offset: 12 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ13: u1, // bit offset: 13 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ14: u1, // bit offset: 14 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + SOFTBREQ15: u1, // bit offset: 15 desc: Software burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral Description (refer to Table 672 for peripheral hardware connections to the DMA controller): 0 - writing 0 has no effect. 1 - writing 1 generates a DMA burst request for the corresponding request line. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -14525,22 +18382,23 @@ pub const GPDMA = extern struct { }); // byte offset: 36 DMA Software Single Request Register pub const SOFTSREQ = mmio(Address + 0x00000024, 32, packed struct { - SOFTSREQ0: bool, // bit offset: 0 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ1: bool, // bit offset: 1 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ2: bool, // bit offset: 2 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ3: bool, // bit offset: 3 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ4: bool, // bit offset: 4 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ5: bool, // bit offset: 5 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ6: bool, // bit offset: 6 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ7: bool, // bit offset: 7 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ8: bool, // bit offset: 8 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ9: bool, // bit offset: 9 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ10: bool, // bit offset: 10 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ11: bool, // bit offset: 11 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ12: bool, // bit offset: 12 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ13: bool, // bit offset: 13 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ14: bool, // bit offset: 14 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. - SOFTSREQ15: bool, // bit offset: 15 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ0: u1, // bit offset: 0 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ1: u1, // bit offset: 1 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ2: u1, // bit offset: 2 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ3: u1, // bit offset: 3 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ4: u1, // bit offset: 4 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ5: u1, // bit offset: 5 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ6: u1, // bit offset: 6 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ7: u1, // bit offset: 7 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ8: u1, // bit offset: 8 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ9: u1, // bit offset: 9 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ10: u1, // bit offset: 10 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ11: u1, // bit offset: 11 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ12: u1, // bit offset: 12 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ13: u1, // bit offset: 13 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ14: u1, // bit offset: 14 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + SOFTSREQ15: u1, // bit offset: 15 desc: Software single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA single transfer request for the corresponding request line. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read undefined. Write reserved bits as zero. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -14560,22 +18418,23 @@ pub const GPDMA = extern struct { }); // byte offset: 40 DMA Software Last Burst Request Register pub const SOFTLBREQ = mmio(Address + 0x00000028, 32, packed struct { - SOFTLBREQ0: bool, // bit offset: 0 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ1: bool, // bit offset: 1 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ2: bool, // bit offset: 2 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ3: bool, // bit offset: 3 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ4: bool, // bit offset: 4 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ5: bool, // bit offset: 5 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ6: bool, // bit offset: 6 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ7: bool, // bit offset: 7 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ8: bool, // bit offset: 8 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ9: bool, // bit offset: 9 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ10: bool, // bit offset: 10 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ11: bool, // bit offset: 11 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ12: bool, // bit offset: 12 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ13: bool, // bit offset: 13 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ14: bool, // bit offset: 14 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. - SOFTLBREQ15: bool, // bit offset: 15 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ0: u1, // bit offset: 0 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ1: u1, // bit offset: 1 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ2: u1, // bit offset: 2 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ3: u1, // bit offset: 3 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ4: u1, // bit offset: 4 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ5: u1, // bit offset: 5 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ6: u1, // bit offset: 6 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ7: u1, // bit offset: 7 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ8: u1, // bit offset: 8 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ9: u1, // bit offset: 9 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ10: u1, // bit offset: 10 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ11: u1, // bit offset: 11 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ12: u1, // bit offset: 12 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ13: u1, // bit offset: 13 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ14: u1, // bit offset: 14 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + SOFTLBREQ15: u1, // bit offset: 15 desc: Software last burst request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last burst request for the corresponding request line. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -14595,22 +18454,23 @@ pub const GPDMA = extern struct { }); // byte offset: 44 DMA Software Last Single Request Register pub const SOFTLSREQ = mmio(Address + 0x0000002c, 32, packed struct { - SOFTLSREQ0: bool, // bit offset: 0 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ1: bool, // bit offset: 1 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ2: bool, // bit offset: 2 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ3: bool, // bit offset: 3 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ4: bool, // bit offset: 4 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ5: bool, // bit offset: 5 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ6: bool, // bit offset: 6 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ7: bool, // bit offset: 7 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ8: bool, // bit offset: 8 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ9: bool, // bit offset: 9 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ10: bool, // bit offset: 10 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ11: bool, // bit offset: 11 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ12: bool, // bit offset: 12 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ13: bool, // bit offset: 13 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ14: bool, // bit offset: 14 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. - SOFTLSREQ15: bool, // bit offset: 15 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ0: u1, // bit offset: 0 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ1: u1, // bit offset: 1 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ2: u1, // bit offset: 2 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ3: u1, // bit offset: 3 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ4: u1, // bit offset: 4 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ5: u1, // bit offset: 5 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ6: u1, // bit offset: 6 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ7: u1, // bit offset: 7 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ8: u1, // bit offset: 8 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ9: u1, // bit offset: 9 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ10: u1, // bit offset: 10 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ11: u1, // bit offset: 11 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ12: u1, // bit offset: 12 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ13: u1, // bit offset: 13 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ14: u1, // bit offset: 14 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + SOFTLSREQ15: u1, // bit offset: 15 desc: Software last single transfer request flags for each of 16 possible sources. Each bit represents one DMA request line or peripheral function: 0 - writing 0 has no effect. 1 - writing 1 generates a DMA last single transfer request for the corresponding request line. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -14630,8 +18490,9 @@ pub const GPDMA = extern struct { }); // byte offset: 48 DMA Configuration Register pub const CONFIG = mmio(Address + 0x00000030, 32, packed struct { - E: bool, // bit offset: 0 desc: DMA Controller enable: 0 = disabled (default). Disabling the DMA Controller reduces power consumption. 1 = enabled. - M: bool, // bit offset: 1 desc: AHB Master endianness configuration: 0 = little-endian mode (default). 1 = big-endian mode. + E: u1, // bit offset: 0 desc: DMA Controller enable: 0 = disabled (default). Disabling the DMA Controller reduces power consumption. 1 = enabled. + M: u1, // bit offset: 1 desc: AHB Master endianness configuration: 0 = little-endian mode (default). 1 = big-endian mode. + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -14665,22 +18526,23 @@ pub const GPDMA = extern struct { }); // byte offset: 52 DMA Synchronization Register pub const SYNC = mmio(Address + 0x00000034, 32, packed struct { - DMACSYNC0: bool, // bit offset: 0 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC1: bool, // bit offset: 1 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC2: bool, // bit offset: 2 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC3: bool, // bit offset: 3 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC4: bool, // bit offset: 4 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC5: bool, // bit offset: 5 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC6: bool, // bit offset: 6 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC7: bool, // bit offset: 7 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC8: bool, // bit offset: 8 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC9: bool, // bit offset: 9 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC10: bool, // bit offset: 10 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC11: bool, // bit offset: 11 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC12: bool, // bit offset: 12 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC13: bool, // bit offset: 13 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC14: bool, // bit offset: 14 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. - DMACSYNC15: bool, // bit offset: 15 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC0: u1, // bit offset: 0 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC1: u1, // bit offset: 1 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC2: u1, // bit offset: 2 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC3: u1, // bit offset: 3 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC4: u1, // bit offset: 4 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC5: u1, // bit offset: 5 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC6: u1, // bit offset: 6 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC7: u1, // bit offset: 7 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC8: u1, // bit offset: 8 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC9: u1, // bit offset: 9 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC10: u1, // bit offset: 10 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC11: u1, // bit offset: 11 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC12: u1, // bit offset: 12 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC13: u1, // bit offset: 13 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC14: u1, // bit offset: 14 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + DMACSYNC15: u1, // bit offset: 15 desc: Controls the synchronization logic for DMA request signals. Each bit represents one set of DMA request lines as described in the preceding text: 0 - synchronization logic for the corresponding DMA request signals are enabled. 1 - synchronization logic for the corresponding DMA request signals are disabled. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -14708,6 +18570,7 @@ pub const GPDMA = extern struct { }); // byte offset: 264 DMA Channel 0 Linked List Item Register pub const LLI0 = mmio(Address + 0x00000108, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14719,26 +18582,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 272 DMA Channel 0 Configuration Register[1] pub const CONFIG0 = mmio(Address + 0x00000110, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 288 DMA Channel 0 Source Address Register pub const SRCADDR1 = mmio(Address + 0x00000120, 32, packed struct { @@ -14750,6 +18628,7 @@ pub const GPDMA = extern struct { }); // byte offset: 296 DMA Channel 0 Linked List Item Register pub const LLI1 = mmio(Address + 0x00000128, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14761,26 +18640,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 304 DMA Channel 0 Configuration Register[1] pub const CONFIG1 = mmio(Address + 0x00000130, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 320 DMA Channel 0 Source Address Register pub const SRCADDR2 = mmio(Address + 0x00000140, 32, packed struct { @@ -14792,6 +18686,7 @@ pub const GPDMA = extern struct { }); // byte offset: 328 DMA Channel 0 Linked List Item Register pub const LLI2 = mmio(Address + 0x00000148, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14803,26 +18698,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 336 DMA Channel 0 Configuration Register[1] pub const CONFIG2 = mmio(Address + 0x00000150, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 352 DMA Channel 0 Source Address Register pub const SRCADDR3 = mmio(Address + 0x00000160, 32, packed struct { @@ -14834,6 +18744,7 @@ pub const GPDMA = extern struct { }); // byte offset: 360 DMA Channel 0 Linked List Item Register pub const LLI3 = mmio(Address + 0x00000168, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14845,26 +18756,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 368 DMA Channel 0 Configuration Register[1] pub const CONFIG3 = mmio(Address + 0x00000170, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 384 DMA Channel 0 Source Address Register pub const SRCADDR4 = mmio(Address + 0x00000180, 32, packed struct { @@ -14876,6 +18802,7 @@ pub const GPDMA = extern struct { }); // byte offset: 392 DMA Channel 0 Linked List Item Register pub const LLI4 = mmio(Address + 0x00000188, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14887,26 +18814,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 400 DMA Channel 0 Configuration Register[1] pub const CONFIG4 = mmio(Address + 0x00000190, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 416 DMA Channel 0 Source Address Register pub const SRCADDR5 = mmio(Address + 0x000001a0, 32, packed struct { @@ -14918,6 +18860,7 @@ pub const GPDMA = extern struct { }); // byte offset: 424 DMA Channel 0 Linked List Item Register pub const LLI5 = mmio(Address + 0x000001a8, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14929,26 +18872,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 432 DMA Channel 0 Configuration Register[1] pub const CONFIG5 = mmio(Address + 0x000001b0, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 448 DMA Channel 0 Source Address Register pub const SRCADDR6 = mmio(Address + 0x000001c0, 32, packed struct { @@ -14960,6 +18918,7 @@ pub const GPDMA = extern struct { }); // byte offset: 456 DMA Channel 0 Linked List Item Register pub const LLI6 = mmio(Address + 0x000001c8, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -14971,26 +18930,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 464 DMA Channel 0 Configuration Register[1] pub const CONFIG6 = mmio(Address + 0x000001d0, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); // byte offset: 480 DMA Channel 0 Source Address Register pub const SRCADDR7 = mmio(Address + 0x000001e0, 32, packed struct { @@ -15002,6 +18976,7 @@ pub const GPDMA = extern struct { }); // byte offset: 488 DMA Channel 0 Linked List Item Register pub const LLI7 = mmio(Address + 0x000001e8, 32, packed struct { + // RESERVED: u2, // bit offset: 0 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, LLI: u30, // bit offset: 2 desc: Linked list item. Bits [31:2] of the address for the next LLI. Address bits [1:0] are 0. @@ -15013,26 +18988,41 @@ pub const GPDMA = extern struct { DBSIZE: u3, // bit offset: 15 desc: Destination burst size. Indicates the number of transfers that make up a destination burst transfer request. This value must be set to the burst size of the destination peripheral or, if the destination is memory, to the memory boundary size. The burst size is the amount of data that is transferred when the DMACBREQ signal goes active in the destination peripheral. 000 - 1 001 - 4 010 - 8 011 - 16 100 - 32 101 - 64 110 - 128 111 - 256 SWIDTH: u3, // bit offset: 18 desc: Source transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved DWIDTH: u3, // bit offset: 21 desc: Destination transfer width. The source and destination widths can be different from each other. The hardware automatically packs and unpacks the data as required. 000 - Byte (8-bit) 001 - Halfword (16-bit) 010 - Word (32-bit) 011 to 111 - Reserved + // RESERVED: u2, // bit offset: 24 desc: Reserved, and must be written as 0. reserved2: u1 = 0, reserved1: u1 = 0, - SI: bool, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. - DI: bool, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. - PROT1: bool, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. - PROT2: bool, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. - PROT3: bool, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. - I: bool, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. + SI: u1, // bit offset: 26 desc: Source increment: 0 - the source address is not incremented after each transfer. 1 - the source address is incremented after each transfer. + DI: u1, // bit offset: 27 desc: Destination increment: 0 - the destination address is not incremented after each transfer. 1 - the destination address is incremented after each transfer. + PROT1: u1, // bit offset: 28 desc: This is provided to the peripheral during a DMA bus access and indicates that the access is in user mode or privileged mode. This information is not used in the LPC178x/177x. 0 - access is in user mode. 1 - access is in privileged mode. + PROT2: u1, // bit offset: 29 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is bufferable or not bufferable. This information is not used in the LPC178x/177x. 0 - access is not bufferable. 1 - access is bufferable. + PROT3: u1, // bit offset: 30 desc: This is provided to the peripheral during a DMA bus access and indicates to the peripheral that the access is cacheable or not cacheable. This information is not used in the LPC178x/177x. 0 - access is not cacheable. 1 - access is cacheable. + I: u1, // bit offset: 31 desc: Terminal count interrupt enable bit. 0 - the terminal count interrupt is disabled. 1 - the terminal count interrupt is enabled. }); // byte offset: 496 DMA Channel 0 Configuration Register[1] pub const CONFIG7 = mmio(Address + 0x000001f0, 32, packed struct { - E: bool, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. + E: u1, // bit offset: 0 desc: Channel enable. Reading this bit indicates whether a channel is currently enabled or disabled: 0 = channel disabled. 1 = channel enabled. The Channel Enable bit status can also be found by reading the DMACEnbldChns Register. A channel is enabled by setting this bit. A channel can be disabled by clearing the Enable bit. This causes the current AHB transfer (if one is in progress) to complete and the channel is then disabled. Any data in the FIFO of the relevant channel is lost. Restarting the channel by setting the Channel Enable bit has unpredictable effects, the channel must be fully re-initialized. The channel is also disabled, and Channel Enable bit cleared, when the last LLI is reached, the DMA transfer is completed, or if a channel error is encountered. If a channel must be disabled without losing data in the FIFO, the Halt bit must be set so that further DMA requests are ignored. The Active bit must then be polled until it reaches 0, indicating that there is no data left in the FIFO. Finally, the Channel Enable bit can be cleared. SRCPERIPHERAL: u5, // bit offset: 1 desc: Source peripheral. This value selects the DMA source request peripheral. This field is ignored if the source of the transfer is from memory. See Table 672 for peripheral identification. DESTPERIPHERAL: u5, // bit offset: 6 desc: Destination peripheral. This value selects the DMA destination request peripheral. This field is ignored if the destination of the transfer is to memory. See Table 672 for peripheral identification. TRANSFERTYPE: u3, // bit offset: 11 desc: This value indicates the type of transfer and specifies the flow controller. The transfer type can be memory-to-memory, memory-to-peripheral, peripheral-to-memory, or peripheral-to-peripheral. Flow can be controlled by the DMA controller, the source peripheral, or the destination peripheral. Refer to Table 694 for the encoding of this field. - IE: bool, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. - ITC: bool, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. - L: bool, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. - A: bool, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. - H: bool, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + IE: u1, // bit offset: 14 desc: Interrupt error mask. When cleared, this bit masks out the error interrupt of the relevant channel. + ITC: u1, // bit offset: 15 desc: Terminal count interrupt mask. When cleared, this bit masks out the terminal count interrupt of the relevant channel. + L: u1, // bit offset: 16 desc: Lock. When set, this bit enables locked transfers. This information is not used in the LPC178x/177x. + A: u1, // bit offset: 17 desc: Active: 0 = there is no data in the FIFO of the channel. 1 = the channel FIFO has data. This value can be used with the Halt and Channel Enable bits to cleanly disable a DMA channel. This is a read-only bit. + H: u1, // bit offset: 18 desc: Halt: 0 = enable DMA requests. 1 = ignore further source DMA requests. The contents of the channel FIFO are drained. This value can be used with the Active and Channel Enable bits to cleanly disable a DMA channel. + // RESERVED: u13, // bit offset: 19 desc: Reserved. Read value is undefined, only zero should be written. + padding13: u1 = 0, + padding12: u1 = 0, + padding11: u1 = 0, + padding10: u1 = 0, + padding9: u1 = 0, + padding8: u1 = 0, + padding7: u1 = 0, + padding6: u1 = 0, + padding5: u1 = 0, + padding4: u1 = 0, + padding3: u1 = 0, + padding2: u1 = 0, + padding1: u1 = 0, }); }; pub const USB = extern struct { @@ -15040,8 +19030,12 @@ pub const USB = extern struct { // byte offset: 220 USB Receive Packet Length pub const RXPLEN = mmio(Address + 0x000000dc, 32, packed struct { PKT_LNGTH: u10, // bit offset: 0 desc: The remaining number of bytes to be read from the currently selected endpoint's buffer. When this field decrements to 0, the RxENDPKT bit will be set in USBDevIntSt. - DV: bool, // bit offset: 10 desc: Data valid. This bit is useful for isochronous endpoints. Non-isochronous endpoints do not raise an interrupt when an erroneous data packet is received. But invalid data packet can be produced with a bus reset. For isochronous endpoints, data transfer will happen even if an erroneous packet is received. In this case DV bit will not be set for the packet. - PKT_RDY: bool, // bit offset: 11 desc: The PKT_LNGTH field is valid and the packet is ready for reading. + DV: enum(u1) { // bit offset: 10 desc: Data valid. This bit is useful for isochronous endpoints. Non-isochronous endpoints do not raise an interrupt when an erroneous data packet is received. But invalid data packet can be produced with a bus reset. For isochronous endpoints, data transfer will happen even if an erroneous packet is received. In this case DV bit will not be set for the packet. + @"DATA_IS_INVALID_" = 0, // desc: Data is invalid. + @"DATA_IS_VALID_" = 1, // desc: Data is valid. + }, + PKT_RDY: u1, // bit offset: 11 desc: The PKT_LNGTH field is valid and the packet is ready for reading. + // RESERVED: u20, // bit offset: 12 desc: Reserved. The value read from a reserved bit is not defined. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -15065,10 +19059,11 @@ pub const USB = extern struct { }); // byte offset: 256 OTG Interrupt Status pub const INTST = mmio(Address + 0x00000100, 32, packed struct { - TMR: bool, // bit offset: 0 desc: Timer time-out. - REMOVE_PU: bool, // bit offset: 1 desc: Remove pull-up. This bit is set by hardware to indicate that software needs to disable the D+ pull-up resistor. - HNP_FAILURE: bool, // bit offset: 2 desc: HNP failed. This bit is set by hardware to indicate that the HNP switching has failed. - HNP_SUCCESS: bool, // bit offset: 3 desc: HNP succeeded. This bit is set by hardware to indicate that the HNP switching has succeeded. + TMR: u1, // bit offset: 0 desc: Timer time-out. + REMOVE_PU: u1, // bit offset: 1 desc: Remove pull-up. This bit is set by hardware to indicate that software needs to disable the D+ pull-up resistor. + HNP_FAILURE: u1, // bit offset: 2 desc: HNP failed. This bit is set by hardware to indicate that the HNP switching has failed. + HNP_SUCCESS: u1, // bit offset: 3 desc: HNP succeeded. This bit is set by hardware to indicate that the HNP switching has succeeded. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -15100,10 +19095,11 @@ pub const USB = extern struct { }); // byte offset: 260 OTG Interrupt Enable pub const INTEN = mmio(Address + 0x00000104, 32, packed struct { - TMR_EN: bool, // bit offset: 0 desc: 1 = enable the corresponding bit in the IntSt register. - REMOVE_PU_EN: bool, // bit offset: 1 desc: 1 = enable the corresponding bit in the IntSt register. - HNP_FAILURE_EN: bool, // bit offset: 2 desc: 1 = enable the corresponding bit in the IntSt register. - HNP_SUCCES_EN: bool, // bit offset: 3 desc: 1 = enable the corresponding bit in the IntSt register. + TMR_EN: u1, // bit offset: 0 desc: 1 = enable the corresponding bit in the IntSt register. + REMOVE_PU_EN: u1, // bit offset: 1 desc: 1 = enable the corresponding bit in the IntSt register. + HNP_FAILURE_EN: u1, // bit offset: 2 desc: 1 = enable the corresponding bit in the IntSt register. + HNP_SUCCES_EN: u1, // bit offset: 3 desc: 1 = enable the corresponding bit in the IntSt register. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -15135,10 +19131,11 @@ pub const USB = extern struct { }); // byte offset: 264 OTG Interrupt Set pub const INTSET = mmio(Address + 0x00000108, 32, packed struct { - TMR_SET: bool, // bit offset: 0 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. - REMOVE_PU_SET: bool, // bit offset: 1 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. - HNP_FAILURE_SET: bool, // bit offset: 2 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. - HNP_SUCCES_SET: bool, // bit offset: 3 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. + TMR_SET: u1, // bit offset: 0 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. + REMOVE_PU_SET: u1, // bit offset: 1 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. + HNP_FAILURE_SET: u1, // bit offset: 2 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. + HNP_SUCCES_SET: u1, // bit offset: 3 desc: 0 = no effect. 1 = set the corresponding bit in the IntSt register. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -15170,10 +19167,11 @@ pub const USB = extern struct { }); // byte offset: 268 OTG Interrupt Clear pub const INTCLR = mmio(Address + 0x0000010c, 32, packed struct { - TMR_CLR: bool, // bit offset: 0 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. - REMOVE_PU_CLR: bool, // bit offset: 1 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. - HNP_FAILURE_CLR: bool, // bit offset: 2 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. - HNP_SUCCES_CLR: bool, // bit offset: 3 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. + TMR_CLR: u1, // bit offset: 0 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. + REMOVE_PU_CLR: u1, // bit offset: 1 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. + HNP_FAILURE_CLR: u1, // bit offset: 2 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. + HNP_SUCCES_CLR: u1, // bit offset: 3 desc: 0 = no effect. 1 = clear the corresponding bit in the IntSt register. + // RESERVED: u28, // bit offset: 4 desc: Reserved. Read value is undefined, only zero should be written. padding28: u1 = 0, padding27: u1 = 0, padding26: u1 = 0, @@ -15207,13 +19205,15 @@ pub const USB = extern struct { pub const STCTRL = mmio(Address + 0x00000110, 32, packed struct { PORT_FUNC: u2, // bit offset: 0 desc: Controls connection of USB functions (see Figure 51). Bit 0 is set or cleared by hardware when B_HNP_TRACK or A_HNP_TRACK is set and HNP succeeds. See Section 14.9. 00: U1 = device (OTG), U2 = host 01: U1 = host (OTG), U2 = host 10: Reserved 11: U1 = host, U2 = device In a device-only configuration, the following values are allowed: 00: U1 = device. The USB device controller signals are mapped to the U1 port: USB_CONNECT1, USB_UP_LED1, USB_D+1, USB_D-1. 11: U2 = device. The USB device controller signals are mapped to the U2 port: USB_CONNECT2, USB_UP_LED2, USB_D+2, USB_D-2. TMR_SCALE: u2, // bit offset: 2 desc: Timer scale selection. This field determines the duration of each timer count. 00: 10 ms (100 KHz) 01: 100 ms (10 KHz) 10: 1000 ms (1 KHz) 11: Reserved - TMR_MODE: bool, // bit offset: 4 desc: Timer mode selection. 0: monoshot 1: free running - TMR_EN: bool, // bit offset: 5 desc: Timer enable. When set, TMR_CNT increments. When cleared, TMR_CNT is reset to 0. - TMR_RST: bool, // bit offset: 6 desc: Timer reset. Writing one to this bit resets TMR_CNT to 0. This provides a single bit control for the software to restart the timer when the timer is enabled. + TMR_MODE: u1, // bit offset: 4 desc: Timer mode selection. 0: monoshot 1: free running + TMR_EN: u1, // bit offset: 5 desc: Timer enable. When set, TMR_CNT increments. When cleared, TMR_CNT is reset to 0. + TMR_RST: u1, // bit offset: 6 desc: Timer reset. Writing one to this bit resets TMR_CNT to 0. This provides a single bit control for the software to restart the timer when the timer is enabled. + // RESERVED: u1, // bit offset: 7 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - B_HNP_TRACK: bool, // bit offset: 8 desc: Enable HNP tracking for B-device (peripheral), see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. - A_HNP_TRACK: bool, // bit offset: 9 desc: Enable HNP tracking for A-device (host), see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. - PU_REMOVED: bool, // bit offset: 10 desc: When the B-device changes its role from peripheral to host, software sets this bit when it removes the D+ pull-up, see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. + B_HNP_TRACK: u1, // bit offset: 8 desc: Enable HNP tracking for B-device (peripheral), see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. + A_HNP_TRACK: u1, // bit offset: 9 desc: Enable HNP tracking for A-device (host), see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. + PU_REMOVED: u1, // bit offset: 10 desc: When the B-device changes its role from peripheral to host, software sets this bit when it removes the D+ pull-up, see Section 14.9. Hardware clears this bit when HNP_SUCCESS or HNP_FAILURE is set. + // RESERVED: u5, // bit offset: 11 desc: Reserved. Read value is undefined, only zero should be written. reserved6: u1 = 0, reserved5: u1 = 0, reserved4: u1 = 0, @@ -15224,6 +19224,7 @@ pub const USB = extern struct { // byte offset: 276 OTG Timer pub const TMR = mmio(Address + 0x00000114, 32, packed struct { TIMEOUT_CNT: u16, // bit offset: 0 desc: The TMR interrupt is set when TMR_CNT reaches this value. + // RESERVED: u16, // bit offset: 16 desc: Reserved. Read value is undefined, only zero should be written. padding16: u1 = 0, padding15: u1 = 0, padding14: u1 = 0, @@ -15243,16 +19244,17 @@ pub const USB = extern struct { }); // byte offset: 512 USB Device Interrupt Status pub const DEVINTST = mmio(Address + 0x00000200, 32, packed struct { - FRAME: bool, // bit offset: 0 desc: The frame interrupt occurs every 1 ms. This is used in isochronous packet transfers. - EP_FAST: bool, // bit offset: 1 desc: Fast endpoint interrupt. If an Endpoint Interrupt Priority register (USBEpIntPri) bit is set, the corresponding endpoint interrupt will be routed to this bit. - EP_SLOW: bool, // bit offset: 2 desc: Slow endpoints interrupt. If an Endpoint Interrupt Priority Register (USBEpIntPri) bit is not set, the corresponding endpoint interrupt will be routed to this bit. - DEV_STAT: bool, // bit offset: 3 desc: Set when USB Bus reset, USB suspend change or Connect change event occurs. Refer to Section 13.12.6 Set Device Status (Command: 0xFE, Data: write 1 byte) on page 366. - CCEMPTY: bool, // bit offset: 4 desc: The command code register (USBCmdCode) is empty (New command can be written). - CDFULL: bool, // bit offset: 5 desc: Command data register (USBCmdData) is full (Data can be read now). - RxENDPKT: bool, // bit offset: 6 desc: The current packet in the endpoint buffer is transferred to the CPU. - TxENDPKT: bool, // bit offset: 7 desc: The number of data bytes transferred to the endpoint buffer equals the number of bytes programmed in the TxPacket length register (USBTxPLen). - EP_RLZED: bool, // bit offset: 8 desc: Endpoints realized. Set when Realize Endpoint register (USBReEp) or MaxPacketSize register (USBMaxPSize) is updated and the corresponding operation is completed. - ERR_INT: bool, // bit offset: 9 desc: Error Interrupt. Any bus error interrupt from the USB device. Refer to Section 13.12.9 Read Error Status (Command: 0xFB, Data: read 1 byte) on page 368 + FRAME: u1, // bit offset: 0 desc: The frame interrupt occurs every 1 ms. This is used in isochronous packet transfers. + EP_FAST: u1, // bit offset: 1 desc: Fast endpoint interrupt. If an Endpoint Interrupt Priority register (USBEpIntPri) bit is set, the corresponding endpoint interrupt will be routed to this bit. + EP_SLOW: u1, // bit offset: 2 desc: Slow endpoints interrupt. If an Endpoint Interrupt Priority Register (USBEpIntPri) bit is not set, the corresponding endpoint interrupt will be routed to this bit. + DEV_STAT: u1, // bit offset: 3 desc: Set when USB Bus reset, USB suspend change or Connect change event occurs. Refer to Section 13.12.6 Set Device Status (Command: 0xFE, Data: write 1 byte) on page 366. + CCEMPTY: u1, // bit offset: 4 desc: The command code register (USBCmdCode) is empty (New command can be written). + CDFULL: u1, // bit offset: 5 desc: Command data register (USBCmdData) is full (Data can be read now). + RxENDPKT: u1, // bit offset: 6 desc: The current packet in the endpoint buffer is transferred to the CPU. + TxENDPKT: u1, // bit offset: 7 desc: The number of data bytes transferred to the endpoint buffer equals the number of bytes programmed in the TxPacket length register (USBTxPLen). + EP_RLZED: u1, // bit offset: 8 desc: Endpoints realized. Set when Realize Endpoint register (USBReEp) or MaxPacketSize register (USBMaxPSize) is updated and the corresponding operation is completed. + ERR_INT: u1, // bit offset: 9 desc: Error Interrupt. Any bus error interrupt from the USB device. Refer to Section 13.12.9 Read Error Status (Command: 0xFB, Data: read 1 byte) on page 368 + // RESERVED: u22, // bit offset: 10 desc: Reserved. The value read from a reserved bit is not defined. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15278,16 +19280,17 @@ pub const USB = extern struct { }); // byte offset: 516 USB Device Interrupt Enable pub const DEVINTEN = mmio(Address + 0x00000204, 32, packed struct { - FRAMEEN: bool, // bit offset: 0 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - EP_FASTEN: bool, // bit offset: 1 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - EP_SLOWEN: bool, // bit offset: 2 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - DEV_STATEN: bool, // bit offset: 3 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - CCEMPTYEN: bool, // bit offset: 4 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - CDFULLEN: bool, // bit offset: 5 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - RxENDPKTEN: bool, // bit offset: 6 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - TxENDPKTEN: bool, // bit offset: 7 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - EP_RLZEDEN: bool, // bit offset: 8 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. - ERR_INTEN: bool, // bit offset: 9 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + FRAMEEN: u1, // bit offset: 0 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + EP_FASTEN: u1, // bit offset: 1 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + EP_SLOWEN: u1, // bit offset: 2 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + DEV_STATEN: u1, // bit offset: 3 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + CCEMPTYEN: u1, // bit offset: 4 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + CDFULLEN: u1, // bit offset: 5 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + RxENDPKTEN: u1, // bit offset: 6 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + TxENDPKTEN: u1, // bit offset: 7 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + EP_RLZEDEN: u1, // bit offset: 8 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + ERR_INTEN: u1, // bit offset: 9 desc: 0 = No interrupt is generated. 1 = An interrupt will be generated when the corresponding bit in the Device Interrupt Status (USBDevIntSt) register (Table 261) is set. By default, the interrupt is routed to the USB_INT_REQ_LP interrupt line. Optionally, either the EP_FAST or FRAME interrupt may be routed to the USB_INT_REQ_HP interrupt line by changing the value of USBDevIntPri. + // RESERVED: u22, // bit offset: 10 desc: Reserved padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15313,16 +19316,17 @@ pub const USB = extern struct { }); // byte offset: 520 USB Device Interrupt Clear pub const DEVINTCLR = mmio(Address + 0x00000208, 32, packed struct { - FRAMECLR: bool, // bit offset: 0 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - EP_FASTCLR: bool, // bit offset: 1 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - EP_SLOWCLR: bool, // bit offset: 2 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - DEV_STATCLR: bool, // bit offset: 3 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - CCEMPTYCLR: bool, // bit offset: 4 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - CDFULLCLR: bool, // bit offset: 5 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - RxENDPKTCLR: bool, // bit offset: 6 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - TxENDPKTCLR: bool, // bit offset: 7 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - EP_RLZEDCLR: bool, // bit offset: 8 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. - ERR_INTCLR: bool, // bit offset: 9 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + FRAMECLR: u1, // bit offset: 0 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + EP_FASTCLR: u1, // bit offset: 1 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + EP_SLOWCLR: u1, // bit offset: 2 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + DEV_STATCLR: u1, // bit offset: 3 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + CCEMPTYCLR: u1, // bit offset: 4 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + CDFULLCLR: u1, // bit offset: 5 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + RxENDPKTCLR: u1, // bit offset: 6 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + TxENDPKTCLR: u1, // bit offset: 7 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + EP_RLZEDCLR: u1, // bit offset: 8 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + ERR_INTCLR: u1, // bit offset: 9 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is cleared. + // RESERVED: u22, // bit offset: 10 desc: Reserved padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15348,16 +19352,17 @@ pub const USB = extern struct { }); // byte offset: 524 USB Device Interrupt Set pub const DEVINTSET = mmio(Address + 0x0000020c, 32, packed struct { - FRAMESET: bool, // bit offset: 0 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - EP_FASTSET: bool, // bit offset: 1 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - EP_SLOWSET: bool, // bit offset: 2 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - DEV_STATSET: bool, // bit offset: 3 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - CCEMPTYSET: bool, // bit offset: 4 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - CDFULLSET: bool, // bit offset: 5 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - RxENDPKTSET: bool, // bit offset: 6 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - TxENDPKTSET: bool, // bit offset: 7 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - EP_RLZEDSET: bool, // bit offset: 8 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. - ERR_INTSET: bool, // bit offset: 9 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + FRAMESET: u1, // bit offset: 0 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + EP_FASTSET: u1, // bit offset: 1 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + EP_SLOWSET: u1, // bit offset: 2 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + DEV_STATSET: u1, // bit offset: 3 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + CCEMPTYSET: u1, // bit offset: 4 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + CDFULLSET: u1, // bit offset: 5 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + RxENDPKTSET: u1, // bit offset: 6 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + TxENDPKTSET: u1, // bit offset: 7 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + EP_RLZEDSET: u1, // bit offset: 8 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + ERR_INTSET: u1, // bit offset: 9 desc: 0 = No effect. 1 = The corresponding bit in USBDevIntSt (Section 13.10.3.2) is set. + // RESERVED: u22, // bit offset: 10 desc: Reserved padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15383,6 +19388,7 @@ pub const USB = extern struct { }); // byte offset: 528 USB Command Code pub const CMDCODE = mmio(Address + 0x00000210, 32, packed struct { + // RESERVED: u8, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved8: u1 = 0, reserved7: u1 = 0, reserved6: u1 = 0, @@ -15391,8 +19397,14 @@ pub const USB = extern struct { reserved3: u1 = 0, reserved2: u1 = 0, reserved1: u1 = 0, - CMD_PHASE: u8, // bit offset: 8 desc: The command phase: + CMD_PHASE: enum(u8) { // bit offset: 8 desc: The command phase: + @"READ" = 2, // desc: Read + @"WRITE" = 1, // desc: Write + @"COMMAND" = 5, // desc: Command + _, // non-exhaustive + }, CMD_CODE_WDATA: u8, // bit offset: 16 desc: This is a multi-purpose field. When CMD_PHASE is Command or Read, this field contains the code for the command (CMD_CODE). When CMD_PHASE is Write, this field contains the command write data (CMD_WDATA). + // RESERVED: u8, // bit offset: 24 desc: Reserved. Read value is undefined, only zero should be written. padding8: u1 = 0, padding7: u1 = 0, padding6: u1 = 0, @@ -15405,6 +19417,7 @@ pub const USB = extern struct { // byte offset: 532 USB Command Data pub const CMDDATA = mmio(Address + 0x00000214, 32, packed struct { CMD_RDATA: u8, // bit offset: 0 desc: Command Read Data. + // RESERVED: u24, // bit offset: 8 desc: Reserved. The value read from a reserved bit is not defined. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -15441,6 +19454,7 @@ pub const USB = extern struct { // byte offset: 548 USB Transmit Packet Length pub const TXPLEN = mmio(Address + 0x00000224, 32, packed struct { PKT_LNGTH: u10, // bit offset: 0 desc: The remaining number of bytes to be written to the selected endpoint buffer. This field is decremented by 4 by hardware after each write to USBTxData. When this field decrements to 0, the TxENDPKT bit will be set in USBDevIntSt. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15466,9 +19480,16 @@ pub const USB = extern struct { }); // byte offset: 552 USB Control pub const CTRL = mmio(Address + 0x00000228, 32, packed struct { - RD_EN: bool, // bit offset: 0 desc: Read mode control. Enables reading data from the OUT endpoint buffer for the endpoint specified in the LOG_ENDPOINT field using the USBRxData register. This bit is cleared by hardware when the last word of the current packet is read from USBRxData. - WR_EN: bool, // bit offset: 1 desc: Write mode control. Enables writing data to the IN endpoint buffer for the endpoint specified in the LOG_ENDPOINT field using the USBTxData register. This bit is cleared by hardware when the number of bytes in USBTxLen have been sent. + RD_EN: enum(u1) { // bit offset: 0 desc: Read mode control. Enables reading data from the OUT endpoint buffer for the endpoint specified in the LOG_ENDPOINT field using the USBRxData register. This bit is cleared by hardware when the last word of the current packet is read from USBRxData. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, + WR_EN: enum(u1) { // bit offset: 1 desc: Write mode control. Enables writing data to the IN endpoint buffer for the endpoint specified in the LOG_ENDPOINT field using the USBTxData register. This bit is cleared by hardware when the number of bytes in USBTxLen have been sent. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, LOG_ENDPOINT: u4, // bit offset: 2 desc: Logical Endpoint number. + // RESERVED: u26, // bit offset: 6 desc: Reserved. Read value is undefined, only zero should be written. padding26: u1 = 0, padding25: u1 = 0, padding24: u1 = 0, @@ -15498,8 +19519,15 @@ pub const USB = extern struct { }); // byte offset: 556 USB Device Interrupt Priority pub const DEVINTPRI = mmio(Address + 0x0000022c, 32, packed struct { - FRAME: bool, // bit offset: 0 desc: Frame interrupt routing - EP_FAST: bool, // bit offset: 1 desc: Fast endpoint interrupt routing + FRAME: enum(u1) { // bit offset: 0 desc: Frame interrupt routing + @"LP" = 0, // desc: FRAME interrupt is routed to USB_INT_REQ_LP. + @"HP" = 1, // desc: FRAME interrupt is routed to USB_INT_REQ_HP. + }, + EP_FAST: enum(u1) { // bit offset: 1 desc: Fast endpoint interrupt routing + @"LP" = 0, // desc: EP_FAST interrupt is routed to USB_INT_REQ_LP. + @"HP" = 1, // desc: EP_FAST interrupt is routed to USB_INT_REQ_HP. + }, + // RESERVED: u30, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. padding30: u1 = 0, padding29: u1 = 0, padding28: u1 = 0, @@ -15533,217 +19561,218 @@ pub const USB = extern struct { }); // byte offset: 560 USB Endpoint Interrupt Status pub const EPINTST = mmio(Address + 0x00000230, 32, packed struct { - EPST0: bool, // bit offset: 0 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST1: bool, // bit offset: 1 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST2: bool, // bit offset: 2 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST3: bool, // bit offset: 3 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST4: bool, // bit offset: 4 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST5: bool, // bit offset: 5 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST6: bool, // bit offset: 6 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST7: bool, // bit offset: 7 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST8: bool, // bit offset: 8 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST9: bool, // bit offset: 9 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST10: bool, // bit offset: 10 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST11: bool, // bit offset: 11 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST12: bool, // bit offset: 12 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST13: bool, // bit offset: 13 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST14: bool, // bit offset: 14 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST15: bool, // bit offset: 15 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST16: bool, // bit offset: 16 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST17: bool, // bit offset: 17 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST18: bool, // bit offset: 18 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST19: bool, // bit offset: 19 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST20: bool, // bit offset: 20 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST21: bool, // bit offset: 21 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST22: bool, // bit offset: 22 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST23: bool, // bit offset: 23 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST24: bool, // bit offset: 24 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST25: bool, // bit offset: 25 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST26: bool, // bit offset: 26 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST27: bool, // bit offset: 27 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST28: bool, // bit offset: 28 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST29: bool, // bit offset: 29 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST30: bool, // bit offset: 30 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. - EPST31: bool, // bit offset: 31 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST0: u1, // bit offset: 0 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST1: u1, // bit offset: 1 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST2: u1, // bit offset: 2 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST3: u1, // bit offset: 3 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST4: u1, // bit offset: 4 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST5: u1, // bit offset: 5 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST6: u1, // bit offset: 6 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST7: u1, // bit offset: 7 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST8: u1, // bit offset: 8 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST9: u1, // bit offset: 9 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST10: u1, // bit offset: 10 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST11: u1, // bit offset: 11 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST12: u1, // bit offset: 12 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST13: u1, // bit offset: 13 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST14: u1, // bit offset: 14 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST15: u1, // bit offset: 15 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST16: u1, // bit offset: 16 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST17: u1, // bit offset: 17 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST18: u1, // bit offset: 18 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST19: u1, // bit offset: 19 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST20: u1, // bit offset: 20 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST21: u1, // bit offset: 21 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST22: u1, // bit offset: 22 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST23: u1, // bit offset: 23 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST24: u1, // bit offset: 24 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST25: u1, // bit offset: 25 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST26: u1, // bit offset: 26 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST27: u1, // bit offset: 27 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST28: u1, // bit offset: 28 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST29: u1, // bit offset: 29 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST30: u1, // bit offset: 30 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. + EPST31: u1, // bit offset: 31 desc: 1 = Endpoint Data Received (bits 0, 2, 4, ..., 30) or Transmitted (bits 1, 3, 5, ..., 31) Interrupt received. }); // byte offset: 564 USB Endpoint Interrupt Enable pub const EPINTEN = mmio(Address + 0x00000234, 32, packed struct { - EPEN0: bool, // bit offset: 0 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN1: bool, // bit offset: 1 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN2: bool, // bit offset: 2 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN3: bool, // bit offset: 3 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN4: bool, // bit offset: 4 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN5: bool, // bit offset: 5 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN6: bool, // bit offset: 6 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN7: bool, // bit offset: 7 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN8: bool, // bit offset: 8 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN9: bool, // bit offset: 9 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN10: bool, // bit offset: 10 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN11: bool, // bit offset: 11 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN12: bool, // bit offset: 12 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN13: bool, // bit offset: 13 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN14: bool, // bit offset: 14 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN15: bool, // bit offset: 15 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN16: bool, // bit offset: 16 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN17: bool, // bit offset: 17 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN18: bool, // bit offset: 18 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN19: bool, // bit offset: 19 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN20: bool, // bit offset: 20 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN21: bool, // bit offset: 21 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN22: bool, // bit offset: 22 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN23: bool, // bit offset: 23 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN24: bool, // bit offset: 24 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN25: bool, // bit offset: 25 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN26: bool, // bit offset: 26 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN27: bool, // bit offset: 27 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN28: bool, // bit offset: 28 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN29: bool, // bit offset: 29 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN30: bool, // bit offset: 30 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. - EPEN31: bool, // bit offset: 31 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN0: u1, // bit offset: 0 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN1: u1, // bit offset: 1 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN2: u1, // bit offset: 2 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN3: u1, // bit offset: 3 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN4: u1, // bit offset: 4 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN5: u1, // bit offset: 5 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN6: u1, // bit offset: 6 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN7: u1, // bit offset: 7 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN8: u1, // bit offset: 8 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN9: u1, // bit offset: 9 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN10: u1, // bit offset: 10 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN11: u1, // bit offset: 11 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN12: u1, // bit offset: 12 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN13: u1, // bit offset: 13 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN14: u1, // bit offset: 14 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN15: u1, // bit offset: 15 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN16: u1, // bit offset: 16 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN17: u1, // bit offset: 17 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN18: u1, // bit offset: 18 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN19: u1, // bit offset: 19 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN20: u1, // bit offset: 20 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN21: u1, // bit offset: 21 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN22: u1, // bit offset: 22 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN23: u1, // bit offset: 23 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN24: u1, // bit offset: 24 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN25: u1, // bit offset: 25 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN26: u1, // bit offset: 26 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN27: u1, // bit offset: 27 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN28: u1, // bit offset: 28 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN29: u1, // bit offset: 29 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN30: u1, // bit offset: 30 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. + EPEN31: u1, // bit offset: 31 desc: 0= The corresponding bit in USBDMARSt is set when an interrupt occurs for this endpoint. 1 = The corresponding bit in USBEpIntSt is set when an interrupt occurs for this endpoint. Implies Slave mode for this endpoint. }); // byte offset: 568 USB Endpoint Interrupt Clear pub const EPINTCLR = mmio(Address + 0x00000238, 32, packed struct { - EPCLR0: bool, // bit offset: 0 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR1: bool, // bit offset: 1 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR2: bool, // bit offset: 2 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR3: bool, // bit offset: 3 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR4: bool, // bit offset: 4 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR5: bool, // bit offset: 5 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR6: bool, // bit offset: 6 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR7: bool, // bit offset: 7 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR8: bool, // bit offset: 8 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR9: bool, // bit offset: 9 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR10: bool, // bit offset: 10 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR11: bool, // bit offset: 11 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR12: bool, // bit offset: 12 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR13: bool, // bit offset: 13 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR14: bool, // bit offset: 14 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR15: bool, // bit offset: 15 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR16: bool, // bit offset: 16 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR17: bool, // bit offset: 17 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR18: bool, // bit offset: 18 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR19: bool, // bit offset: 19 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR20: bool, // bit offset: 20 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR21: bool, // bit offset: 21 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR22: bool, // bit offset: 22 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR23: bool, // bit offset: 23 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR24: bool, // bit offset: 24 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR25: bool, // bit offset: 25 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR26: bool, // bit offset: 26 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR27: bool, // bit offset: 27 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR28: bool, // bit offset: 28 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR29: bool, // bit offset: 29 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR30: bool, // bit offset: 30 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. - EPCLR31: bool, // bit offset: 31 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR0: u1, // bit offset: 0 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR1: u1, // bit offset: 1 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR2: u1, // bit offset: 2 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR3: u1, // bit offset: 3 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR4: u1, // bit offset: 4 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR5: u1, // bit offset: 5 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR6: u1, // bit offset: 6 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR7: u1, // bit offset: 7 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR8: u1, // bit offset: 8 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR9: u1, // bit offset: 9 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR10: u1, // bit offset: 10 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR11: u1, // bit offset: 11 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR12: u1, // bit offset: 12 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR13: u1, // bit offset: 13 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR14: u1, // bit offset: 14 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR15: u1, // bit offset: 15 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR16: u1, // bit offset: 16 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR17: u1, // bit offset: 17 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR18: u1, // bit offset: 18 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR19: u1, // bit offset: 19 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR20: u1, // bit offset: 20 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR21: u1, // bit offset: 21 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR22: u1, // bit offset: 22 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR23: u1, // bit offset: 23 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR24: u1, // bit offset: 24 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR25: u1, // bit offset: 25 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR26: u1, // bit offset: 26 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR27: u1, // bit offset: 27 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR28: u1, // bit offset: 28 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR29: u1, // bit offset: 29 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR30: u1, // bit offset: 30 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. + EPCLR31: u1, // bit offset: 31 desc: 0 = No effect. 1 = Clears the corresponding bit in USBEpIntSt, by executing the SIE Select Endpoint/Clear Interrupt command for this endpoint. }); // byte offset: 572 USB Endpoint Interrupt Set pub const EPINTSET = mmio(Address + 0x0000023c, 32, packed struct { - EPSET0: bool, // bit offset: 0 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET1: bool, // bit offset: 1 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET2: bool, // bit offset: 2 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET3: bool, // bit offset: 3 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET4: bool, // bit offset: 4 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET5: bool, // bit offset: 5 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET6: bool, // bit offset: 6 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET7: bool, // bit offset: 7 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET8: bool, // bit offset: 8 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET9: bool, // bit offset: 9 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET10: bool, // bit offset: 10 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET11: bool, // bit offset: 11 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET12: bool, // bit offset: 12 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET13: bool, // bit offset: 13 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET14: bool, // bit offset: 14 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET15: bool, // bit offset: 15 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET16: bool, // bit offset: 16 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET17: bool, // bit offset: 17 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET18: bool, // bit offset: 18 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET19: bool, // bit offset: 19 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET20: bool, // bit offset: 20 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET21: bool, // bit offset: 21 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET22: bool, // bit offset: 22 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET23: bool, // bit offset: 23 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET24: bool, // bit offset: 24 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET25: bool, // bit offset: 25 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET26: bool, // bit offset: 26 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET27: bool, // bit offset: 27 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET28: bool, // bit offset: 28 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET29: bool, // bit offset: 29 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET30: bool, // bit offset: 30 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. - EPSET31: bool, // bit offset: 31 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET0: u1, // bit offset: 0 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET1: u1, // bit offset: 1 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET2: u1, // bit offset: 2 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET3: u1, // bit offset: 3 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET4: u1, // bit offset: 4 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET5: u1, // bit offset: 5 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET6: u1, // bit offset: 6 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET7: u1, // bit offset: 7 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET8: u1, // bit offset: 8 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET9: u1, // bit offset: 9 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET10: u1, // bit offset: 10 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET11: u1, // bit offset: 11 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET12: u1, // bit offset: 12 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET13: u1, // bit offset: 13 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET14: u1, // bit offset: 14 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET15: u1, // bit offset: 15 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET16: u1, // bit offset: 16 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET17: u1, // bit offset: 17 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET18: u1, // bit offset: 18 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET19: u1, // bit offset: 19 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET20: u1, // bit offset: 20 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET21: u1, // bit offset: 21 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET22: u1, // bit offset: 22 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET23: u1, // bit offset: 23 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET24: u1, // bit offset: 24 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET25: u1, // bit offset: 25 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET26: u1, // bit offset: 26 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET27: u1, // bit offset: 27 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET28: u1, // bit offset: 28 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET29: u1, // bit offset: 29 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET30: u1, // bit offset: 30 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. + EPSET31: u1, // bit offset: 31 desc: 0 = No effect. 1 = Sets the corresponding bit in USBEpIntSt. }); // byte offset: 576 USB Endpoint Priority pub const EPINTPRI = mmio(Address + 0x00000240, 32, packed struct { - EPPRI0: bool, // bit offset: 0 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI1: bool, // bit offset: 1 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI2: bool, // bit offset: 2 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI3: bool, // bit offset: 3 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI4: bool, // bit offset: 4 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI5: bool, // bit offset: 5 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI6: bool, // bit offset: 6 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI7: bool, // bit offset: 7 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI8: bool, // bit offset: 8 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI9: bool, // bit offset: 9 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI10: bool, // bit offset: 10 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI11: bool, // bit offset: 11 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI12: bool, // bit offset: 12 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI13: bool, // bit offset: 13 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI14: bool, // bit offset: 14 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI15: bool, // bit offset: 15 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI16: bool, // bit offset: 16 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI17: bool, // bit offset: 17 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI18: bool, // bit offset: 18 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI19: bool, // bit offset: 19 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI20: bool, // bit offset: 20 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI21: bool, // bit offset: 21 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI22: bool, // bit offset: 22 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI23: bool, // bit offset: 23 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI24: bool, // bit offset: 24 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI25: bool, // bit offset: 25 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI26: bool, // bit offset: 26 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI27: bool, // bit offset: 27 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI28: bool, // bit offset: 28 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI29: bool, // bit offset: 29 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI30: bool, // bit offset: 30 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt - EPPRI31: bool, // bit offset: 31 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI0: u1, // bit offset: 0 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI1: u1, // bit offset: 1 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI2: u1, // bit offset: 2 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI3: u1, // bit offset: 3 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI4: u1, // bit offset: 4 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI5: u1, // bit offset: 5 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI6: u1, // bit offset: 6 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI7: u1, // bit offset: 7 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI8: u1, // bit offset: 8 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI9: u1, // bit offset: 9 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI10: u1, // bit offset: 10 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI11: u1, // bit offset: 11 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI12: u1, // bit offset: 12 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI13: u1, // bit offset: 13 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI14: u1, // bit offset: 14 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI15: u1, // bit offset: 15 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI16: u1, // bit offset: 16 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI17: u1, // bit offset: 17 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI18: u1, // bit offset: 18 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI19: u1, // bit offset: 19 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI20: u1, // bit offset: 20 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI21: u1, // bit offset: 21 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI22: u1, // bit offset: 22 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI23: u1, // bit offset: 23 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI24: u1, // bit offset: 24 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI25: u1, // bit offset: 25 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI26: u1, // bit offset: 26 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI27: u1, // bit offset: 27 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI28: u1, // bit offset: 28 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI29: u1, // bit offset: 29 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI30: u1, // bit offset: 30 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt + EPPRI31: u1, // bit offset: 31 desc: 0 = The corresponding interrupt is routed to the EP_SLOW bit of USBDevIntSt 1 = The corresponding interrupt is routed to the EP_FAST bit of USBDevIntSt }); // byte offset: 580 USB Realize Endpoint pub const REEP = mmio(Address + 0x00000244, 32, packed struct { - EPR0: bool, // bit offset: 0 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR1: bool, // bit offset: 1 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR2: bool, // bit offset: 2 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR3: bool, // bit offset: 3 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR4: bool, // bit offset: 4 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR5: bool, // bit offset: 5 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR6: bool, // bit offset: 6 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR7: bool, // bit offset: 7 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR8: bool, // bit offset: 8 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR9: bool, // bit offset: 9 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR10: bool, // bit offset: 10 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR11: bool, // bit offset: 11 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR12: bool, // bit offset: 12 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR13: bool, // bit offset: 13 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR14: bool, // bit offset: 14 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR15: bool, // bit offset: 15 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR16: bool, // bit offset: 16 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR17: bool, // bit offset: 17 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR18: bool, // bit offset: 18 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR19: bool, // bit offset: 19 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR20: bool, // bit offset: 20 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR21: bool, // bit offset: 21 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR22: bool, // bit offset: 22 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR23: bool, // bit offset: 23 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR24: bool, // bit offset: 24 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR25: bool, // bit offset: 25 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR26: bool, // bit offset: 26 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR27: bool, // bit offset: 27 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR28: bool, // bit offset: 28 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR29: bool, // bit offset: 29 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR30: bool, // bit offset: 30 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. - EPR31: bool, // bit offset: 31 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR0: u1, // bit offset: 0 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR1: u1, // bit offset: 1 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR2: u1, // bit offset: 2 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR3: u1, // bit offset: 3 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR4: u1, // bit offset: 4 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR5: u1, // bit offset: 5 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR6: u1, // bit offset: 6 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR7: u1, // bit offset: 7 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR8: u1, // bit offset: 8 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR9: u1, // bit offset: 9 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR10: u1, // bit offset: 10 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR11: u1, // bit offset: 11 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR12: u1, // bit offset: 12 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR13: u1, // bit offset: 13 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR14: u1, // bit offset: 14 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR15: u1, // bit offset: 15 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR16: u1, // bit offset: 16 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR17: u1, // bit offset: 17 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR18: u1, // bit offset: 18 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR19: u1, // bit offset: 19 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR20: u1, // bit offset: 20 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR21: u1, // bit offset: 21 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR22: u1, // bit offset: 22 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR23: u1, // bit offset: 23 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR24: u1, // bit offset: 24 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR25: u1, // bit offset: 25 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR26: u1, // bit offset: 26 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR27: u1, // bit offset: 27 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR28: u1, // bit offset: 28 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR29: u1, // bit offset: 29 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR30: u1, // bit offset: 30 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. + EPR31: u1, // bit offset: 31 desc: 0 = Endpoint EPxx is not realized. 1 = Endpoint EPxx is realized. }); // byte offset: 584 USB Endpoint Index pub const EPIND = mmio(Address + 0x00000248, 32, packed struct { PHY_EP: u5, // bit offset: 0 desc: Physical endpoint number (0-31) + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -15775,6 +19804,7 @@ pub const USB = extern struct { // byte offset: 588 USB MaxPacketSize pub const MAXPSIZE = mmio(Address + 0x0000024c, 32, packed struct { MPS: u10, // bit offset: 0 desc: The maximum packet size value. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -15800,111 +19830,112 @@ pub const USB = extern struct { }); // byte offset: 592 USB DMA Request Status pub const DMARST = mmio(Address + 0x00000250, 32, packed struct { - EPRST0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and EP0 bit must be 0). - EPRST1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and EP1 bit must be 0). - EPRST2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. - EPRST31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and EP0 bit must be 0). + EPRST1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and EP1 bit must be 0). + EPRST2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. + EPRST31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA request. 0 = DMA not requested by endpoint xx. 1 = DMA requested by endpoint xx. }); // byte offset: 596 USB DMA Request Clear pub const DMARCLR = mmio(Address + 0x00000254, 32, packed struct { - EPRCLR0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0 bit must be 0). - EPRCLR1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1 bit must be 0). - EPRCLR2: bool, // bit offset: 2 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR3: bool, // bit offset: 3 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR4: bool, // bit offset: 4 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR5: bool, // bit offset: 5 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR6: bool, // bit offset: 6 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR7: bool, // bit offset: 7 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR8: bool, // bit offset: 8 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR9: bool, // bit offset: 9 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR10: bool, // bit offset: 10 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR11: bool, // bit offset: 11 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR12: bool, // bit offset: 12 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR13: bool, // bit offset: 13 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR14: bool, // bit offset: 14 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR15: bool, // bit offset: 15 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR16: bool, // bit offset: 16 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR17: bool, // bit offset: 17 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR18: bool, // bit offset: 18 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR19: bool, // bit offset: 19 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR20: bool, // bit offset: 20 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR21: bool, // bit offset: 21 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR22: bool, // bit offset: 22 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR23: bool, // bit offset: 23 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR24: bool, // bit offset: 24 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR25: bool, // bit offset: 25 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR26: bool, // bit offset: 26 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR27: bool, // bit offset: 27 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR28: bool, // bit offset: 28 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR29: bool, // bit offset: 29 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR30: bool, // bit offset: 30 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. - EPRCLR31: bool, // bit offset: 31 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0 bit must be 0). + EPRCLR1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1 bit must be 0). + EPRCLR2: u1, // bit offset: 2 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR3: u1, // bit offset: 3 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR4: u1, // bit offset: 4 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR5: u1, // bit offset: 5 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR6: u1, // bit offset: 6 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR7: u1, // bit offset: 7 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR8: u1, // bit offset: 8 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR9: u1, // bit offset: 9 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR10: u1, // bit offset: 10 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR11: u1, // bit offset: 11 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR12: u1, // bit offset: 12 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR13: u1, // bit offset: 13 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR14: u1, // bit offset: 14 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR15: u1, // bit offset: 15 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR16: u1, // bit offset: 16 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR17: u1, // bit offset: 17 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR18: u1, // bit offset: 18 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR19: u1, // bit offset: 19 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR20: u1, // bit offset: 20 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR21: u1, // bit offset: 21 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR22: u1, // bit offset: 22 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR23: u1, // bit offset: 23 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR24: u1, // bit offset: 24 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR25: u1, // bit offset: 25 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR26: u1, // bit offset: 26 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR27: u1, // bit offset: 27 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR28: u1, // bit offset: 28 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR29: u1, // bit offset: 29 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR30: u1, // bit offset: 30 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. + EPRCLR31: u1, // bit offset: 31 desc: Clear the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Clear the corresponding bit in USBDMARSt. }); // byte offset: 600 USB DMA Request Set pub const DMARSET = mmio(Address + 0x00000258, 32, packed struct { - EPRSET0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0 bit must be 0). - EPRSET1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1 bit must be 0). - EPRSET2: bool, // bit offset: 2 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET3: bool, // bit offset: 3 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET4: bool, // bit offset: 4 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET5: bool, // bit offset: 5 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET6: bool, // bit offset: 6 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET7: bool, // bit offset: 7 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET8: bool, // bit offset: 8 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET9: bool, // bit offset: 9 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET10: bool, // bit offset: 10 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET11: bool, // bit offset: 11 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET12: bool, // bit offset: 12 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET13: bool, // bit offset: 13 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET14: bool, // bit offset: 14 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET15: bool, // bit offset: 15 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET16: bool, // bit offset: 16 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET17: bool, // bit offset: 17 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET18: bool, // bit offset: 18 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET19: bool, // bit offset: 19 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET20: bool, // bit offset: 20 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET21: bool, // bit offset: 21 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET22: bool, // bit offset: 22 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET23: bool, // bit offset: 23 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET24: bool, // bit offset: 24 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET25: bool, // bit offset: 25 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET26: bool, // bit offset: 26 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET27: bool, // bit offset: 27 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET28: bool, // bit offset: 28 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET29: bool, // bit offset: 29 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET30: bool, // bit offset: 30 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. - EPRSET31: bool, // bit offset: 31 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0 bit must be 0). + EPRSET1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1 bit must be 0). + EPRSET2: u1, // bit offset: 2 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET3: u1, // bit offset: 3 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET4: u1, // bit offset: 4 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET5: u1, // bit offset: 5 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET6: u1, // bit offset: 6 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET7: u1, // bit offset: 7 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET8: u1, // bit offset: 8 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET9: u1, // bit offset: 9 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET10: u1, // bit offset: 10 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET11: u1, // bit offset: 11 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET12: u1, // bit offset: 12 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET13: u1, // bit offset: 13 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET14: u1, // bit offset: 14 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET15: u1, // bit offset: 15 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET16: u1, // bit offset: 16 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET17: u1, // bit offset: 17 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET18: u1, // bit offset: 18 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET19: u1, // bit offset: 19 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET20: u1, // bit offset: 20 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET21: u1, // bit offset: 21 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET22: u1, // bit offset: 22 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET23: u1, // bit offset: 23 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET24: u1, // bit offset: 24 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET25: u1, // bit offset: 25 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET26: u1, // bit offset: 26 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET27: u1, // bit offset: 27 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET28: u1, // bit offset: 28 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET29: u1, // bit offset: 29 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET30: u1, // bit offset: 30 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. + EPRSET31: u1, // bit offset: 31 desc: Set the endpoint xx (2 <= xx <= 31) DMA request. 0 = No effect 1 = Set the corresponding bit in USBDMARSt. }); // byte offset: 640 USB UDCA Head pub const UDCAH = mmio(Address + 0x00000280, 32, packed struct { + // RESERVED: u7, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. The UDCA is aligned to 128-byte boundaries. reserved7: u1 = 0, reserved6: u1 = 0, reserved5: u1 = 0, @@ -15916,85 +19947,95 @@ pub const USB = extern struct { }); // byte offset: 644 USB Endpoint DMA Status pub const EPDMAST = mmio(Address + 0x00000284, 32, packed struct { - EP_DMA_ST0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_ENABLE bit must be 0). - EP_DMA_ST1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_ENABLE bit must be 0). - EP_DMA_ST2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. - EP_DMA_ST31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_ENABLE bit must be 0). + EP_DMA_ST1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_ENABLE bit must be 0). + EP_DMA_ST2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. + EP_DMA_ST31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA enabled bit. 0 = The DMA for endpoint EPxx is disabled. 1 = The DMA for endpoint EPxx is enabled. }); // byte offset: 648 USB Endpoint DMA Enable pub const EPDMAEN = mmio(Address + 0x00000288, 32, packed struct { - EP_DMA_EN0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_ENABLE bit value must be 0). - EP_DMA_EN1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_ENABLE bit must be 0). + EP_DMA_EN0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_ENABLE bit value must be 0). + EP_DMA_EN1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_ENABLE bit must be 0). EP_DMA_EN: u30, // bit offset: 2 desc: Endpoint xx(2 <= xx <= 31) DMA enable control bit. 0 = No effect. 1 = Enable the DMA operation for endpoint EPxx. }); // byte offset: 652 USB Endpoint DMA Disable pub const EPDMADIS = mmio(Address + 0x0000028c, 32, packed struct { - EP_DMA_DIS0: bool, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_DISABLE bit value must be 0). - EP_DMA_DIS1: bool, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_DISABLE bit value must be 0). - EP_DMA_DIS2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. - EP_DMA_DIS31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS0: u1, // bit offset: 0 desc: Control endpoint OUT (DMA cannot be enabled for this endpoint and the EP0_DMA_DISABLE bit value must be 0). + EP_DMA_DIS1: u1, // bit offset: 1 desc: Control endpoint IN (DMA cannot be enabled for this endpoint and the EP1_DMA_DISABLE bit value must be 0). + EP_DMA_DIS2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. + EP_DMA_DIS31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) DMA disable control bit. 0 = No effect. 1 = Disable the DMA operation for endpoint EPxx. }); // byte offset: 656 USB DMA Interrupt Status pub const DMAINTST = mmio(Address + 0x00000290, 32, packed struct { - EOT: bool, // bit offset: 0 desc: End of Transfer Interrupt bit. - NDDR: bool, // bit offset: 1 desc: New DD Request Interrupt bit. - ERR: bool, // bit offset: 2 desc: System Error Interrupt bit. + EOT: enum(u1) { // bit offset: 0 desc: End of Transfer Interrupt bit. + @"ALL_BITS_IN_THE_USBE" = 0, // desc: All bits in the USBEoTIntSt register are 0. + @"AT_LEAST_ONE_BIT_IN_" = 1, // desc: At least one bit in the USBEoTIntSt is set. + }, + NDDR: enum(u1) { // bit offset: 1 desc: New DD Request Interrupt bit. + @"ALL_BITS_IN_THE_USBN" = 0, // desc: All bits in the USBNDDRIntSt register are 0. + @"AT_LEAST_ONE_BIT_IN_" = 1, // desc: At least one bit in the USBNDDRIntSt is set. + }, + ERR: enum(u1) { // bit offset: 2 desc: System Error Interrupt bit. + @"ALL_BITS_IN_THE_USBS" = 0, // desc: All bits in the USBSysErrIntSt register are 0. + @"AT_LEAST_ONE_BIT_IN_" = 1, // desc: At least one bit in the USBSysErrIntSt is set. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. The value read from a reserved bit is not defined. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -16027,9 +20068,19 @@ pub const USB = extern struct { }); // byte offset: 660 USB DMA Interrupt Enable pub const DMAINTEN = mmio(Address + 0x00000294, 32, packed struct { - EOT: bool, // bit offset: 0 desc: End of Transfer Interrupt enable bit. - NDDR: bool, // bit offset: 1 desc: New DD Request Interrupt enable bit. - ERR: bool, // bit offset: 2 desc: System Error Interrupt enable bit. + EOT: enum(u1) { // bit offset: 0 desc: End of Transfer Interrupt enable bit. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, + NDDR: enum(u1) { // bit offset: 1 desc: New DD Request Interrupt enable bit. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, + ERR: enum(u1) { // bit offset: 2 desc: System Error Interrupt enable bit. + @"DISABLED_" = 0, // desc: Disabled. + @"ENABLED_" = 1, // desc: Enabled. + }, + // RESERVED: u29, // bit offset: 3 desc: Reserved. Read value is undefined, only zero should be written. padding29: u1 = 0, padding28: u1 = 0, padding27: u1 = 0, @@ -16062,318 +20113,318 @@ pub const USB = extern struct { }); // byte offset: 672 USB End of Transfer Interrupt Status pub const EOTINTST = mmio(Address + 0x000002a0, 32, packed struct { - EPTXINTST0: bool, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST1: bool, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. - EPTXINTST31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST0: u1, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST1: u1, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. + EPTXINTST31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = There is no End of Transfer interrupt request for endpoint xx. 1 = There is an End of Transfer Interrupt request for endpoint xx. }); // byte offset: 676 USB End of Transfer Interrupt Clear pub const EOTINTCLR = mmio(Address + 0x000002a4, 32, packed struct { - EPTXINTCLR0: bool, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR1: bool, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR2: bool, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR3: bool, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR4: bool, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR5: bool, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR6: bool, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR7: bool, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR8: bool, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR9: bool, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR10: bool, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR11: bool, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR12: bool, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR13: bool, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR14: bool, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR15: bool, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR16: bool, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR17: bool, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR18: bool, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR19: bool, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR20: bool, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR21: bool, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR22: bool, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR23: bool, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR24: bool, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR25: bool, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR26: bool, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR27: bool, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR28: bool, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR29: bool, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR30: bool, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTCLR31: bool, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR0: u1, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR1: u1, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR2: u1, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR3: u1, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR4: u1, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR5: u1, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR6: u1, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR7: u1, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR8: u1, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR9: u1, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR10: u1, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR11: u1, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR12: u1, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR13: u1, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR14: u1, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR15: u1, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR16: u1, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR17: u1, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR18: u1, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR19: u1, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR20: u1, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR21: u1, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR22: u1, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR23: u1, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR24: u1, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR25: u1, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR26: u1, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR27: u1, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR28: u1, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR29: u1, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR30: u1, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTCLR31: u1, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Clear the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. }); // byte offset: 680 USB End of Transfer Interrupt Set pub const EOTINTSET = mmio(Address + 0x000002a8, 32, packed struct { - EPTXINTSET0: bool, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET1: bool, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET2: bool, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET3: bool, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET4: bool, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET5: bool, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET6: bool, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET7: bool, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET8: bool, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET9: bool, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET10: bool, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET11: bool, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET12: bool, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET13: bool, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET14: bool, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET15: bool, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET16: bool, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET17: bool, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET18: bool, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET19: bool, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET20: bool, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET21: bool, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET22: bool, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET23: bool, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET24: bool, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET25: bool, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET26: bool, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET27: bool, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET28: bool, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET29: bool, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET30: bool, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. - EPTXINTSET31: bool, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET0: u1, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET1: u1, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET2: u1, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET3: u1, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET4: u1, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET5: u1, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET6: u1, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET7: u1, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET8: u1, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET9: u1, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET10: u1, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET11: u1, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET12: u1, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET13: u1, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET14: u1, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET15: u1, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET16: u1, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET17: u1, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET18: u1, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET19: u1, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET20: u1, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET21: u1, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET22: u1, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET23: u1, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET24: u1, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET25: u1, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET26: u1, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET27: u1, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET28: u1, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET29: u1, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET30: u1, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. + EPTXINTSET31: u1, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) End of Transfer Interrupt request. 0 = No effect. 1 = Set the EPxx End of Transfer Interrupt request in the USBEoTIntSt register. }); // byte offset: 684 USB New DD Request Interrupt Status pub const NDDRINTST = mmio(Address + 0x000002ac, 32, packed struct { - EPNDDINTST0: bool, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST1: bool, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. - EPNDDINTST31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST0: u1, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST1: u1, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. + EPNDDINTST31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = There is no new DD interrupt request for endpoint xx. 1 = There is a new DD interrupt request for endpoint xx. }); // byte offset: 688 USB New DD Request Interrupt Clear pub const NDDRINTCLR = mmio(Address + 0x000002b0, 32, packed struct { - EPNDDINTCLR0: bool, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR1: bool, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR2: bool, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR3: bool, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR4: bool, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR5: bool, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR6: bool, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR7: bool, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR8: bool, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR9: bool, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR10: bool, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR11: bool, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR12: bool, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR13: bool, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR14: bool, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR15: bool, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR16: bool, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR17: bool, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR18: bool, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR19: bool, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR20: bool, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR21: bool, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR22: bool, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR23: bool, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR24: bool, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR25: bool, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR26: bool, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR27: bool, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR28: bool, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR29: bool, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR30: bool, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTCLR31: bool, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR0: u1, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR1: u1, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR2: u1, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR3: u1, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR4: u1, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR5: u1, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR6: u1, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR7: u1, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR8: u1, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR9: u1, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR10: u1, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR11: u1, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR12: u1, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR13: u1, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR14: u1, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR15: u1, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR16: u1, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR17: u1, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR18: u1, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR19: u1, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR20: u1, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR21: u1, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR22: u1, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR23: u1, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR24: u1, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR25: u1, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR26: u1, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR27: u1, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR28: u1, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR29: u1, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR30: u1, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTCLR31: u1, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Clear the EPxx new DD interrupt request in the USBNDDRIntSt register. }); // byte offset: 692 USB New DD Request Interrupt Set pub const NDDRINTSET = mmio(Address + 0x000002b4, 32, packed struct { - EPNDDINTSET0: bool, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET1: bool, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET2: bool, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET3: bool, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET4: bool, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET5: bool, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET6: bool, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET7: bool, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET8: bool, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET9: bool, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET10: bool, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET11: bool, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET12: bool, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET13: bool, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET14: bool, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET15: bool, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET16: bool, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET17: bool, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET18: bool, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET19: bool, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET20: bool, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET21: bool, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET22: bool, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET23: bool, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET24: bool, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET25: bool, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET26: bool, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET27: bool, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET28: bool, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET29: bool, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET30: bool, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. - EPNDDINTSET31: bool, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET0: u1, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET1: u1, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET2: u1, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET3: u1, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET4: u1, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET5: u1, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET6: u1, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET7: u1, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET8: u1, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET9: u1, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET10: u1, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET11: u1, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET12: u1, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET13: u1, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET14: u1, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET15: u1, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET16: u1, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET17: u1, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET18: u1, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET19: u1, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET20: u1, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET21: u1, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET22: u1, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET23: u1, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET24: u1, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET25: u1, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET26: u1, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET27: u1, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET28: u1, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET29: u1, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET30: u1, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. + EPNDDINTSET31: u1, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) new DD interrupt request. 0 = No effect. 1 = Set the EPxx new DD interrupt request in the USBNDDRIntSt register. }); // byte offset: 696 USB System Error Interrupt Status pub const SYSERRINTST = mmio(Address + 0x000002b8, 32, packed struct { - EPERRINTST0: bool, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST1: bool, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST2: bool, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST3: bool, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST4: bool, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST5: bool, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST6: bool, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST7: bool, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST8: bool, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST9: bool, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST10: bool, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST11: bool, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST12: bool, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST13: bool, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST14: bool, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST15: bool, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST16: bool, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST17: bool, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST18: bool, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST19: bool, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST20: bool, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST21: bool, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST22: bool, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST23: bool, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST24: bool, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST25: bool, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST26: bool, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST27: bool, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST28: bool, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST29: bool, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST30: bool, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. - EPERRINTST31: bool, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST0: u1, // bit offset: 0 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST1: u1, // bit offset: 1 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST2: u1, // bit offset: 2 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST3: u1, // bit offset: 3 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST4: u1, // bit offset: 4 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST5: u1, // bit offset: 5 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST6: u1, // bit offset: 6 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST7: u1, // bit offset: 7 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST8: u1, // bit offset: 8 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST9: u1, // bit offset: 9 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST10: u1, // bit offset: 10 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST11: u1, // bit offset: 11 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST12: u1, // bit offset: 12 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST13: u1, // bit offset: 13 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST14: u1, // bit offset: 14 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST15: u1, // bit offset: 15 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST16: u1, // bit offset: 16 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST17: u1, // bit offset: 17 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST18: u1, // bit offset: 18 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST19: u1, // bit offset: 19 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST20: u1, // bit offset: 20 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST21: u1, // bit offset: 21 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST22: u1, // bit offset: 22 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST23: u1, // bit offset: 23 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST24: u1, // bit offset: 24 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST25: u1, // bit offset: 25 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST26: u1, // bit offset: 26 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST27: u1, // bit offset: 27 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST28: u1, // bit offset: 28 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST29: u1, // bit offset: 29 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST30: u1, // bit offset: 30 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. + EPERRINTST31: u1, // bit offset: 31 desc: Endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = There is no System Error Interrupt request for endpoint xx. 1 = There is a System Error Interrupt request for endpoint xx. }); // byte offset: 700 USB System Error Interrupt Clear pub const SYSERRINTCLR = mmio(Address + 0x000002bc, 32, packed struct { - EPERRINTCLR0: bool, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR1: bool, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR2: bool, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR3: bool, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR4: bool, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR5: bool, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR6: bool, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR7: bool, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR8: bool, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR9: bool, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR10: bool, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR11: bool, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR12: bool, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR13: bool, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR14: bool, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR15: bool, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR16: bool, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR17: bool, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR18: bool, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR19: bool, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR20: bool, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR21: bool, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR22: bool, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR23: bool, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR24: bool, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR25: bool, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR26: bool, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR27: bool, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR28: bool, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR29: bool, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR30: bool, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTCLR31: bool, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR0: u1, // bit offset: 0 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR1: u1, // bit offset: 1 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR2: u1, // bit offset: 2 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR3: u1, // bit offset: 3 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR4: u1, // bit offset: 4 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR5: u1, // bit offset: 5 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR6: u1, // bit offset: 6 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR7: u1, // bit offset: 7 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR8: u1, // bit offset: 8 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR9: u1, // bit offset: 9 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR10: u1, // bit offset: 10 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR11: u1, // bit offset: 11 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR12: u1, // bit offset: 12 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR13: u1, // bit offset: 13 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR14: u1, // bit offset: 14 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR15: u1, // bit offset: 15 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR16: u1, // bit offset: 16 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR17: u1, // bit offset: 17 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR18: u1, // bit offset: 18 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR19: u1, // bit offset: 19 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR20: u1, // bit offset: 20 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR21: u1, // bit offset: 21 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR22: u1, // bit offset: 22 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR23: u1, // bit offset: 23 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR24: u1, // bit offset: 24 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR25: u1, // bit offset: 25 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR26: u1, // bit offset: 26 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR27: u1, // bit offset: 27 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR28: u1, // bit offset: 28 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR29: u1, // bit offset: 29 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR30: u1, // bit offset: 30 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTCLR31: u1, // bit offset: 31 desc: Clear endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Clear the EPxx System Error Interrupt request in the USBSysErrIntSt register. }); // byte offset: 704 USB System Error Interrupt Set pub const SYSERRINTSET = mmio(Address + 0x000002c0, 32, packed struct { - EPERRINTSET0: bool, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET1: bool, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET2: bool, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET3: bool, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET4: bool, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET5: bool, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET6: bool, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET7: bool, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET8: bool, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET9: bool, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET10: bool, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET11: bool, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET12: bool, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET13: bool, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET14: bool, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET15: bool, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET16: bool, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET17: bool, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET18: bool, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET19: bool, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET20: bool, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET21: bool, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET22: bool, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET23: bool, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET24: bool, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET25: bool, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET26: bool, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET27: bool, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET28: bool, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET29: bool, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET30: bool, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. - EPERRINTSET31: bool, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET0: u1, // bit offset: 0 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET1: u1, // bit offset: 1 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET2: u1, // bit offset: 2 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET3: u1, // bit offset: 3 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET4: u1, // bit offset: 4 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET5: u1, // bit offset: 5 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET6: u1, // bit offset: 6 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET7: u1, // bit offset: 7 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET8: u1, // bit offset: 8 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET9: u1, // bit offset: 9 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET10: u1, // bit offset: 10 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET11: u1, // bit offset: 11 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET12: u1, // bit offset: 12 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET13: u1, // bit offset: 13 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET14: u1, // bit offset: 14 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET15: u1, // bit offset: 15 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET16: u1, // bit offset: 16 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET17: u1, // bit offset: 17 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET18: u1, // bit offset: 18 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET19: u1, // bit offset: 19 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET20: u1, // bit offset: 20 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET21: u1, // bit offset: 21 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET22: u1, // bit offset: 22 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET23: u1, // bit offset: 23 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET24: u1, // bit offset: 24 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET25: u1, // bit offset: 25 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET26: u1, // bit offset: 26 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET27: u1, // bit offset: 27 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET28: u1, // bit offset: 28 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET29: u1, // bit offset: 29 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET30: u1, // bit offset: 30 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. + EPERRINTSET31: u1, // bit offset: 31 desc: Set endpoint xx (2 <= xx <= 31) System Error Interrupt request. 0 = No effect. 1 = Set the EPxx System Error Interrupt request in the USBSysErrIntSt register. }); // byte offset: 768 I2C Receive pub const I2C_RX = mmio(Address + 0x00000300, 32, packed struct { @@ -16406,8 +20457,9 @@ pub const USB = extern struct { // byte offset: 768 I2C Transmit pub const I2C_WO = mmio(Address + 0x00000300, 32, packed struct { TXDATA: u8, // bit offset: 0 desc: Transmit data. - START: bool, // bit offset: 8 desc: When 1, issue a START condition before transmitting this byte. - STOP: bool, // bit offset: 9 desc: When 1, issue a STOP condition after transmitting this byte. + START: u1, // bit offset: 8 desc: When 1, issue a START condition before transmitting this byte. + STOP: u1, // bit offset: 9 desc: When 1, issue a STOP condition after transmitting this byte. + // RESERVED: u22, // bit offset: 10 desc: Reserved. Read value is undefined, only zero should be written. padding22: u1 = 0, padding21: u1 = 0, padding20: u1 = 0, @@ -16433,18 +20485,46 @@ pub const USB = extern struct { }); // byte offset: 772 I2C Status pub const I2C_STS = mmio(Address + 0x00000304, 32, packed struct { - TDI: bool, // bit offset: 0 desc: Transaction Done Interrupt. This flag is set if a transaction completes successfully. It is cleared by writing a one to bit 0 of the status register. It is unaffected by slave transactions. - AFI: bool, // bit offset: 1 desc: Arbitration Failure Interrupt. When transmitting, if the SDA is low when SDAOUT is high, then this I2C has lost the arbitration to another device on the bus. The Arbitration Failure bit is set when this happens. It is cleared by writing a one to bit 1 of the status register. - NAI: bool, // bit offset: 2 desc: No Acknowledge Interrupt. After every byte of data is sent, the transmitter expects an acknowledge from the receiver. This bit is set if the acknowledge is not received. It is cleared when a byte is written to the master TX FIFO. - DRMI: bool, // bit offset: 3 desc: Master Data Request Interrupt. Once a transmission is started, the transmitter must have data to transmit as long as it isn't followed by a stop condition or it will hold SCL low until more data is available. The Master Data Request bit is set when the master transmitter is data-starved. If the master TX FIFO is empty and the last byte did not have a STOP condition flag, then SCL is held low until the CPU writes another byte to transmit. This bit is cleared when a byte is written to the master TX FIFO. - DRSI: bool, // bit offset: 4 desc: Slave Data Request Interrupt. Once a transmission is started, the transmitter must have data to transmit as long as it isn't followed by a STOP condition or it will hold SCL low until more data is available. The Slave Data Request bit is set when the slave transmitter is data-starved. If the slave TX FIFO is empty and the last byte transmitted was acknowledged, then SCL is held low until the CPU writes another byte to transmit. This bit is cleared when a byte is written to the slave Tx FIFO. - Active: bool, // bit offset: 5 desc: Indicates whether the bus is busy. This bit is set when a START condition has been seen. It is cleared when a STOP condition is seen.. - SCL: bool, // bit offset: 6 desc: The current value of the SCL signal. - SDA: bool, // bit offset: 7 desc: The current value of the SDA signal. - RFF: bool, // bit offset: 8 desc: Receive FIFO Full (RFF). This bit is set when the RX FIFO is full and cannot accept any more data. It is cleared when the RX FIFO is not full. If a byte arrives when the Receive FIFO is full, the SCL is held low until the CPU reads the RX FIFO and makes room for it. - RFE: bool, // bit offset: 9 desc: Receive FIFO Empty. RFE is set when the RX FIFO is empty and is cleared when the RX FIFO contains valid data. - TFF: bool, // bit offset: 10 desc: Transmit FIFO Full. TFF is set when the TX FIFO is full and is cleared when the TX FIFO is not full. - TFE: bool, // bit offset: 11 desc: Transmit FIFO Empty. TFE is set when the TX FIFO is empty and is cleared when the TX FIFO contains valid data. + TDI: enum(u1) { // bit offset: 0 desc: Transaction Done Interrupt. This flag is set if a transaction completes successfully. It is cleared by writing a one to bit 0 of the status register. It is unaffected by slave transactions. + @"NOT_COMPLETE" = 0, // desc: Transaction has not completed. + @"COMPLETE" = 1, // desc: Transaction completed. + }, + AFI: enum(u1) { // bit offset: 1 desc: Arbitration Failure Interrupt. When transmitting, if the SDA is low when SDAOUT is high, then this I2C has lost the arbitration to another device on the bus. The Arbitration Failure bit is set when this happens. It is cleared by writing a one to bit 1 of the status register. + @"NO_ARBITRATION_FAILU" = 0, // desc: No arbitration failure on last transmission. + @"ARBITRATION_FAILURE_" = 1, // desc: Arbitration failure occurred on last transmission. + }, + NAI: enum(u1) { // bit offset: 2 desc: No Acknowledge Interrupt. After every byte of data is sent, the transmitter expects an acknowledge from the receiver. This bit is set if the acknowledge is not received. It is cleared when a byte is written to the master TX FIFO. + @"ACKNOWLEDGE_RCVD" = 0, // desc: Last transmission received an acknowledge. + @"NO_ACKNOWLEDGE_RCVD" = 1, // desc: Last transmission did not receive an acknowledge. + }, + DRMI: enum(u1) { // bit offset: 3 desc: Master Data Request Interrupt. Once a transmission is started, the transmitter must have data to transmit as long as it isn't followed by a stop condition or it will hold SCL low until more data is available. The Master Data Request bit is set when the master transmitter is data-starved. If the master TX FIFO is empty and the last byte did not have a STOP condition flag, then SCL is held low until the CPU writes another byte to transmit. This bit is cleared when a byte is written to the master TX FIFO. + @"BUSY" = 0, // desc: Master transmitter does not need data. + @"NEED_DATA" = 1, // desc: Master transmitter needs data. + }, + DRSI: enum(u1) { // bit offset: 4 desc: Slave Data Request Interrupt. Once a transmission is started, the transmitter must have data to transmit as long as it isn't followed by a STOP condition or it will hold SCL low until more data is available. The Slave Data Request bit is set when the slave transmitter is data-starved. If the slave TX FIFO is empty and the last byte transmitted was acknowledged, then SCL is held low until the CPU writes another byte to transmit. This bit is cleared when a byte is written to the slave Tx FIFO. + @"BUSY" = 0, // desc: Slave transmitter does not need data. + @"NEED_DATA" = 1, // desc: Slave transmitter needs data. + }, + Active: u1, // bit offset: 5 desc: Indicates whether the bus is busy. This bit is set when a START condition has been seen. It is cleared when a STOP condition is seen.. + SCL: u1, // bit offset: 6 desc: The current value of the SCL signal. + SDA: u1, // bit offset: 7 desc: The current value of the SDA signal. + RFF: enum(u1) { // bit offset: 8 desc: Receive FIFO Full (RFF). This bit is set when the RX FIFO is full and cannot accept any more data. It is cleared when the RX FIFO is not full. If a byte arrives when the Receive FIFO is full, the SCL is held low until the CPU reads the RX FIFO and makes room for it. + @"RX_FIFO_IS_NOT_FULL" = 0, // desc: RX FIFO is not full + @"RX_FIFO_IS_FULL" = 1, // desc: RX FIFO is full + }, + RFE: enum(u1) { // bit offset: 9 desc: Receive FIFO Empty. RFE is set when the RX FIFO is empty and is cleared when the RX FIFO contains valid data. + @"DATA" = 0, // desc: RX FIFO contains data. + @"EMPTY" = 1, // desc: RX FIFO is empty + }, + TFF: enum(u1) { // bit offset: 10 desc: Transmit FIFO Full. TFF is set when the TX FIFO is full and is cleared when the TX FIFO is not full. + @"TX_FIFO_IS_NOT_FULL_" = 0, // desc: TX FIFO is not full. + @"TX_FIFO_IS_FULL" = 1, // desc: TX FIFO is full + }, + TFE: enum(u1) { // bit offset: 11 desc: Transmit FIFO Empty. TFE is set when the TX FIFO is empty and is cleared when the TX FIFO contains valid data. + @"VALID_DATA" = 0, // desc: TX FIFO contains valid data. + @"EMPTY" = 1, // desc: TX FIFO is empty + }, + // RESERVED: u20, // bit offset: 12 desc: Reserved. Read value is undefined, only zero should be written. padding20: u1 = 0, padding19: u1 = 0, padding18: u1 = 0, @@ -16468,15 +20548,43 @@ pub const USB = extern struct { }); // byte offset: 776 I2C Control pub const I2C_CTL = mmio(Address + 0x00000308, 32, packed struct { - TDIE: bool, // bit offset: 0 desc: Transmit Done Interrupt Enable. This enables the TDI interrupt signalling that this I2C issued a STOP condition. - AFIE: bool, // bit offset: 1 desc: Transmitter Arbitration Failure Interrupt Enable. This enables the AFI interrupt which is asserted during transmission when trying to set SDA high, but the bus is driven low by another device. - NAIE: bool, // bit offset: 2 desc: Transmitter No Acknowledge Interrupt Enable. This enables the NAI interrupt signalling that transmitted byte was not acknowledged. - DRMIE: bool, // bit offset: 3 desc: Master Transmitter Data Request Interrupt Enable. This enables the DRMI interrupt which signals that the master transmitter has run out of data, has not issued a STOP, and is holding the SCL line low. - DRSIE: bool, // bit offset: 4 desc: Slave Transmitter Data Request Interrupt Enable. This enables the DRSI interrupt which signals that the slave transmitter has run out of data and the last byte was acknowledged, so the SCL line is being held low. - REFIE: bool, // bit offset: 5 desc: Receive FIFO Full Interrupt Enable. This enables the Receive FIFO Full interrupt to indicate that the receive FIFO cannot accept any more data. - RFDAIE: bool, // bit offset: 6 desc: Receive Data Available Interrupt Enable. This enables the DAI interrupt to indicate that data is available in the receive FIFO (i.e. not empty). - TFFIE: bool, // bit offset: 7 desc: Transmit FIFO Not Full Interrupt Enable. This enables the Transmit FIFO Not Full interrupt to indicate that the more data can be written to the transmit FIFO. Note that this is not full. It is intended help the CPU to write to the I2C block only when there is room in the FIFO and do this without polling the status register. - SRST: bool, // bit offset: 8 desc: Soft reset. This is only needed in unusual circumstances. If a device issues a start condition without issuing a stop condition. A system timer may be used to reset the I2C if the bus remains busy longer than the time-out period. On a soft reset, the Tx and Rx FIFOs are flushed, I2C_STS register is cleared, and all internal state machines are reset to appear idle. The I2C_CLKHI, I2C_CLKLO and I2C_CTL (except Soft Reset Bit) are NOT modified by a soft reset. + TDIE: enum(u1) { // bit offset: 0 desc: Transmit Done Interrupt Enable. This enables the TDI interrupt signalling that this I2C issued a STOP condition. + @"DISABLE_THE_TDI_INTE" = 0, // desc: Disable the TDI interrupt. + @"ENABLE_THE_TDI_INTER" = 1, // desc: Enable the TDI interrupt. + }, + AFIE: enum(u1) { // bit offset: 1 desc: Transmitter Arbitration Failure Interrupt Enable. This enables the AFI interrupt which is asserted during transmission when trying to set SDA high, but the bus is driven low by another device. + @"DISABLE_THE_AFI_" = 0, // desc: Disable the AFI. + @"ENABLE_THE_AFI_" = 1, // desc: Enable the AFI. + }, + NAIE: enum(u1) { // bit offset: 2 desc: Transmitter No Acknowledge Interrupt Enable. This enables the NAI interrupt signalling that transmitted byte was not acknowledged. + @"DISABLE_THE_NAI_" = 0, // desc: Disable the NAI. + @"ENABLE_THE_NAI_" = 1, // desc: Enable the NAI. + }, + DRMIE: enum(u1) { // bit offset: 3 desc: Master Transmitter Data Request Interrupt Enable. This enables the DRMI interrupt which signals that the master transmitter has run out of data, has not issued a STOP, and is holding the SCL line low. + @"DISABLE_THE_DRMI_INT" = 0, // desc: Disable the DRMI interrupt. + @"ENABLE_THE_DRMI_INTE" = 1, // desc: Enable the DRMI interrupt. + }, + DRSIE: enum(u1) { // bit offset: 4 desc: Slave Transmitter Data Request Interrupt Enable. This enables the DRSI interrupt which signals that the slave transmitter has run out of data and the last byte was acknowledged, so the SCL line is being held low. + @"DISABLE_THE_DRSI_INT" = 0, // desc: Disable the DRSI interrupt. + @"ENABLE_THE_DRSI_INTE" = 1, // desc: Enable the DRSI interrupt. + }, + REFIE: enum(u1) { // bit offset: 5 desc: Receive FIFO Full Interrupt Enable. This enables the Receive FIFO Full interrupt to indicate that the receive FIFO cannot accept any more data. + @"DISABLE_THE_RFFI_" = 0, // desc: Disable the RFFI. + @"ENABLE_THE_RFFI_" = 1, // desc: Enable the RFFI. + }, + RFDAIE: enum(u1) { // bit offset: 6 desc: Receive Data Available Interrupt Enable. This enables the DAI interrupt to indicate that data is available in the receive FIFO (i.e. not empty). + @"DISABLE_THE_DAI_" = 0, // desc: Disable the DAI. + @"ENABLE_THE_DAI_" = 1, // desc: Enable the DAI. + }, + TFFIE: enum(u1) { // bit offset: 7 desc: Transmit FIFO Not Full Interrupt Enable. This enables the Transmit FIFO Not Full interrupt to indicate that the more data can be written to the transmit FIFO. Note that this is not full. It is intended help the CPU to write to the I2C block only when there is room in the FIFO and do this without polling the status register. + @"DISABLE_THE_TFFI_" = 0, // desc: Disable the TFFI. + @"ENABLE_THE_TFFI_" = 1, // desc: Enable the TFFI. + }, + SRST: enum(u1) { // bit offset: 8 desc: Soft reset. This is only needed in unusual circumstances. If a device issues a start condition without issuing a stop condition. A system timer may be used to reset the I2C if the bus remains busy longer than the time-out period. On a soft reset, the Tx and Rx FIFOs are flushed, I2C_STS register is cleared, and all internal state machines are reset to appear idle. The I2C_CLKHI, I2C_CLKLO and I2C_CTL (except Soft Reset Bit) are NOT modified by a soft reset. + @"NO_RESET" = 0, // desc: No reset. + @"RESET" = 1, // desc: Reset the I2C to idle state. Self clearing. + }, + // RESERVED: u23, // bit offset: 9 desc: Reserved. Read value is undefined, only zero should be written. padding23: u1 = 0, padding22: u1 = 0, padding21: u1 = 0, @@ -16504,6 +20612,7 @@ pub const USB = extern struct { // byte offset: 780 I2C Clock High pub const I2C_CLKHI = mmio(Address + 0x0000030c, 32, packed struct { CDHI: u8, // bit offset: 0 desc: Clock divisor high. This value is the number of 48 MHz clocks the serial clock (SCL) will be high. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -16532,6 +20641,7 @@ pub const USB = extern struct { // byte offset: 784 I2C Clock Low pub const I2C_CLKLO = mmio(Address + 0x00000310, 32, packed struct { CDLO: u8, // bit offset: 0 desc: Clock divisor low. This value is the number of 48 MHz clocks the serial clock (SCL) will be low. + // RESERVED: u24, // bit offset: 8 desc: Reserved. Read value is undefined, only zero should be written. padding24: u1 = 0, padding23: u1 = 0, padding22: u1 = 0, @@ -16559,11 +20669,14 @@ pub const USB = extern struct { }); // byte offset: 4084 USB Clock Control pub const USBCLKCTRL = mmio(Address + 0x00000ff4, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - DEV_CLK_EN: bool, // bit offset: 1 desc: Device clock enable. Enables the usbclk input to the device controller + DEV_CLK_EN: u1, // bit offset: 1 desc: Device clock enable. Enables the usbclk input to the device controller + // RESERVED: u1, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, - PORTSEL_CLK_EN: bool, // bit offset: 3 desc: Port select register clock enable. - AHB_CLK_EN: bool, // bit offset: 4 desc: AHB clock enable + PORTSEL_CLK_EN: u1, // bit offset: 3 desc: Port select register clock enable. + AHB_CLK_EN: u1, // bit offset: 4 desc: AHB clock enable + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -16594,11 +20707,27 @@ pub const USB = extern struct { }); // byte offset: 4084 OTG clock controller pub const OTGCLKCTRL = mmio(Address + 0x00000ff4, 32, packed struct { - HOST_CLK_EN: bool, // bit offset: 0 desc: Host clock enable - DEV_CLK_EN: bool, // bit offset: 1 desc: Device clock enable - I2C_CLK_EN: bool, // bit offset: 2 desc: I2C clock enable - OTG_CLK_EN: bool, // bit offset: 3 desc: OTG clock enable. In device-only applications, this bit enables access to the PORTSEL register. - AHB_CLK_EN: bool, // bit offset: 4 desc: AHB master clock enable + HOST_CLK_EN: enum(u1) { // bit offset: 0 desc: Host clock enable + @"DISABLE_THE_HOST_CLO" = 0, // desc: Disable the Host clock. + @"ENABLE_THE_HOST_CLOC" = 1, // desc: Enable the Host clock. + }, + DEV_CLK_EN: enum(u1) { // bit offset: 1 desc: Device clock enable + @"DISABLE_THE_DEVICE_C" = 0, // desc: Disable the Device clock. + @"ENABLE_THE_DEVICE_CL" = 1, // desc: Enable the Device clock. + }, + I2C_CLK_EN: enum(u1) { // bit offset: 2 desc: I2C clock enable + @"DISABLE_THE_I2C_CLOC" = 0, // desc: Disable the I2C clock. + @"ENABLE_THE_I2C_CLOCK" = 1, // desc: Enable the I2C clock. + }, + OTG_CLK_EN: enum(u1) { // bit offset: 3 desc: OTG clock enable. In device-only applications, this bit enables access to the PORTSEL register. + @"DISABLE_THE_OTG_CLOC" = 0, // desc: Disable the OTG clock. + @"ENABLE_THE_OTG_CLOCK" = 1, // desc: Enable the OTG clock. + }, + AHB_CLK_EN: enum(u1) { // bit offset: 4 desc: AHB master clock enable + @"DISABLE_THE_AHB_CLOC" = 0, // desc: Disable the AHB clock. + @"ENABLE_THE_AHB_CLOCK" = 1, // desc: Enable the AHB clock. + }, + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -16629,11 +20758,14 @@ pub const USB = extern struct { }); // byte offset: 4088 USB Clock Status pub const USBCLKST = mmio(Address + 0x00000ff8, 32, packed struct { + // RESERVED: u1, // bit offset: 0 desc: Reserved. Read value is undefined, only zero should be written. reserved1: u1 = 0, - DEV_CLK_ON: bool, // bit offset: 1 desc: Device clock on. The usbclk input to the device controller is active . + DEV_CLK_ON: u1, // bit offset: 1 desc: Device clock on. The usbclk input to the device controller is active . + // RESERVED: u1, // bit offset: 2 desc: Reserved. Read value is undefined, only zero should be written. reserved2: u1 = 0, - PORTSEL_CLK_ON: bool, // bit offset: 3 desc: Port select register clock on. - AHB_CLK_ON: bool, // bit offset: 4 desc: AHB clock on. + PORTSEL_CLK_ON: u1, // bit offset: 3 desc: Port select register clock on. + AHB_CLK_ON: u1, // bit offset: 4 desc: AHB clock on. + // RESERVED: u27, // bit offset: 5 desc: Reserved. The value read from a reserved bit is not defined. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -16664,11 +20796,27 @@ pub const USB = extern struct { }); // byte offset: 4088 OTG clock status pub const OTGCLKST = mmio(Address + 0x00000ff8, 32, packed struct { - HOST_CLK_ON: bool, // bit offset: 0 desc: Host clock status. - DEV_CLK_ON: bool, // bit offset: 1 desc: Device clock status. - I2C_CLK_ON: bool, // bit offset: 2 desc: I2C clock status. - OTG_CLK_ON: bool, // bit offset: 3 desc: OTG clock status. - AHB_CLK_ON: bool, // bit offset: 4 desc: AHB master clock status. + HOST_CLK_ON: enum(u1) { // bit offset: 0 desc: Host clock status. + @"HOST_CLOCK_IS_NOT_AV" = 0, // desc: Host clock is not available. + @"HOST_CLOCK_IS_AVAILA" = 1, // desc: Host clock is available. + }, + DEV_CLK_ON: enum(u1) { // bit offset: 1 desc: Device clock status. + @"DEVICE_CLOCK_IS_NOT_" = 0, // desc: Device clock is not available. + @"DEVICE_CLOCK_IS_AVAI" = 1, // desc: Device clock is available. + }, + I2C_CLK_ON: enum(u1) { // bit offset: 2 desc: I2C clock status. + @"I2C_CLOCK_IS_NOT_AVA" = 0, // desc: I2C clock is not available. + @"I2C_CLOCK_IS_AVAILAB" = 1, // desc: I2C clock is available. + }, + OTG_CLK_ON: enum(u1) { // bit offset: 3 desc: OTG clock status. + @"OTG_CLOCK_IS_NOT_AVA" = 0, // desc: OTG clock is not available. + @"OTG_CLOCK_IS_AVAILAB" = 1, // desc: OTG clock is available. + }, + AHB_CLK_ON: enum(u1) { // bit offset: 4 desc: AHB master clock status. + @"AHB_CLOCK_IS_NOT_AVA" = 0, // desc: AHB clock is not available. + @"AHB_CLOCK_IS_AVAILAB" = 1, // desc: AHB clock is available. + }, + // RESERVED: u27, // bit offset: 5 desc: Reserved. Read value is undefined, only zero should be written. padding27: u1 = 0, padding26: u1 = 0, padding25: u1 = 0, @@ -16702,878 +20850,878 @@ pub const GPIO = extern struct { pub const Address: u32 = 0x2009c000; // byte offset: 0 GPIO Port Direction control register. pub const DIR0 = mmio(Address + 0x00000000, 32, packed struct { - PINDIR0: bool, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR1: bool, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR2: bool, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR3: bool, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR4: bool, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR5: bool, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR6: bool, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR7: bool, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR8: bool, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR9: bool, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR10: bool, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR11: bool, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR12: bool, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR13: bool, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR14: bool, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR15: bool, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR16: bool, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR17: bool, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR18: bool, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR19: bool, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR20: bool, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR21: bool, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR22: bool, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR23: bool, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR24: bool, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR25: bool, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR26: bool, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR27: bool, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR28: bool, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR29: bool, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR30: bool, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR31: bool, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR0: u1, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR1: u1, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR2: u1, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR3: u1, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR4: u1, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR5: u1, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR6: u1, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR7: u1, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR8: u1, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR9: u1, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR10: u1, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR11: u1, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR12: u1, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR13: u1, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR14: u1, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR15: u1, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR16: u1, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR17: u1, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR18: u1, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR19: u1, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR20: u1, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR21: u1, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR22: u1, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR23: u1, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR24: u1, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR25: u1, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR26: u1, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR27: u1, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR28: u1, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR29: u1, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR30: u1, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR31: u1, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. }); // byte offset: 16 Mask register for Port. pub const MASK0 = mmio(Address + 0x00000010, 32, packed struct { - PINMASK0: bool, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK1: bool, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK2: bool, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK3: bool, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK4: bool, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK5: bool, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK6: bool, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK7: bool, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK8: bool, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK9: bool, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK10: bool, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK11: bool, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK12: bool, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK13: bool, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK14: bool, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK15: bool, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK16: bool, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK17: bool, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK18: bool, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK19: bool, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK20: bool, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK21: bool, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK22: bool, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK23: bool, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK24: bool, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK25: bool, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK26: bool, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK27: bool, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK28: bool, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK29: bool, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK30: bool, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK31: bool, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK0: u1, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK1: u1, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK2: u1, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK3: u1, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK4: u1, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK5: u1, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK6: u1, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK7: u1, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK8: u1, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK9: u1, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK10: u1, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK11: u1, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK12: u1, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK13: u1, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK14: u1, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK15: u1, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK16: u1, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK17: u1, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK18: u1, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK19: u1, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK20: u1, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK21: u1, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK22: u1, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK23: u1, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK24: u1, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK25: u1, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK26: u1, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK27: u1, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK28: u1, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK29: u1, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK30: u1, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK31: u1, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. }); // byte offset: 20 Port Pin value register using FIOMASK. pub const PIN0 = mmio(Address + 0x00000014, 32, packed struct { - PINVAL0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. }); // byte offset: 24 Port Output Set register using FIOMASK. pub const SET0 = mmio(Address + 0x00000018, 32, packed struct { - PINSET0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. }); // byte offset: 28 Port Output Clear register using FIOMASK. pub const CLR0 = mmio(Address + 0x0000001c, 32, packed struct { - PINCLR0: bool, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR1: bool, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR2: bool, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR3: bool, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR4: bool, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR5: bool, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR6: bool, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR7: bool, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR8: bool, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR9: bool, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR10: bool, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR11: bool, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR12: bool, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR13: bool, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR14: bool, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR15: bool, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR16: bool, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR17: bool, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR18: bool, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR19: bool, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR20: bool, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR21: bool, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR22: bool, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR23: bool, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR24: bool, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR25: bool, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR26: bool, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR27: bool, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR28: bool, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR29: bool, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR30: bool, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR31: bool, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR0: u1, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR1: u1, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR2: u1, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR3: u1, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR4: u1, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR5: u1, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR6: u1, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR7: u1, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR8: u1, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR9: u1, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR10: u1, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR11: u1, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR12: u1, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR13: u1, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR14: u1, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR15: u1, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR16: u1, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR17: u1, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR18: u1, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR19: u1, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR20: u1, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR21: u1, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR22: u1, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR23: u1, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR24: u1, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR25: u1, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR26: u1, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR27: u1, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR28: u1, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR29: u1, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR30: u1, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR31: u1, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. }); // byte offset: 32 GPIO Port Direction control register. pub const DIR1 = mmio(Address + 0x00000020, 32, packed struct { - PINDIR0: bool, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR1: bool, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR2: bool, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR3: bool, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR4: bool, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR5: bool, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR6: bool, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR7: bool, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR8: bool, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR9: bool, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR10: bool, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR11: bool, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR12: bool, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR13: bool, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR14: bool, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR15: bool, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR16: bool, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR17: bool, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR18: bool, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR19: bool, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR20: bool, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR21: bool, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR22: bool, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR23: bool, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR24: bool, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR25: bool, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR26: bool, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR27: bool, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR28: bool, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR29: bool, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR30: bool, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR31: bool, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR0: u1, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR1: u1, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR2: u1, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR3: u1, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR4: u1, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR5: u1, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR6: u1, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR7: u1, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR8: u1, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR9: u1, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR10: u1, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR11: u1, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR12: u1, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR13: u1, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR14: u1, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR15: u1, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR16: u1, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR17: u1, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR18: u1, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR19: u1, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR20: u1, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR21: u1, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR22: u1, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR23: u1, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR24: u1, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR25: u1, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR26: u1, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR27: u1, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR28: u1, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR29: u1, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR30: u1, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR31: u1, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. }); // byte offset: 48 Mask register for Port. pub const MASK1 = mmio(Address + 0x00000030, 32, packed struct { - PINMASK0: bool, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK1: bool, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK2: bool, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK3: bool, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK4: bool, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK5: bool, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK6: bool, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK7: bool, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK8: bool, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK9: bool, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK10: bool, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK11: bool, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK12: bool, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK13: bool, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK14: bool, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK15: bool, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK16: bool, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK17: bool, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK18: bool, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK19: bool, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK20: bool, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK21: bool, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK22: bool, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK23: bool, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK24: bool, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK25: bool, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK26: bool, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK27: bool, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK28: bool, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK29: bool, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK30: bool, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK31: bool, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK0: u1, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK1: u1, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK2: u1, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK3: u1, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK4: u1, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK5: u1, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK6: u1, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK7: u1, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK8: u1, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK9: u1, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK10: u1, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK11: u1, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK12: u1, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK13: u1, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK14: u1, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK15: u1, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK16: u1, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK17: u1, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK18: u1, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK19: u1, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK20: u1, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK21: u1, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK22: u1, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK23: u1, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK24: u1, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK25: u1, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK26: u1, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK27: u1, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK28: u1, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK29: u1, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK30: u1, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK31: u1, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. }); // byte offset: 52 Port Pin value register using FIOMASK. pub const PIN1 = mmio(Address + 0x00000034, 32, packed struct { - PINVAL0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. }); // byte offset: 56 Port Output Set register using FIOMASK. pub const SET1 = mmio(Address + 0x00000038, 32, packed struct { - PINSET0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. }); // byte offset: 60 Port Output Clear register using FIOMASK. pub const CLR1 = mmio(Address + 0x0000003c, 32, packed struct { - PINCLR0: bool, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR1: bool, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR2: bool, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR3: bool, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR4: bool, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR5: bool, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR6: bool, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR7: bool, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR8: bool, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR9: bool, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR10: bool, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR11: bool, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR12: bool, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR13: bool, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR14: bool, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR15: bool, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR16: bool, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR17: bool, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR18: bool, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR19: bool, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR20: bool, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR21: bool, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR22: bool, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR23: bool, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR24: bool, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR25: bool, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR26: bool, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR27: bool, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR28: bool, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR29: bool, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR30: bool, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR31: bool, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR0: u1, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR1: u1, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR2: u1, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR3: u1, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR4: u1, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR5: u1, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR6: u1, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR7: u1, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR8: u1, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR9: u1, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR10: u1, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR11: u1, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR12: u1, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR13: u1, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR14: u1, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR15: u1, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR16: u1, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR17: u1, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR18: u1, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR19: u1, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR20: u1, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR21: u1, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR22: u1, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR23: u1, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR24: u1, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR25: u1, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR26: u1, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR27: u1, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR28: u1, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR29: u1, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR30: u1, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR31: u1, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. }); // byte offset: 64 GPIO Port Direction control register. pub const DIR2 = mmio(Address + 0x00000040, 32, packed struct { - PINDIR0: bool, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR1: bool, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR2: bool, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR3: bool, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR4: bool, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR5: bool, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR6: bool, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR7: bool, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR8: bool, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR9: bool, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR10: bool, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR11: bool, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR12: bool, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR13: bool, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR14: bool, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR15: bool, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR16: bool, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR17: bool, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR18: bool, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR19: bool, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR20: bool, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR21: bool, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR22: bool, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR23: bool, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR24: bool, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR25: bool, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR26: bool, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR27: bool, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR28: bool, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR29: bool, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR30: bool, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR31: bool, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR0: u1, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR1: u1, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR2: u1, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR3: u1, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR4: u1, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR5: u1, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR6: u1, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR7: u1, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR8: u1, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR9: u1, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR10: u1, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR11: u1, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR12: u1, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR13: u1, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR14: u1, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR15: u1, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR16: u1, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR17: u1, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR18: u1, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR19: u1, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR20: u1, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR21: u1, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR22: u1, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR23: u1, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR24: u1, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR25: u1, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR26: u1, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR27: u1, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR28: u1, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR29: u1, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR30: u1, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR31: u1, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. }); // byte offset: 80 Mask register for Port. pub const MASK2 = mmio(Address + 0x00000050, 32, packed struct { - PINMASK0: bool, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK1: bool, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK2: bool, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK3: bool, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK4: bool, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK5: bool, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK6: bool, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK7: bool, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK8: bool, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK9: bool, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK10: bool, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK11: bool, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK12: bool, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK13: bool, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK14: bool, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK15: bool, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK16: bool, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK17: bool, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK18: bool, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK19: bool, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK20: bool, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK21: bool, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK22: bool, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK23: bool, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK24: bool, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK25: bool, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK26: bool, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK27: bool, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK28: bool, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK29: bool, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK30: bool, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK31: bool, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK0: u1, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK1: u1, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK2: u1, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK3: u1, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK4: u1, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK5: u1, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK6: u1, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK7: u1, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK8: u1, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK9: u1, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK10: u1, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK11: u1, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK12: u1, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK13: u1, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK14: u1, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK15: u1, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK16: u1, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK17: u1, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK18: u1, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK19: u1, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK20: u1, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK21: u1, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK22: u1, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK23: u1, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK24: u1, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK25: u1, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK26: u1, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK27: u1, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK28: u1, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK29: u1, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK30: u1, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK31: u1, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. }); // byte offset: 84 Port Pin value register using FIOMASK. pub const PIN2 = mmio(Address + 0x00000054, 32, packed struct { - PINVAL0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. }); // byte offset: 88 Port Output Set register using FIOMASK. pub const SET2 = mmio(Address + 0x00000058, 32, packed struct { - PINSET0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. }); // byte offset: 92 Port Output Clear register using FIOMASK. pub const CLR2 = mmio(Address + 0x0000005c, 32, packed struct { - PINCLR0: bool, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR1: bool, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR2: bool, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR3: bool, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR4: bool, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR5: bool, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR6: bool, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR7: bool, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR8: bool, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR9: bool, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR10: bool, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR11: bool, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR12: bool, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR13: bool, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR14: bool, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR15: bool, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR16: bool, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR17: bool, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR18: bool, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR19: bool, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR20: bool, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR21: bool, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR22: bool, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR23: bool, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR24: bool, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR25: bool, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR26: bool, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR27: bool, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR28: bool, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR29: bool, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR30: bool, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR31: bool, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR0: u1, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR1: u1, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR2: u1, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR3: u1, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR4: u1, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR5: u1, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR6: u1, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR7: u1, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR8: u1, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR9: u1, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR10: u1, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR11: u1, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR12: u1, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR13: u1, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR14: u1, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR15: u1, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR16: u1, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR17: u1, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR18: u1, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR19: u1, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR20: u1, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR21: u1, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR22: u1, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR23: u1, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR24: u1, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR25: u1, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR26: u1, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR27: u1, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR28: u1, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR29: u1, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR30: u1, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR31: u1, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. }); // byte offset: 96 GPIO Port Direction control register. pub const DIR3 = mmio(Address + 0x00000060, 32, packed struct { - PINDIR0: bool, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR1: bool, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR2: bool, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR3: bool, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR4: bool, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR5: bool, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR6: bool, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR7: bool, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR8: bool, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR9: bool, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR10: bool, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR11: bool, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR12: bool, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR13: bool, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR14: bool, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR15: bool, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR16: bool, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR17: bool, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR18: bool, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR19: bool, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR20: bool, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR21: bool, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR22: bool, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR23: bool, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR24: bool, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR25: bool, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR26: bool, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR27: bool, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR28: bool, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR29: bool, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR30: bool, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR31: bool, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR0: u1, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR1: u1, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR2: u1, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR3: u1, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR4: u1, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR5: u1, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR6: u1, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR7: u1, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR8: u1, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR9: u1, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR10: u1, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR11: u1, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR12: u1, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR13: u1, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR14: u1, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR15: u1, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR16: u1, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR17: u1, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR18: u1, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR19: u1, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR20: u1, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR21: u1, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR22: u1, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR23: u1, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR24: u1, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR25: u1, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR26: u1, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR27: u1, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR28: u1, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR29: u1, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR30: u1, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR31: u1, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. }); // byte offset: 112 Mask register for Port. pub const MASK3 = mmio(Address + 0x00000070, 32, packed struct { - PINMASK0: bool, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK1: bool, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK2: bool, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK3: bool, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK4: bool, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK5: bool, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK6: bool, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK7: bool, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK8: bool, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK9: bool, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK10: bool, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK11: bool, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK12: bool, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK13: bool, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK14: bool, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK15: bool, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK16: bool, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK17: bool, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK18: bool, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK19: bool, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK20: bool, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK21: bool, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK22: bool, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK23: bool, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK24: bool, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK25: bool, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK26: bool, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK27: bool, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK28: bool, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK29: bool, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK30: bool, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK31: bool, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK0: u1, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK1: u1, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK2: u1, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK3: u1, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK4: u1, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK5: u1, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK6: u1, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK7: u1, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK8: u1, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK9: u1, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK10: u1, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK11: u1, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK12: u1, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK13: u1, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK14: u1, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK15: u1, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK16: u1, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK17: u1, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK18: u1, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK19: u1, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK20: u1, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK21: u1, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK22: u1, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK23: u1, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK24: u1, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK25: u1, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK26: u1, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK27: u1, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK28: u1, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK29: u1, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK30: u1, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK31: u1, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. }); // byte offset: 116 Port Pin value register using FIOMASK. pub const PIN3 = mmio(Address + 0x00000074, 32, packed struct { - PINVAL0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. }); // byte offset: 120 Port Output Set register using FIOMASK. pub const SET3 = mmio(Address + 0x00000078, 32, packed struct { - PINSET0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. }); // byte offset: 124 Port Output Clear register using FIOMASK. pub const CLR3 = mmio(Address + 0x0000007c, 32, packed struct { - PINCLR0: bool, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR1: bool, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR2: bool, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR3: bool, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR4: bool, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR5: bool, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR6: bool, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR7: bool, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR8: bool, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR9: bool, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR10: bool, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR11: bool, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR12: bool, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR13: bool, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR14: bool, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR15: bool, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR16: bool, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR17: bool, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR18: bool, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR19: bool, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR20: bool, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR21: bool, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR22: bool, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR23: bool, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR24: bool, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR25: bool, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR26: bool, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR27: bool, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR28: bool, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR29: bool, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR30: bool, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR31: bool, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR0: u1, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR1: u1, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR2: u1, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR3: u1, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR4: u1, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR5: u1, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR6: u1, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR7: u1, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR8: u1, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR9: u1, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR10: u1, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR11: u1, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR12: u1, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR13: u1, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR14: u1, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR15: u1, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR16: u1, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR17: u1, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR18: u1, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR19: u1, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR20: u1, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR21: u1, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR22: u1, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR23: u1, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR24: u1, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR25: u1, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR26: u1, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR27: u1, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR28: u1, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR29: u1, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR30: u1, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR31: u1, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. }); // byte offset: 128 GPIO Port Direction control register. pub const DIR4 = mmio(Address + 0x00000080, 32, packed struct { - PINDIR0: bool, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR1: bool, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR2: bool, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR3: bool, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR4: bool, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR5: bool, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR6: bool, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR7: bool, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR8: bool, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR9: bool, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR10: bool, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR11: bool, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR12: bool, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR13: bool, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR14: bool, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR15: bool, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR16: bool, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR17: bool, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR18: bool, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR19: bool, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR20: bool, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR21: bool, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR22: bool, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR23: bool, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR24: bool, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR25: bool, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR26: bool, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR27: bool, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR28: bool, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR29: bool, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR30: bool, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. - PINDIR31: bool, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR0: u1, // bit offset: 0 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR1: u1, // bit offset: 1 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR2: u1, // bit offset: 2 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR3: u1, // bit offset: 3 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR4: u1, // bit offset: 4 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR5: u1, // bit offset: 5 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR6: u1, // bit offset: 6 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR7: u1, // bit offset: 7 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR8: u1, // bit offset: 8 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR9: u1, // bit offset: 9 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR10: u1, // bit offset: 10 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR11: u1, // bit offset: 11 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR12: u1, // bit offset: 12 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR13: u1, // bit offset: 13 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR14: u1, // bit offset: 14 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR15: u1, // bit offset: 15 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR16: u1, // bit offset: 16 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR17: u1, // bit offset: 17 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR18: u1, // bit offset: 18 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR19: u1, // bit offset: 19 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR20: u1, // bit offset: 20 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR21: u1, // bit offset: 21 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR22: u1, // bit offset: 22 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR23: u1, // bit offset: 23 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR24: u1, // bit offset: 24 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR25: u1, // bit offset: 25 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR26: u1, // bit offset: 26 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR27: u1, // bit offset: 27 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR28: u1, // bit offset: 28 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR29: u1, // bit offset: 29 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR30: u1, // bit offset: 30 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. + PINDIR31: u1, // bit offset: 31 desc: Fast GPIO Direction PORTx control bits. Bit 0 in DIRx controls pin Px[0], bit 31 in DIRx controls pin Px[31]. 0 = Controlled pin is input. 1 = Controlled pin is output. }); // byte offset: 144 Mask register for Port. pub const MASK4 = mmio(Address + 0x00000090, 32, packed struct { - PINMASK0: bool, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK1: bool, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK2: bool, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK3: bool, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK4: bool, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK5: bool, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK6: bool, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK7: bool, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK8: bool, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK9: bool, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK10: bool, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK11: bool, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK12: bool, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK13: bool, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK14: bool, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK15: bool, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK16: bool, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK17: bool, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK18: bool, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK19: bool, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK20: bool, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK21: bool, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK22: bool, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK23: bool, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK24: bool, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK25: bool, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK26: bool, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK27: bool, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK28: bool, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK29: bool, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK30: bool, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. - PINMASK31: bool, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK0: u1, // bit offset: 0 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK1: u1, // bit offset: 1 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK2: u1, // bit offset: 2 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK3: u1, // bit offset: 3 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK4: u1, // bit offset: 4 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK5: u1, // bit offset: 5 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK6: u1, // bit offset: 6 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK7: u1, // bit offset: 7 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK8: u1, // bit offset: 8 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK9: u1, // bit offset: 9 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK10: u1, // bit offset: 10 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK11: u1, // bit offset: 11 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK12: u1, // bit offset: 12 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK13: u1, // bit offset: 13 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK14: u1, // bit offset: 14 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK15: u1, // bit offset: 15 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK16: u1, // bit offset: 16 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK17: u1, // bit offset: 17 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK18: u1, // bit offset: 18 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK19: u1, // bit offset: 19 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK20: u1, // bit offset: 20 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK21: u1, // bit offset: 21 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK22: u1, // bit offset: 22 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK23: u1, // bit offset: 23 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK24: u1, // bit offset: 24 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK25: u1, // bit offset: 25 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK26: u1, // bit offset: 26 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK27: u1, // bit offset: 27 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK28: u1, // bit offset: 28 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK29: u1, // bit offset: 29 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK30: u1, // bit offset: 30 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. + PINMASK31: u1, // bit offset: 31 desc: Fast GPIO physical pin access control. 0 = Controlled pin is affected by writes to the port's SETx, CLRx, and PINx register(s). Current state of the pin can be read from the PINx register. 1 = Controlled pin is not affected by writes into the port's SETx, CLRx and PINx register(s). When the PINx register is read, this bit will not be updated with the state of the physical pin. }); // byte offset: 148 Port Pin value register using FIOMASK. pub const PIN4 = mmio(Address + 0x00000094, 32, packed struct { - PINVAL0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. - PINVAL31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. + PINVAL31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in PINx corresponds to pin Px[0], bit 31 in PINx corresponds to pin Px[31]. 0 = Controlled pin output is set to LOW. 1 = Controlled pin output is set to HIGH. }); // byte offset: 152 Port Output Set register using FIOMASK. pub const SET4 = mmio(Address + 0x00000098, 32, packed struct { - PINSET0: bool, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET1: bool, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET2: bool, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET3: bool, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET4: bool, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET5: bool, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET6: bool, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET7: bool, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET8: bool, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET9: bool, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET10: bool, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET11: bool, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET12: bool, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET13: bool, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET14: bool, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET15: bool, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET16: bool, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET17: bool, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET18: bool, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET19: bool, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET20: bool, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET21: bool, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET22: bool, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET23: bool, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET24: bool, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET25: bool, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET26: bool, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET27: bool, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET28: bool, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET29: bool, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET30: bool, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. - PINSET31: bool, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET0: u1, // bit offset: 0 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET1: u1, // bit offset: 1 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET2: u1, // bit offset: 2 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET3: u1, // bit offset: 3 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET4: u1, // bit offset: 4 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET5: u1, // bit offset: 5 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET6: u1, // bit offset: 6 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET7: u1, // bit offset: 7 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET8: u1, // bit offset: 8 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET9: u1, // bit offset: 9 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET10: u1, // bit offset: 10 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET11: u1, // bit offset: 11 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET12: u1, // bit offset: 12 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET13: u1, // bit offset: 13 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET14: u1, // bit offset: 14 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET15: u1, // bit offset: 15 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET16: u1, // bit offset: 16 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET17: u1, // bit offset: 17 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET18: u1, // bit offset: 18 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET19: u1, // bit offset: 19 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET20: u1, // bit offset: 20 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET21: u1, // bit offset: 21 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET22: u1, // bit offset: 22 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET23: u1, // bit offset: 23 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET24: u1, // bit offset: 24 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET25: u1, // bit offset: 25 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET26: u1, // bit offset: 26 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET27: u1, // bit offset: 27 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET28: u1, // bit offset: 28 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET29: u1, // bit offset: 29 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET30: u1, // bit offset: 30 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. + PINSET31: u1, // bit offset: 31 desc: Fast GPIO output value Set bits. Bit 0 in SETx controls pin Px[0], bit 31 in SETx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to HIGH. }); // byte offset: 156 Port Output Clear register using FIOMASK. pub const CLR4 = mmio(Address + 0x0000009c, 32, packed struct { - PINCLR0: bool, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR1: bool, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR2: bool, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR3: bool, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR4: bool, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR5: bool, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR6: bool, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR7: bool, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR8: bool, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR9: bool, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR10: bool, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR11: bool, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR12: bool, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR13: bool, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR14: bool, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR15: bool, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR16: bool, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR17: bool, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR18: bool, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR19: bool, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR20: bool, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR21: bool, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR22: bool, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR23: bool, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR24: bool, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR25: bool, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR26: bool, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR27: bool, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR28: bool, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR29: bool, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR30: bool, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. - PINCLR31: bool, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR0: u1, // bit offset: 0 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR1: u1, // bit offset: 1 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR2: u1, // bit offset: 2 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR3: u1, // bit offset: 3 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR4: u1, // bit offset: 4 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR5: u1, // bit offset: 5 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR6: u1, // bit offset: 6 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR7: u1, // bit offset: 7 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR8: u1, // bit offset: 8 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR9: u1, // bit offset: 9 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR10: u1, // bit offset: 10 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR11: u1, // bit offset: 11 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR12: u1, // bit offset: 12 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR13: u1, // bit offset: 13 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR14: u1, // bit offset: 14 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR15: u1, // bit offset: 15 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR16: u1, // bit offset: 16 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR17: u1, // bit offset: 17 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR18: u1, // bit offset: 18 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR19: u1, // bit offset: 19 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR20: u1, // bit offset: 20 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR21: u1, // bit offset: 21 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR22: u1, // bit offset: 22 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR23: u1, // bit offset: 23 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR24: u1, // bit offset: 24 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR25: u1, // bit offset: 25 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR26: u1, // bit offset: 26 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR27: u1, // bit offset: 27 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR28: u1, // bit offset: 28 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR29: u1, // bit offset: 29 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR30: u1, // bit offset: 30 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. + PINCLR31: u1, // bit offset: 31 desc: Fast GPIO output value Clear bits. Bit 0 in CLRx controls pin Px[0], bit 31 in CLRx controls pin Px[31]. 0 = Controlled pin output is unchanged. 1 = Controlled pin output is set to LOW. }); }; diff --git a/src/tools/svd2zig.py b/src/tools/svd2zig.py index f3d98dc..c31bb92 100755 --- a/src/tools/svd2zig.py +++ b/src/tools/svd2zig.py @@ -45,7 +45,7 @@ class MMIOFileGenerator: total_fields_with_values = 0 for e in field.enumerated_values: e.description = cleanup_description(e.description) - if e.value is None: + if e.value is None or e.name == "RESERVED": # reserved fields doesn't have a value so we have to comment them out self.write_line(f"// @\"{e.name}\", // desc: {e.description}") else: @@ -84,9 +84,16 @@ class MMIOFileGenerator: last_offset = 0 reserved_index = 0 for field in sorted(register.fields, key=lambda f: f.bit_offset): + # workaround for NXP SVD which has overleaping reserved fields + if field.name == "RESERVED": + self.write_line(f"// RESERVED: u{field.bit_width}, // bit offset: {field.bit_offset} desc: {field.description}") + continue + if last_offset != field.bit_offset: - self.generate_padding(field.bit_offset - last_offset, "reserved", reserved_index) - reserved_index = reserved_index + field.bit_width + reserved_size = field.bit_offset - last_offset + self.generate_padding(reserved_size, "reserved", reserved_index) + reserved_index = reserved_index + reserved_size + if field.is_enumerated_type: last_offset = self.generate_enumerated_field(field) else: @@ -98,7 +105,6 @@ class MMIOFileGenerator: else: self.generate_padding(size - last_offset, "padding", 0) - self.write_line("});") def generate_peripherial_declaration(self, peripherial): diff --git a/tests/blinky.zig b/tests/blinky.zig index d5614c7..b7068be 100644 --- a/tests/blinky.zig +++ b/tests/blinky.zig @@ -4,16 +4,16 @@ const micro = @import("microzig"); pub const panic = micro.panic; // Configures the led_pin to a hardware pin -const led_pin = switch (@import("builtin").cpu.arch) { - .avr => if (micro.config.has_board) - micro.Pin("D13") // Use D13 from Arduino Nano - else - micro.Pin("PB5"), // Use PB5 on raw ATmega328p - .arm => if (micro.config.has_board) - micro.Pin("LED-1") // Use LED-1 from mbed LPC1768 - else - micro.Pin("P1.18"), // Use P1.18 on raw LPC1768 - else => @compileError("Unsupported platform!"), +const led_pin = if (micro.config.has_board) + switch (micro.config.board_name) { + .@"Arduino Nano" => micro.Pin("D13"), + .@"mbed LPC1768" => micro.Pin("LED-1"), + else => @compileError("unknown board"), + } +else switch (micro.config.chip_name) { + .@"ATmega328p" => micro.Pin("PB5"), + .@"NXP LPC1768" => micro.Pin("P1.18"), + else => @compileError("unknown chip"), }; pub fn main() void { diff --git a/tests/uart-sync.zig b/tests/uart-sync.zig index 7116272..335fda2 100644 --- a/tests/uart-sync.zig +++ b/tests/uart-sync.zig @@ -28,7 +28,7 @@ const PLL = struct { fn overclock_flash(timing: u5) void { micro.chip.registers.SYSCON.FLASHCFG.write(.{ - .FLASHTIM = @intCast(u4, timing - 1), + .FLASHTIM = @intToEnum(@TypeOf(micro.chip.registers.SYSCON.FLASHCFG.read().FLASHTIM), @intCast(u4, timing - 1)), }); } fn feed_pll() callconv(.Inline) void { @@ -39,12 +39,12 @@ const PLL = struct { fn overclock_pll(divider: u8) void { // PLL einrichten für RC micro.chip.registers.SYSCON.PLL0CON.write(.{ - .PLLE0 = false, - .PLLC0 = false, + .PLLE0 = 0, + .PLLC0 = 0, }); feed_pll(); - micro.chip.registers.SYSCON.CLKSRCSEL.write(.{ .CLKSRC = 0 }); // RC-Oszillator als Quelle + micro.chip.registers.SYSCON.CLKSRCSEL.write(.{ .CLKSRC = .SELECTS_THE_INTERNAL }); // RC-Oszillator als Quelle micro.chip.registers.SYSCON.PLL0CFG.write(.{ // SysClk = (4MHz / 2) * (2 * 75) = 300 MHz .MSEL0 = 74, @@ -55,7 +55,7 @@ const PLL = struct { feed_pll(); - micro.chip.registers.SYSCON.PLL0CON.modify(.{ .PLLE0 = true }); // PLL einschalten + micro.chip.registers.SYSCON.PLL0CON.modify(.{ .PLLE0 = 1 }); // PLL einschalten feed_pll(); var i: usize = 0; @@ -63,7 +63,7 @@ const PLL = struct { micro.cpu.nop(); } - micro.chip.registers.SYSCON.PLL0CON.modify(.{ .PLLC0 = true }); + micro.chip.registers.SYSCON.PLL0CON.modify(.{ .PLLC0 = 1 }); feed_pll(); } }; @@ -95,8 +95,8 @@ pub fn main() !void { var debug_port = micro.Uart(1).init(.{ .baud_rate = 9600, .stop_bits = .one, - .parity = .none, // { none, even, odd, mark, space } - .data_bits = .@"8", // 5, 6, 7, 8, or 9 data bits + .parity = null, + .data_bits = .eight, }) catch |err| { led1.write(if (err == error.UnsupportedBaudRate) micro.gpio.State.low else .high); led2.write(if (err == error.UnsupportedParity) micro.gpio.State.low else .high);