Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit c1d0b06

Browse files
authored
Merge pull request #25 from jessebraham/feature/deprecate
Add the PAC to the repo, add deprecation notice to `README.md`
2 parents 2964bbc + ef7a28a commit c1d0b06

File tree

262 files changed

+49017
-23
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

262 files changed

+49017
-23
lines changed

Cargo.toml

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,22 @@
11
[package]
2-
name = "esp8266-hal"
3-
version = "0.5.1"
4-
authors = [
5-
"Robin Appelman <robin@icewind.nl>",
6-
"Jesse Braham <jesse@beta7.io>",
7-
]
2+
name = "esp8266-hal"
3+
version = "0.5.1"
4+
authors = ["Jesse Braham <jesse@beta7.io>", "Robin Appelman <robin@icewind.nl>"]
85
edition = "2021"
96
description = "HAL for ESP8266 microcontrollers"
107
repository = "https://github.com/esp-rs/esp8266-hal"
118
license = "MIT OR Apache-2.0"
129

13-
keywords = [
14-
"embedded",
15-
"embedded-hal",
16-
"esp",
17-
"esp8266",
18-
"no-std",
19-
]
20-
categories = [
21-
"embedded",
22-
"hardware-support",
23-
"no-std",
24-
]
10+
keywords = ["embedded", "embedded-hal", "esp", "esp8266", "no-std"]
11+
categories = ["embedded", "hardware-support", "no-std"]
2512

2613
[dependencies]
2714
embedded-hal = { version = "0.2", features = ["unproven"] }
28-
esp8266 = "0.6"
15+
esp8266 = { version = "0.6", path = "./esp8266" }
2916
nb = "1.0"
30-
paste = { version = "1.0", optional = true }
31-
void = { version = "1.0", default-features = false }
32-
xtensa-lx = { version = "0.7", features = ["esp8266"] }
17+
paste = { version = "1.0", optional = true }
18+
void = { version = "1.0", default-features = false }
19+
xtensa-lx = { version = "0.7", features = ["esp8266"] }
3320
xtensa-lx-rt = { version = "0.12", features = ["esp8266"], optional = true }
3421

3522
[dependencies.esp8266-hal-proc-macros]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# esp8266-hal
22

3-
> ⚠️ **NOTE** this HAL is now in maintenence mode. No further development is planned at this time, however PRs may still be accepted.
3+
> ⚠️ **NOTE** this HAL is deprecated, no further development is planned.
44
55
An experimental hardware abstraction layer for the [ESP8266](https://en.wikipedia.org/wiki/ESP8266) written in Rust.
66

esp8266/.cargo/config.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[build]
2+
target = "xtensa-esp8266-none-elf"
3+
4+
[unstable]
5+
build-std = ["core"]

esp8266/Cargo.toml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[package]
2+
name = "esp8266"
3+
version = "0.7.0"
4+
edition = "2021"
5+
rust-version = "1.67"
6+
description = "Peripheral access crate for the ESP8266"
7+
repository = "https://github.com/esp-rs/esp-pacs"
8+
license = "MIT OR Apache-2.0"
9+
keywords = [
10+
"embedded",
11+
"esp8266",
12+
"no-std",
13+
"wifi",
14+
]
15+
categories = [
16+
"embedded",
17+
"hardware-support",
18+
"no-std",
19+
]
20+
include = [
21+
"src/**",
22+
"build.rs",
23+
"device.x",
24+
]
25+
26+
[lib]
27+
bench = false
28+
test = false
29+
30+
[dependencies]
31+
critical-section = { version = "1.1.1", optional = true }
32+
vcell = "0.1.3"
33+
xtensa-lx = "0.8.0"
34+
35+
[features]
36+
default = ["xtensa-lx/esp8266"]
37+
rt = []
38+
impl-register-debug = []

esp8266/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# esp8266
2+
3+
[![Crates.io](https://img.shields.io/crates/v/esp8266?labelColor=1C2C2E&color=C96329&logo=Rust&style=flat-square)](https://crates.io/crates/esp8266)
4+
[![docs.rs](https://img.shields.io/docsrs/esp8266?labelColor=1C2C2E&color=C96329&logo=rust&style=flat-square)](https://docs.rs/esp8266)
5+
![Crates.io](https://img.shields.io/crates/l/esp8266?labelColor=1C2C2E&style=flat-square)
6+
[![Matrix](https://img.shields.io/matrix/esp-rs:matrix.org?label=join%20matrix&labelColor=1C2C2E&color=BEC5C9&logo=matrix&style=flat-square)](https://matrix.to/#/#esp-rs:matrix.org)
7+
8+
A **P**eripheral **A**ccess **C**rate (**PAC**) for the **esp8266** from Espressif. See the [svd2rust] repository for more information on how to use this crate.
9+
10+
If you find any problems with the included SVD file please open an issue in the [espressif/svd] repository so that the fixes can be applied upstream.
11+
12+
[svd2rust]: https://github.com/rust-embedded/svd2rust
13+
[espressif/svd]: https://github.com/espressif/svd
14+
15+
## [Documentation](https://docs.rs/esp8266)
16+
17+
## License
18+
19+
Licensed under either of:
20+
21+
- Apache License, Version 2.0 ([LICENSE-APACHE](../LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
22+
- MIT license ([LICENSE-MIT](../LICENSE-MIT) or http://opensource.org/licenses/MIT)
23+
24+
at your option.
25+
26+
### Contribution
27+
28+
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in
29+
the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without
30+
any additional terms or conditions.

esp8266/build.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#![doc = r" Builder file for Peripheral access crate generated by svd2rust tool"]
2+
use std::env;
3+
use std::fs::File;
4+
use std::io::Write;
5+
use std::path::PathBuf;
6+
fn main() {
7+
if env::var_os("CARGO_FEATURE_RT").is_some() {
8+
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
9+
File::create(out.join("device.x"))
10+
.unwrap()
11+
.write_all(include_bytes!("device.x"))
12+
.unwrap();
13+
println!("cargo:rustc-link-search={}", out.display());
14+
println!("cargo:rerun-if-changed=device.x");
15+
}
16+
println!("cargo:rerun-if-changed=build.rs");
17+
}

esp8266/device.x

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

esp8266/src/dport.rs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#[doc = r"Register block"]
2+
#[repr(C)]
3+
#[cfg_attr(feature = "impl-register-debug", derive(Debug))]
4+
pub struct RegisterBlock {
5+
_reserved0: [u8; 0x04],
6+
edge_int_enable: EDGE_INT_ENABLE,
7+
_reserved1: [u8; 0x04],
8+
spi_cache: SPI_CACHE,
9+
_reserved2: [u8; 0x04],
10+
dport_ctl: DPORT_CTL,
11+
_reserved3: [u8; 0x08],
12+
spi_interrupt_type: SPI_INTERRUPT_TYPE,
13+
spi_cache_target: SPI_CACHE_TARGET,
14+
ioswap: IOSWAP,
15+
}
16+
impl RegisterBlock {
17+
#[doc = "0x04 - EDGE_INT_ENABLE"]
18+
#[inline(always)]
19+
pub const fn edge_int_enable(&self) -> &EDGE_INT_ENABLE {
20+
&self.edge_int_enable
21+
}
22+
#[doc = "0x0c - Controls SPI memory-mapped caching"]
23+
#[inline(always)]
24+
pub const fn spi_cache(&self) -> &SPI_CACHE {
25+
&self.spi_cache
26+
}
27+
#[doc = "0x14 - DPORT_CTL"]
28+
#[inline(always)]
29+
pub const fn dport_ctl(&self) -> &DPORT_CTL {
30+
&self.dport_ctl
31+
}
32+
#[doc = "0x20 - SPI interrupt type register"]
33+
#[inline(always)]
34+
pub const fn spi_interrupt_type(&self) -> &SPI_INTERRUPT_TYPE {
35+
&self.spi_interrupt_type
36+
}
37+
#[doc = "0x24 - Control where the cache is mapped (unconfirmed)"]
38+
#[inline(always)]
39+
pub const fn spi_cache_target(&self) -> &SPI_CACHE_TARGET {
40+
&self.spi_cache_target
41+
}
42+
#[doc = "0x28 - IO Swap register"]
43+
#[inline(always)]
44+
pub const fn ioswap(&self) -> &IOSWAP {
45+
&self.ioswap
46+
}
47+
}
48+
#[doc = "EDGE_INT_ENABLE (rw) register accessor: EDGE_INT_ENABLE\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`edge_int_enable::R`]. You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`edge_int_enable::W`]. You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@edge_int_enable`] module"]
49+
pub type EDGE_INT_ENABLE = crate::Reg<edge_int_enable::EDGE_INT_ENABLE_SPEC>;
50+
#[doc = "EDGE_INT_ENABLE"]
51+
pub mod edge_int_enable;
52+
#[doc = "DPORT_CTL (rw) register accessor: DPORT_CTL\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`dport_ctl::R`]. You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`dport_ctl::W`]. You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@dport_ctl`] module"]
53+
pub type DPORT_CTL = crate::Reg<dport_ctl::DPORT_CTL_SPEC>;
54+
#[doc = "DPORT_CTL"]
55+
pub mod dport_ctl;
56+
#[doc = "IOSWAP (rw) register accessor: IO Swap register\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`ioswap::R`]. You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`ioswap::W`]. You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ioswap`] module"]
57+
pub type IOSWAP = crate::Reg<ioswap::IOSWAP_SPEC>;
58+
#[doc = "IO Swap register"]
59+
pub mod ioswap;
60+
#[doc = "SPI_CACHE (rw) register accessor: Controls SPI memory-mapped caching\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`spi_cache::R`]. You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`spi_cache::W`]. You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@spi_cache`] module"]
61+
pub type SPI_CACHE = crate::Reg<spi_cache::SPI_CACHE_SPEC>;
62+
#[doc = "Controls SPI memory-mapped caching"]
63+
pub mod spi_cache;
64+
#[doc = "SPI_INTERRUPT_TYPE (r) register accessor: SPI interrupt type register\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`spi_interrupt_type::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@spi_interrupt_type`] module"]
65+
pub type SPI_INTERRUPT_TYPE = crate::Reg<spi_interrupt_type::SPI_INTERRUPT_TYPE_SPEC>;
66+
#[doc = "SPI interrupt type register"]
67+
pub mod spi_interrupt_type;
68+
#[doc = "SPI_CACHE_TARGET (rw) register accessor: Control where the cache is mapped (unconfirmed)\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`spi_cache_target::R`]. You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`spi_cache_target::W`]. You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@spi_cache_target`] module"]
69+
pub type SPI_CACHE_TARGET = crate::Reg<spi_cache_target::SPI_CACHE_TARGET_SPEC>;
70+
#[doc = "Control where the cache is mapped (unconfirmed)"]
71+
pub mod spi_cache_target;

esp8266/src/dport/dport_ctl.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#[doc = "Register `DPORT_CTL` reader"]
2+
pub type R = crate::R<DPORT_CTL_SPEC>;
3+
#[doc = "Register `DPORT_CTL` writer"]
4+
pub type W = crate::W<DPORT_CTL_SPEC>;
5+
#[doc = "Field `DPORT_CTL_DOUBLE_CLK` reader - "]
6+
pub type DPORT_CTL_DOUBLE_CLK_R = crate::BitReader;
7+
#[doc = "Field `DPORT_CTL_DOUBLE_CLK` writer - "]
8+
pub type DPORT_CTL_DOUBLE_CLK_W<'a, REG> = crate::BitWriter<'a, REG>;
9+
impl R {
10+
#[doc = "Bit 0"]
11+
#[inline(always)]
12+
pub fn dport_ctl_double_clk(&self) -> DPORT_CTL_DOUBLE_CLK_R {
13+
DPORT_CTL_DOUBLE_CLK_R::new((self.bits & 1) != 0)
14+
}
15+
}
16+
#[cfg(feature = "impl-register-debug")]
17+
impl core::fmt::Debug for R {
18+
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
19+
f.debug_struct("DPORT_CTL")
20+
.field(
21+
"dport_ctl_double_clk",
22+
&format_args!("{}", self.dport_ctl_double_clk().bit()),
23+
)
24+
.finish()
25+
}
26+
}
27+
#[cfg(feature = "impl-register-debug")]
28+
impl core::fmt::Debug for crate::generic::Reg<DPORT_CTL_SPEC> {
29+
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30+
core::fmt::Debug::fmt(&self.read(), f)
31+
}
32+
}
33+
impl W {
34+
#[doc = "Bit 0"]
35+
#[inline(always)]
36+
#[must_use]
37+
pub fn dport_ctl_double_clk(&mut self) -> DPORT_CTL_DOUBLE_CLK_W<DPORT_CTL_SPEC> {
38+
DPORT_CTL_DOUBLE_CLK_W::new(self, 0)
39+
}
40+
#[doc = r" Writes raw bits to the register."]
41+
#[doc = r""]
42+
#[doc = r" # Safety"]
43+
#[doc = r""]
44+
#[doc = r" Passing incorrect value can cause undefined behaviour. See reference manual"]
45+
#[inline(always)]
46+
pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
47+
self.bits = bits;
48+
self
49+
}
50+
}
51+
#[doc = "DPORT_CTL\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`dport_ctl::R`](R). You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`dport_ctl::W`](W). You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
52+
pub struct DPORT_CTL_SPEC;
53+
impl crate::RegisterSpec for DPORT_CTL_SPEC {
54+
type Ux = u32;
55+
}
56+
#[doc = "`read()` method returns [`dport_ctl::R`](R) reader structure"]
57+
impl crate::Readable for DPORT_CTL_SPEC {}
58+
#[doc = "`write(|w| ..)` method takes [`dport_ctl::W`](W) writer structure"]
59+
impl crate::Writable for DPORT_CTL_SPEC {
60+
const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
61+
const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
62+
}
63+
#[doc = "`reset()` method sets DPORT_CTL to value 0"]
64+
impl crate::Resettable for DPORT_CTL_SPEC {
65+
const RESET_VALUE: Self::Ux = 0;
66+
}

esp8266/src/dport/edge_int_enable.rs

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
#[doc = "Register `EDGE_INT_ENABLE` reader"]
2+
pub type R = crate::R<EDGE_INT_ENABLE_SPEC>;
3+
#[doc = "Register `EDGE_INT_ENABLE` writer"]
4+
pub type W = crate::W<EDGE_INT_ENABLE_SPEC>;
5+
#[doc = "Field `Register` reader - "]
6+
pub type REGISTER_R = crate::FieldReader<u32>;
7+
#[doc = "Field `Register` writer - "]
8+
pub type REGISTER_W<'a, REG> = crate::FieldWriter<'a, REG, 32, u32>;
9+
#[doc = "Field `wdt_edge_int_enable` reader - Enable the watchdog timer edge interrupt"]
10+
pub type WDT_EDGE_INT_ENABLE_R = crate::BitReader;
11+
#[doc = "Field `wdt_edge_int_enable` writer - Enable the watchdog timer edge interrupt"]
12+
pub type WDT_EDGE_INT_ENABLE_W<'a, REG> = crate::BitWriter<'a, REG>;
13+
#[doc = "Field `timer1_edge_int_enable` reader - Enable the timer1 edge interrupt"]
14+
pub type TIMER1_EDGE_INT_ENABLE_R = crate::BitReader;
15+
#[doc = "Field `timer1_edge_int_enable` writer - Enable the timer1 edge interrupt"]
16+
pub type TIMER1_EDGE_INT_ENABLE_W<'a, REG> = crate::BitWriter<'a, REG>;
17+
impl R {
18+
#[doc = "Bits 0:31"]
19+
#[inline(always)]
20+
pub fn register(&self) -> REGISTER_R {
21+
REGISTER_R::new(self.bits)
22+
}
23+
#[doc = "Bit 0 - Enable the watchdog timer edge interrupt"]
24+
#[inline(always)]
25+
pub fn wdt_edge_int_enable(&self) -> WDT_EDGE_INT_ENABLE_R {
26+
WDT_EDGE_INT_ENABLE_R::new((self.bits & 1) != 0)
27+
}
28+
#[doc = "Bit 1 - Enable the timer1 edge interrupt"]
29+
#[inline(always)]
30+
pub fn timer1_edge_int_enable(&self) -> TIMER1_EDGE_INT_ENABLE_R {
31+
TIMER1_EDGE_INT_ENABLE_R::new(((self.bits >> 1) & 1) != 0)
32+
}
33+
}
34+
#[cfg(feature = "impl-register-debug")]
35+
impl core::fmt::Debug for R {
36+
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
37+
f.debug_struct("EDGE_INT_ENABLE")
38+
.field("register", &format_args!("{}", self.register().bits()))
39+
.field(
40+
"wdt_edge_int_enable",
41+
&format_args!("{}", self.wdt_edge_int_enable().bit()),
42+
)
43+
.field(
44+
"timer1_edge_int_enable",
45+
&format_args!("{}", self.timer1_edge_int_enable().bit()),
46+
)
47+
.finish()
48+
}
49+
}
50+
#[cfg(feature = "impl-register-debug")]
51+
impl core::fmt::Debug for crate::generic::Reg<EDGE_INT_ENABLE_SPEC> {
52+
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
53+
core::fmt::Debug::fmt(&self.read(), f)
54+
}
55+
}
56+
impl W {
57+
#[doc = "Bits 0:31"]
58+
#[inline(always)]
59+
#[must_use]
60+
pub fn register(&mut self) -> REGISTER_W<EDGE_INT_ENABLE_SPEC> {
61+
REGISTER_W::new(self, 0)
62+
}
63+
#[doc = "Bit 0 - Enable the watchdog timer edge interrupt"]
64+
#[inline(always)]
65+
#[must_use]
66+
pub fn wdt_edge_int_enable(&mut self) -> WDT_EDGE_INT_ENABLE_W<EDGE_INT_ENABLE_SPEC> {
67+
WDT_EDGE_INT_ENABLE_W::new(self, 0)
68+
}
69+
#[doc = "Bit 1 - Enable the timer1 edge interrupt"]
70+
#[inline(always)]
71+
#[must_use]
72+
pub fn timer1_edge_int_enable(&mut self) -> TIMER1_EDGE_INT_ENABLE_W<EDGE_INT_ENABLE_SPEC> {
73+
TIMER1_EDGE_INT_ENABLE_W::new(self, 1)
74+
}
75+
#[doc = r" Writes raw bits to the register."]
76+
#[doc = r""]
77+
#[doc = r" # Safety"]
78+
#[doc = r""]
79+
#[doc = r" Passing incorrect value can cause undefined behaviour. See reference manual"]
80+
#[inline(always)]
81+
pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
82+
self.bits = bits;
83+
self
84+
}
85+
}
86+
#[doc = "EDGE_INT_ENABLE\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`edge_int_enable::R`](R). You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`edge_int_enable::W`](W). You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
87+
pub struct EDGE_INT_ENABLE_SPEC;
88+
impl crate::RegisterSpec for EDGE_INT_ENABLE_SPEC {
89+
type Ux = u32;
90+
}
91+
#[doc = "`read()` method returns [`edge_int_enable::R`](R) reader structure"]
92+
impl crate::Readable for EDGE_INT_ENABLE_SPEC {}
93+
#[doc = "`write(|w| ..)` method takes [`edge_int_enable::W`](W) writer structure"]
94+
impl crate::Writable for EDGE_INT_ENABLE_SPEC {
95+
const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
96+
const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
97+
}
98+
#[doc = "`reset()` method sets EDGE_INT_ENABLE to value 0"]
99+
impl crate::Resettable for EDGE_INT_ENABLE_SPEC {
100+
const RESET_VALUE: Self::Ux = 0;
101+
}

0 commit comments

Comments
 (0)